diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..c4fe0b6
--- /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/Java6"/>
+	<classpathentry kind="output" path="classes"/>
+</classpath>
diff --git a/.externalToolBuilders/icu4j_Resources.launch b/.externalToolBuilders/icu4j_Resources.launch
new file mode 100644
index 0000000..19cf73e
--- /dev/null
+++ b/.externalToolBuilders/icu4j_Resources.launch
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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="true"/>
+<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.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/Java6"/>
+<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.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}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..0527187
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,254 @@
+* 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/charset/CharsetSelector.java -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/misc/ICUConfig.properties -text
+src/com/ibm/icu/dev/test/charset/TestSelection.java -text
+src/com/ibm/icu/dev/test/duration/RegressionTest.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/docs/icu4j401.api.gz -text
+src/com/ibm/icu/dev/tool/tzu/icu.gif -text
+src/com/ibm/icu/impl/PVecToTrieCompactHandler.java -text
+src/com/ibm/icu/impl/PropsVectors.java -text
+src/com/ibm/icu/impl/data/icudata.jar -text
+src/com/ibm/icu/text/CurrencyPluralInfo.java -text
+src/com/ibm/icu/text/NumberingSystem.java -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..2c527de
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,334 @@
+#Wed Jan 21 15:00:59 EST 2009
+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.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.fatalOptionalError=enabled
+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.redundantSuperinterface=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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+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.unusedWarningToken=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..2c6657b
--- /dev/null
+++ b/build.properties
@@ -0,0 +1,30 @@
+#*
+#*******************************************************************************
+#* Copyright (C) 2006-2009, 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.3
+
+# 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=413
+icu4j.previous.version.number=401
+
+current.year=2009
+api.report.out=${api.dir}/icu4j_compare_${icu4j.previous.version.number}_${icu4j.version.number}.html
+copyright=Copyright (c) 2000-2009, International Business Machines Corporation and others.  All Rights Reserved.
+corp=IBM Corporation
+default.target.rt.version=JAVASE6
+
+icu4j.plugin.impl.version.string=4.1.3
+copyright.eclipse=Licensed Materials - Property of IBM \n (C) Copyright IBM Corp. 2000, 2009. 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..9feec2c
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,2235 @@
+<!--
+/*
+*******************************************************************************
+* Copyright (C) 1997-2009, 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>
+    <condition property="target.rt.version" value="JAVASE7">
+      <contains string="${java.version}" substring="1.7." />
+    </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 -->
+    <condition property="mangler.cmd.args" value="-d${default.target.rt.version} -n @preprocessor.txt">
+      <equals arg1="${default.target.rt.version}" arg2="${target.rt.version}"/>
+    </condition>
+
+    <property name="mangler.cmd.args" value="-d${target.rt.version} @preprocessor.txt"/>
+
+    <antcall target="doMangle">
+      <param name="mangler.args" value="${mangler.cmd.args}"/>
+    </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="mangler.args" value="-d${default.target.rt.version} -n -f @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 [java com.ibm.icu.dev.tool.docs.CodeMangler ${mangler.args}]"/>
+    <java classname="com.ibm.icu.dev.tool.docs.CodeMangler" classpath="${build.dir}" logError="true" fork="true" dir="${basedir}">
+      <arg line="${mangler.args}"/>
+    </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="mangler.args" value="-dFOUNDATION10 @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>
+    <!-- overwriting the ICU runtime configuration file for forcing ICU4J plugin to use JDK time zone rules -->
+    <copy file="${eclipse.dir}/misc/ICUConfig.properties"
+      toDir="${eclipse.projects.dir}/plugins/com.ibm.icu/src/com/ibm/icu"
+      overwrite="true"/>
+    <!-- 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="mangler.args" value="-dECLIPSE_FRAGMENT @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..ba2871a
--- /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-2009 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..847b2de
--- /dev/null
+++ b/preprocessor.txt
@@ -0,0 +1,81 @@
+# Copyright (C) 2007-2009, 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/IntlTestDecimalFormatAPI.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/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..fa00e2d
--- /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..446ff1b
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetMBCS.java
@@ -0,0 +1,5703 @@
+/**
+ *******************************************************************************
+ * 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);
+        
+        /* See if the icuCanonicalName contains certain option information. */
+        if (icuCanonicalName.indexOf(UConverterConstants.OPTION_SWAP_LFNL_STRING) > -1) {
+            options = UConverterConstants.OPTION_SWAP_LFNL;
+            icuCanonicalName = icuCanonicalName.substring(0, icuCanonicalName.indexOf(UConverterConstants.OPTION_SWAP_LFNL_STRING));
+            super.icuCanonicalName = icuCanonicalName;
+        }
+        
+        // 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);
+        
+        initializeConverter(options);
+    }
+
+    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) {
+                try {
+                    if (!EBCDICSwapLFNL()) {
+                        /* this option does not apply, remove it */
+                        this.options = myOptions &= ~UConverterConstants.OPTION_SWAP_LFNL;
+                    }
+                } catch (Exception e) {
+                    /* something went wrong. */
+                    return;
+                }
+            }
+        }
+
+        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;
+            }
+        }
+    }
+     /* EBCDIC swap LF<->NL--------------------------------------------------------------------------------*/
+     /*
+      * This code modifies a standard EBCDIC<->Unicode mappling table for
+      * OS/390 (z/OS) Unix System Services (Open Edition).
+      * The difference is in the mapping of Line Feed and New Line control codes:
+      * Standard EBDIC maps
+      * 
+      * <U000A> \x25 |0
+      * <U0085> \x15 |0
+      * 
+      * but OS/390 USS EBCDIC swaps the control codes for LF and NL,
+      * mapping
+      * 
+      * <U000A> \x15 |0
+      * <U0085> \x25 |0
+      * 
+      * This code modifies a loaded standard EBCDIC<->Unicode mapping table
+      * by copying it into allocated memory and swapping the LF and NL values.
+      * It allows to support the same EBCDIC charset in both version without
+      * duplicating the entire installed table.
+      */
+    /* standard EBCDIC codes */
+    private static final short EBCDIC_LF = 0x0025;
+    private static final short EBCDIC_NL = 0x0015;
+    
+    /* standard EBCDIC codes with roundtrip flag as stored in Unicode-to-single-byte tables */
+    private static final short EBCDIC_RT_LF = 0x0f25;
+    private static final short EBCDIC_RT_NL = 0x0f15;
+    
+    /* Unicode code points */
+    private static final short U_LF = 0x000A;
+    private static final short U_NL = 0x0085;
+    
+    private boolean EBCDICSwapLFNL() throws Exception {
+        UConverterMBCSTable mbcsTable;
+        
+        char[] table;
+        byte[] results;
+        byte[] bytes;
+        
+        int[][] newStateTable;
+        byte[] newResults;
+        String newName;
+        
+        int stage2Entry;
+//        int size;
+        int sizeofFromUBytes;
+        
+        mbcsTable = sharedData.mbcs;
+        
+        table = mbcsTable.fromUnicodeTable;
+        bytes = mbcsTable.fromUnicodeBytes;
+        results = bytes;
+        
+        /*
+         * Check that this is an EBCDIC table with SBCS portion -
+         * SBCS or EBCDIC with standard EBCDIC LF and NL mappings.
+         * 
+         * If not, ignore the option Options are always ignored if they do not apply.
+         */
+        if (!((mbcsTable.outputType == MBCS_OUTPUT_1 || mbcsTable.outputType == MBCS_OUTPUT_2_SISO) &&
+              mbcsTable.stateTable[0][EBCDIC_LF] == MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_DIRECT_16, U_LF) &&
+              mbcsTable.stateTable[0][EBCDIC_NL] == MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_DIRECT_16, U_NL))) {
+            return false;
+        }
+        
+        if (mbcsTable.outputType == MBCS_OUTPUT_1) {
+            if (!(EBCDIC_RT_LF == MBCS_SINGLE_RESULT_FROM_U(table, results, U_LF) &&
+                  EBCDIC_RT_NL == MBCS_SINGLE_RESULT_FROM_U(table, results, U_NL))) {
+                return false;
+            }
+        } else /* MBCS_OUTPUT_2_SISO */ {
+            stage2Entry = MBCS_STAGE_2_FROM_U(table, U_LF);
+            if (!(MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, U_LF) &&
+                  EBCDIC_LF == MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, U_LF))) {
+                return false;
+            }
+            
+            stage2Entry = MBCS_STAGE_2_FROM_U(table, U_NL);
+            if (!(MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, U_NL) &&
+                  EBCDIC_NL == MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, U_NL))) {
+                return false;
+            }
+        }
+        
+        if (mbcsTable.fromUBytesLength > 0) {
+            /*
+             * We _know_ the number of bytes in the fromUnicodeBytes array
+             * starting with header.version 4.1.
+             */
+            sizeofFromUBytes = mbcsTable.fromUBytesLength;
+        } else {
+            /*
+             * Otherwise:
+             * There used to be code to enumerate the fromUnicode
+             * trie and find the highest entry, but it was removed in ICU 3.2
+             * because it was not tested and caused a low code coverage number.
+             */
+            throw new Exception("U_INVALID_FORMAT_ERROR");
+        }
+        
+        /*
+         * The table has an appropriate format.
+         * Allocate and build
+         * - a modified to-Unicode state table
+         * - a modified from-Unicode output array
+         * - a converter name string with the swap option appended
+         */
+//        size = mbcsTable.countStates * 1024 + sizeofFromUBytes + UConverterConstants.MAX_CONVERTER_NAME_LENGTH + 20;
+        
+        /* copy and modify the to-Unicode state table */
+        newStateTable = new int[mbcsTable.stateTable.length][mbcsTable.stateTable[0].length];
+        for (int i = 0; i < newStateTable.length; i++) {
+            System.arraycopy(mbcsTable.stateTable[i], 0, newStateTable[i], 0, newStateTable[i].length);
+        }
+        
+        newStateTable[0][EBCDIC_LF] = MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_DIRECT_16, U_NL);
+        newStateTable[0][EBCDIC_NL] = MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_DIRECT_16, U_LF);
+        
+        /* copy and modify the from-Unicode result table */
+        newResults = new byte[sizeofFromUBytes];
+        System.arraycopy(bytes, 0, newResults, 0, sizeofFromUBytes);
+        /* conveniently, the table access macros work on the left side of expressions */
+        if (mbcsTable.outputType == MBCS_OUTPUT_1) {
+            MBCS_SINGLE_RESULT_FROM_U_SET(table, newResults, U_LF, EBCDIC_RT_NL);
+            MBCS_SINGLE_RESULT_FROM_U_SET(table, newResults, U_NL, EBCDIC_RT_LF);
+        } else /* MBCS_OUTPUT_2_SISO */ {
+            stage2Entry = MBCS_STAGE_2_FROM_U(table, U_LF);
+            MBCS_VALUE_2_FROM_STAGE_2_SET(newResults, stage2Entry, U_LF, EBCDIC_NL);
+            
+            stage2Entry = MBCS_STAGE_2_FROM_U(table, U_NL);
+            MBCS_VALUE_2_FROM_STAGE_2_SET(newResults, stage2Entry, U_NL, EBCDIC_LF);
+        }
+        
+        /* set the canonical converter name */
+        newName = new String(icuCanonicalName);
+        newName.concat(UConverterConstants.OPTION_SWAP_LFNL_STRING);
+        
+        if (mbcsTable.swapLFNLStateTable == null) {
+            mbcsTable.swapLFNLStateTable = newStateTable;
+            mbcsTable.swapLFNLFromUnicodeBytes = newResults;
+            mbcsTable.swapLFNLName = newName;
+        }
+        return true;
+    }
+
+    /**
+     * 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));
+    }
+    
+    /* single-byte fromUnicode: set the 16-bit result word with newValue*/
+    static void MBCS_SINGLE_RESULT_FROM_U_SET(char[] table, byte[] results, int c, int newValue) {
+        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
+        results[i] = (byte)((newValue >> 8) & UConverterConstants.UNSIGNED_BYTE_MASK);
+        results[i + 1] =  (byte)(newValue & 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));
+    }
+    
+    static void MBCS_VALUE_2_FROM_STAGE_2_SET(byte[] bytes, int stage2Entry, int c, int newValue) {
+        int i = 2 * (16 * ((char) stage2Entry & UConverterConstants.UNSIGNED_SHORT_MASK) + (c & 0xf));
+        bytes[i] = (byte)((newValue >> 8) & UConverterConstants.UNSIGNED_BYTE_MASK);
+        bytes[i + 1] = (byte)(newValue & 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.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;
+                }
+            }
+
+            /* 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.limit() >= 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..aaed578
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetProviderICU.java
@@ -0,0 +1,332 @@
+/**
+*******************************************************************************
+* 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{
+    private static String optionsString = null;
+    private static boolean gettingJavaCanonicalName = false;
+    
+    /**
+     * 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{
+            // extract the options from the charset name
+            charsetName = processOptions(charsetName);
+            // 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);
+       
+       /* Concat the option string to the icuCanonicalName so that the options can be handled properly
+        * by the actual charset.
+        * Note: getJavaCanonicalName() may eventually call this method so skip the concatenation part
+        * during getJavaCanonicalName() call.
+        */
+       if (gettingJavaCanonicalName) {
+           gettingJavaCanonicalName = false;
+       } else if (optionsString != null) {
+           icuCanonicalName = icuCanonicalName.concat(optionsString);
+           optionsString = null;
+       }
+       
+       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) {
+                gettingJavaCanonicalName = true;
+                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;
+    }
+    
+    private static final String processOptions(String charsetName) {
+        if (charsetName.indexOf(UConverterConstants.OPTION_SWAP_LFNL_STRING) > -1) {
+            /* Remove and save the swap lfnl option string portion of the charset name. */
+            optionsString = UConverterConstants.OPTION_SWAP_LFNL_STRING;
+            
+            charsetName = charsetName.substring(0, charsetName.indexOf(UConverterConstants.OPTION_SWAP_LFNL_STRING));
+        }
+        
+        return charsetName;
+    }
+}
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/CharsetSelector.java b/src/com/ibm/icu/charset/CharsetSelector.java
new file mode 100644
index 0000000..e01aaeb
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetSelector.java
@@ -0,0 +1,222 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+/* 
+ * This is a port of the C++ class UConverterSelector. 
+ *
+ * Methods related to serialization are not ported in this version. In addition,
+ * the selectForUTF8 method is not going to be ported, as UTF8 is seldom used
+ * in Java.
+ * 
+ * @author Shaopeng Jia
+ */
+
+package com.ibm.icu.charset;
+
+import java.nio.charset.Charset;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
+import java.util.List;
+import java.util.Vector;
+
+import com.ibm.icu.impl.IntTrie;
+import com.ibm.icu.impl.PropsVectors;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * Charset Selector
+ * 
+ * A charset selector is built with a list of charset names and given an input
+ * CharSequence returns the list of names the corresponding charsets which can
+ * convert the CharSequence.
+ * 
+ * @draft ICU 4.2
+ */
+public final class CharsetSelector {
+    private IntTrie trie;
+    private int[] pv; // table of bits
+    private String[] encodings; // encodings users ask to use
+
+    private void generateSelectorData(PropsVectors pvec,
+            UnicodeSet excludedCodePoints, int mappingTypes) {
+        int columns = (encodings.length + 31) / 32;
+
+        // set errorValue to all-ones
+        for (int col = 0; col < columns; ++col) {
+            pvec.setValue(PropsVectors.ERROR_VALUE_CP,
+                    PropsVectors.ERROR_VALUE_CP, col, ~0, ~0);
+        }
+
+        for (int i = 0; i < encodings.length; ++i) {
+            Charset testCharset = CharsetICU.forNameICU(encodings[i]);
+            UnicodeSet unicodePointSet = new UnicodeSet(); // empty set
+            ((CharsetICU) testCharset).getUnicodeSet(unicodePointSet,
+                    mappingTypes);
+            int column = i / 32;
+            int mask = 1 << (i % 32);
+            // now iterate over intervals on set i
+            int itemCount = unicodePointSet.getRangeCount();
+            for (int j = 0; j < itemCount; ++j) {
+                int startChar = unicodePointSet.getRangeStart(j);
+                int endChar = unicodePointSet.getRangeEnd(j);
+                pvec.setValue(startChar, endChar, column, ~0, mask);
+            }
+        }
+
+        // handle excluded encodings
+        // Simply set their values to all 1's in the pvec
+        if (!excludedCodePoints.isEmpty()) {
+            int itemCount = excludedCodePoints.getRangeCount();
+            for (int j = 0; j < itemCount; ++j) {
+                int startChar = excludedCodePoints.getRangeStart(j);
+                int endChar = excludedCodePoints.getRangeEnd(j);
+                for (int col = 0; col < columns; col++) {
+                    pvec.setValue(startChar, endChar, col, ~0, ~0);
+                }
+            }
+        }
+
+        trie = pvec.compactToTrieWithRowIndexes();
+        pv = pvec.getCompactedArray();
+    }
+
+    // internal function to intersect two sets of masks
+    // returns whether the mask has reduced to all zeros. The
+    // second set of mask consists of len elements in pv starting from 
+    // pvIndex
+    private boolean intersectMasks(int[] dest, int pvIndex, int len) {
+        int oredDest = 0;
+        for (int i = 0; i < len; ++i) {
+            oredDest |= (dest[i] &= pv[pvIndex + i]);
+        }
+        return oredDest == 0;
+    }
+
+    // internal function
+    private List selectForMask(int[] mask) {
+        // this is the context we will use. Store a table of indices to which
+        // encodings are legit
+
+        Vector result = new Vector();
+        int columns = (encodings.length + 31) / 32;
+        int numOnes = countOnes(mask, columns);
+
+        // now we know the exact space we need to index
+        if (numOnes > 0) {
+            int k = 0;
+            for (int j = 0; j < columns; j++) {
+                int v = mask[j];
+                for (int i = 0; i < 32 && k < encodings.length; i++, k++) {
+                    if ((v & 1) != 0) {
+                        result.addElement(encodings[k]);
+                    }
+                    v >>= 1;
+                }
+            }
+        }
+
+        // otherwise, index will remain NULL
+        return result;
+    }
+
+    // internal function to count how many 1's are there in a mask
+    // algorithm taken from http://graphics.stanford.edu/~seander/bithacks.html
+    private int countOnes(int[] mask, int len) {
+        int totalOnes = 0;
+        for (int i = 0; i < len; ++i) {
+            int ent = mask[i];
+            for (; ent != 0; totalOnes++) {
+                ent &= ent - 1; // clear the least significant bit set
+            }
+        }
+        return totalOnes;
+    }
+
+    /**
+     * Construct a CharsetSelector from a list of charset names.
+     * 
+     * @param charsetList
+     *            a list of charset names in the form of strings. If charsetList
+     *            is empty, a selector for all available charset is constructed.
+     * @param excludedCodePoints
+     *            a set of code points to be excluded from consideration.
+     *            Excluded code points appearing in the input CharSequence do
+     *            not change the selection result. It could be empty when no
+     *            code point should be excluded.
+     * @param mappingTypes
+     *            an int which determines whether to consider only roundtrip
+     *            mappings or also fallbacks, e.g. CharsetICU.ROUNDTRIP_SET. See
+     *            CharsetICU.java for the constants that are currently
+     *            supported.
+     * @throws IllegalArgumentException
+     *             if the parameters is invalid.
+     * @throws IllegalCharsetNameException
+     *             If the given charset name is illegal.
+     * @throws UnsupportedCharsetException
+     *             If no support for the named charset is available in this
+     *             instance of the Java virtual machine.
+     * @draft ICU 4.2
+     */
+    public CharsetSelector(List charsetList, UnicodeSet excludedCodePoints,
+            int mappingTypes) {
+        if (mappingTypes != CharsetICU.ROUNDTRIP_AND_FALLBACK_SET
+                && mappingTypes != CharsetICU.ROUNDTRIP_SET) {
+            throw new IllegalArgumentException("Unsupported mappingTypes");
+        }
+
+        int encodingCount = charsetList.size();
+        if (encodingCount > 0) {
+            encodings = new String[encodingCount];
+            for (int i = 0; i < encodingCount; i++) {
+                encodings[i] = (String) charsetList.get(i);
+            }
+        } else {
+            Object[] availableNames = CharsetProviderICU.getAvailableNames();
+            encodingCount = availableNames.length;
+            encodings = new String[encodingCount];
+            for (int i = 0; i < encodingCount; i++) {
+                encodings[i] = (String) availableNames[i];
+            }
+        }
+
+        PropsVectors pvec = new PropsVectors((encodingCount + 31) / 32);
+        generateSelectorData(pvec, excludedCodePoints, mappingTypes);
+    }
+
+    /**
+     * Select charsets that can map all characters in a CharSequence, ignoring
+     * the excluded code points.
+     * 
+     * @param unicodeText
+     *            a CharSequence. It could be empty.
+     * @return a list that contains charset names in the form of strings. The
+     *         returned encoding names and their order will be the same as
+     *         supplied when building the selector.
+     * 
+     * @draft ICU 4.2
+     */
+    public List selectForString(CharSequence unicodeText) {
+        int columns = (encodings.length + 31) / 32;
+        int[] mask = new int[columns];
+        for (int i = 0; i < columns; i++) {
+            mask[i] = - 1; // set each bit to 1
+                           // Note: All integers are signed in Java, assigning
+                           // 2 ^ 32 -1 to mask is wrong!
+        }
+        int index = 0;
+        while (index < unicodeText.length()) {
+            int c = UTF16.charAt(unicodeText, index);
+            int pvIndex = trie.getCodePointValue(c);
+            index += UTF16.getCharCount(c);
+            if (intersectMasks(mask, pvIndex, columns)) {
+                break;
+            }
+        }
+        return selectForMask(mask);
+    }
+}
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..2fdf507
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterConstants.java
@@ -0,0 +1,169 @@
+/*
+*******************************************************************************
+* 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
+
+    static final String OPTION_SWAP_LFNL_STRING = ",swaplfnl";
+
+    /** 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..b0054f8
--- /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:56a5b21ddeedead9564ef4adcc69d949fd798c859a7c8f4fa4874d276b9e9148
+size 767198
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..7f1208b
--- /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..ea9d11f
--- /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..c6921c2
--- /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..82740eb
--- /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..6da5b4b
--- /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..9e8e716
--- /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..d407fa0
--- /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..e9000a4
--- /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..417e65b
--- /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/ICUConfig.properties b/src/com/ibm/icu/dev/eclipse/misc/ICUConfig.properties
new file mode 100644
index 0000000..26dad40
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/misc/ICUConfig.properties
@@ -0,0 +1,12 @@
+#******************************************************************************
+# Copyright (C) 2008-2009, International Business Machines Corporation and    *
+# others. All Rights Reserved.                                                *
+#******************************************************************************
+# This is the properties contains ICU runtime configuration for eclispe plug-in
+#
+
+#
+# The default TimeZone implementation type used by the ICU TimeZone
+# factory method. [ ICU | JDK ]
+#
+com.ibm.icu.util.TimeZone.DefaultTimeZoneType = JDK
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..d2703b8
--- /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>January 9, 2009</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.1</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-2009 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..50fc9cb
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/pdebuild/build.properties
@@ -0,0 +1,220 @@
+###############################################################################
+# Copyright (c) 2003-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
+###############################################################################
+#####################
+# 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..751c8f2
--- /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..848567c
--- /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..40047e6
--- /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..34e9838
--- /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..4f50419
--- /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="[4.0.0,4.2.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..34d2e4d
--- /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..751c8f2
--- /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..24d73b3
--- /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..c87a86d
--- /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..96ae609
--- /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..2cc2322
--- /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;base=true;version="@IMPL_VERSION@",
+ com.ibm.icu.util;base=true;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..8c108f2
--- /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..b33400d
--- /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..ea9a603
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java
@@ -0,0 +1,3822 @@
+/*
+******************************************************************************
+* Copyright (C) 2003-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.lang.ref.SoftReference;
+import java.text.ParseException;
+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.MissingResourceException;
+import java.util.TreeMap;
+
+//import com.ibm.icu.impl.SimpleCache;
+//import com.ibm.icu.impl.ICUResourceBundle;
+//import com.ibm.icu.impl.LocaleUtility;
+
+/**
+ * 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();
+    private static final HashMap CACHE = new HashMap(20);
+
+    /**
+     * 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 Locale toLocale(String localeID) {
+        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();
+        return new Locale(names[0], names[2], names[3]);
+    }
+
+
+    private static SoftReference nameCacheRef = new SoftReference(Collections.synchronizedMap(new HashMap()));
+    /**
+     * 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;
+    }
+
+    private static ULocale[] ulocales;
+
+    /**
+     * Returns a list of all installed locales.
+     * @stable ICU 3.0
+     */
+    public static ULocale[] getAvailableLocales() {
+//        return ICUResourceBundle.getAvailableULocales();
+        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();
+    }
+
+    /**
+     * 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){
+        Map cache = (Map)nameCacheRef.get();
+        if (cache == null) {
+            cache = Collections.synchronizedMap(new HashMap());
+            nameCacheRef = new SoftReference(cache);
+        }
+        String name = (String)cache.get(localeID);
+        if (name == null) {
+            name = new IDParser(localeID).getName();
+            cache.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);
+        return toLocale(localeID).getDisplayLanguage(toLocale(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);
+        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 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);
+        return toLocale(localeID).getDisplayCountry(toLocale(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);
+        return toLocale(localeID).getDisplayVariant(toLocale(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);
+        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 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);
+        return value;
+    }
+    
+    /**
+     * 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();
+
+        Locale locale = toLocale(localeID);
+        Locale dispLocale = toLocale(displayLocaleID);
+
+        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);
+
+                switch (i) {
+                case 0: name = locale.getDisplayLanguage(dispLocale); break;
+                case 1: break;
+                case 2: name = locale.getDisplayCountry(dispLocale); break;
+                case 3: name = locale.getDisplayVariant(dispLocale); break;
+                }
+
+                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));
+                buf.append(key);
+                buf.append("=");
+                buf.append(val);
+            }
+        }
+
+        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);
+                Locale parent = 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;
+    }
+
+    // copied from com.ibm.icu.impl.LocaleUtility
+    private 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]);
+    }
+
+    /**
+    * 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/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..751c8f2
--- /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..4a1190f
--- /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..3c5b959
--- /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..fb60652
--- /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..a321eae
--- /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..427917f
--- /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-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
+###############################################################################
+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..2b69d81
--- /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..b406f25
--- /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..93763f6
--- /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..1c69cb6
--- /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..84eb0d0
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+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="[4.0.0,4.2.0)"
+Bundle-Copyright: @COPYRIGHT@
+Require-Bundle: org.junit
+Bundle-ClassPath: .,icu4jtests.jar
+Bundle-RequiredExecutionEnvironment: J2SE-1.3,
+ CDC-1.0/Foundation-1.0
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..2d0d402
--- /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..751c8f2
--- /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..e73714f
--- /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..6b3fe56
--- /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..5693f2f
--- /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..2f1e278
--- /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;base=true;full=true;version="@IMPL_VERSION@",
+ com.ibm.icu.math;base=true;full=true;version="@IMPL_VERSION@",
+ com.ibm.icu.text;base=true;full=true;version="@IMPL_VERSION@",
+ com.ibm.icu.util;base=true;full=true;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..8c108f2
--- /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..9fe7037
--- /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..ddea8da
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/ResourceModule.java
@@ -0,0 +1,421 @@
+//##header
+/*
+ **********************************************************************
+ * Copyright (c) 2006-2009, 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..8efd5b2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestAll.java
@@ -0,0 +1,54 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..2e8eea1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestDataModule.java
@@ -0,0 +1,111 @@
+//##header
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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..9c4d06a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestFmwk.java
@@ -0,0 +1,1866 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..d2c64bc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestUtil.java
@@ -0,0 +1,252 @@
+//##header
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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..83ed3c7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestAll.java
@@ -0,0 +1,44 @@
+//##header
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2009, 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..02699b8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java
@@ -0,0 +1,297 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+*******************************************************************************
+*   Copyright (C) 2007-2009, 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..96de652
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
@@ -0,0 +1,5624 @@
+//##header
+/* 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-2009. 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..540fe54
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java
@@ -0,0 +1,2162 @@
+//##header
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+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.HashSet;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.NumberFormat;
+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;
+
+/**
+ * @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.FEBRUARY, 15, 12, 00, 00);
+        Date d00 = tempcal.getTime();
+        tempcal.set(1997, Calendar.FEBRUARY, 15, 12, 00, 56);
+        Date d01 = tempcal.getTime();
+        tempcal.set(1997, Calendar.FEBRUARY, 15, 12, 34, 00);
+        Date d10 = tempcal.getTime();
+        tempcal.set(1997, Calendar.FEBRUARY, 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.");
+        }
+    }
+
+    public void TestGetKeywordValues(){
+
+        final String[][] PREFERRED = {
+            {"root",        "gregorian"},
+            {"und",         "gregorian"},
+            {"en_US",       "gregorian"},
+            {"en_029",      "gregorian"},
+            {"th_TH",       "buddhist", "gregorian"},
+            {"und_TH",      "buddhist", "gregorian"},
+            {"en_TH",       "buddhist", "gregorian"},
+            {"he_IL",       "gregorian", "hebrew"},
+            {"ar_EG",       "gregorian", "islamic", "islamic-civil", "coptic"},
+            {"ja",          "gregorian", "japanese"},
+            {"ps_Guru_IN",  "gregorian", "indian"},
+            {"th@calendar=gregorian",   "buddhist", "gregorian"},
+            {"en@calendar=islamic",     "gregorian"},
+        };
+
+        String[] ALL = Calendar.getKeywordValuesForLocale("calendar", ULocale.getDefault(), false);
+        HashSet ALLSET = new HashSet();
+        for (int i = 0; i < ALL.length; i++) {
+            ALLSET.add(ALL[i]);
+        }
+
+        for (int i = 0; i < PREFERRED.length; i++) {
+            ULocale loc = new ULocale(PREFERRED[i][0]);
+            String[] expected = new String[PREFERRED[i].length - 1];
+            System.arraycopy(PREFERRED[i], 1, expected, 0, expected.length);
+
+            String[] pref = Calendar.getKeywordValuesForLocale("calendar", loc, true);
+            boolean matchPref = false;
+            if (pref.length == expected.length) {
+                matchPref = true;
+                for (int j = 0; j < pref.length; j++) {
+                    if (!pref[j].equals(expected[j])) {
+                        matchPref = false;
+                    }
+                }
+            }
+            if (!matchPref) {
+                errln("FAIL: Preferred values for locale " + loc 
+                        + " got:" + Utility.arrayToString(pref) + " expected:" + Utility.arrayToString(expected));
+            }
+
+            String[] all = Calendar.getKeywordValuesForLocale("calendar", loc, false);
+            boolean matchAll = false;
+            if (all.length == ALLSET.size()) {
+                matchAll = true;
+                for (int j = 0; j < all.length; j++) {
+                    if (!ALLSET.contains(all[j])) {
+                        matchAll = false;
+                        break;
+                    }
+                }
+            }
+            if (!matchAll) {
+                errln("FAIL: All values for locale " + loc
+                        + " got:" + Utility.arrayToString(all)); 
+            }
+        }
+    }
+
+}
+
+//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..40e0a29
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
@@ -0,0 +1,1125 @@
+//##header
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, 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, 2, 2, 11, 49);
+        tempcal.clear();
+        tempcal.set(1985, 2, 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..5e9b960
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CopticTest.java
@@ -0,0 +1,336 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2009, 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");
+        SimpleDateFormat copticFmt = new SimpleDateFormat("EEE MMM dd, yyyy GG");
+        copticFmt.setCalendar(new CopticCalendar());
+
+        CopticCalendar cal = new CopticCalendar(1, 0, 1);
+        assertEquals("Coptic Date", "Fri Jan 01, 0001 AD", copticFmt.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", copticFmt.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..8294749
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java
@@ -0,0 +1,422 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2009, 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");
+        fmt.setCalendar(new EthiopicCalendar());
+
+        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());
+        fmt.setCalendar(new GregorianCalendar());
+        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..1baa643
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charset/TestAll.java
@@ -0,0 +1,34 @@
+/**
+*******************************************************************************
+* Copyright (C) 2009, 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",
+                  "TestSelection"
+              },
+              "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..c79ecfa
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charset/TestConversion.java
@@ -0,0 +1,1159 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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),
+                        "com/ibm/icu/dev/data/testdata", this.getClass().getClassLoader())
+                    : (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) {
+            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),
+                        "com/ibm/icu/dev/data/testdata", this.getClass().getClassLoader())
+                    : (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),
+                        "com/ibm/icu/dev/data/testdata", this.getClass().getClassLoader())
+                    : (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();
+
+//TODO: Fix Me!  After Ticket#6583 is completed, this code should be removed.
+        boolean ignoreError = (0 <= cc.caseNr && cc.caseNr <= 15) || cc.caseNr == 17 || cc.caseNr == 18;
+//TODO: End
+
+        // test to see if the conversion matches actual results
+        if (output.limit() != expected.length()) {
+//TODO: Remove this
+            if (ignoreError) {
+                logln("Test failed: output length does not match expected for charset: "+cc.charset+ " [" + cc.caseNr + "]");
+            } else {
+                errln("Test failed: output length does not match expected for charset: "+cc.charset+ " [" + cc.caseNr + "]");
+                res = false;
+            }
+//TODO: End
+//            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)) {
+//TODO: Remove this
+                    if (ignoreError) {
+                        logln("Test failed: output does not match expected for charset: " + cc.charset
+                                + " [" + cc.caseNr + "]");
+                    } else {
+                        errln("Test failed: output does not match expected for charset: " + cc.charset
+                                + " [" + cc.caseNr + "]");
+                        res = false;
+                    }
+//TODO: End
+//                    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/charset/TestSelection.java b/src/com/ibm/icu/dev/test/charset/TestSelection.java
new file mode 100644
index 0000000..c0499c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charset/TestSelection.java
@@ -0,0 +1,931 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+/**
+ * Test for CharsetSelector
+ * 
+ * This is a port of ucnvseltst.c from ICU4C
+ * 
+ * Tests related to serialization are not ported in this version. In addition,
+ * the TestConversionUTF8 method is not going to be ported, as UTF8 is seldom used
+ * in Java.
+ * 
+ * @author Shaopeng Jia
+ */
+
+package com.ibm.icu.dev.test.charset;
+
+import java.nio.charset.Charset;
+import java.util.List;
+import java.util.Vector;
+
+import com.ibm.icu.charset.CharsetICU;
+import com.ibm.icu.charset.CharsetProviderICU;
+import com.ibm.icu.charset.CharsetSelector;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+public class TestSelection extends TestFmwk {
+    private Object[] availableCharsetNames;
+
+    private int findIndex(String charsetName) {
+        int index = -1;
+        Charset set1 = CharsetICU.forNameICU(charsetName);
+        for (int i = 0; i < availableCharsetNames.length; i++) {
+            Charset set2 = CharsetICU.forNameICU((String) availableCharsetNames[i]);
+            if (set1.compareTo(set2) == 0) {
+                index = i;
+                break;
+            }
+        }
+        if (index == -1) {
+            throw new IllegalArgumentException(
+                    "findIndex cannot find the charsetName passed in");
+        }
+        return index;
+    }
+
+    private void fillBool(List result, boolean[] toFill) {
+        for (int i = 0; i < result.size(); i++) {
+            String name = (String) result.get(i);
+            toFill[findIndex(name)] = true;
+        }
+    }
+
+    private void verifyResultUTF16(String s, Vector encodings, List result,
+            UnicodeSet excludedEncodings, int mappingTypes) {
+        boolean[] resultsFromSystem = new boolean[availableCharsetNames.length];
+        boolean[] resultsManually = new boolean[availableCharsetNames.length];
+        for (int i = 0; i < availableCharsetNames.length; i++) {
+            resultsFromSystem[i] = resultsManually[i] = false;
+        }
+
+        int numOfEncodings = encodings.size();
+        for (int i = 0; i < numOfEncodings; i++) {
+            resultsManually[findIndex((String) encodings.get(i))] = true;
+            UnicodeSet unicodePointSet = new UnicodeSet();
+            Charset testCharset = CharsetICU.forNameICU((String) encodings
+                    .get(i));
+            ((CharsetICU) testCharset).getUnicodeSet(unicodePointSet,
+                    mappingTypes);
+            int ch;
+            int index = 0;
+            while (index < s.length()) {
+                ch = UTF16.charAt(s, index);
+                if (!excludedEncodings.contains(ch)
+                        && !unicodePointSet.contains(ch)) {
+                    resultsManually[findIndex((String) encodings.get(i))] = false;
+                    break;
+                }
+                index += UTF16.getCharCount(ch);
+            }
+        }
+
+        // fill the bool for the selector results
+        fillBool(result, resultsFromSystem);
+        for (int i = 0; i < availableCharsetNames.length; i++) {
+            if (resultsManually[i] != resultsFromSystem[i]) {
+                errln("failure in charset selector! Charset "
+                        + (String) availableCharsetNames[i]
+                        + " had conflicting results manual: "
+                        + resultsManually[i] + ", system: "
+                        + resultsFromSystem[i] + "\n");
+            }
+        }
+    }
+
+    protected void init() {
+        availableCharsetNames = CharsetProviderICU.getAvailableNames();
+    }
+
+    public static void main(String[] args) throws Exception {
+        new TestSelection().run(args);
+    }
+
+    public void TestConversionUTF16() {
+        /*
+         * test cases are separated by a -1 each line is one test case including
+         * encodings to check for I'd like to generate this array randomly but
+         * not sure if this is an allowed practice in ICU
+         */
+        int encodingsTestCases[] = { 
+              92, 90, 92, 93, 94, 95, 96, 97, 98, 99, -1,
+              
+              // The tests below could be used for more comprehensive testing
+/*              100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, -1,
+                1, 3, 7, 9, 11, 13, 12, 15, 19, 20, 22, 24, -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, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22,
+                24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54,
+                56, -1, 1, 5, 9, 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, -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, 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, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 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, 91, 92, 93, 94, 95, 96, 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, 123,
+                124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+                136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+                148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+                160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+                172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+                184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+                196, 197, 198, 199, 200, -1, 
+                1, -1                
+*/             };
+
+        UnicodeSet[] excludedSets = new UnicodeSet[3];
+        excludedSets[0] = new UnicodeSet();
+        for (int i = 1; i < 3; i++) {
+            excludedSets[i] = new UnicodeSet(i * 30, i * 30 + 500);
+        }
+
+        for (int excludedSetId = 0; excludedSetId < 3; excludedSetId++) {
+            for (int testCaseIdx = 0, prev = 0; testCaseIdx < encodingsTestCases.length; testCaseIdx++) {
+                if (encodingsTestCases[testCaseIdx] != -1)
+                    continue;
+                Vector encodings = new Vector();
+                for (int i = prev; i < testCaseIdx; i++) {
+                    encodings.add(availableCharsetNames[encodingsTestCases[i]]);
+                }
+                CharsetSelector sel = new CharsetSelector(encodings,
+                        excludedSets[excludedSetId], CharsetICU.ROUNDTRIP_SET);
+
+                List result;
+                for (int i = 0; i < texts.length; i++) {
+                    result = sel.selectForString(texts[i]);
+                    verifyResultUTF16(texts[i], encodings, result,
+                            excludedSets[excludedSetId],
+                            CharsetICU.ROUNDTRIP_SET);
+                }
+                prev = testCaseIdx + 1;
+            }
+        }
+    }
+    
+    private String[] texts = {
+            "\u0427\u0442\u043E \u0442\u0430\u043A\u043E\u0435 Unicode? Unicode - \u044D\u0442\u043E" +
+            " \u0443\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u043A\u043E\u0434" +
+            " \u0434\u043B\u044F \u043B\u044E\u0431\u043E\u0433\u043E \u0441\u0438\u043C\u0432\u043E\u043B\u0430," +
+            " \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 " +
+            "\u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u044B, \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E" +
+            " \u043E\u0442 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B, " +
+            "\u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 \u044F\u0437\u044B\u043A\u0430. " +
+            "\u041F\u043E \u0441\u0432\u043E\u0435\u0439 \u043F\u0440\u0438\u0440\u043E\u0434\u0435" +
+            " \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u044B \u043C\u043E\u0433\u0443\u0442 " +
+            "\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043B\u0438\u0448\u044C \u0441" +
+            " \u0447\u0438\u0441\u043B\u0430\u043C\u0438. \u0418 \u0434\u043B\u044F " +
+            "\u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043E\u043D\u0438" +
+            " \u043C\u043E\u0433\u043B\u0438 \u0445\u0440\u0430\u043D\u0438\u0442\u044C " +
+            "\u0432 \u043F\u0430\u043C\u044F\u0442\u0438 \u0431\u0443\u043A\u0432\u044B " +
+            "\u0438\u043B\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B, " +
+            "\u043A\u0430\u0436\u0434\u043E\u043C\u0443 \u0442\u0430\u043A\u043E\u043C\u0443 " +
+            "\u0441\u0438\u043C\u0432\u043E\u043B\u0443 \u0434\u043E\u043B\u0436\u043D\u043E " +
+            "\u0431\u044B\u0442\u044C \u043F\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043E " +
+            "\u0432 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 " +
+            "\u0447\u0438\u0441\u043B\u043E. \u0414\u043E \u0442\u043E\u0433\u043E, " +
+            "\u043A\u0430\u043A \u043F\u043E\u044F\u0432\u0438\u043B\u0441\u044F Unicode, " +
+            "\u0432 \u043C\u0438\u0440\u0435 \u0438\u043C\u0435\u043B\u0438 " +
+            "\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u0435 \u0441\u043E\u0442\u043D\u0438 " +
+            "\u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0445 \u0441\u0445\u0435\u043C " +
+            "\u043F\u043E\u0434\u043E\u0431\u043D\u043E\u0433\u043E " +
+            "\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F " +
+            "\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432. \u041D\u043E \u043D\u0438 " +
+            "\u043E\u0434\u043D\u0430 \u0438\u0437 \u044D\u0442\u0438\u0445 " +
+            "\u0441\u0445\u0435\u043C \u043D\u0435 \u0431\u044B\u043B\u0430 " +
+            "\u0441\u0442\u043E\u043B\u044C \u0443\u043D\u0438\u0432\u0435\u0440\u0441\u0430\u043B\u044C\u043D\u043E\u0439," +
+            " \u0447\u0442\u043E\u0431\u044B \u043E\u043F\u0438\u0441\u0430\u0442\u044C " +
+            "\u0432\u0441\u0435 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u044B\u0435 " +
+            "\u0441\u0438\u043C\u0432\u043E\u043B\u044B: \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, " +
+            "\u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F " +
+            "\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F " +
+            "\u0431\u0443\u043A\u0432, \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u0432 " +
+            "\u0430\u043B\u0444\u0430\u0432\u0438\u0442\u044B \u044F\u0437\u044B\u043A\u043E\u0432 " +
+            "\u0415\u0432\u0440\u043E\u043F\u0435\u0439\u0441\u043A\u043E\u0433\u043E " +
+            "\u0421\u043E\u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0430, " +
+            "\u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0431\u044B\u043B\u043E " +
+            "\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C " +
+            "\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E " +
+            "\u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0445 \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043E\u043A. " +
+            "\u041F\u043E \u0431\u043E\u043B\u044C\u0448\u043E\u043C\u0443 \u0441\u0447\u0451\u0442\u0443 " +
+            "\u0434\u0430\u0436\u0435 \u0438 \u0434\u043B\u044F \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0433\u043E " +
+            "\u044F\u0437\u044B\u043A\u0430, \u0441\u043A\u0430\u0436\u0435\u043C, " +
+            "\u0430\u043D\u0433\u043B\u0438\u0439\u0441\u043A\u043E\u0433\u043E, \u043D\u0435 " +
+            "\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043E\u0432\u0430\u043B\u043E \u0435\u0434\u0438\u043D\u043E\u0439 " +
+            "\u0441\u0438\u0441\u0442\u0435\u043C\u044B \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F," +
+            " \u0432\u043A\u043B\u044E\u0447\u0430\u0432\u0448\u0435\u0439 \u0432 \u0441\u0435\u0431\u044F \u0432\u0441\u0435 " +
+            "\u043E\u0431\u044B\u0447\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0435 " +
+            "\u0431\u0443\u043A\u0432\u044B, \u0437\u043D\u0430\u043A\u0438 \u043F\u0443\u043D\u043A\u0442\u0443\u0430\u0446\u0438\u0438" +
+            " \u0438 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B." +
+            " \u0411\u043E\u043B\u0435\u0435 \u0442\u043E\u0433\u043E, " +
+            "\u0432\u0441\u0435 \u044D\u0442\u0438 \u0441\u0445\u0435\u043C\u044B " +
+            "\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0447\u0430\u0441\u0442\u043E" +
+            " \u0434\u0430\u0436\u0435 \u043D\u0435 \u0431\u044B\u043B\u0438" +
+            " \u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u044B \u0434\u0440\u0443\u0433 \u0441" +
+            " \u0434\u0440\u0443\u0433\u043E\u043C. \u041A \u043F\u0440\u0438\u043C\u0435\u0440\u0443," +
+            " \u0434\u0432\u0435 \u0440\u0430\u0437\u043D\u044B\u0435 \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043A\u0438 " +
+            "\u043C\u043E\u0433\u043B\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C " +
+            "\u043E\u0434\u0438\u043D \u0438 \u0442\u043E\u0442 \u0436\u0435 \u043A\u043E\u0434 \u0434\u043B\u044F " +
+            "\u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0434\u0432\u0443\u0445 " +
+            "\u0440\u0430\u0437\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0438\u043B\u0438 " +
+            "\u043F\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043D\u044B\u0435 " +
+            "\u043A\u043E\u0434\u044B \u043E\u0434\u043D\u043E\u0439 \u0438 \u0442\u043E\u0439 \u0436\u0435 " +
+            "\u0431\u0443\u043A\u0432\u0435. \u0412 \u044D\u0442\u043E\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 " +
+            "\u0434\u043B\u044F \u043B\u044E\u0431\u043E\u0433\u043E \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430, " +
+            "\u0430 \u043E\u0441\u043E\u0431\u0435\u043D\u043D\u043E \u0441\u0435\u0440\u0432\u0435\u0440\u0430, " +
+            "\u043F\u0440\u0438\u0445\u043E\u0434\u0438\u043B\u043E\u0441\u044C " +
+            "\u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044C " +
+            "\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0440\u0430\u0437\u043D\u044B\u0445 " +
+            "\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043E\u043A, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 " +
+            "\u043C\u043E\u0433\u043B\u0438 \u043F\u043E\u043D\u0430\u0434\u043E\u0431\u0438\u0442\u044C\u0441\u044F, " +
+            "\u043D\u043E \u0434\u0430\u0436\u0435 \u0438 \u0442\u043E\u0433\u0434\u0430 \u043F\u0440\u0438 " +
+            "\u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043D\u043D\u044B\u0445 \u043D\u0430 " +
+            "\u0434\u0440\u0443\u0433\u0443\u044E \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0443 " +
+            "\u0438\u043B\u0438 \u043F\u0440\u0438 \u0438\u0445 " +
+            "\u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u0438 \u0432 " +
+            "\u0434\u0440\u0443\u0433\u0443\u044E \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043A\u0443 " +
+            "\u0432\u0441\u0435\u0433\u0434\u0430 \u043E\u0441\u0442\u0430\u0432\u0430\u043B\u0441\u044F " +
+            "\u0440\u0438\u0441\u043A, \u0447\u0442\u043E \u044D\u0442\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 " +
+            "\u043E\u043A\u0430\u0436\u0443\u0442\u0441\u044F " +
+            "\u043F\u043E\u0432\u0440\u0435\u0436\u0434\u0451\u043D\u043D\u044B\u043C\u0438. " +
+            "Unicode \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442 \u0442\u0430\u043A\u043E\u0435 " +
+            "\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0432\u0435\u0449\u0435\u0439! " +
+            "\u0421\u0438\u0441\u0442\u0435\u043C\u0430 Unicode \u043F\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442 " +
+            "\u0443\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u043A\u043E\u0434 \u043B\u044E\u0431\u043E\u043C\u0443 " +
+            "\u0441\u0438\u043C\u0432\u043E\u043B\u0443, \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 " +
+            "\u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u044B, \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E " +
+            "\u043E\u0442 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B, " +
+            "\u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 \u044F\u0437\u044B\u043A\u0430. " +
+            "Unicode \u0431\u044B\u043B \u043F\u0440\u0438\u043D\u044F\u0442 \u043A\u0430\u043A " +
+            "\u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442 \u0442\u0430\u043A\u0438\u043C\u0438 " +
+            "\u043B\u0438\u0434\u0435\u0440\u0430\u043C\u0438 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u043D\u043E\u0439" +
+            " \u0438\u043D\u0434\u0443\u0441\u0442\u0440\u0438\u0438, \u043A\u0430\u043A " +
+            "Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys \u0434\u0430 \u0438 " +
+            "\u043C\u043D\u043E\u0433\u0438\u043C\u0438 \u0434\u0440\u0443\u0433\u0438\u043C\u0438. " +
+            "\u0418\u043C\u0435\u043D\u043D\u043E \u044D\u0442\u0430 \u0441\u0445\u0435\u043C\u0430 " +
+            "\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F " +
+            "\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0442\u0430\u043A\u0438\u043C\u0438 " +
+            "\u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u043C\u0438 " +
+            "\u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u044F\u043C\u0438 \u0438 " +
+            "\u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u0430\u043C\u0438, " +
+            "\u043A\u0430\u043A \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, " +
+            "WML \u0438 \u0442\u0430\u043A \u0434\u0430\u043B\u0435\u0435. \u0418\u043C\u0435\u043D\u043D\u043E Unicode " +
+            "\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0439 " +
+            "\u0441\u0445\u0435\u043C\u043E\u0439 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 ISO/IEC 10646. " +
+            "\u041D\u0430\u043A\u043E\u043D\u0435\u0446, \u044D\u0442\u0430 \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043A\u0430 " +
+            "\u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0432\u043E " +
+            "\u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435 " +
+            "\u043E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0441\u0438\u0441\u0442\u0435\u043C, " +
+            "\u0432\u043E \u0432\u0441\u0435\u0445 \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0445 " +
+            "\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 \u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442 " +
+            "\u0438 \u0432 \u0431\u043E\u043B\u044C\u0448\u043E\u043C \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0435 " +
+            "\u0434\u0440\u0443\u0433\u0438\u0445 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C. " +
+            "\u041F\u043E\u0432\u0441\u0435\u043C\u0435\u0441\u0442\u043D\u043E\u0435 " +
+            "\u0440\u0430\u0441\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0435\u043D\u0438\u0435 " +
+            "\u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u0430 Unicode \u0440\u043E\u0432\u043D\u043E " +
+            "\u043A\u0430\u043A \u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u044C " +
+            "\u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0449\u0438\u0445 \u0435\u0433\u043E " +
+            "\u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0432 \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0435\u0435 " +
+            "\u0432\u0440\u0435\u043C\u044F \u044F\u0432\u043B\u044F\u044E\u0442\u0441\u044F " +
+            "\u043E\u0434\u043D\u0438\u043C\u0438 \u0438\u0437 \u043D\u0430\u0438\u0431\u043E\u043B\u0435\u0435 " +
+            "\u0432\u0430\u0436\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0439 " +
+            "\u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044F \u0438\u043D\u0434\u0443\u0441\u0442\u0440\u0438\u0438 " +
+            "\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u043E\u0433\u043E " +
+            "\u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0435\u043D\u0438\u044F. " +
+            "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 Unicode \u0432 " +
+            "\u043C\u043D\u043E\u0433\u043E\u0443\u0440\u043E\u0432\u043D\u0435\u0432\u044B\u0445 " +
+            "\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u0445 \u0438\u043B\u0438 " +
+            "\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0445 " +
+            "\u043A\u043E\u043C\u043F\u043B\u0435\u043A\u0441\u0430\u0445, " +
+            "\u043F\u043E\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u0432 \u0440\u0430\u043C\u043A\u0430\u0445 " +
+            "\u0430\u0440\u0445\u0438\u0442\u0435\u043A\u0442\u0443\u0440\u044B " +
+            "\u043A\u043B\u0438\u0435\u043D\u0442-\u0441\u0435\u0440\u0432\u0435\u0440, \u0430 " +
+            "\u0442\u0430\u043A\u0436\u0435 \u043F\u0440\u0438 " +
+            "\u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0438 " +
+            "\u0434\u0430\u043D\u043D\u044B\u0445 \u0432 \u0441\u0435\u0442\u0438 \u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442, " +
+            "\u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442 \u043A " +
+            "\u0437\u043D\u0430\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u043C\u0443 " +
+            "\u0441\u043D\u0438\u0436\u0435\u043D\u0438\u044E \u0440\u0430\u0441\u0445\u043E\u0434\u043E\u0432 " +
+            "\u043D\u0430 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0443 \u044D\u0442\u0438\u0445 " +
+            "\u043F\u0440\u043E\u0434\u0443\u043A\u0442\u043E\u0432 \u0438\u043B\u0438 " +
+            "\u0441\u0435\u0440\u0432\u0438\u0441\u043E\u0432 \u043F\u043E \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044E " +
+            "\u0441\u043E \u0441\u043B\u0443\u0447\u0430\u0435\u043C " +
+            "\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u0442\u0430\u0440\u044B\u0445 " +
+            "\u0441\u0445\u0435\u043C \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F. " +
+            "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E, Unicode " +
+            "\u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C " +
+            "\u0435\u0434\u0438\u043D\u044B\u0439 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0439 " +
+            "\u043F\u0440\u043E\u0434\u0443\u043A\u0442 \u0438\u043B\u0438 \u0441\u0430\u0439\u0442 " +
+            "\u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442 \u0434\u043B\u044F \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0430 " +
+            "\u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C, \u044F\u0437\u044B\u043A\u043E\u0432 \u0438 " +
+            "\u0441\u0442\u0440\u0430\u043D \u0431\u0435\u0437 \u043A\u0430\u043A\u0438\u0445-\u043B\u0438\u0431\u043E " +
+            "\u043F\u0435\u0440\u0435\u0434\u0435\u043B\u043E\u043A. \u0410 \u0435\u0433\u043E " +
+            "\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u043F\u0440\u0438 " +
+            "\u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043D\u043D\u044B\u0445 \u043C\u0435\u0436\u0434\u0443 " +
+            "\u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u043C\u0438 \u0441\u0438\u0441\u0442\u0435\u043C\u0430\u043C\u0438 " +
+            "\u043F\u0440\u0435\u0434\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u044D\u0442\u0438 " +
+            "\u0434\u0430\u043D\u043D\u044B\u0435 \u043E\u0442 \u043F\u043E\u0432\u0440\u0435\u0436\u0434\u0435",
+            
+         // The tests below could be used for more comprehensive testing
+/*            "\u0645\u0627 \u0647\u064A \u0627\u0644\u0634\u0641\u0631\u0629 \u0627\u0644\u0645\u0648\u062D\u062F\u0629 " +
+            "\"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" \u061F\n\n\u0623\u0633\u0627\u0633\u064B\u0627\u060C " +
+            "\u062A\u062A\u0639\u0627\u0645\u0644 \u0627\u0644\u062D\u0648\u0627\u0633\u064A\u0628 \u0641\u0642\u0637 \u0645\u0639 " +
+            "\u0627\u0644\u0623\u0631\u0642\u0627\u0645\u060C \u0648\u062A\u0642\u0648\u0645 \u0628\u062A\u062E\u0632\u064A\u0646 " +
+            "\u0627\u0644\u0623\u062D\u0631\u0641 \u0648\u0627\u0644\u0645\u062D\u0627\u0631\u0641 \u0627\u0644\u0623\u062E\u0631\u0649 " +
+            "\u0628\u0639\u062F \u0623\u0646 \u062A\u064F\u0639\u0637\u064A \u0631\u0642\u0645\u0627 \u0645\u0639\u064A\u0646\u0627 " +
+            "\u0644\u0643\u0644 \u0648\u0627\u062D\u062F \u0645\u0646\u0647\u0627. \u0648\u0642\u0628\u0644 " +
+            "\u0627\u062E\u062A\u0631\u0627\u0639 \"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\"\u060C \u0643\u0627\u0646 " +
+            "\u0647\u0646\u0627\u0643 \u0645\u0626\u0627\u062A \u0627\u0644\u0623\u0646\u0638\u0645\u0629 " +
+            "\u0644\u0644\u062A\u0634\u0641\u064A\u0631 \u0648\u062A\u062E\u0635\u064A\u0635 \u0647\u0630\u0647 " +
+            "\u0627\u0644\u0623\u0631\u0642\u0627\u0645 \u0644\u0644\u0645\u062D\u0627\u0631\u0641\u060C \u0648\u0644\u0645 " +
+            "\u064A\u0648\u062C\u062F \u0646\u0638\u0627\u0645 \u062A\u0634\u0641\u064A\u0631 \u0648\u0627\u062D\u062F " +
+            "\u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u062C\u0645\u064A\u0639 \u0627\u0644\u0645\u062D\u0627\u0631\u0641 " +
+            "\u0627\u0644\u0636\u0631\u0648\u0631\u064A\u0629. \u0648\u0639\u0644\u0649 \u0633\u0628\u064A\u0644 " +
+            "\u0627\u0644\u0645\u062B\u0627\u0644\u060C \u0641\u0625\u0646 \u0627\u0644\u0627\u062A\u062D\u0627\u062F " +
+            "\u0627\u0644\u0623\u0648\u0631\u0648\u0628\u064A \u0644\u0648\u062D\u062F\u0647\u060C \u0627\u062D\u062A\u0648\u0649 " +
+            "\u0627\u0644\u0639\u062F\u064A\u062F \u0645\u0646 \u0627\u0644\u0634\u0641\u0631\u0627\u062A " +
+            "\u0627\u0644\u0645\u062E\u062A\u0644\u0641\u0629 \u0644\u064A\u063A\u0637\u064A \u062C\u0645\u064A\u0639 " +
+            "\u0627\u0644\u0644\u063A\u0627\u062A \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u0629 \u0641\u064A " +
+            "\u0627\u0644\u0627\u062A\u062D\u0627\u062F. \u0648\u062D\u062A\u0649 \u0644\u0648 " +
+            "\u0627\u0639\u062A\u0628\u0631\u0646\u0627 \u0644\u063A\u0629 \u0648\u0627\u062D\u062F\u0629\u060C " +
+            "\u0643\u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0625\u0646\u062C\u0644\u064A\u0632\u064A\u0629\u060C " +
+            "\u0641\u0625\u0646 \u062C\u062F\u0648\u0644 \u0634\u0641\u0631\u0629 \u0648\u0627\u062D\u062F \u0644\u0645 " +
+            "\u064A\u0643\u0641 \u0644\u0627\u0633\u062A\u064A\u0639\u0627\u0628 \u062C\u0645\u064A\u0639 " +
+            "\u0627\u0644\u0623\u062D\u0631\u0641 \u0648\u0639\u0644\u0627\u0645\u0627\u062A " +
+            "\u0627\u0644\u062A\u0631\u0642\u064A\u0645 \u0648\u0627\u0644\u0631\u0645\u0648\u0632 " +
+            "\u0627\u0644\u0641\u0646\u064A\u0629 \u0648\u0627\u0644\u0639\u0644\u0645\u064A\u0629 " +
+            "\u0627\u0644\u0634\u0627\u0626\u0639\u0629 \u0627\u0644\u0627\u0633\u062A\u0639\u0645\u0627\u0644.\n\n" +
+            " \n\n\u0648\u062A\u062C\u062F\u0631 \u0627\u0644\u0645\u0644\u0627\u062D\u0638\u0629 \u0623\u0646 " +
+            "\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u062A\u0634\u0641\u064A\u0631 " +
+            "\u0627\u0644\u0645\u062E\u062A\u0644\u0641\u0629 \u062A\u062A\u0639\u0627\u0631\u0636 \u0645\u0639 " +
+            "\u0628\u0639\u0636\u0647\u0627 \u0627\u0644\u0628\u0639\u0636. \u0648\u0628\u0639\u0628\u0627\u0631\u0629 " +
+            "\u0623\u062E\u0631\u0649\u060C \u064A\u0645\u0643\u0646 \u0623\u0646 \u064A\u0633\u062A\u062E\u062F\u0650\u0645 " +
+            "\u062C\u062F\u0648\u0644\u064A \u0634\u0641\u0631\u0629 \u0646\u0641\u0633 \u0627\u0644\u0631\u0642\u0645 " +
+            "\u0644\u062A\u0645\u062B\u064A\u0644 \u0645\u062D\u0631\u0641\u064A\u0646 " +
+            "\u0645\u062E\u062A\u0644\u0641\u064A\u0646\u060C \u0623\u0648 \u0631\u0642\u0645\u064A\u0646 " +
+            "\u0645\u062E\u062A\u0644\u0641\u064A\u0646 \u0644\u062A\u0645\u062B\u064A\u0644 \u0646\u0641\u0633 " +
+            "\u0627\u0644\u0645\u062D\u0631\u0641. \u0648\u0644\u0648 \u0623\u062E\u0630\u0646\u0627 \u0623\u064A " +
+            "\u062C\u0647\u0627\u0632 \u062D\u0627\u0633\u0648\u0628\u060C \u0648\u0628\u062E\u0627\u0635\u0629 " +
+            "\u062C\u0647\u0627\u0632 \u0627\u0644\u0646\u0627\u062F\u0644 (server)\u060C \u0641\u064A\u062C\u0628 " +
+            "\u0623\u0646 \u062A\u0643\u0648\u0646 \u0644\u062F\u064A\u0647 \u0627\u0644\u0642\u062F\u0631\u0629 " +
+            "\u0639\u0644\u0649 \u0627\u0644\u062A\u0639\u0627\u0645\u0644 \u0645\u0639 \u0639\u062F\u062F " +
+            "\u0643\u0628\u064A\u0631 \u0645\u0646 \u0627\u0644\u0634\u0641\u0631\u0627\u062A " +
+            "\u0627\u0644\u0645\u062E\u062A\u0644\u0641\u0629\u060C \u0648\u064A\u062A\u0645 " +
+            "\u062A\u0635\u0645\u064A\u0645\u0647 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0623\u0633\u0627\u0633. " +
+            "\u0648\u0645\u0639 \u0630\u0644\u0643\u060C \u0641\u0639\u0646\u062F\u0645\u0627 \u062A\u0645\u0631 " +
+            "\u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0639\u0628\u0631 \u0623\u0646\u0638\u0645\u0629 " +
+            "\u0645\u062E\u062A\u0644\u0641\u0629\u060C \u062A\u0648\u062C\u062F \u0647\u0646\u0627\u0643 " +
+            "\u062E\u0637\u0648\u0631\u0629 \u0644\u0636\u064A\u0627\u0639 \u0623\u0648 \u062A\u062D\u0631\u064A\u0641 " +
+            "\u0628\u0639\u0636 \u0647\u0630\u0647 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A.\n\n " +
+            "\n\n\"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" \u062A\u063A\u064A\u0631 \u0647\u0630\u0627 " +
+            "\u0643\u0644\u064A\u0640\u0627 !\n\n\u062A\u062E\u0635\u0635 \u0627\u0644\u0634\u0641\u0631\u0629 " +
+            "\u0627\u0644\u0645\u0648\u062D\u062F\u0629 \"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" " +
+            "\u0631\u0642\u0645\u0627 \u0648\u062D\u064A\u062F\u0627 \u0644\u0643\u0644 \u0645\u062D\u0631\u0641 " +
+            "\u0641\u064A \u062C\u0645\u064A\u0639 \u0627\u0644\u0644\u063A\u0627\u062A " +
+            "\u0627\u0644\u0639\u0627\u0644\u0645\u064A\u0629\u060C \u0648\u0630\u0644\u0643 \u0628\u063A\u0636 " +
+            "\u0627\u0644\u0646\u0638\u0631 \u0639\u0646 \u0646\u0648\u0639 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 " +
+            "\u0623\u0648 \u0627\u0644\u0628\u0631\u0627\u0645\u062C \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u0629. " +
+            "\u0648\u0642\u062F \u062A\u0640\u0645 \u062A\u0628\u0646\u064A \u0645\u0648\u0627\u0635\u0641\u0629 " +
+            "\"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" \u0645\u0640\u0640\u0646 \u0642\u0628\u0640\u0644 " +
+            "\u0642\u0627\u062F\u0629 \u0627\u0644\u0635\u0627\u0646\u0639\u064A\u0646 \u0644\u0623\u0646\u0638\u0645\u0629 " +
+            "\u0627\u0644\u062D\u0648\u0627\u0633\u064A\u0628 \u0641\u0640\u064A \u0627\u0644\u0639\u0627\u0644\u0645\u060C " +
+            "\u0645\u062B\u0644 \u0634\u0631\u0643\u0627\u062A \u0622\u064A.\u0628\u064A.\u0625\u0645. " +
+            "(IBM)\u060C \u0623\u0628\u0640\u0644 (APPLE)\u060C \u0647\u0650\u064A\u0640\u0652\u0648\u0644\u0650\u0640\u062A " +
+            "\u0628\u0640\u0627\u0643\u0640\u0631\u062F (Hewlett-Packard) \u060C " +
+            "\u0645\u0627\u064A\u0643\u0631\u0648\u0633\u0648\u0641\u062A (Microsoft)\u060C " +
+            "\u0623\u0648\u0631\u0627\u0643\u0650\u0640\u0644 (Oracle) \u060C \u0635\u0646 (Sun) " +
+            "\u0648\u063A\u064A\u0631\u0647\u0627. \u0643\u0645\u0627 " +
+            "\u0623\u0646 \u0627\u0644\u0645\u0648\u0627\u0635\u0641\u0627\u062A " +
+            "\u0648\u0627\u0644\u0645\u0642\u0627\u064A\u064A\u0633 \u0627\u0644\u062D\u062F\u064A\u062B\u0629 " +
+            "(\u0645\u062B\u0644 \u0644\u063A\u0629 \u0627\u0644\u0628\u0631\u0645\u062C\u0629 \"\u062C\u0627\u0641\u0627\" " +
+            "\"JAVA\" \u0648\u0644\u063A\u0629 \"\u0625\u0643\u0633 \u0625\u0645 \u0625\u0644\" \"XML\" \u0627\u0644\u062A\u064A " +
+            "\u062A\u0633\u062A\u062E\u062F\u0645 \u0644\u0628\u0631\u0645\u062C\u0629 " +
+            "\u0627\u0644\u0627\u0646\u062A\u0631\u0646\u064A\u062A) \u062A\u062A\u0637\u0644\u0628 " +
+            "\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\". " +
+            "\u0639\u0644\u0627\u0648\u0629 \u0639\u0644\u0649 \u0630\u0644\u0643 \u060C \u0641\u0625\u0646 " +
+            "\"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" \u0647\u064A \u0627\u0644\u0637\u0640\u0631\u064A\u0640\u0642\u0640\u0629 " +
+            "\u0627\u0644\u0631\u0633\u0640\u0645\u064A\u0629 \u0644\u062A\u0637\u0628\u064A\u0642 " +
+            "\u0627\u0644\u0645\u0642\u064A\u0640\u0627\u0633 \u0627\u0644\u0640\u0639\u0640\u0627\u0644\u0640\u0645\u064A " +
+            "\u0625\u064A\u0632\u0648 \u0661\u0660\u0666\u0664\u0666  (ISO 10646) .\n\n \n\n\u0625\u0646 \u0628\u0632\u0648\u063A " +
+            "\u0645\u0648\u0627\u0635\u0641\u0629 \"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" " +
+            "\u0648\u062A\u0648\u0641\u0651\u064F\u0631 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u062A\u064A " +
+            "\u062A\u0633\u062A\u062E\u062F\u0645\u0647 \u0648\u062A\u062F\u0639\u0645\u0647\u060C \u064A\u0639\u062A\u0628\u0631 " +
+            "\u0645\u0646 \u0623\u0647\u0645 \u0627\u0644\u0627\u062E\u062A\u0631\u0627\u0639\u0627\u062A " +
+            "\u0627\u0644\u062D\u062F\u064A\u062B\u0629 \u0641\u064A \u0639\u0648\u0644\u0645\u0629 " +
+            "\u0627\u0644\u0628\u0631\u0645\u062C\u064A\u0627\u062A \u0644\u062C\u0645\u064A\u0639 " +
+            "\u0627\u0644\u0644\u063A\u0627\u062A \u0641\u064A \u0627\u0644\u0639\u0627\u0644\u0645. " +
+            "\u0648\u0625\u0646 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" " +
+            "\u0641\u064A \u0639\u0627\u0644\u0645 \u0627\u0644\u0627\u0646\u062A\u0631\u0646\u064A\u062A " +
+            "\u0633\u064A\u0624\u062F\u064A \u0625\u0644\u0649 \u062A\u0648\u0641\u064A\u0631 \u0643\u0628\u064A\u0631 " +
+            "\u0645\u0642\u0627\u0631\u0646\u0629 \u0645\u0639 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 " +
+            "\u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0627\u0644\u062A\u0642\u0644\u064A\u062F\u064A\u0629 " +
+            "\u0644\u0644\u0645\u062D\u0627\u0631\u0641 \u0627\u0644\u0645\u0634\u0641\u0631\u0629. \u0643\u0645\u0627 " +
+            "\u0623\u0646 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" " +
+            "\u0633\u064A\u064F\u0645\u0643\u0651\u0650\u0646 \u0627\u0644\u0645\u0628\u0631\u0645\u062C \u0645\u0646 " +
+            "\u0643\u062A\u0627\u0628\u0629 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062C \u0645\u0631\u0629 " +
+            "\u0648\u0627\u062D\u062F\u0629\u060C \u0648\u0627\u0633\u062A\u062E\u062F\u0627\u0645\u0647 \u0639\u0644\u0649 " +
+            "\u0623\u064A \u0646\u0648\u0639 \u0645\u0646 \u0627\u0644\u0623\u062C\u0647\u0632\u0629",
+              
+            "\u4EC0\u9EBD\u662FUnicode(\u7D71\u4E00\u78BC/\u6A19\u6E96\u842C\u570B\u78BC)?\n\n" +
+            "Unicode\u7D66\u6BCF\u500B\u5B57\u5143\u63D0\u4F9B\u4E86\u4E00\u500B\u552F\u4E00\u7684\u6578\u4F4D\uFF0C\n" +
+            "\u4E0D\u8AD6\u662F\u4EC0\u9EBD\u5E73\u81FA\uFF0C\n\u4E0D\u8AD6\u662F\u4EC0\u9EBD\u7A0B\u5F0F\uFF0C\n" +
+            "\u4E0D\u8AD6\u662F\u4EC0\u9EBD\u8A9E\u8A00\u3002\n\n" +
+            "\u57FA\u672C\u4E0A\uFF0C\u96FB\u8166\u53EA\u662F\u8655\u7406\u6578\u4F4D\u3002\u5B83\u5011\u6307\u5B9A" +
+            "\u4E00\u500B\u6578\u4F4D\uFF0C\u4F86\u5132\u5B58\u5B57\u6BCD\u6216\u5176\u4ED6\u5B57\u5143\u3002\u5728\u5275\u9020" +
+            "Unicode\u4E4B\u524D\uFF0C\u6709\u6578\u767E\u7A2E\u6307\u5B9A\u9019\u4E9B\u6578\u4F4D\u7684\u7DE8\u78BC" +
+            "\u7CFB\u7D71\u3002\u6C92\u6709\u4E00\u500B\u7DE8\u78BC\u53EF\u4EE5\u5305\u542B\u8DB3\u5920\u7684\u5B57" +
+            "\u5143\uFF1A\u4F8B\u5982\uFF0C\u55AE\u55AE\u6B50\u5DDE\u5171\u540C\u9AD4\u5C31\u9700\u8981\u597D\u5E7E" +
+            "\u7A2E\u4E0D\u540C\u7684\u7DE8\u78BC\u4F86\u5305\u62EC\u6240\u6709\u7684\u8A9E\u8A00\u3002\u5373\u4F7F" +
+            "\u662F\u55AE\u4E00\u7A2E\u8A9E\u8A00\uFF0C\u4F8B\u5982\u82F1\u8A9E\uFF0C\u4E5F\u6C92\u6709\u54EA\u4E00" +
+            "\u500B\u7DE8\u78BC\u53EF\u4EE5\u9069\u7528\u65BC\u6240\u6709\u7684\u5B57\u6BCD\uFF0C\u6A19\u9EDE\u7B26" +
+            "\u865F\uFF0C\u548C\u5E38\u7528\u7684\u6280\u8853\u7B26\u865F\u3002\n\n\u9019\u4E9B\u7DE8\u78BC\u7CFB" +
+            "\u7D71\u4E5F\u6703\u4E92\u76F8\u885D\u7A81\u3002\u4E5F\u5C31\u662F\u8AAA\uFF0C\u5169\u7A2E\u7DE8\u78BC" +
+            "\u53EF\u80FD\u4F7F\u7528\u76F8\u540C\u7684\u6578\u4F4D\u4EE3\u8868\u5169\u500B\u4E0D\u540C\u7684\u5B57" +
+            "\u5143\uFF0C\u6216\u4F7F\u7528\u4E0D\u540C\u7684\u6578\u4F4D\u4EE3\u8868\u76F8\u540C\u7684\u5B57\u5143" +
+            "\u3002\u4EFB\u4F55\u4E00\u53F0\u7279\u5B9A\u7684\u96FB\u8166 (\u7279\u5225\u662F\u4F3A\u670D\u5668\u90FD" +
+            "\u9700\u8981\u652F\u63F4\u8A31\u591A\u4E0D\u540C\u7684\u7DE8\u78BC\uFF0C\u4F46\u662F\uFF0C\u4E0D\u8AD6" +
+            "\u4EC0\u9EBD\u6642\u5019\u8CC7\u6599\u901A\u904E\u4E0D\u540C\u7684\u7DE8\u78BC\u6216\u5E73\u81FA\u4E4B" +
+            "\u9593\uFF0C\u90A3\u4E9B\u8CC7\u6599\u7E3D\u6703\u6709\u640D\u58DE\u7684\u5371\u96AA\u3002\nUnicode" +
+            "\u6B63\u5728\u6539\u8B8A\u6240\u6709\u9019\u4E00\u5207\uFF01\n\nUnicode\u7D66\u6BCF\u500B\u5B57\u5143" +
+            "\u63D0\u4F9B\u4E86\u4E00\u500B\u552F\u4E00\u7684\u6578\u4F4D\uFF0C\u4E0D\u8AD6\u662F\u4EC0\u9EBD\u5E73" +
+            "\u81FA\uFF0C\u4E0D\u8AD6\u662F\u4EC0\u9EBD\u7A0B\u5F0F\uFF0C\u4E0D\u8AD6\u4EC0\u9EBD\u8A9E\u8A00\u3002" +
+            "Unicode\u6A19\u6E96\u5DF2\u7D93\u88AB\u9019\u4E9B\u5DE5\u696D\u754C\u7684\u9818\u5C0E\u5011\u6240\u63A1" +
+            "\u7528\uFF0C\u4F8B\u5982\uFF1AApple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys" +
+            " \u548C\u5176\u4ED6\u8A31\u591A\u516C\u53F8\u3002\u6700\u65B0\u7684\u6A19\u6E96\u90FD\u9700\u8981Unicode" +
+            "\uFF0C\u4F8B\u5982XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML\u7B49\u7B49\uFF0C\u4E26\u4E14" +
+            "\uFF0CUnicode\u662F\u5BE6\u73FEISO/IEC 10646\u7684\u6B63\u898F\u65B9\u5F0F\u3002\u8A31\u591A\u4F5C\u696D" +
+            "\u7CFB\u7D71\uFF0C\u6240\u6709\u6700\u65B0\u7684\u700F\u89BD\u5668\u548C \u8A31\u591A\u5176\u4ED6\u7523" +
+            "\u54C1\u90FD\u652F\u63F4\u5B83\u3002Unicode\u6A19\u6E96\u7684\u51FA\u73FE\u548C\u652F\u63F4\u5B83\u5DE5" +
+            "\u5177\u7684\u5B58\u5728\uFF0C\u662F\u8FD1\u4F86\u5168\u7403\u8EDF\u9AD4\u6280\u8853\u6700\u91CD\u8981" +
+            "\u7684\u767C\u5C55\u8DA8\u52E2\u3002\n\n\u5C07Unicode\u8207\u5BA2\u6236\u4F3A\u670D\u5668\u6216\u591A" +
+            "\u5C64\u61C9\u7528\u7A0B\u5F0F\u548C\u7DB2\u969B\u7DB2\u8DEF\u7D50\u5408\uFF0C\u6BD4\u4F7F\u7528\u50B3" +
+            "\u7D71\u5B57\u5143\u96C6\u7BC0\u7701\u8CBB\u7528\u3002Unicode\u4F7F\u55AE\u4E00\u8EDF\u9AD4\u7523\u54C1" +
+            "\u6216\u55AE\u4E00\u7DB2\u7AD9\u80FD\u5920\u8CAB\u7A7F\u591A\u500B\u5E73\u81FA\uFF0C\u8A9E\u8A00\u548C" +
+            "\u570B\u5BB6\uFF0C\u800C\u4E0D\u9700\u8981\u91CD\u5EFA\u3002\u5B83\u53EF\u5C07\u8CC7\u6599\u50B3\u8F38" +
+            "\u5230\u8A31\u591A\u4E0D\u540C\u7684\u7CFB\u7D71\uFF0C\u800C\u7121\u640D\u58DE\u3002\n\u95DC\u65BCUnicode" +
+            "\u5B78\u8853\u5B78\u6703\n\nUnicode\u5B78\u8853\u5B78\u6703",
+           
+            "\u00C7\'\u00EBsht\u00EB UNICODE?\n\nUnicode siguron nj\u00EB num\u00EBr t\u00EB vet\u00EBm p\u00EBr \u00E7do " +
+            "g\u00EBrm\u00EB,\np\u00EBr cil\u00EBndo platform\u00EB,\np\u00EBr cilindo program,\np\u00EBr cil\u00EBndo " +
+            "gjuh\u00EB.\n\nN\u00EB themel, kompjuterat veprojn\u00EB me an\u00EBn e numrave. Ata ruajn\u00EB g\u00EBrmat " +
+            "dhe sh\u00EBnjat (karakteret) e tjera duke u caktuar nga nj\u00EB num\u00EBr (kod). Para zbulimit t\u00EB " +
+            "Unicode-s, kishte qindra sisteme kodimi t\u00EB ndrysh\u00EBm p\u00EBr t\u00EB caktuar k\u00EBta numra. Por " +
+            "asnj\u00EB kodim i vet\u00EBm nuk mund t\u00EB p\u00EBrmbante mjaft sh\u00EBnja: p\u00EBr shembull, vet\u00EBm " +
+            "Bashkimi Europian k\u00EBrkon disa kodime t\u00EB ndryshme p\u00EBr t\u00EB mbuluar gjith\u00EB gjuh\u00EBt e tij. " +
+            "Edhe p\u00EBr nj\u00EB gjuh\u00EB t\u00EB vetme si Anglishtja asnj\u00EB kodim nuk ishte i mjaftuesh\u00EBm " +
+            "p\u00EBr t\u00EB gjitha g\u00EBrmat, sh\u00EBnjat e pik\u00EBsimit, dhe simbolet teknike n\u00EB p\u00EBrdorim " +
+            "t\u00EB zakonsh\u00EBm.\n\nK\u00EBta sisteme kodimi gjithashtu p\u00EBrplasen me nj\u00EBri-tjetrin. Dmth, dy " +
+            "kodime mundet q\u00EB t\u00EB p\u00EBrdorin t\u00EB nj\u00EBjtin num\u00EBr p\u00EBr dy sh\u00EBnja krejt t\u00EB " +
+            "ndryshme, ose dy numra t\u00EB ndrysh\u00EBm p\u00EBr t\u00EB nj\u00EBjt\u00EBn sh\u00EBnj\u00EB. Secili kompjuter " +
+            "(sidomos sh\u00EBrbyesit - serverat) duhet t\u00EB jet\u00EB i aft\u00EB t\u00EB mb\u00EBshtes\u00EB shum\u00EB " +
+            "kodime, dhe megjithat\u00EB kur t\u00EB dh\u00EBnat kalohen p\u00EBrmes kodimeve t\u00EB ndryshme ose platformave, " +
+            "\u00EBsht\u00EB gjithmon\u00EB rreziku i korruptimit t\u00EB tyre.\nUnicode po e ndryshon gjith\u00EB k\u00EBt\u00EB " +
+            "rr\u00EBmuj\u00EB!\n\nUnicode siguron nj\u00EB num\u00EBr t\u00EB vet\u00EBm p\u00EBr \u00E7do g\u00EBrm\u00EB, " +
+            "p\u00EBr cil\u00EBndo platform\u00EB, p\u00EBr cilindo program, p\u00EBr cil\u00EBndo gjuh\u00EB. Standarti Unicode " +
+            "\u00EBsht\u00EB f\u00EBmij\u00EBruar (adaptuar) nga udh\u00EBheq\u00EBs t\u00EB till\u00EB t\u00EB industris\u00EB " +
+            "si Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys dhe shum\u00EB t\u00EB tjer\u00EB. " +
+            "Unicode k\u00EBrkohet nga standarte moderne si XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, etj., " +
+            "dhe \u00EBsht\u00EB m\u00EBnyra zyrtare p\u00EBr t\u00EB zbatuar ISO/IEC 10646. Unicode \u00EBsht\u00EB i " +
+            "mb\u00EBshtetur nga shum\u00EB sisteme vepruese (operativ\u00EB), gjith\u00EB shfletuesat (brauzerat) modern\u00EB, " +
+            "dhe shum\u00EB produkte t\u00EB tjera. Dalja n\u00EB drit\u00EB e Standartit Unicode, dhe pasja e veglave q\u00EB " +
+            "e mb\u00EBshtesin, jan\u00EB midis faktor\u00EBve m\u00EB dometh\u00EBn\u00EBs t\u00EB koh\u00EBve t\u00EB fundit " +
+            "t\u00EB drejtimeve t\u00EB zhvillimit t\u00EB p\u00EBrgjith\u00EBshme t\u00EB teknologjive t\u00EB softuer\u00EBve." +
+            "\n\nP\u00EBrtrup\u00EBzimi i Unicode n\u00EB zbatimet klient-server apo shum\u00EB-shkall\u00EBsh si dhe n\u00EB " +
+            "faqet internet, krijon mund\u00EBsin\u00EB p\u00EBr kursime kostoje t\u00EB ndjeshme n\u00EB krahasim me " +
+            "p\u00EBrdorimin e kodimeve t\u00EB m\u00EBparshme. Unicode b\u00EBn t\u00EB mundur q\u00EB nj\u00EB produkt " +
+            "softuer ose nj\u00EB faqe interneti t\u00EB p\u00EBrdoret p\u00EBr shum\u00EB platforma, gjuh\u00EB dhe vende " +
+            "pa re-inxhinierim. Ai lejon t\u00EB dh\u00EBnat t\u00EB kalohen p\u00EBrmes shum\u00EB sistemeve t\u00EB ndryshme " +
+            "pa korruptim.",
+                
+            "\u092F\u0942\u0928\u093F\u0915\u094B\u0921 \u0915\u094D\u092F\u093E \u0939\u0948?\n\n\u092F\u0942\u0928\u093F\u0915" +
+            "\u094B\u0921 \u092A\u094D\u0930\u0924\u094D\u092F\u0947\u0915 \u0905\u0915\u094D\u0937\u0930 \u0915\u0947 " +
+            "\u0932\u093F\u090F \u090F\u0915 \u0935\u093F\u0936\u0947\u0937 \u0928\u092E\u094D\u092C\u0930 \u092A\u094D" +
+            "\u0930\u0926\u093E\u0928 \u0915\u0930\u0924\u093E \u0939\u0948,\n\u091A\u093E\u0939\u0947 \u0915\u094B\u0908 " +
+            "\u092D\u0940 \u092A\u094D\u0932\u0948\u091F\u092B\u0949\u0930\u094D\u092E \u0939\u094B,\n\u091A\u093E\u0939\u0947" +
+            " \u0915\u094B\u0908 \u092D\u0940 \u092A\u094D\u0930\u094B\u0917\u094D\u0930\u093E\u092E \u0939\u094B," +
+            "\n\u091A\u093E\u0939\u0947 \u0915\u094B\u0908 \u092D\u0940 \u092D\u093E\u0937\u093E \u0939\u094B\u0964\n" +
+            "\n\u0915\u092E\u094D\u092A\u094D\u092F\u0942\u091F\u0930, \u092E\u0942\u0932 \u0930\u0942\u092A \u0938\u0947," +
+            " \u0928\u0902\u092C\u0930\u094B\u0902 \u0938\u0947 \u0938\u092E\u094D\u092C\u0902\u0927 \u0930\u0916\u0924\u0947" +
+            " \u0939\u0948\u0902\u0964 \u092F\u0947 \u092A\u094D\u0930\u0924\u094D\u092F\u0947\u0915 \u0905\u0915\u094D\u0937\u0930" +
+            " \u0914\u0930 \u0935\u0930\u094D\u0923 \u0915\u0947 \u0932\u093F\u090F \u090F\u0915 \u0928\u0902\u092C\u0930 " +
+            "\u0928\u093F\u0930\u094D\u0927\u093E\u0930\u093F\u0924 \u0915\u0930\u0915\u0947 \u0905\u0915\u094D\u0937\u0930" +
+            " \u0914\u0930 \u0935\u0930\u094D\u0923 \u0938\u0902\u0917\u094D\u0930\u0939\u093F\u0924 \u0915\u0930\u0924\u0947" +
+            " \u0939\u0948\u0902\u0964 \u092F\u0942\u0928\u093F\u0915\u094B\u0921 \u0915\u093E \u0906\u0935\u093F\u0937" +
+            "\u094D\u0915\u093E\u0930 \u0939\u094B\u0928\u0947 \u0938\u0947 \u092A\u0939\u0932\u0947, \u0910\u0938\u0947" +
+            " \u0928\u0902\u092C\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0938\u0948\u0902\u0915" +
+            "\u0921\u094B\u0902 \u0935\u093F\u092D\u093F\u0928\u094D\u0928 \u0938\u0902\u0915\u0947\u0924 \u0932\u093F" +
+            "\u092A\u093F \u092A\u094D\u0930\u0923\u093E\u0932\u093F\u092F\u093E\u0902 \u0925\u0940\u0902\u0964 \u0915" +
+            "\u093F\u0938\u0940 \u090F\u0915 \u0938\u0902\u0915\u0947\u0924 \u0932\u093F\u092A\u093F \u092E\u0947\u0902 " +
+            "\u092A\u0930\u094D\u092F\u093E\u092A\u094D\u0924 \u0905\u0915\u094D\u0937\u0930 \u0928\u0939\u0940\u0902 " +
+            "\u0939\u094B \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 : \u0909\u0926\u093E\u0939\u0930\u0923 \u0915\u0947" +
+            " \u0932\u093F\u090F, \u092F\u0942\u0930\u094B\u092A\u093F\u092F \u0938\u0902\u0918 \u0915\u094B \u0905\u0915" +
+            "\u0947\u0932\u0947 \u0939\u0940, \u0905\u092A\u0928\u0940 \u0938\u092D\u0940 \u092D\u093E\u0937\u093E\u0912\u0902" +
+            " \u0915\u094B \u0915\u0935\u0930 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0905\u0928\u0947\u0915" +
+            " \u0935\u093F\u092D\u093F\u0928\u094D\u0928 \u0938\u0902\u0915\u0947\u0924 \u0932\u093F\u092A\u093F\u092F\u094B\u0902" +
+            " \u0915\u0940 \u0906\u0935\u0936\u094D\u092F\u0915\u0924\u093E \u0939\u094B\u0924\u0940 \u0939\u0948\u0964 " +
+            "\u0905\u0902\u0917\u094D\u0930\u0947\u091C\u0940 \u091C\u0948\u0938\u0940 \u092D\u093E\u0937\u093E \u0915\u0947" +
+            " \u0932\u093F\u090F \u092D\u0940, \u0938\u092D\u0940 \u0905\u0915\u094D\u0937\u0930\u094B\u0902, " +
+            "\u0935\u093F\u0930\u093E\u092E\u091A\u093F\u0928\u094D\u0939\u094B\u0902 \u0914\u0930 \u0938\u093E\u092E" +
+            "\u093E\u0928\u094D\u092F \u092A\u094D\u0930\u092F\u094B\u0917 \u0915\u0947 \u0924\u0915\u0928\u0940\u0915" +
+            "\u0940 \u092A\u094D\u0930\u0924\u0940\u0915\u094B\u0902 \u0939\u0947\u0924\u0941 \u090F\u0915 \u0939\u0940" +
+            " \u0938\u0902\u0915\u0947\u0924 \u0932\u093F\u092A\u093F \u092A\u0930\u094D\u092F\u093E\u092A\u094D\u0924" +
+            " \u0928\u0939\u0940\u0902 \u0925\u0940\u0964\n\n\u092F\u0947 \u0938\u0902\u0915\u0947\u0924 \u0932\u093F" +
+            "\u092A\u093F \u092A\u094D\u0930\u0923\u093E\u0932\u093F\u092F\u093E\u0902 \u092A\u0930\u0938\u094D\u092A\u0930" +
+            " \u0935\u093F\u0930\u094B\u0927\u0940 \u092D\u0940 \u0939\u0948\u0902\u0964 \u0907\u0938\u0940\u0932\u093F\u090F," +
+            " \u0926\u094B \u0938\u0902\u0915\u0947\u0924 \u0932\u093F\u092A\u093F\u092F\u093E\u0902 \u0926\u094B " +
+            "\u0935\u093F\u092D\u093F\u0928\u094D\u0928 \u0905\u0915\u094D\u0937\u0930\u094B\u0902 \u0915\u0947 " +
+            "\u0932\u093F\u090F, \u090F\u0915 \u0939\u0940 \u0928\u0902\u092C\u0930 \u092A\u094D\u0930\u092F\u094B\u0917" +
+            " \u0915\u0930 \u0938\u0915\u0924\u0940 \u0939\u0948\u0902, \u0905\u0925\u0935\u093E \u0938\u092E\u093E\u0928" +
+            " \u0905\u0915\u094D\u0937\u0930 \u0915\u0947 \u0932\u093F\u090F \u0935\u093F\u092D\u093F\u0928\u094D\u0928" +
+            " \u0928\u092E\u094D\u092C\u0930\u094B\u0902 \u0915\u093E \u092A\u094D\u0930\u092F\u094B\u0917 \u0915\u0930" +
+            " \u0938\u0915\u0924\u0940 \u0939\u0948\u0902\u0964 \u0915\u093F\u0938\u0940 \u092D\u0940 \u0915\u092E\u094D" +
+            "\u092A\u094D\u092F\u0942\u091F\u0930 (\u0935\u093F\u0936\u0947\u0937 \u0930\u0942\u092A \u0938\u0947 " +
+            "\u0938\u0930\u094D\u0935\u0930) \u0915\u094B \u0935\u093F\u092D\u093F\u0928\u094D\u0928 \u0938\u0902\u0915" +
+            "\u0947\u0924 \u0932\u093F\u092A\u093F\u092F\u093E\u0902 \u0938\u0902\u092D\u093E\u0932\u0928\u0940 \u092A" +
+            "\u0921\u093C\u0924\u0940 \u0939\u0948; \u092B\u093F\u0930 \u092D\u0940 \u091C\u092C \u0926\u094B \u0935" +
+            "\u093F\u092D\u093F\u0928\u094D\u0928 \u0938\u0902\u0915\u0947\u0924 \u0932\u093F\u092A\u093F\u092F\u094B" +
+            "\u0902 \u0905\u0925\u0935\u093E \u092A\u094D\u0932\u0948\u091F\u092B\u0949\u0930\u094D\u092E\u094B\u0902" +
+            " \u0915\u0947 \u092C\u0940\u091A \u0921\u093E\u091F\u093E \u092D\u0947\u091C\u093E \u091C\u093E\u0924\u093E" +
+            " \u0939\u0948 \u0924\u094B \u0909\u0938 \u0921\u093E\u091F\u093E \u0915\u0947 \u0939\u092E\u0947\u0936\u093E" +
+            " \u0916\u0930\u093E\u092C \u0939\u094B\u0928\u0947 \u0915\u093E \u091C\u094B\u0916\u093F\u092E " +
+            "\u0930\u0939\u0924\u093E \u0939\u0948\u0964\n\u092F\u0942\u0928\u093F\u0915\u094B\u0921 \u0938\u0947" +
+            " \u092F\u0939 \u0938\u092C \u0915\u0941\u091B \u092C\u0926\u0932 \u0930\u0939\u093E \u0939\u0948!\n" +
+            "\n\u092F\u0942\u0928\u093F\u0915\u094B\u0921, \u092A\u094D\u0930\u0924\u094D\u092F\u0947\u0915 " +
+            "\u0905\u0915\u094D\u0937\u0930 \u0915\u0947 \u0932\u093F\u090F \u090F\u0915 \u0935\u093F\u0936\u0947\u0937" +
+            " \u0928\u0902\u092C\u0930 \u092A\u094D\u0930\u0926\u093E\u0928 \u0915\u0930\u0924\u093E \u0939\u0948, " +
+            "\u091A\u093E\u0939\u0947 \u0915\u094B\u0908 \u092D\u0940 \u092A\u094D\u0932\u0948\u091F\u092B\u0949\u0930\u094D\u092E" +
+            " \u0939\u094B, \u091A\u093E\u0939\u0947 \u0915\u094B\u0908 \u092D\u0940 \u092A\u094D\u0930\u094B\u0917" +
+            "\u094D\u0930\u093E\u092E \u0939\u094B, \u091A\u093E\u0939\u0947 \u0915\u094B\u0908 \u092D\u0940 \u092D" +
+            "\u093E\u0937\u093E \u0939\u094B\u0964 \u092F\u0942\u0928\u093F\u0915\u094B\u0921 \u0938\u094D\u091F\u0948" +
+            "\u0902\u0921\u0930\u094D\u0921 \u0915\u094B \u0910\u092A\u0932, \u090F\u091A.\u092A\u0940., \u0906\u0908." +
+            "\u092C\u0940.\u090F\u092E., \u091C\u0938\u094D\u091F \u0938\u093F\u0938\u094D\u091F\u092E, \u092E\u093E" +
+            "\u0908\u0915\u094D\u0930\u094B\u0938\u0949\u092B\u094D\u091F, \u0914\u0930\u0947\u0915\u0932, " +
+            "\u0938\u0948\u092A, \u0938\u0928, \u0938\u093E\u0908\u092C\u0947\u0938, \u092F\u0942\u0928\u093F\u0938" +
+            "\u093F\u0938 \u091C\u0948\u0938\u0940 \u0909\u0926\u094D\u092F\u094B\u0917 \u0915\u0940 \u092A\u094D" +
+            "\u0930\u092E\u0941\u0916 \u0915\u092E\u094D\u092A\u0928\u093F\u092F\u094B\u0902 \u0914\u0930 \u0915\u0908" +
+            " \u0905\u0928\u094D\u092F \u0928\u0947 \u0905\u092A\u0928\u093E\u092F\u093E \u0939\u0948\u0964 \u092F" +
+            "\u0942\u0928\u093F\u0915\u094B\u0921 \u0915\u0940 \u0906\u0935\u0936\u094D\u092F\u0915\u0924\u093E " +
+            "\u0906\u0927\u0941\u0928\u093F\u0915 \u092E\u093E\u0928\u0926\u0902\u0921\u094B\u0902, \u091C\u0948" +
+            "\u0938\u0947 \u090F\u0915\u094D\u0938.\u090F\u092E.\u090F\u0932., \u091C\u093E\u0935\u093E, \u090F" +
+            "\u0915\u092E\u093E \u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F (\u091C\u093E\u0935\u093E" +
+            " \u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F), \u090F\u0932.\u0921\u0940.\u090F.\u092A\u0940.," +
+            " \u0915\u094B\u0930\u094D\u092C\u093E 3.0, \u0921\u092C\u094D\u0932\u094D\u092F\u0942.\u090F\u092E." +
+            "\u090F\u0932. \u0915\u0947 \u0932\u093F\u090F \u0939\u094B\u0924\u0940 \u0939\u0948 \u0914\u0930 " +
+            "\u092F\u0939 \u0906\u0908.\u090F\u0938.\u0913./\u0906\u0908.\u0908.\u0938\u0940. 10646 \u0915\u094B" +
+            " \u0932\u093E\u0917\u0942 \u0915\u0930\u0928\u0947 \u0915\u093E \u0905\u0927\u093F\u0915\u093E\u0930\u093F\u0915" +
+            " \u0924\u0930\u0940\u0915\u093E \u0939\u0948\u0964 \u092F\u0939 \u0915\u0908 \u0938\u0902\u091A\u093E\u0932\u0928 " +
+            "\u092A\u094D\u0930\u0923\u093E\u0932\u093F\u092F\u094B\u0902, \u0938\u092D\u0940 \u0906\u0927\u0941" +
+            "\u0928\u093F\u0915 \u092C\u094D\u0930\u093E\u0909\u091C\u0930\u094B\u0902 \u0914\u0930 \u0915\u0908" +
+            " \u0905\u0928\u094D\u092F \u0909\u0924\u094D\u092A\u093E\u0926\u094B\u0902 \u092E\u0947\u0902 \u0939" +
+            "\u094B\u0924\u093E \u0939\u0948\u0964 \u092F\u0942\u0928\u093F\u0915\u094B\u0921 \u0938\u094D\u091F" +
+            "\u0948\u0902\u0921\u0930\u094D\u0921 \u0915\u0940 \u0909\u0924\u094D\u092A\u0924\u093F \u0914\u0930" +
+            " \u0907\u0938\u0915\u0947 \u0938\u0939\u093E\u092F\u0915 \u0909\u092A\u0915\u0930\u0923\u094B\u0902" +
+            " \u0915\u0940 \u0909\u092A\u0932\u092C\u094D\u0927\u0924\u093E, \u0939\u093E\u0932 \u0939\u0940" +
+            " \u0915\u0947 \u0905\u0924\u093F \u092E\u0939\u0924\u094D\u0935\u092A\u0942\u0930\u094D\u0923" +
+            " \u0935\u093F\u0936\u094D\u0935\u0935\u094D\u092F\u093E\u092A\u0940 \u0938\u0949\u092B\u094D\u091F" +
+            "\u0935\u0947\u092F\u0930 \u091F\u0947\u0915\u094D\u0928\u094B\u0932\u0949\u091C\u0940 \u0930\u0941" +
+            "\u091D\u093E\u0928\u094B\u0902 \u092E\u0947\u0902 \u0938\u0947 \u0939\u0948\u0902\u0964\n\n\u092F" +
+            "\u0942\u0928\u093F\u0915\u094B\u0921 \u0915\u094B \u0917\u094D\u0930\u093E\u0939\u0915-\u0938\u0930" +
+            "\u094D\u0935\u0930 \u0905\u0925\u0935\u093E \u092C\u0939\u0941-\u0906\u092F\u093E\u092E\u0940 " +
+            "\u0909\u092A\u0915\u0930\u0923\u094B\u0902 \u0914\u0930 \u0935\u0947\u092C\u0938\u093E\u0907\u091F" +
+            "\u094B\u0902 \u092E\u0947\u0902 \u0936\u093E\u092E\u093F\u0932 \u0915\u0930\u0928\u0947 \u0938\u0947," +
+            " \u092A\u0930\u0902\u092A\u0930\u093E\u0917\u0924 \u0909\u092A\u0915\u0930\u0923\u094B\u0902 \u0915" +
+            "\u0947 \u092A\u094D\u0930\u092F\u094B\u0917 \u0915\u0940 \u0905\u092A\u0947\u0915\u094D\u0937\u093E" +
+            " \u0916\u0930\u094D\u091A \u092E\u0947\u0902 \u0905\u0924\u094D\u092F\u0927\u093F\u0915 \u092C\u091A" +
+            "\u0924 \u0939\u094B\u0924\u0940 \u0939\u0948\u0964 \u092F\u0942\u0928\u093F\u0915\u094B\u0921 \u0938" +
+            "\u0947 \u090F\u0915 \u0910\u0938\u093E \u0905\u0915\u0947\u0932\u093E \u0938\u0949\u092B\u094D\u091F" +
+            "\u0935\u0947\u092F\u0930 \u0909\u0924\u094D\u092A\u093E\u0926 \u0905\u0925\u0935\u093E \u0905\u0915" +
+            "\u0947\u0932\u093E \u0935\u0947\u092C\u0938\u093E\u0907\u091F \u092E\u093F\u0932 \u091C\u093E\u0924" +
+            "\u093E \u0939\u0948, \u091C\u093F\u0938\u0947 \u0930\u0940-\u0907\u0902\u091C\u0940\u0928\u093F\u092F" +
+            "\u0930\u093F\u0902\u0917 \u0915\u0947 \u092C\u093F\u0928\u093E \u0935\u093F\u092D\u093F\u0928\u094D" +
+            "\u0928 \u092A\u094D\u0932\u0948\u091F\u092B\u0949\u0930\u094D\u092E\u094B\u0902, \u092D\u093E\u0937" +
+            "\u093E\u0913\u0902 \u0914\u0930 \u0926\u0947\u0936\u094B\u0902 \u092E\u0947\u0902 \u0909\u092A\u092F" +
+            "\u094B\u0917 \u0915\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u0924\u093E \u0939\u0948\u0964 \u0907" +
+            "\u0938\u0938\u0947 \u0921\u093E\u091F\u093E \u0915\u094B \u092C\u093F\u0928\u093E \u0915\u093F\u0938" +
+            "\u0940 \u092C\u093E\u0927\u093E \u0915\u0947 \u0935\u093F\u092D\u093F\u0928\u094D\u0928 \u092A\u094D" +
+            "\u0930\u0923\u093E\u0932\u093F\u092F\u094B\u0902 \u0938\u0947 \u0939\u094B\u0915\u0930 \u0932\u0947 " +
+            "\u091C\u093E\u092F\u093E \u091C\u093E \u0938\u0915\u0924\u093E \u0939\u0948\u0964\n",
+            
+            "\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.\n\n\u0E23\u0E30\u0E1A\u0E1A encoding \u0E40\u0E2B" +
+            "\u0E25\u0E48\u0E32\u0E19\u0E35\u0E49\u0E22\u0E31\u0E07\u0E02\u0E31\u0E14\u0E41\u0E22\u0E49\u0E07\u0E0B\u0E36" +
+            "\u0E48\u0E07\u0E01\u0E31\u0E19\u0E41\u0E25\u0E30\u0E01\u0E31\u0E19. \u0E19\u0E31\u0E48\u0E19\u0E01\u0E47" +
+            "\u0E04\u0E37\u0E2D, \u0E43\u0E19\u0E2A\u0E2D\u0E07 encoding \u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E43\u0E0A" +
+            "\u0E49\u0E2B\u0E21\u0E32\u0E22\u0E40\u0E25\u0E02\u0E40\u0E14\u0E35\u0E22\u0E27\u0E01\u0E31\u0E19\u0E2A\u0E33" +
+            "\u0E2B\u0E23\u0E31\u0E1A\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E02\u0E23\u0E30\u0E2A\u0E2D\u0E07\u0E15\u0E31" +
+            "\u0E27\u0E17\u0E35\u0E48\u0E41\u0E15\u0E01\u0E15\u0E48\u0E32\u0E07\u0E01\u0E31\u0E19,\u0E2B\u0E23\u0E37\u0E2D" +
+            "\u0E43\u0E0A\u0E49\u0E2B\u0E21\u0E32\u0E22\u0E40\u0E25\u0E02\u0E15\u0E48\u0E32\u0E07\u0E01\u0E31\u0E19\u0E2A" +
+            "\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E2D\u0E31\u0E01\u0E02\u0E23\u0E30\u0E15\u0E31\u0E27\u0E40\u0E14\u0E35\u0E22" +
+            "\u0E27\u0E01\u0E31\u0E19. \u0E43\u0E19\u0E23\u0E30\u0E1A\u0E1A\u0E04\u0E2D\u0E21\u0E1E\u0E34\u0E27\u0E40\u0E15" +
+            "\u0E2D\u0E23\u0E4C (\u0E42\u0E14\u0E22\u0E40\u0E09\u0E1E\u0E32\u0E30\u0E40\u0E0B\u0E34\u0E23\u0E4C\u0E1F\u0E40" +
+            "\u0E27\u0E2D\u0E23\u0E4C) \u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35\u0E01\u0E32\u0E23\u0E2A\u0E19\u0E31\u0E1A\u0E2A" +
+            "\u0E19\u0E38\u0E19\u0E2B\u0E25\u0E32\u0E22 encoding; \u0E41\u0E25\u0E30\u0E40\u0E21\u0E37\u0E48\u0E2D\u0E02\u0E49" +
+            "\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1C\u0E48\u0E32\u0E19\u0E44\u0E1B\u0E21\u0E32\u0E23\u0E30\u0E2B" +
+            "\u0E27\u0E48\u0E32\u0E07\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E23\u0E2B\u0E31\u0E2A\u0E2B\u0E23\u0E37" +
+            "\u0E2D\u0E41\u0E1E\u0E25\u0E47\u0E15\u0E1F\u0E2D\u0E23\u0E4C\u0E21\u0E17\u0E35\u0E48\u0E15\u0E48\u0E32\u0E07" +
+            "\u0E01\u0E31\u0E19, \u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E19\u0E31\u0E49\u0E19\u0E08\u0E30\u0E40\u0E2A\u0E35" +
+            "\u0E48\u0E22\u0E07\u0E15\u0E48\u0E2D\u0E01\u0E32\u0E23\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14\u0E40\u0E2A" +
+            "\u0E35\u0E22\u0E2B\u0E32\u0E22.\nUnicode \u0E08\u0E30\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25" +
+            "\u0E07\u0E2A\u0E34\u0E48\u0E07\u0E40\u0E2B\u0E25\u0E48\u0E32\u0E19\u0E31\u0E49\u0E19\u0E17\u0E31\u0E49\u0E07\u0E2B" +
+            "\u0E21\u0E14!\n\nUnicode \u0E01\u0E33\u0E2B\u0E19\u0E14\u0E2B\u0E21\u0E32\u0E22\u0E40\u0E25\u0E02\u0E40\u0E09" +
+            "\u0E1E\u0E32\u0E30\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E41\u0E15\u0E48\u0E25\u0E30\u0E2D\u0E31\u0E01\u0E02" +
+            "\u0E23\u0E30, \u0E42\u0E14\u0E22\u0E44\u0E21\u0E48\u0E2A\u0E19\u0E43\u0E08\u0E27\u0E48\u0E32\u0E40\u0E1B\u0E47" +
+            "\u0E19\u0E41\u0E1E\u0E25\u0E47\u0E15\u0E1F\u0E2D\u0E23\u0E4C\u0E21\u0E43\u0E14, \u0E44\u0E21\u0E48\u0E02\u0E36" +
+            "\u0E49\u0E19\u0E01\u0E31\u0E1A\u0E27\u0E48\u0E32\u0E08\u0E30\u0E40\u0E1B\u0E47\u0E19\u0E42\u0E1B\u0E23\u0E41" +
+            "\u0E01\u0E23\u0E21\u0E43\u0E14\u0E41\u0E25\u0E30\u0E44\u0E21\u0E48\u0E27\u0E48\u0E32\u0E08\u0E30\u0E40\u0E1B" +
+            "\u0E47\u0E19\u0E20\u0E32\u0E29\u0E32\u0E43\u0E14. \u0E21\u0E32\u0E15\u0E23\u0E10\u0E32\u0E19 Unicode \u0E44" +
+            "\u0E14\u0E49\u0E16\u0E39\u0E01\u0E19\u0E33\u0E44\u0E1B\u0E43\u0E0A\u0E49\u0E42\u0E14\u0E22\u0E1C\u0E39\u0E49" +
+            "\u0E19\u0E33\u0E43\u0E19\u0E2D\u0E38\u0E15\u0E2A\u0E32\u0E2B\u0E01\u0E23\u0E23\u0E21 \u0E40\u0E0A\u0E48\u0E19 " +
+            "Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys \u0E41\u0E25\u0E30\u0E2D\u0E37\u0E48" +
+            "\u0E19\u0E46 \u0E2D\u0E35\u0E01\u0E21\u0E32\u0E01. Unicode \u0E40\u0E1B\u0E47\u0E19\u0E2A\u0E34\u0E48\u0E07" +
+            "\u0E17\u0E35\u0E48\u0E08\u0E33\u0E40\u0E1B\u0E47\u0E19\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E21\u0E32\u0E15" +
+            "\u0E23\u0E10\u0E32\u0E19\u0E43\u0E2B\u0E21\u0E48\u0E46 \u0E40\u0E0A\u0E48\u0E19 XML, Java, ECMAScript (JavaScript), " +
+            "LDAP, CORBA 3.0, WML \u0E2F\u0E25\u0E2F., \u0E41\u0E25\u0E30\u0E40\u0E1B\u0E47\u0E19\u0E41\u0E19\u0E27\u0E17\u0E32" +
+            "\u0E07\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E17\u0E32\u0E07\u0E01\u0E32\u0E23\u0E43\u0E19\u0E01" +
+            "\u0E32\u0E23\u0E17\u0E33 ISO/IEC 10646. Unicode \u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A\u0E01\u0E32\u0E23\u0E2A\u0E19" +
+            "\u0E31\u0E1A\u0E2A\u0E19\u0E38\u0E19\u0E43\u0E19\u0E23\u0E30\u0E1A\u0E1A\u0E1B\u0E0F\u0E34\u0E1A\u0E31\u0E15\u0E34" +
+            "\u0E01\u0E32\u0E23\u0E08\u0E33\u0E19\u0E27\u0E19\u0E21\u0E32\u0E01, \u0E1A\u0E23\u0E32\u0E27\u0E40\u0E0B\u0E2D\u0E23" +
+            "\u0E4C\u0E43\u0E2B\u0E21\u0E48\u0E46 \u0E17\u0E01\u0E15\u0E31\u0E27, \u0E41\u0E25\u0E30\u0E1C\u0E25\u0E34\u0E15" +
+            "\u0E20\u0E31\u0E13\u0E11\u0E4C\u0E2D\u0E37\u0E48\u0E19\u0E46 \u0E2D\u0E35\u0E01\u0E21\u0E32\u0E01. \u0E01\u0E32" +
+            "\u0E23\u0E40\u0E01\u0E34\u0E14\u0E02\u0E36\u0E49\u0E19\u0E02\u0E2D\u0E07 Unicode Standard \u0E41\u0E25\u0E30\u0E17" +
+            "\u0E39\u0E25\u0E2A\u0E4C\u0E15\u0E48\u0E32\u0E07\u0E46 \u0E17\u0E35\u0E48\u0E21\u0E35\u0E43\u0E19\u0E01\u0E32" +
+            "\u0E23\u0E2A\u0E19\u0E31\u0E1A\u0E2A\u0E19\u0E38\u0E19 Unicode, \u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36" +
+            "\u0E48\u0E07\u0E43\u0E19\u0E41\u0E19\u0E27\u0E42\u0E19\u0E49\u0E21\u0E17\u0E32\u0E07\u0E40\u0E17\u0E04\u0E42" +
+            "\u0E19\u0E42\u0E25\u0E22\u0E35\u0E0B\u0E2D\u0E1F\u0E15\u0E4C\u0E41\u0E27\u0E23\u0E4C\u0E23\u0E30\u0E14\u0E31" +
+            "\u0E1A\u0E42\u0E25\u0E01\u0E17\u0E35\u0E48\u0E21\u0E35\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E33\u0E04\n",
+            
+            "Cos\'\u00E8 Unicode?\n\nUnicode assegna un numero univoco a ogni carattere,\nindipendentemente dalla piattaforma," +
+            "\nindipendentemente dall\'applicazione,\nindipendentemente dalla lingua.\n\nI computer, in buona sostanza," +
+            " non sanno far altro che trattare numeri. Per immagazzinare in memoria lettere o altri segni \u00E8 necessario" +
+            " che a ogni carattere venga assegnato un numero. Esistono centinaia di sistemi di codifica, preesistenti a " +
+            "Unicode, e ognuno di questi abbina i numeri ai caratteri in modo differente. Nessuna di queste codifiche " +
+            "comprende un numero di caratteri sufficiente per tutte le circostanze. Per le sole lingue dell\'Unione " +
+            "Europea, ad esempio, \u00E8 necessario utilizzare parecchi sistemi di codifica distinti. Anche considerando " +
+            "una solo lingua, come l\'italiano, non esiste una codifica unica che comprenda tutte le lettere e tutti i " +
+            "segni di punteggiatura e simboli tecnici di uso comune.\n\nQuesti sistemi di codifica, inoltre, sono in " +
+            "contraddizione l\'uno con l\'altro. Succede che due codifiche utilizzino lo stesso numero per due caratteri " +
+            "diversi o che, viceversa, adottino numeri diversi per lo stesso carattere. Qualsiasi elaboratore, e a maggior " +
+            "ragione un server di rete, ha bisogno di utilizzare codifiche diverse. Il problema \u00E8 che, quando i dati " +
+            "passano da una codifica a un\'altra, o da una piattaforma a un\'altra, si corre il serio rischio di perdere " +
+            "informazioni.\nUnicode sta cambiando le cose!\n\nUnicode attribuisce un numero univoco a ogni carattere, " +
+            "indipendentemente dalla piattaforma, dall\'applicativo, dalla lingua. Lo standard Unicode \u00E8 stato " +
+            "adottato da leader di mercato del calibro di Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, " +
+            "Sybase, Unisys e molti altri. Unicode \u00E8 alla base di molti moderni standard, come XML, Java, ECMAScript " +
+            "(JavaScript), LDAP, CORBA 3.0, WML eccetera, e costituisce l\'implementazione ufficiale dello standard " +
+            "internazionale ISO/IEC 10646. Unicode \u00E8 supportato da molti sistemi operativi, da tutti i pi\u00F9 " +
+            "moderni web browser e da molti altri prodotti. L\'emergere dello standard Unicode, unito alla recente " +
+            "disponibilit\u00E0 di strumenti che lo supportano, \u00E8 fra i pi\u00F9 significativi sviluppi della " +
+            "tecnologia della globalizzazione del software.\n\nL\'adozione di Unicode sui siti web e nelle applicazioni " +
+            "client/server o multi-tiered, rispetto all\'utilizzo dei set di caratteri tradizionali, permette un " +
+            "significativo abbattimento dei costi di gestione. Unicode consente che un\'unica versione di un software " +
+            "o di un sito web siano fruibili con piattaforme, lingue e paesi diversi, evitando la necessit\u00E0 di " +
+            "reingenierizzare il prodotto per ogni situazione specifica. Permette, inoltre, il trasporto del testo " +
+            "fra sistemi diversi senza che abbia luogo alcuna corruzione dei dati.\n",
+            
+            "\u4EC0\u4E48\u662FUnicode(\u7EDF\u4E00\u7801)?\n\nUnicode\u7ED9\u6BCF\u4E2A\u5B57\u7B26\u63D0\u4F9B\u4E86" +
+            "\u4E00\u4E2A\u552F\u4E00\u7684\u6570\u5B57\uFF0C\n\u4E0D\u8BBA\u662F\u4EC0\u4E48\u5E73\u53F0\uFF0C\n\u4E0D" +
+            "\u8BBA\u662F\u4EC0\u4E48\u7A0B\u5E8F\uFF0C\n\u4E0D\u8BBA\u662F\u4EC0\u4E48\u8BED\u8A00\u3002\n\n\u57FA\u672C" +
+            "\u4E0A\uFF0C\u8BA1\u7B97\u673A\u53EA\u662F\u5904\u7406\u6570\u5B57\u3002\u5B83\u4EEC\u6307\u5B9A\u4E00\u4E2A" +
+            "\u6570\u5B57\uFF0C\u6765\u50A8\u5B58\u5B57\u6BCD\u6216\u5176\u4ED6\u5B57\u7B26\u3002\u5728\u521B\u9020Unicode" +
+            "\u4E4B\u524D\uFF0C\u6709\u6570\u767E\u79CD\u6307\u5B9A\u8FD9\u4E9B\u6570\u5B57\u7684\u7F16\u7801\u7CFB\u7EDF" +
+            "\u3002\u6CA1\u6709\u4E00\u4E2A\u7F16\u7801\u53EF\u4EE5\u5305\u542B\u8DB3\u591F\u7684\u5B57\u7B26\uFF1A\u4F8B" +
+            "\u5982\uFF0C\u5355\u5355\u6B27\u5DDE\u5171\u540C\u4F53\u5C31\u9700\u8981\u597D\u51E0\u79CD\u4E0D\u540C\u7684" +
+            "\u7F16\u7801\u6765\u5305\u62EC\u6240\u6709\u7684\u8BED\u8A00\u3002\u5373\u4F7F\u662F\u5355\u4E00\u79CD\u8BED" +
+            "\u8A00\uFF0C\u4F8B\u5982\u82F1\u8BED\uFF0C\u4E5F\u6CA1\u6709\u54EA\u4E00\u4E2A\u7F16\u7801\u53EF\u4EE5\u9002" +
+            "\u7528\u4E8E\u6240\u6709\u7684\u5B57\u6BCD\uFF0C\u6807\u70B9\u7B26\u53F7\uFF0C\u548C\u5E38\u7528\u7684\u6280" +
+            "\u672F\u7B26\u53F7\u3002\n\n\u8FD9\u4E9B\u7F16\u7801\u7CFB\u7EDF\u4E5F\u4F1A\u4E92\u76F8\u51B2\u7A81\u3002" +
+            "\u4E5F\u5C31\u662F\u8BF4\uFF0C\u4E24\u79CD\u7F16\u7801\u53EF\u80FD\u4F7F\u7528\u76F8\u540C\u7684\u6570\u5B57" +
+            "\u4EE3\u8868\u4E24\u4E2A\u4E0D\u540C\u7684\u5B57\u7B26\uFF0C\u6216\u4F7F\u7528\u4E0D\u540C\u7684\u6570\u5B57" +
+            "\u4EE3\u8868\u76F8\u540C\u7684\u5B57\u7B26\u3002\u4EFB\u4F55\u4E00\u53F0\u7279\u5B9A\u7684\u8BA1\u7B97\u673A(" +
+            "\u7279\u522B\u662F\u670D\u52A1\u5668)\u90FD\u9700\u8981\u652F\u6301\u8BB8\u591A\u4E0D\u540C\u7684\u7F16\u7801" +
+            "\uFF0C\u4F46\u662F\uFF0C\u4E0D\u8BBA\u4EC0\u4E48\u65F6\u5019\u6570\u636E\u901A\u8FC7\u4E0D\u540C\u7684\u7F16" +
+            "\u7801\u6216\u5E73\u53F0\u4E4B\u95F4\uFF0C\u90A3\u4E9B\u6570\u636E\u603B\u4F1A\u6709\u635F\u574F\u7684\u5371" +
+            "\u9669\u3002\nUnicode\u6B63\u5728\u6539\u53D8\u6240\u6709\u8FD9\u4E00\u5207\uFF01\n\nUnicode\u7ED9\u6BCF" +
+            "\u4E2A\u5B57\u7B26\u63D0\u4F9B\u4E86\u4E00\u4E2A\u552F\u4E00\u7684\u6570\u5B57\uFF0C\u4E0D\u8BBA\u662F\u4EC0" +
+            "\u4E48\u5E73\u53F0\uFF0C\u4E0D\u8BBA\u662F\u4EC0\u4E48\u7A0B\u5E8F\uFF0C\u4E0D\u8BBA\u4EC0\u4E48\u8BED\u8A00" +
+            "\u3002Unicode\u6807\u51C6\u5DF2\u7ECF\u88AB\u8FD9\u4E9B\u5DE5\u4E1A\u754C\u7684\u9886\u5BFC\u4EEC\u6240\u91C7" +
+            "\u7528\uFF0C\u4F8B\u5982\uFF1AApple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys\u548C" +
+            "\u5176\u5B83\u8BB8\u591A\u516C\u53F8\u3002\u6700\u65B0\u7684\u6807\u51C6\u90FD\u9700\u8981Unicode\uFF0C\u4F8B" +
+            "\u5982XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML\u7B49\u7B49\uFF0C\u5E76\u4E14\uFF0CUnicode" +
+            "\u662F\u5B9E\u73B0ISO/IEC 10646\u7684\u6B63\u89C4\u65B9\u5F0F\u3002\u8BB8\u591A\u64CD\u4F5C\u7CFB\u7EDF\uFF0C" +
+            "\u6240\u6709\u6700\u65B0\u7684\u6D4F\u89C8\u5668\u548C\u8BB8\u591A\u5176\u4ED6\u4EA7\u54C1\u90FD\u652F\u6301" +
+            "\u5B83\u3002Unicode\u6807\u51C6\u7684\u51FA\u73B0\u548C\u652F\u6301\u5B83\u5DE5\u5177\u7684\u5B58\u5728\uFF0C" +
+            "\u662F\u8FD1\u6765\u5168\u7403\u8F6F\u4EF6\u6280\u672F\u6700\u91CD\u8981\u7684\u53D1\u5C55\u8D8B\u52BF\u3002" +
+            "\n\n\u5C06Unicode\u4E0E\u5BA2\u6237\u670D\u52A1\u5668\u6216\u591A\u5C42\u5E94\u7528\u7A0B\u5E8F\u548C\u7F51" +
+            "\u7AD9\u7ED3\u5408\uFF0C\u6BD4\u4F7F\u7528\u4F20\u7EDF\u5B57\u7B26\u96C6\u8282\u7701\u8D39\u7528\u3002Unicode" +
+            "\u4F7F\u5355\u4E00\u8F6F\u4EF6\u4EA7\u54C1\u6216\u5355\u4E00\u7F51\u7AD9\u80FD\u591F\u8D2F\u7A7F\u591A\u4E2A" +
+            "\u5E73\u53F0\uFF0C\u8BED\u8A00\u548C\u56FD\u5BB6\uFF0C\u800C\u4E0D\u9700\u8981\u91CD\u5EFA\u3002\u5B83\u53EF" +
+            "\u5C06\u6570\u636E\u4F20\u8F93\u5230\u8BB8\u591A\u4E0D\u540C\u7684\u7CFB\u7EDF\uFF0C\u800C\u65E0\u635F\u574F" +
+            "\u3002\n\u5173\u4E8EUnicode\u5B66\u672F\u5B66\u4F1A\n\nUnicode\u5B66\u672F\u5B66\u4F1A\u662F\u4E00\u4E2A\u975E" +
+            "\u76C8\u5229\u7684\u7EC4\u7EC7\uFF0C\u662F\u4E3A\u53D1\u5C55\uFF0C\u6269\u5C55\u548C\u63A8\u5E7F\u4F7F\u7528" +
+            "Unicode\u6807\u51C6\u800C\u5EFA\u7ACB\u7684\uFF0CUnicode\u5B66\u672F\u5B66\u4F1A\u8BBE\u7ACB\u4E86\u73B0\u4EE3" +
+            "\u8F6F\u4EF6\u4EA7\u54C1\u548C\u6807\u51C6\u6587\u672C\u7684\u8868\u793A\u6CD5\u3002\u5B66\u672F\u5B66\u4F1A" +
+            "\u7684\u4F1A\u5458\u4EE3\u8868\u4E86\u5E7F\u6CDB\u9886\u57DF\u7684\u8BA1\u7B97\u673A\u548C\u8D44\u8BAF\u5DE5" +
+            "\u4E1A\u7684\u516C\u53F8\u548C\u7EC4\u7EC7\u3002\u5B66\u672F\u5B66\u4F1A\u53EA\u7531\u4F1A\u5458\u63D0\u4F9B" +
+            "\u8D44\u91D1\u3002Unicode\u5B66\u672F\u5B66\u4F1A\u7684\u4F1A\u5458\u8D44\u683C\u5F00\u653E\u7ED9\u4E16\u754C" +
+            "\u4E0A\u4EFB\u4F55\u652F\u6301Unicode\u6807\u51C6\u548C\u5E0C\u671B\u534F\u52A9\u5176\u6269\u5C55\u548C\u6267" +
+            "\u884C\u7684\u7EC4\u7EC7\u53CA\u4E2A\u4EBA\u3002\n",
+            
+            "Mik\u00E4 Unicode on?\n\nUnicode m\u00E4\u00E4ritt\u00E4\u00E4 jokaiselle merkille yksil\u00F6llisen arvon." +
+            "\nRiippumatta k\u00E4ytt\u00F6j\u00E4rjestelm\u00E4st\u00E4\nRiippumatta ohjelmistosta\nRiippumatta kielest" +
+            "\u00E4\n\nTietokoneiden toiminta perustuu numeroiden k\u00E4sittelylle. My\u00F6s kirjaimet ja muut merkit " +
+            "ovat tietokoneiden muistissa lukusarjoina. Ennen Unicodea oli k\u00E4yt\u00F6ss\u00E4 satoja eri tapoja esitt" +
+            "\u00E4\u00E4 merkkej\u00E4 ja kirjaimia mutta yksik\u00E4\u00E4n n\u00E4ist\u00E4 koodisivuista ei kyennyt m" +
+            "\u00E4\u00E4ritt\u00E4m\u00E4\u00E4n kovin kattavaa merkist\u00F6\u00E4. Jo yksinomaan Euroopan Unionissa k" +
+            "\u00E4ytetyille kielille tarvitaan useita erilaisia merkist\u00F6j\u00E4 ja koodisivuja, eik\u00E4 edes englannin " +
+            "kaltaisen, yksinkertaisen kielen kaikkien kirjaimien, v\u00E4limerkkien ja yleisten teknisten symbolien esitt" +
+            "\u00E4minen onnistu yhdell\u00E4 n\u00E4ist\u00E4 koodisivuista.\n\nLis\u00E4ksi koodisivut ovat ristiriidassa" +
+            " kesken\u00E4\u00E4n. Eri koodisivuilla voidaan k\u00E4ytt\u00E4\u00E4 samaa arvoa kahdelle t\u00E4ysin " +
+            "erilaiselle merkille tai samalla merkill\u00E4 voi olla eri arvo eri koodivulla. Jokaisen tietokoneen, varsinkin" +
+            " jos kyseess\u00E4 on palvelin, pit\u00E4\u00E4 tukea lukuisia eri merkist\u00F6j\u00E4 ja koodisivuja ja kun " +
+            "tietoa siirret\u00E4\u00E4n j\u00E4rjestelmien ja merkist\u00F6jen v\u00E4lill\u00E4 on tiedon v\u00E4\u00E4ristymisen" +
+            " ja tuhoutumisen riski suuri.\nUnicode on ratkaisu\n\nUnicodessa jokaiselle merkille on m\u00E4\u00E4ritetty " +
+            "yksil\u00F6llinen, riippumaton arvo. Alan johtavat yritykset, kuten Apple, HP, IBM, JustSystem, Microsoft, " +
+            "Oracle, SAP, Sun, Sybase, Unisys ja lukuisat muut toimijat k\u00E4ytt\u00E4v\u00E4t Unicodea. Unicode on sis" +
+            "\u00E4llytetty vaatimuksena moniin nykyisiin standardeihin, kuten XML, Java, ECMAScript (JavaScript), LDAP, " +
+            "CORBA 3.0 ja WML. Unicode on virallinen keino toteuttaa ISO/IEC 10646 -standardi. Useat k\u00E4ytt\u00F6j\u00E4" +
+            "rjestelm\u00E4t, kaikki internet-selaimet ja monet muut tuotteet k\u00E4ytt\u00E4v\u00E4t Unicodea. Unicoden " +
+            "syntyminen ja sit\u00E4 tukevien ty\u00F6kalujen suuri m\u00E4\u00E4r\u00E4 on yksi viime aikojen merkitt" +
+            "\u00E4vimmist\u00E4 maailmanlaajuisen ohjelmistotuotannon suuntauksista.\n\nUnicoden k\u00E4ytt\u00E4minen " +
+            "palvelintekniikassa, vaativissa sovelluksissa ja internet-sivustoilla tuo merkitt\u00E4vi\u00E4 kustannuss" +
+            "\u00E4\u00E4st\u00F6j\u00E4 verrattuna usean eri koodisivun k\u00E4yt\u00F6lle. Unicoden ansiosta yksitt" +
+            "\u00E4inen sovellus tai sivusto voidaan tarjota useille eri k\u00E4ytt\u00F6j\u00E4rjestelmille ja monilla " +
+            "eri kielill\u00E4 maailmanlaajuisesti, ilman uudelleenohjelmoinnin tarvetta. Tieto kulkee j\u00E4rjestelmien " +
+            "v\u00E4lill\u00E4 vailla tuhoutumisen tai v\u00E4\u00E4ristymisen vaaraa.\nUnicode-konsortio",
+            
+            "Co je Unicode?\n\nUnicode p\u0159i\u0159azuje ka\u017Ed\u00E9mu znaku jedine\u010Dn\u00E9 \u010D\u00EDslo,\nnez" +
+            "\u00E1visle na platform\u011B,\nnez\u00E1visle na programu,\nnez\u00E1visle na jazyce.\n\nPo\u010D\u00EDta\u010De," +
+            " ze sv\u00E9 podstaty, pracuj\u00ED pouze s \u010D\u00EDsly. P\u00EDsmena a dal\u0161\u00ED znaky ukl\u00E1daj\u00ED" +
+            " tak, \u017Ee ka\u017Ed\u00E9mu z nich p\u0159i\u0159ad\u00ED \u010D\u00EDslo. P\u0159ed vznikem Unicode existovaly" +
+            " stovky rozd\u00EDln\u00FDch k\u00F3dovac\u00EDch syst\u00E9m\u016F pro p\u0159i\u0159azov\u00E1n\u00ED t\u011Bchto" +
+            " \u010D\u00EDsel. \u017D\u00E1dn\u00E9 z t\u011Bchto k\u00F3dov\u00E1n\u00ED nemohlo obsahovat dostatek znak\u016F:" +
+            " nap\u0159\u00EDklad Evropsk\u00E1 unie sama pot\u0159ebuje n\u011Bkolik r\u016Fzn\u00FDch k\u00F3dov\u00E1n\u00ED," +
+            " aby pokryla v\u0161echny sv\u00E9 jazyky. Dokonce i pro jeden jedin\u00FD jazyk, jako je angli\u010Dtina, nevyhovovalo" +
+            " \u017E\u00E1dn\u00E9 k\u00F3dov\u00E1n\u00ED pro v\u0161echny p\u00EDsmena, interpunkci a b\u011B\u017En\u011B " +
+            "pou\u017E\u00EDvan\u00E9 technick\u00E9 symboly.\n\nTyto k\u00F3dovac\u00ED syst\u00E9my tak\u00E9 byly v konfliktu" +
+            " jeden s druh\u00FDm. To znamen\u00E1, \u017Ee dv\u011B k\u00F3dov\u00E1n\u00ED mohou pou\u017E\u00EDvat stejn\u00E9" +
+            " \u010D\u00EDslo pro dva r\u016Fzn\u00E9 znaky, nebo pou\u017E\u00EDvat r\u016Fzn\u00E1 \u010D\u00EDsla pro " +
+            "stejn\u00FD znak. Jak\u00FDkoli po\u010D\u00EDta\u010D (zvl\u00E1\u0161t\u011B servery) mus\u00ED podporovat " +
+            "mnoho r\u016Fzn\u00FDch k\u00F3dov\u00E1n\u00ED; p\u0159esto, kdykoli jsou data p\u0159ed\u00E1v\u00E1na mezi " +
+            "r\u016Fzn\u00FDmi k\u00F3dov\u00E1n\u00EDmi nebo platformami, hroz\u00ED, \u017Ee tato data budou po\u0161kozena." +
+            "\n\n \nUnicode toto v\u0161echno m\u011Bn\u00ED!\n\nUnicode p\u0159i\u0159azuje ka\u017Ed\u00E9mu znaku jedine" +
+            "\u010Dn\u00E9 \u010D\u00EDslo, nez\u00E1visle na platform\u011B, nez\u00E1visle na programu, nez\u00E1visle na " +
+            "jazyku. Unicode Standard byl p\u0159ijat takov\u00FDmi pr\u016Fmyslov\u00FDmi v\u016Fdci, jako jsou Apple, HP, " +
+            "IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys a mnoha dal\u0161\u00EDmi. Unicode je vy\u017Eadov" +
+            "\u00E1n modern\u00EDmi standardy, jako jsou XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML atd. a je " +
+            "ofici\u00E1ln\u00ED formou implementace ISO/IEC 10646. Je podporov\u00E1n v mnoha opera\u010Dn\u00EDch syst" +
+            "\u00E9mech, v\u0161ech modern\u00EDch prohl\u00ED\u017Ee\u010D\u00EDch a mnoha dal\u0161\u00EDch produktech. " +
+            "To, \u017Ee se objevil Unicode Standard a dostupnost n\u00E1stroj\u016F, kter\u00E9 jej podporuj\u00ED, pat" +
+            "\u0159\u00ED mezi nejv\u00FDznamn\u011Bj\u0161\u00ED ned\u00E1vn\u00E9 trendy v glob\u00E1ln\u00ED technologii" +
+            " softwaru.\n\nZa\u010Dlen\u011Bn\u00ED Unicode do klient-server nebo v\u00EDcevrstv\u00FDch aplikac\u00ED a " +
+            "webov\u00FDch str\u00E1nek nab\u00EDz\u00ED v\u00FDznamn\u00E9 u\u0161et\u0159en\u00ED n\u00E1klad\u016F oproti " +
+            "d\u0159\u00EDv\u011Bj\u0161\u00EDm znakov\u00FDm sad\u00E1m. Unicode umo\u017E\u0148uje, aby jedin\u00FD " +
+            "softwarov\u00FD produkt nebo jedin\u00E1 webov\u00E1 str\u00E1nka byla zam\u011B\u0159ena na mnoho platforem, " +
+            "jazyk\u016F a zem\u00ED beze zm\u011Bn n\u00E1vrhu. To dovoluje p\u0159en\u00E1\u0161et data p\u0159es mnoho " +
+            "r\u016Fzn\u00FDch syst\u00E9m\u016F bez poru\u0161en\u00ED.",
+            
+            "?\n\n\u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 \u05DE\u05E7\u05E6\u05D4 \u05DE\u05E1\u05E4\u05E8 \u05D9\u05D9" +
+            "\u05D7\u05D5\u05D3\u05D9 \u05DC\u05DB\u05DC \u05EA\u05D5,\n\u05DC\u05D0 \u05DE\u05E9\u05E0\u05D4 \u05E2\u05DC " +
+            "\u05D0\u05D9\u05D6\u05D5 \u05E4\u05DC\u05D8\u05E4\u05D5\u05E8\u05DE\u05D4,\n\u05DC\u05D0 \u05DE\u05E9\u05E0\u05D4" +
+            " \u05D1\u05D0\u05D9\u05D6\u05D5 \u05EA\u05D5\u05DB\u05E0\u05D9\u05EA,\n\u05D5\u05DC\u05D0 \u05DE\u05E9\u05E0\u05D4" +
+            " \u05D1\u05D0\u05D9\u05D6\u05D5 \u05E9\u05E4\u05D4.\n\n\u05D1\u05D0\u05D5\u05E4\u05DF \u05D1\u05E1\u05D9\u05E1\u05D9," +
+            " \u05DE\u05D7\u05E9\u05D1\u05D9\u05DD \u05E2\u05D5\u05E1\u05E7\u05D9\u05DD \u05E8\u05E7 \u05D1\u05DE\u05E1\u05E4" +
+            "\u05E8\u05D9\u05DD. \u05D4\u05DD \u05DE\u05D0\u05D7\u05E1\u05E0\u05D9\u05DD \u05D0\u05D5\u05EA\u05D9\u05D5\u05EA" +
+            " \u05D5\u05EA\u05D5\u05D5\u05D9\u05DD \u05D0\u05D7\u05E8\u05D9\u05DD \u05E2\u05DC-\u05D9\u05D3\u05D9 \u05D4\u05E7" +
+            "\u05E6\u05D0\u05EA \u05DE\u05E1\u05E4\u05E8 \u05DC\u05DB\u05DC \u05D0\u05D7\u05D3 \u05DE\u05D4\u05DD. \u05D1\u05D8" +
+            "\u05E8\u05DD \u05D4\u05D5\u05DE\u05E6\u05D0 \u05D4\u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3, \u05D4\u05D9\u05D5 " +
+            "\u05DE\u05D0\u05D5\u05EA \u05DE\u05E2\u05E8\u05DB\u05D5\u05EA \u05E7\u05D9\u05D3\u05D5\u05D3 \u05E9\u05D5\u05E0" +
+            "\u05D5\u05EA \u05DC\u05D4\u05E7\u05E6\u05D0\u05EA \u05D4\u05DE\u05E1\u05E4\u05E8\u05D9\u05DD \u05D4\u05DC\u05DC" +
+            "\u05D5. \u05D0\u05E3 \u05DC\u05D0 \u05D0\u05D7\u05EA \u05DE\u05D4\u05DF \u05D9\u05DB\u05DC\u05D4 \u05DC\u05D4\u05DB" +
+            "\u05D9\u05DC \u05DB\u05DE\u05D5\u05EA \u05EA\u05D5\u05D5\u05D9\u05DD \u05DE\u05E1\u05E4\u05E7\u05EA. \u05DC\u05D3" +
+            "\u05D5\u05D2\u05DE\u05D0: \u05E8\u05E7 \u05DC\u05D0\u05D9\u05D7\u05D5\u05D3 \u05D4\u05D0\u05D9\u05E8\u05D5\u05E4" +
+            "\u05D0\u05D9 \u05E0\u05D3\u05E8\u05E9\u05D9\u05DD \u05DB\u05DE\u05D4 \u05E1\u05D5\u05D2\u05D9 \u05E7\u05D9\u05D3" +
+            "\u05D5\u05D3\u05D9\u05DD \u05E9\u05D5\u05E0\u05D9\u05DD \u05E2\u05DC \u05DE\u05E0\u05EA \u05DC\u05DB\u05E1\u05D5" +
+            "\u05EA \u05D0\u05EA \u05DB\u05DC \u05D4\u05E9\u05E4\u05D5\u05EA \u05D4\u05DE\u05D3\u05D5\u05D1\u05E8\u05D5\u05EA " +
+            "\u05D1\u05D5. \u05D9\u05EA\u05D9\u05E8\u05D4 \u05DE\u05D6\u05D0\u05EA \u05D0\u05E3 \u05DC\u05E9\u05E4\u05D4 " +
+            "\u05D1\u05D5\u05D3\u05D3\u05EA, \u05DB\u05DE\u05D5 \u05D0\u05E0\u05D2\u05DC\u05D9\u05EA \u05DC\u05DE\u05E9\u05DC," +
+            " \u05DC\u05D0 \u05D4\u05D9\u05D4 \u05D3\u05D9 \u05D1\u05DE\u05E2\u05E8\u05DB\u05EA \u05E7\u05D9\u05D3\u05D5\u05D3" +
+            " \u05D0\u05D7\u05EA \u05D1\u05E2\u05D1\u05D5\u05E8 \u05DB\u05DC \u05D4\u05D0\u05D5\u05EA\u05D9\u05D5\u05EA, \u05E1" +
+            "\u05D9\u05DE\u05E0\u05D9 \u05D4\u05E4\u05D9\u05E1\u05D5\u05E7 \u05D5\u05D4\u05E1\u05DE\u05DC\u05D9\u05DD \u05D4" +
+            "\u05D8\u05DB\u05E0\u05D9\u05D9\u05DD \u05E9\u05D1\u05E9\u05D9\u05DE\u05D5\u05E9 \u05E9\u05D5\u05D8\u05E3.\n\n\u05DE" +
+            "\u05E2\u05E8\u05DB\u05D5\u05EA \u05E7\u05D9\u05D3\u05D5\u05D3 \u05D0\u05DC\u05D5 \u05D0\u05E3 \u05E1\u05D5\u05EA" +
+            "\u05E8\u05D5\u05EA \u05D6\u05D5 \u05D0\u05EA \u05D6\u05D5. \u05DB\u05DC\u05D5\u05DE\u05E8, \u05E9\u05E0\u05D9 " +
+            "\u05E7\u05D9\u05D3\u05D5\u05D3\u05D9\u05DD \u05D9\u05DB\u05D5\u05DC\u05D9\u05DD \u05DC\u05D4\u05E9\u05EA\u05DE" +
+            "\u05E9 \u05D1\u05D0\u05D5\u05EA\u05D5 \u05DE\u05E1\u05E4\u05E8 \u05DC\u05E9\u05E0\u05D9 \u05EA\u05D5\u05D9\u05DD" +
+            " \u05E0\u05D1\u05D3\u05DC\u05D9\u05DD, \u05D0\u05D5 \u05DC\u05D4\u05E9\u05EA\u05DE\u05E9 \u05D1\u05DE\u05E1\u05E4" +
+            "\u05E8\u05D9\u05DD \u05E9\u05D5\u05E0\u05D9\u05DD \u05DC\u05D0\u05D5\u05EA\u05D5 \u05EA\u05D5. \u05E2\u05DC " +
+            "\u05DB\u05DC \u05DE\u05D7\u05E9\u05D1 (\u05D5\u05D1\u05DE\u05D9\u05D5\u05D7\u05D3 \u05E9\u05E8\u05EA\u05D9\u05DD)" +
+            " \u05DC\u05EA\u05DE\u05D5\u05DA \u05D1\u05DE\u05E1\u05E4\u05E8 \u05E8\u05D1 \u05E9\u05DC \u05DE\u05E2\u05E8\u05DB" +
+            "\u05D5\u05EA \u05E7\u05D9\u05D3\u05D5\u05D3 \u05E9\u05D5\u05E0\u05D5\u05EA; \u05D0\u05D5\u05DC\u05DD \u05DB\u05DC" +
+            " \u05D0\u05D9\u05DE\u05EA \u05E9\u05E0\u05EA\u05D5\u05E0\u05D9\u05DD \u05E2\u05D5\u05D1\u05E8\u05D9\u05DD \u05D1" +
+            "\u05D9\u05DF \u05DE\u05E2\u05E8\u05DB\u05D5\u05EA \u05E7\u05D9\u05D3\u05D5\u05D3 \u05D0\u05D5 \u05E4\u05DC\u05D8" +
+            "\u05E4\u05D5\u05E8\u05DE\u05D5\u05EA \u05E9\u05D5\u05E0\u05D5\u05EA \u05E7\u05D9\u05D9\u05DD \u05D4\u05E1\u05D9" +
+            "\u05DB\u05D5\u05DF \u05E9\u05D9\u05D9\u05E4\u05D2\u05DE\u05D5.\n\u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 " +
+            "\u05DE\u05E9\u05E0\u05D4 \u05D0\u05EA \u05DB\u05DC \u05D6\u05D4!\n\n\u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 " +
+            "\u05DE\u05E7\u05E6\u05D4 \u05DE\u05E1\u05E4\u05E8 \u05D9\u05D9\u05D7\u05D5\u05D3\u05D9 \u05DC\u05DB\u05DC " +
+            "\u05EA\u05D5, \u05DC\u05DC\u05D0 \u05EA\u05DC\u05D5\u05EA \u05D1\u05E4\u05DC\u05D8\u05E4\u05D5\u05E8\u05DE\u05D4," +
+            " \u05D1\u05EA\u05D5\u05DB\u05E0\u05D9\u05EA, \u05D0\u05D5 \u05D1\u05E9\u05E4\u05D4.\u05EA\u05E7\u05DF " +
+            "\u05D4\u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 \u05D0\u05D5\u05DE\u05E5 \u05E2\u05DC-\u05D9\u05D3\u05D9 " +
+            "\u05D4\u05DE\u05D5\u05D1\u05D9\u05DC\u05D9\u05DD \u05D1\u05EA\u05E2\u05E9\u05D9\u05D9\u05D4 \u05DB\u05DE\u05D5 " +
+            "Apple\u200F, HP\u200F, IBM\u200F, JustSystem\u200F, Microsoft\u200F, Oracle\u200F, SAP\u200F, Sun\u200F, Sybase" +
+            "\u200F, Unisys\u200F \u05D5\u05E8\u05D1\u05D9\u05DD \u05D0\u05D7\u05E8\u05D9\u05DD. \u05D9\u05D5\u05E0\u05D9\u05E7" +
+            "\u05D5\u05D3 \u05E0\u05D3\u05E8\u05E9 \u05E2\u05DC-\u05D9\u05D3\u05D9 \u05EA\u05E7\u05E0\u05D9\u05DD \u05DE\u05D5" +
+            "\u05D3\u05E8\u05E0\u05D9\u05D9\u05DD \u05DB\u05DE\u05D5 XML\u200F, Java\u200F, ECMAScript (JavaScript)\u200E\u200F, " +
+            "LDAP\u200F, CORBA 3.0\u200E\u200F, WML\u200F \u05D5\u05DB\u05D3\u05D5\u05DE\u05D4, \u05D5\u05DE\u05D4\u05D5\u05D5\u05D4 " +
+            "\u05DC\u05DE\u05E2\u05E9\u05D4 \u05D0\u05EA \u05D4\u05D9\u05D9\u05E9\u05D5\u05DD \u05D4\u05E8\u05E9\u05DE\u05D9 " +
+            "\u05E9\u05DC \u05EA\u05E7\u05DF ISO/IEC 10646. \u05D4\u05D5\u05D0 \u05E0\u05EA\u05DE\u05DA \u05E2\u05DC " +
+            "\u05D9\u05D3\u05D9 \u05DE\u05E2\u05E8\u05DB\u05D5\u05EA \u05D4\u05E4\u05E2\u05DC\u05D4 \u05E8\u05D1\u05D5\u05EA, " +
+            "\u05DB\u05DC \u05D4\u05D3\u05E4\u05D3\u05E4\u05E0\u05D9\u05DD \u05D4\u05D7\u05D3\u05D9\u05E9\u05D9\u05DD, " +
+            "\u05D5\u05DE\u05D5\u05E6\u05E8\u05D9\u05DD \u05E8\u05D1\u05D9\u05DD \u05D0\u05D7\u05E8\u05D9\u05DD. " +
+            "\u05D4\u05D5\u05E4\u05E2\u05EA \u05EA\u05E7\u05DF \u05D4\u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 " +
+            "\u05D5\u05D6\u05DE\u05D9\u05E0\u05D5\u05EA \u05D4\u05DB\u05DC\u05D9\u05DD \u05D4\u05EA\u05D5\u05DE\u05DB" +
+            "\u05D9\u05DD \u05D1\u05D5 \u05E0\u05DE\u05E0\u05D5\u05EA \u05E2\u05DD \u05D4\u05DE\u05D2\u05DE\u05D5\u05EA" +
+            " \u05D4\u05DB\u05DC\u05DC-\u05E2\u05D5\u05DC\u05DE\u05D9\u05D5\u05EA \u05D4\u05D7\u05E9\u05D5\u05D1\u05D5\u05EA" +
+            " \u05D1\u05D9\u05D5\u05EA\u05E8, \u05D0\u05E9\u05E8 \u05DE\u05E1\u05EA\u05DE\u05E0\u05D5\u05EA \u05DC\u05D0" +
+            "\u05D7\u05E8\u05D5\u05E0\u05D4 \u05D1\u05D8\u05DB\u05E0\u05D5\u05DC\u05D5\u05D2\u05D9\u05D9\u05EA \u05D4" +
+            "\u05EA\u05D5\u05DB\u05E0\u05D4.\n\n\u05E9\u05D9\u05DC\u05D5\u05D1 \u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3" +
+            " \u05D1\u05D9\u05D9\u05E9\u05D5\u05DE\u05D9 \u05E9\u05E8\u05EA-\u05DC\u05E7\u05D5\u05D7 \u05D0\u05D5 \u05D1" +
+            "\u05D9\u05D9\u05E9\u05D5\u05DE\u05D9\u05DD \u05E8\u05D1\u05D9-\u05E9\u05DB\u05D1\u05D5\u05EA \u05D5\u05D1\u05D0" +
+            "\u05EA\u05E8\u05D9 \u05D0\u05D9\u05E0\u05D8\u05E8\u05E0\u05D8 \u05DE\u05D0\u05E4\u05E9\u05E8 \u05D7\u05D9\u05E1" +
+            "\u05DB\u05D5\u05DF \u05E0\u05D9\u05DB\u05E8 \u05D1\u05E2\u05DC\u05D5\u05D9\u05D5\u05EA \u05DC\u05E2\u05D5\u05DE" +
+            "\u05EA \u05D4\u05E9\u05D9\u05DE\u05D5\u05E9 \u05D1\u05E1\u05D3\u05E8\u05D5\u05EA \u05D4\u05EA\u05D5\u05D5\u05D9" +
+            "\u05DD \u05D4\u05DE\u05E1\u05D5\u05E8\u05EA\u05D9\u05D5\u05EA. \u05D4\u05D5\u05D3\u05D5\u05EA \u05DC\u05D9\u05D5" +
+            "\u05E0\u05D9\u05E7\u05D5\u05D3, \u05DE\u05D5\u05E6\u05E8 \u05EA\u05D5\u05DB\u05E0\u05D4 \u05D0\u05D7\u05D3 \u05D0" +
+            "\u05D5 \u05D0\u05EA\u05E8 \u05D9\u05D7\u05D9\u05D3 \u05D1\u05E8\u05E9\u05EA \u05D9\u05DB\u05D5\u05DC \u05DC\u05D4" +
+            "\u05E8\u05D7\u05D9\u05D1 \u05D0\u05EA \u05D9\u05E2\u05D3\u05D9\u05D5 \u05DC\u05DE\u05D2\u05D5\u05D5\u05DF \u05E4" +
+            "\u05DC\u05D8\u05E4\u05D5\u05E8\u05DE\u05D5\u05EA, \u05D0\u05E8\u05E6\u05D5\u05EA \u05D5\u05E9\u05E4\u05D5\u05EA " +
+            "\u05DC\u05DC\u05D0 \u05E6\u05D5\u05E8\u05DA \u05D1\u05E9\u05D9\u05E0\u05D5\u05D9\u05D9\u05DD \u05DE\u05E8\u05D7" +
+            "\u05D9\u05E7\u05D9\u05DD. \u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 \u05DE\u05D0\u05E4\u05E9\u05E8 \u05DE\u05E2" +
+            "\u05D1\u05E8 \u05E0\u05EA\u05D5\u05E0\u05D9\u05DD \u05D3\u05E8\u05DA \u05DE\u05E2\u05E8\u05DB\u05D5\u05EA \u05E8" +
+            "\u05D1\u05D5\u05EA \u05D5\u05E9\u05D5\u05E0\u05D5\u05EA \u05DE\u05D1\u05DC\u05D9 \u05E9\u05D9\u05D9\u05E4\u05D2" +
+            "\u05DE\u05D5.\n\u05E4\u05E8\u05D8\u05D9\u05DD \u05D0\u05D5\u05D3\u05D5\u05EA \u05D4\u05E7\u05D5\u05E0\u05E1\u05D5" +
+            "\u05E8\u05E6\u05D9\u05D5\u05DD \u05E9\u05DC \u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 (Unicode Consortium",
+            "Hva\u00F0 er Unicode?\n\nUnicode sta\u00F0allinn \u00FAthlutar hverju skrift\u00E1kni t\u00F6lu,\nsem er \u00F3h\u00E1" +
+            "\u00F0 t\u00F6lvuger\u00F0,\nsem er \u00F3h\u00E1\u00F0 forriti,\nsem er \u00F3h\u00E1\u00F0 tungum\u00E1li.\n\nT" +
+            "\u00F6lvur geta \u00ED e\u00F0li s\u00EDnu a\u00F0eins unni\u00F0 me\u00F0 t\u00F6lur. \u00DE\u00E6r geyma b" +
+            "\u00F3kstafi og \u00F6nnur skrift\u00E1kn me\u00F0 \u00FEv\u00ED a\u00F0 \u00FAthluta \u00FEeim t\u00F6lu. " +
+            "\u00C1\u00F0ur en Unicode kom til voru hundru\u00F0 mismunandi t\u00FAlkunarkerfa sem \u00FAthlutu\u00F0u " +
+            "\u00FEessum t\u00F6lum. Ekkert eitt t\u00FAlkunarkerfi gat innihaldi\u00F0 n\u00E6gilegan fj\u00F6lda skrift" +
+            "\u00E1kna; t.d. \u00FEarfnast Evr\u00F3pusambandi\u00F0 nokkurra mismunandi kerfa til a\u00F0 spanna \u00F6ll " +
+            "tungum\u00E1l \u00FEess. Jafnvel fyrir eitt tungum\u00E1l, eins og ensku, var eitt t\u00FAlkunarkerfi ekki n" +
+            "\u00F3g fyrir alla b\u00F3kstafi, greinarmerki og algengustu einingat\u00E1kn.\n\nT\u00FAlkunarkerfin hafa einnig" +
+            " veri\u00F0 \u00ED andst\u00F6\u00F0u hvert vi\u00F0 anna\u00F0, \u00FE.e. tv\u00F6 kerfi geta nota\u00F0 s\u00F6mu" +
+            " t\u00F6lu fyrir tv\u00F6 \u00F3l\u00EDk skrift\u00E1kn e\u00F0a nota\u00F0 tv\u00E6r mismunandi t\u00F6lur fyrir" +
+            " sama t\u00E1kni\u00F0. S\u00E9rhver t\u00F6lva \u00FEarf(s\u00E9rstaklega mi\u00F0larar) a\u00F0 sty\u00F0ja margs" +
+            " konar t\u00FAlkanir \u00E1 st\u00F6fum; engu a\u00F0 s\u00ED\u00F0ur er alltaf h\u00E6tta \u00E1 stafabrenglun " +
+            "\u00FEegar g\u00F6gn fara \u00E1 milli t\u00F6lva og \u00E1 milli mismunandi t\u00FAlkunarkerfa.\nUnicode breytir" +
+            " \u00FEessu \u00F6llu!\n\nUnicode gefur hverju skrift\u00E1kni eigin t\u00F6lu sem breytist ekki eftir t\u00F6lvuger" +
+            "\u00F0, forriti e\u00F0a tungum\u00E1li. Unicode sta\u00F0allinn hefur veri\u00F0 tekinn upp af fork\u00F3lfum t" +
+            "\u00F6lvui\u00F0na\u00F0arins; Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys og m" +
+            "\u00F6rgum \u00F6\u00F0rum. Unicode er nota\u00F0 af n\u00FAt\u00EDmast\u00F6\u00F0lum eins og XML, Java, " +
+            "ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, o.s.frv. og er hin opinbera lei\u00F0 til a\u00F0 \u00FAtf" +
+            "\u00E6ra ISO/IEC 10646. Unicode sta\u00F0allinn er studdur af m\u00F6rgum st\u00FDrikerfum, \u00F6llum n" +
+            "\u00FAt\u00EDmav\u00F6frum og m\u00F6rgum \u00F6\u00F0rum b\u00FAna\u00F0i. Tilkoma Unicode sta\u00F0alsins" +
+            " og b\u00FAna\u00F0ar til a\u00F0 sty\u00F0ja hann eru veigamikil skref \u00ED \u00FEr\u00F3un hnattr\u00E6nnar" +
+            " t\u00E6kni.\n\nA\u00F0 nota Unicode \u00ED notendami\u00F0lurum e\u00F0a \u00ED forritum og vefs\u00ED" +
+            "\u00F0um me\u00F0 m\u00F6rgum notendavi\u00F0m\u00F3tum b\u00FD\u00F0ur upp \u00E1 umtalsver\u00F0an " +
+            "sparna\u00F0, \u00ED samanbur\u00F0i vi\u00F0 a\u00F0 nota eldri stafat\u00F6flur. Unicode leyfir einum " +
+            "forritapakka e\u00F0a einni vefsl\u00F3\u00F0 a\u00F0 n\u00E1 til margra t\u00F6lvuger\u00F0a, tungum" +
+            "\u00E1la og landa \u00E1n endurh\u00F6nnunar. Unicode gerir g\u00F6gnum kleift a\u00F0 fer\u00F0ast gegnum " +
+            "m\u00F6rg mismunandi kerfi \u00E1n brenglunar.\nUm Unicode samt\u00F6kin (Consortium)\n\nUnicode Consortium " +
+            "samt\u00F6kin stefna ekki a\u00F0 hagna\u00F0i. \u00DEau voru stofnu\u00F0 til a\u00F0 \u00FEr\u00F3a, \u00FA" +
+            "tv\u00EDkka og koma \u00E1 framf\u00E6ri Unicode sta\u00F0linum, sem skilgreinir framsetningu \u00E1 texta " +
+            "\u00ED n\u00FAt\u00EDmaforritap\u00F6kkum og st\u00F6\u00F0lum. Me\u00F0limir samtakanna eru fulltr\u00FAar " +
+            "margs konar fyrirt\u00E6kja og stofnana \u00ED t\u00F6lvu- og uppl\u00FDsingai\u00F0na\u00F0inum. Samt\u00F6kin" +
+            " hafa eing\u00F6ngu tekjur af a\u00F0ildargj\u00F6ldum s\u00EDnum. Fyrirt\u00E6ki, stofnanir og einstaklingar " +
+            "hvar sem er \u00ED heiminum sem \u00F3"
+*/
+            };
+}
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..d25ccc0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java
@@ -0,0 +1,450 @@
+//##header
+/**
+ *******************************************************************************
+ * Copyright (C) 2005-2009, 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..e68d098
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/cldr/TestCLDRVsICU.java
@@ -0,0 +1,552 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+**********************************************************************
+* Copyright (c) 2002-2009, 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..8015532
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java
@@ -0,0 +1,120 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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..d549cbb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java
@@ -0,0 +1,512 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.collator;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+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);
+//                                }
+//                        }
+//                }
+//        }
+//    }
+    
+    public void TestGetKeywordValues(){
+        final String[][] PREFERRED = {
+            {"und",             "standard"},
+            {"en_US",           "standard"},
+            {"en_029",          "standard"},
+            {"de_DE",           "standard", "phonebook"},
+            {"de_Latn_DE",      "standard", "phonebook"},
+            {"zh",              "pinyin", "big5han", "gb2312han", "standard", "stroke", "unihan"},
+            {"zh_Hans",         "pinyin", "big5han", "gb2312han", "standard", "stroke", "unihan"},
+            {"zh_CN",           "pinyin", "big5han", "gb2312han", "standard", "stroke", "unihan"},
+            {"zh_Hant",         "stroke", "big5han", "gb2312han", "pinyin", "standard", "unihan"},
+            {"zh_TW",           "stroke", "big5han", "gb2312han", "pinyin", "standard", "unihan"},
+            {"zh__PINYIN",      "pinyin", "big5han", "gb2312han", "standard", "stroke", "unihan"},
+            {"es_ES",           "standard", "traditional"},
+            {"es__TRADITIONAL", "traditional", "standard"},
+            {"und@collation=phonebook",     "standard"},
+            {"de_DE@collation=big5han",     "standard", "phonebook"},
+            {"zzz@collation=xxx",           "standard"},
+        };
+
+        for (int i = 0; i < PREFERRED.length; i++) {
+            ULocale loc = new ULocale(PREFERRED[i][0]);
+            String[] expected = new String[PREFERRED[i].length - 1];
+            System.arraycopy(PREFERRED[i], 1, expected, 0, expected.length);
+
+            String[] pref = Collator.getKeywordValuesForLocale("collation", loc, true);
+            boolean matchPref = false;
+            if (pref.length == expected.length) {
+                matchPref = true;
+                for (int j = 0; j < pref.length; j++) {
+                    if (!pref[j].equals(expected[j])) {
+                        matchPref = false;
+                    }
+                }
+            }
+            if (!matchPref) {
+                errln("FAIL: Preferred values for locale " + loc 
+                        + " got:" + Utility.arrayToString(pref) + " expected:" + Utility.arrayToString(expected));
+            }
+ 
+            String[] all = Collator.getKeywordValuesForLocale("collation", loc, true);
+
+            // Collator.getKeywordValues return the same contents for both commonlyUsed
+            // true and false.
+            boolean matchAll = false;
+            if (pref.length == all.length) {
+                matchAll = true;
+                for (int j = 0; j < pref.length; j++) {
+                    boolean foundMatch = false;
+                    for (int k = 0; k < all.length; k++) {
+                        if (pref[j].equals(all[k])) {
+                            foundMatch = true;
+                            break;
+                        }
+                    }
+                    if (!foundMatch) {
+                        matchAll = false;
+                        break;
+                    }
+                }
+            }
+            if (!matchAll) {
+                errln("FAIL: All values for locale " + loc
+                        + " got:" + Utility.arrayToString(all) + " expected:" + Utility.arrayToString(pref));
+            }
+        }
+    }
+}
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..74d25bd
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java
@@ -0,0 +1,84 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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..fcba6b6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/RandomCollator.java
@@ -0,0 +1,296 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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..3465aae
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java
@@ -0,0 +1,246 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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/RegressionTest.java b/src/com/ibm/icu/dev/test/duration/RegressionTest.java
new file mode 100644
index 0000000..3250087
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/RegressionTest.java
@@ -0,0 +1,73 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. 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.DurationFormatter;
+import com.ibm.icu.impl.duration.PeriodBuilder;
+import com.ibm.icu.impl.duration.PeriodFormatterService;
+import com.ibm.icu.text.DurationFormat;
+import com.ibm.icu.util.ULocale;
+
+public class RegressionTest extends TestFmwk {
+
+    public static void main(String[] args) {
+        new RegressionTest().run(args);
+    }
+    
+    // bug6397
+    public void TestDisallowedMillis() {
+        // original test case
+        // if we don't support milliseconds, format times less than 1 second as 
+        // 'less than 1 second'
+        {
+            ULocale ul = new ULocale("th");
+            DurationFormat df = DurationFormat.getInstance(ul);
+            String result = df.formatDurationFromNow(500);
+            assertEquals(
+                "original test case", 
+                "\u0E44\u0E21\u0E48\u0E16\u0E36\u0E07\u0E2D\u0E35\u0E01 1 \u0E27\u0E34\u0E19\u0E32\u0E17\u0E35", 
+                result);
+        }
+        
+        // same issue, but using English and the internal APIs
+        {
+            PeriodFormatterService pfs = BasicPeriodFormatterService.getInstance();
+            PeriodBuilder pb = pfs.newPeriodBuilderFactory()
+                .setAllowMilliseconds(false)
+                .getSingleUnitBuilder();
+            DurationFormatter df = pfs.newDurationFormatterFactory()
+                .setPeriodBuilder(pb)
+                .getFormatter();
+            String result = df.formatDurationFromNow(500);
+            assertEquals(
+                "english test case",
+                "less than 1 second from now",
+                result);
+           
+        }
+        
+        // if the limit is set on milliseconds, and they are not supported, 
+        // use an effective limit based on seconds
+        {
+            PeriodFormatterService pfs = BasicPeriodFormatterService.getInstance();
+            PeriodBuilder pb = pfs.newPeriodBuilderFactory()
+                .setMinLimit(2500)
+                .setAllowMilliseconds(false)
+                .getSingleUnitBuilder();
+            DurationFormatter df = pfs.newDurationFormatterFactory()
+                .setPeriodBuilder(pb)
+                .getFormatter();
+            String result = df.formatDurationFromNow(500);
+            assertEquals(
+                "limit test case",
+                "less than 2 seconds from now",
+                result);
+        }
+    }
+}
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..1914139
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
@@ -0,0 +1,451 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..27a4168
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatTest.java
@@ -0,0 +1,3520 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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.BuddhistCalendar;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ChineseCalendar;
+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;
+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);
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * Test for format/parse method with calendar which is different
+     * from what DateFormat instance internally use.  See ticket#6420.
+     */
+    public void TestRoundtripWithCalendar() {
+        TimeZone tz = TimeZone.getTimeZone("Europe/Paris");
+        TimeZone gmt = TimeZone.getTimeZone("Etc/GMT");
+
+        final Calendar[] calendars = {
+            new GregorianCalendar(tz),
+            new BuddhistCalendar(tz),
+            new HebrewCalendar(tz),
+            new IslamicCalendar(tz),
+            new JapaneseCalendar(tz),
+        };
+
+        final String pattern = "GyMMMMdEEEEHHmmssVVVV";
+
+        //FIXME The formatters commented out below are currently failing because of
+        // the calendar calculation problem reported by #6691
+
+        // The order of test formatters mus match the order of calendars above.
+        final DateFormat[] formatters = {
+            DateFormat.getPatternInstance(pattern, new ULocale("en_US")), //calendar=gregorian
+            DateFormat.getPatternInstance(pattern, new ULocale("th_TH")), //calendar=buddhist
+            DateFormat.getPatternInstance(pattern, new ULocale("he_IL@calendar=hebrew")),
+//            DateFormat.getPatternInstance(pattern, new ULocale("ar_EG@calendar=islamic")),
+//            DateFormat.getPatternInstance(pattern, new ULocale("ja_JP@calendar=japanese")),
+        };
+
+        Date d = new Date();
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fpos = new FieldPosition(0);
+        ParsePosition ppos = new ParsePosition(0);
+
+        for (int i = 0; i < formatters.length; i++) {
+            buf.setLength(0);
+            fpos.setBeginIndex(0);
+            fpos.setEndIndex(0);
+            calendars[i].setTime(d);
+
+            // Normal case output - the given calendar matches the calendar
+            // used by the formatter
+            formatters[i].format(calendars[i], buf, fpos);
+            String refStr = buf.toString();
+
+            for (int j = 0; j < calendars.length; j++) {
+                if (j == i) {
+                    continue;
+                }
+                buf.setLength(0);
+                fpos.setBeginIndex(0);
+                fpos.setEndIndex(0);
+                calendars[j].setTime(d);
+
+                // Even the different calendar type is specified,
+                // we should get the same result.
+                formatters[i].format(calendars[j], buf, fpos);
+                if (!refStr.equals(buf.toString())) {
+                    errln("FAIL: Different format result with a different calendar for the same time -"
+                            + "\n Reference calendar type=" + calendars[i].getType()
+                            + "\n Another calendar type=" + calendars[j].getType()
+                            + "\n Expected result=" + refStr
+                            + "\n Actual result=" + buf.toString());
+                }
+            }
+
+            calendars[i].setTimeZone(gmt);
+            calendars[i].clear();
+            ppos.setErrorIndex(-1);
+            ppos.setIndex(0);
+
+            // Normal case parse result - the given calendar matches the calendar
+            // used by the formatter
+            formatters[i].parse(refStr, calendars[i], ppos);
+
+            for (int j = 0; j < calendars.length; j++) {
+                if (j == i) {
+                    continue;
+                }
+                calendars[j].setTimeZone(gmt);
+                calendars[j].clear();
+                ppos.setErrorIndex(-1);
+                ppos.setIndex(0);
+
+                // Even the different calendar type is specified,
+                // we should get the same time and time zone.
+                formatters[i].parse(refStr, calendars[j], ppos);
+                if (calendars[i].getTimeInMillis() != calendars[j].getTimeInMillis()
+                        || !calendars[i].getTimeZone().equals(calendars[j].getTimeZone())) {
+                    errln("FAIL: Different parse result with a different calendar for the same string -"
+                            + "\n Reference calendar type=" + calendars[i].getType()
+                            + "\n Another calendar type=" + calendars[j].getType()
+                            + "\n Date string=" + refStr
+                            + "\n Expected time=" + calendars[i].getTimeInMillis()
+                            + "\n Expected time zone=" + calendars[i].getTimeZone().getID()
+                            + "\n Actual time=" + calendars[j].getTimeInMillis()
+                            + "\n Actual time zone=" + calendars[j].getTimeZone().getID());
+                }
+            }
+        }
+    }
+}
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..7187ccc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
@@ -0,0 +1,1008 @@
+/*
+ *******************************************************************************
+ * 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;
+        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());
+            String oneSkeleton = data[i++];
+            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..c8a843b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java
@@ -0,0 +1,556 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2009, 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)) {
+                    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", "23: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,3)) {
+                    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..546eeb7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
@@ -0,0 +1,368 @@
+//##header
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2009, 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 com.ibm.icu.math.MathContext;
+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");
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public void testJB6134()
+    {
+        DecimalFormat decfmt = new DecimalFormat();
+        StringBuffer buf = new StringBuffer();
+
+        FieldPosition fposByInt = new FieldPosition(NumberFormat.INTEGER_FIELD);
+        decfmt.format(123, buf, fposByInt);
+
+        buf.setLength(0);
+        FieldPosition fposByField = new FieldPosition(NumberFormat.Field.INTEGER);
+        decfmt.format(123, buf, fposByField);
+
+        if (fposByInt.getEndIndex() != fposByField.getEndIndex())
+        {
+            errln("ERROR: End index for integer field - fposByInt:" + fposByInt.getEndIndex() +
+                " / fposByField: " + fposByField.getEndIndex());
+        }
+    }
+//#endif
+
+    public void testJB4971()
+    {
+        DecimalFormat decfmt = new DecimalFormat();
+        MathContext resultICU;
+
+        MathContext comp1 = new MathContext(0, MathContext.PLAIN);
+        resultICU = decfmt.getMathContextICU();
+        if ((comp1.getDigits() != resultICU.getDigits()) ||
+            (comp1.getForm() != resultICU.getForm()) ||
+            (comp1.getLostDigits() != resultICU.getLostDigits()) ||
+            (comp1.getRoundingMode() != resultICU.getRoundingMode()))
+        {
+            errln("ERROR: Math context 1 not equal - result: " + resultICU.toString() +
+                " / expected: " + comp1.toString());
+        }
+
+        MathContext comp2 = new MathContext(5, MathContext.ENGINEERING);
+        decfmt.setMathContextICU(comp2);
+        resultICU = decfmt.getMathContextICU();
+        if ((comp2.getDigits() != resultICU.getDigits()) ||
+            (comp2.getForm() != resultICU.getForm()) ||
+            (comp2.getLostDigits() != resultICU.getLostDigits()) ||
+            (comp2.getRoundingMode() != resultICU.getRoundingMode()))
+        {
+            errln("ERROR: Math context 2 not equal - result: " + resultICU.toString() +
+                " / expected: " + comp2.toString());
+        }
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+
+        java.math.MathContext result;
+
+        java.math.MathContext comp3 = new java.math.MathContext(3, java.math.RoundingMode.DOWN);
+        decfmt.setMathContext(comp3);
+        result = decfmt.getMathContext();
+        if ((comp3.getPrecision() != result.getPrecision()) ||
+            (comp3.getRoundingMode() != result.getRoundingMode()))
+        {
+            errln("ERROR: Math context 3 not equal - result: " + result.toString() +
+                " / expected: " + comp3.toString());
+        }
+
+//#endif
+
+    }
+
+    public void testJB6354()
+    {
+        DecimalFormat pat = new DecimalFormat("#,##0.00");
+
+        // get default rounding increment
+//#if defined(FOUNDATION10)
+//##        com.ibm.icu.math.BigDecimal r1 = pat.getRoundingIncrement();
+//#else
+        java.math.BigDecimal r1 = pat.getRoundingIncrement();
+//#endif
+
+        // set rounding mode with zero increment.  Rounding 
+        // increment should be set by this operation
+        pat.setRoundingMode(BigDecimal.ROUND_UP);
+//#if defined(FOUNDATION10)
+//##        com.ibm.icu.math.BigDecimal r2 = pat.getRoundingIncrement();
+//#else
+        java.math.BigDecimal r2 = pat.getRoundingIncrement();
+//#endif
+
+        // check for different values
+        if ((r1 != null) && (r2 != null))
+        {
+            if (r1.compareTo(r2) == 0)
+            {
+                errln("ERROR: Rounding increment did not change");
+            }
+        }
+    }
+}
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..f12e2fe
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
@@ -0,0 +1,517 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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..6374f74
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
@@ -0,0 +1,231 @@
+//##header
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2009, 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..56a4f6f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
@@ -0,0 +1,326 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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..8ac4933
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatTest.java
@@ -0,0 +1,2197 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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.impl.Utility;
+import com.ibm.icu.math.BigDecimal;
+
+import java.lang.Double;
+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");
+
+    }
+
+    public void TestSpaceParsing() {
+        // the data are:
+        // the string to be parsed, parsed position, parsed error index
+        String[][] DATA = {
+            {"$124", "4", "-1"},
+            {"$124 $124", "4", "-1"},
+            {"$124 ", "4", "-1"},
+            {"$ 124 ", "5", "-1"},
+            {"$\u00A0124 ", "5", "-1"},
+            {" $ 124 ", "0", "0"}, // TODO: need to handle space correctly
+            {"124$", "0", "3"}, // TODO: need to handle space correctly
+            {"124 $", "5", "-1"},
+        };
+        NumberFormat foo = NumberFormat.getCurrencyInstance();
+        for (int i = 0; i < DATA.length; ++i) {
+            ParsePosition parsePosition = new ParsePosition(0);
+            String stringToBeParsed = DATA[i][0];
+            int parsedPosition = Integer.parseInt(DATA[i][1]);
+            int errorIndex = Integer.parseInt(DATA[i][2]);
+            Number result = foo.parse(stringToBeParsed, parsePosition);
+            if (parsePosition.getIndex() != parsedPosition ||
+                parsePosition.getErrorIndex() != errorIndex) {
+                errln("FAILED parse " + stringToBeParsed);
+            }
+            if (parsePosition.getErrorIndex() == -1 &&
+                result.doubleValue() != 124) {
+                errln("FAILED parse " + stringToBeParsed);
+            }
+        }
+    }
+
+
+    public void TestMultiCurrencySign() {
+        String[][] DATA = {
+            // the fields in the following test are:
+            // locale, 
+            // currency pattern (with negative pattern), 
+            // currency number to be formatted,
+            // currency format using currency symbol name, such as "$" for USD,
+            // currency format using currency ISO name, such as "USD",
+            // currency format using plural name, such as "US dollars".
+            // for US locale
+            {"en_US", "\u00A4#,##0.00;-\u00A4#,##0.00", "1234.56", "$1,234.56", "USD1,234.56", "US dollars1,234.56"}, 
+            {"en_US", "\u00A4#,##0.00;-\u00A4#,##0.00", "-1234.56", "-$1,234.56", "-USD1,234.56", "-US dollars1,234.56"}, 
+            {"en_US", "\u00A4#,##0.00;-\u00A4#,##0.00", "1", "$1.00", "USD1.00", "US dollar1.00"}, 
+            // for CHINA locale
+            {"zh_CN", "\u00A4#,##0.00;(\u00A4#,##0.00)", "1234.56", "\uFFE51,234.56", "CNY1,234.56", "\u4EBA\u6C11\u5E011,234.56"},
+            {"zh_CN", "\u00A4#,##0.00;(\u00A4#,##0.00)", "-1234.56", "(\uFFE51,234.56)", "(CNY1,234.56)", "(\u4EBA\u6C11\u5E011,234.56)"},
+            {"zh_CN", "\u00A4#,##0.00;(\u00A4#,##0.00)", "1", "\uFFE51.00", "CNY1.00", "\u4EBA\u6C11\u5E011.00"}
+        };
+
+        String doubleCurrencyStr = "\u00A4\u00A4";
+        String tripleCurrencyStr = "\u00A4\u00A4\u00A4";
+
+        for (int i=0; i<DATA.length; ++i) {
+            String locale = DATA[i][0];
+            String pat = DATA[i][1];
+            Double numberToBeFormat = new Double(DATA[i][2]);
+            DecimalFormatSymbols sym = new DecimalFormatSymbols(new ULocale(locale));
+            for (int j=1; j<=3; ++j) {
+                // j represents the number of currency sign in the pattern.
+                if (j == 2) {
+                    pat = Utility.replaceAll(pat, "\u00A4", doubleCurrencyStr);
+                } else if (j == 3) {
+                    pat = Utility.replaceAll(pat, "\u00A4\u00A4", tripleCurrencyStr);
+                }
+                DecimalFormat fmt = new DecimalFormat(pat, sym);
+                String s = ((NumberFormat) fmt).format(numberToBeFormat);
+                // DATA[i][3] is the currency format result using a
+                // single currency sign.
+                // DATA[i][4] is the currency format result using
+                // double currency sign.
+                // DATA[i][5] is the currency format result using
+                // triple currency sign.
+                // DATA[i][j+2] is the currency format result using
+                // 'j' number of currency sign.
+                String currencyFormatResult = DATA[i][2+j];
+                if (!s.equals(currencyFormatResult)) {
+                    errln("FAIL format: Expected " + currencyFormatResult);
+                }
+                try {
+                    // mix style parsing
+                    for (int k=3; k<=5; ++k) {
+                      // DATA[i][3] is the currency format result using a
+                      // single currency sign.
+                      // DATA[i][4] is the currency format result using
+                      // double currency sign.
+                      // DATA[i][5] is the currency format result using
+                      // triple currency sign.
+                      String oneCurrencyFormat = DATA[i][k];
+                      if (fmt.parse(oneCurrencyFormat).doubleValue() != 
+                          numberToBeFormat.doubleValue()) {
+                        errln("FAILED parse " + oneCurrencyFormat);
+                      }
+                    }
+                } catch (ParseException e) {
+                    errln("FAILED, DecimalFormat parse currency: " + e.toString());
+                }
+            }
+        }
+    }
+
+    public void TestCurrencyFormatForMixParsing() {
+        MeasureFormat curFmt = MeasureFormat.getCurrencyFormat(new ULocale("en_US"));
+        String[] formats = {
+            "$1,234.56",  // string to be parsed
+            "USD1,234.56",
+            "US dollars1,234.56",
+            "1,234.56 US dollars"
+        };
+        try {
+          for (int i = 0; i < formats.length; ++i) {
+            String stringToBeParsed = formats[i];
+            CurrencyAmount parsedVal = (CurrencyAmount)curFmt.parseObject(stringToBeParsed);
+            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("parse FAILED: " + e.toString());
+        }
+    }
+
+    public void TestDecimalFormatCurrencyParse() {
+        // Locale.US
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        StringBuffer pat = new StringBuffer("");
+        char currency = 0x00A4;
+        // "\xA4#,##0.00;-\xA4#,##0.00"
+        pat.append(currency).append(currency).append(currency).append("#,##0.00;-").append(currency).append(currency).append(currency).append("#,##0.00");
+        DecimalFormat fmt = new DecimalFormat(pat.toString(), sym);
+        String[][] DATA = {
+            // the data are:
+            // string to be parsed, the parsed result (number)
+            {"$1.00", "1"},    
+            {"USD1.00", "1"},    
+            {"1.00 US dollar", "1"},    
+            {"$1,234.56", "1234.56"},    
+            {"USD1,234.56", "1234.56"},    
+            {"1,234.56 US dollar", "1234.56"},    
+        };
+        try {
+            for (int i = 0; i < DATA.length; ++i) {
+                String stringToBeParsed = DATA[i][0];
+                double parsedResult = Double.parseDouble(DATA[i][1]);
+                Number num = fmt.parse(stringToBeParsed);
+                if (num.doubleValue() != parsedResult) {
+                    errln("FAIL parse: Expected " + parsedResult);
+                }
+            }
+        } catch (ParseException e) {
+            errln("FAILED, DecimalFormat parse currency: " + e.toString());
+        }
+    } 
+
+    /**
+     * 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);
+    }
+
+    public void TestCurrencyIsoPluralFormat() {
+        String[][] DATA = {
+            // the data are:
+            // locale, 
+            // currency amount to be formatted,
+            // currency ISO code to be formatted,
+            // format result using CURRENCYSTYLE,
+            // format result using ISOCURRENCYSTYLE,
+            // format result using PLURALCURRENCYSTYLE,
+            {"en_US", "1", "USD", "$1.00", "USD1.00", "1.00 US dollar"},
+            {"en_US", "1234.56", "USD", "$1,234.56", "USD1,234.56", "1,234.56 US dollars"},
+            {"en_US", "-1234.56", "USD", "($1,234.56)", "(USD1,234.56)", "-1,234.56 US dollars"},
+            {"zh_CN", "1", "USD", "US$1.00", "USD1.00", "1.00 \u7F8E\u5143"}, 
+            {"zh_CN", "1234.56", "USD", "US$1,234.56", "USD1,234.56", "1,234.56 \u7F8E\u5143"},
+            {"zh_CN", "1", "CHY", "CHY1.00", "CHY1.00", "1.00 CHY"},
+            {"zh_CN", "1234.56", "CHY", "CHY1,234.56", "CHY1,234.56", "1,234.56 CHY"},
+            {"zh_CN", "1", "CNY", "\uFFE51.00", "CNY1.00", "1.00 \u4EBA\u6C11\u5E01"},
+            {"zh_CN", "1234.56", "CNY", "\uFFE51,234.56", "CNY1,234.56", "1,234.56 \u4EBA\u6C11\u5E01"}, 
+            {"ru_RU", "1", "RUB", "1,00\u00A0\u0440\u0443\u0431.", "1,00\u00A0RUB", "1,00 \u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u0438\u0439 \u0440\u0443\u0431\u043B\u044C"},
+            {"ru_RU", "2", "RUB", "2,00\u00A0\u0440\u0443\u0431.", "2,00\u00A0RUB", "2,00 \u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u0438\u0445 \u0440\u0443\u0431\u043B\u044F"},
+            {"ru_RU", "5", "RUB", "5,00\u00A0\u0440\u0443\u0431.", "5,00\u00A0RUB", "5,00 \u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u0438\u0445 \u0440\u0443\u0431\u043B\u0435\u0439"},
+            // test locale without currency information
+            {"ti_ET", "-1.23", "USD", "-US$1.23", "-USD1.23", "-1.23 USD"},
+            // test choice format
+            {"es_AR", "1", "INR", "Re.\u00A01,00", "INR\u00A01,00", "1,00 rupia india"},
+        };
+        
+        for (int i=0; i<DATA.length; ++i) {
+          for (int k = NumberFormat.CURRENCYSTYLE;
+               k <= NumberFormat.PLURALCURRENCYSTYLE;
+               ++k) {
+            // k represents currency format style.
+            if ( k != NumberFormat.CURRENCYSTYLE &&
+                 k != NumberFormat.ISOCURRENCYSTYLE &&
+                 k != NumberFormat.PLURALCURRENCYSTYLE ) {
+                continue;
+            }
+            String localeString = DATA[i][0];
+            Double numberToBeFormat = new Double(DATA[i][1]);
+            String currencyISOCode = DATA[i][2];
+            ULocale locale = new ULocale(localeString);
+            NumberFormat numFmt = NumberFormat.getInstance(locale, k);
+            numFmt.setCurrency(Currency.getInstance(currencyISOCode));
+            String strBuf = numFmt.format(numberToBeFormat);
+            int resultDataIndex = k-1;
+            if ( k == NumberFormat.CURRENCYSTYLE ) {
+                resultDataIndex = k+2;
+            }
+            // DATA[i][resultDataIndex] is the currency format result
+            // using 'k' currency style.
+            String formatResult = DATA[i][resultDataIndex];
+            if (!strBuf.equals(formatResult)) {
+                errln("FAIL: Expected " + formatResult + " actual: " + Utility.escape(strBuf));
+            }
+            try {
+                // test parsing, and test parsing for all currency formats.
+                for (int j = 3; j < 6; ++j) {
+                    // DATA[i][3] is the currency format result using 
+                    // CURRENCYSTYLE formatter.
+                    // DATA[i][4] is the currency format result using
+                    // ISOCURRENCYSTYLE formatter.
+                    // DATA[i][5] is the currency format result using
+                    // PLURALCURRENCYSTYLE formatter.
+                    String oneCurrencyFormatResult = DATA[i][j];
+                    Number val = numFmt.parse(oneCurrencyFormatResult);
+                    if (val.doubleValue() != numberToBeFormat.doubleValue()) {
+                        errln("FAIL: getCurrencyFormat of locale " + localeString + " failed roundtripping the number. val=" + val + "; expected: " + numberToBeFormat);
+                    }
+                }
+            }
+            catch (ParseException e) {
+                errln("FAIL: " + e.getMessage());
+            }
+          }  
+        }
+    }
+
+    /**
+     * 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);
+    }
+    }
+
+    /**
+     * Test alternate numbering systems
+     */
+    public void TestNumberingSystems() {
+
+        ULocale loc1 = new ULocale("en_US@numbers=thai");
+        ULocale loc2 = new ULocale("en_US@numbers=hebrew");
+        ULocale loc3 = new ULocale("en_US@numbers=persian");
+        ULocale loc4 = new ULocale("hi_IN@numbers=foobar");
+        
+        NumberFormat fmt1 = NumberFormat.getInstance(loc1);
+        NumberFormat fmt2 = NumberFormat.getInstance(loc2);
+        NumberFormat fmt3 = NumberFormat.getInstance(loc3);
+        NumberFormat fmt4 = NumberFormat.getInstance(loc4);
+
+        expect2(fmt1,1234.567,"\u0e51,\u0e52\u0e53\u0e54.\u0e55\u0e56\u0e57");
+        expect3(fmt2,5678.0,"\u05d4\u05f3\u05ea\u05e8\u05e2\u05f4\u05d7");
+        expect2(fmt3,1234.567,"\u06f1,\u06f2\u06f3\u06f4.\u06f5\u06f6\u06f7");
+        expect2(fmt4,1234.567,"\u0967,\u0968\u0969\u096a.\u096b\u096c\u096d");
+
+    }
+
+    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
+    public void expect3(NumberFormat fmt, Number n, String exp) {
+        // Don't round-trip format test, since we explicitly do it
+        expect_rbnf(fmt, n, exp, false);
+        expect_rbnf(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 expect3(NumberFormat fmt, double n, String exp) {
+        expect3(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-Parse test (convenience)
+    public void expect3(NumberFormat fmt, long n, String exp) {
+        expect3(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
+    public void expect_rbnf(NumberFormat fmt, Number n, String exp, boolean rt) {
+        StringBuffer saw = new StringBuffer();
+        FieldPosition pos = new FieldPosition(0);
+        fmt.format(n, saw, pos);
+        if (saw.toString().equals(exp)) {
+            logln("Ok   " + n + " = \"" +
+                  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 + " = \"" +
+                  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
+    public void expect_rbnf(NumberFormat fmt, String str, Number n) {
+        Number num = null;
+        try {
+            num = (Number) fmt.parse(str);
+        } catch (ParseException e) {
+            errln(e.getMessage());
+            return;
+        }
+        // A little tricky here -- make sure Double(12345.0) and
+        // Long(12345) match.
+        if (num.equals(n) || num.doubleValue() == n.doubleValue()) {
+            logln("Ok   \"" + str + " = " +
+                  num);
+        } else {
+            errln("FAIL \"" + str + " = " +
+                  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..fe5a175
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberRegression.java
@@ -0,0 +1,1861 @@
+//##header
+/*****************************************************************************************
+ *
+ * Copyright (C) 1996-2009, 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..3b739e9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
@@ -0,0 +1,157 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-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.util.ULocale;
+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!");
+    }
+      }
+    }
+  }
+  
+  private void parseFormat(RuleBasedNumberFormat rbnf, String s, String target) {
+      try {
+          Number n = rbnf.parse(s);
+          String t = rbnf.format(n);
+          assertEquals(rbnf.getLocale(ULocale.ACTUAL_LOCALE) + ": " + s + " : " + n, target, t);
+      } catch (java.text.ParseException e){
+          fail("exception:" + e);
+      }
+  }
+  
+  private void parseList(RuleBasedNumberFormat rbnf_en, RuleBasedNumberFormat rbnf_fr, String[][] lists) {
+      for (int i = 0; i < lists.length; ++i) {
+          String[] list = lists[i];
+          String s = list[0];
+          String target_en = list[1];
+          String target_fr = list[2];
+          
+          parseFormat(rbnf_en, s, target_en);
+          parseFormat(rbnf_fr, s, target_fr);
+      }
+  }
+
+  public void TestLenientParse() throws Exception {
+      RuleBasedNumberFormat rbnf_en, rbnf_fr;
+
+      rbnf_en = new RuleBasedNumberFormat(Locale.ENGLISH, RuleBasedNumberFormat.SPELLOUT);
+      rbnf_en.setLenientParseMode(true);
+      rbnf_fr = new RuleBasedNumberFormat(Locale.FRENCH, RuleBasedNumberFormat.SPELLOUT);
+      rbnf_fr.setLenientParseMode(true);
+
+      Number n = rbnf_en.parse("1,2 million");
+      logln(n.toString());
+      
+      String[][] lists = {
+          { "1,2", "twelve", "un virgule deux" },
+          { "1,2 million", "twelve million", "un virgule deux" },
+          { "1,2 millions", "twelve million", "un million deux cents mille" },
+          { "1.2", "one point two", "douze" },
+          { "1.2 million", "one million two hundred thousand", "douze" },
+          { "1.2 millions", "one million two hundred thousand", "douze millions" },
+      };
+
+      Locale.setDefault(Locale.FRANCE);
+      logln("Default locale:" + Locale.getDefault());
+      logln("rbnf_en:" + rbnf_en.getDefaultRuleSetName());
+      logln("rbnf_fr:" + rbnf_en.getDefaultRuleSetName());
+      parseList(rbnf_en, rbnf_fr, lists);
+      
+      Locale.setDefault(Locale.US);
+      logln("Default locale:" + Locale.getDefault());
+      logln("rbnf_en:" + rbnf_en.getDefaultRuleSetName());
+      logln("rbnf_fr:" + rbnf_en.getDefaultRuleSetName());
+      parseList(rbnf_en, rbnf_fr, lists);
+  }
+}
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..aa8c5da
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java
@@ -0,0 +1,219 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Greek spellout rules
+     */
+    public void TestHebrewNumberingRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("he", "IL",
+                        ""), RuleBasedNumberFormat.NUMBERING_SYSTEM);
+
+        formatter.setDefaultRuleSet("%hebrew");
+        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..a4d5588
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/RbnfTest.java
@@ -0,0 +1,1053 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 six" },
+            { "127", "one hundred twenty-seven" },
+            { "200", "two hundred" },
+            { "579", "five hundred seventy-nine" },
+            { "1,000", "one thousand" },
+            { "2,000", "two thousand" },
+            { "3,004", "three thousand four" },
+            { "4,567", "four thousand five hundred sixty-seven" },
+            { "15,943", "fifteen thousand nine hundred forty-three" },
+            { "2,345,678", "two million three hundred forty-five "
+              + "thousand six hundred seventy-eight" },
+            { "-36", "minus thirty-six" },
+            { "234.567", "two hundred 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 millones trescientos cuarenta y cinco mil "
+              + "seiscientos setenta y ocho"},
+            { "-36", "menos treinta y seis" },
+            { "234.567", "doscientos treinta y cuatro coma 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 cent soixante-dix-neuf" },
+            { "1,000", "mille" },
+            { "1,123", "mille cent vingt-trois" },
+            { "1,594", "mille cinq cent quatre-vingt-quatorze" },
+            { "2,000", "deux mille" },
+            { "3,004", "trois mille quatre" },
+            { "4,567", "quatre mille cinq cent soixante-sept" },
+            { "15,943", "quinze mille neuf cent quarante-trois" },
+            { "2,345,678", "deux millions trois cent quarante-cinq mille "
+              + "six cent soixante-dix-huit" },
+            { "-36", "moins trente-six" },
+            { "234.567", "deux cent trente-quatre virgule cinq six sept" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "trente-et-un", "31" },
+            { "un cent 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 cent septante-neuf" },
+            { "1,000", "mille" },
+            { "1,123", "mille cent vingt-trois" },
+            { "1,594", "mille cinq cent nonante-quatre" },
+            { "2,000", "deux mille" },
+            { "3,004", "trois mille quatre" },
+            { "4,567", "quatre mille cinq cent soixante-sept" },
+            { "15,943", "quinze mille neuf cent quarante-trois" },
+            { "2,345,678", "deux millions trois cent quarante-cinq mille "
+              + "six cent septante-huit" },
+            { "-36", "moins trente-six" },
+            { "234.567", "deux cent 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", "etthundraett" },
+            { "123", "etthundratjugotre" },
+            { "1,001", "ettusenett" },
+            { "1,100", "ettusenetthundra" },
+            { "1,101", "ettusenetthundraett" },
+            { "1,234", "ettusentv\u00e5hundratrettiofyra" },
+            { "10,001", "tiotusenett" },
+            { "11,000", "elvatusen" },
+            { "12,000", "tolvtusen" },
+            { "20,000", "tjugotusen" },
+            { "21,000", "tjugoetttusen" },
+            { "21,001", "tjugoetttusenett" },
+            { "200,000", "tv\u00e5hundratusen" },
+            { "201,000", "tv\u00e5hundraetttusen" },
+            { "200,200", "tv\u00e5hundratusentv\u00e5hundra" },
+            { "2,002,000", "tv\u00e5 miljoner tv\u00e5tusen" },
+            { "12,345,678", "tolv miljoner trehundrafyrtiofemtusensexhundrasjuttio\u00e5tta" },
+            { "123,456.789", "etthundratjugotretusenfyrahundrafemtiosex komma sju \u00e5tta nio" },
+            { "-12,345.678", "minus tolvtusentrehundrafyrtiofem komma sex sju \u00e5tta" }
+        };
+
+        logln("testing default rules");
+        doTest(formatter, testDataDefault, true);
+
+//      Neutrum rules not supported in CLDR
+//      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", "etthundraett" },
+            { "900", "niohundra" },
+            { "1,001", "tusenett" },
+            { "1,100", "elvahundra" },
+            { "1,101", "elvahundraett" },
+            { "1,234", "tolvhundratrettiofyra" },
+            { "2,001", "tjugohundraett" },
+            { "10,001", "tiotusenett" }
+        };
+
+        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 thirty-four million five hundred sixty-seven thousand eight hundred ninety point zero nine eight seven six five four" },
+        { "123,456,789.9876543", "one hundred twenty-three million four hundred fifty-six thousand seven hundred eighty-nine point nine eight seven six five four three" },
+        { "12,345,678.87654321", "twelve million three hundred forty-five thousand six hundred seventy-eight point eight seven six five four three two one" },
+        { "1,234,567.7654321", "one million two hundred thirty-four thousand five hundred sixty-seven point seven six five four three two one" },
+        { "123,456.654321", "one hundred twenty-three thousand four hundred fifty-six point six five four three two one" },
+        { "12,345.54321", "twelve thousand three hundred forty-five point five four three two one" },
+        { "1,234.4321", "one thousand two hundred thirty-four point four three two one" },
+        { "123.321", "one hundred 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..6386355
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/TestMessageFormat.java
@@ -0,0 +1,1472 @@
+//##header
+/*
+**********************************************************************
+* Copyright (c) 2004-2009, 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() + "'");
+      }
+    }
+  }
+
+    // Test case for null arguments.
+    // Ticket#6361
+    public void TestNullArgs() {
+        MessageFormat msgfmt = new MessageFormat("{0} - {1}");
+        Object[][] TEST_CASES = {
+            {null,                          "{0} - {1}"},
+            {new Object[] {null},           "null - {1}"},
+            {new Object[] {null, null},     "null - null"},
+            {new Object[] {"one"},          "one - {1}"},
+            {new Object[] {"one", null},    "one - null"},
+            {new Object[] {null, "two"},    "null - two"},
+        };
+
+        for (int i = 0; i < TEST_CASES.length; i++) {
+            String text = msgfmt.format(TEST_CASES[i][0]);
+            if (!text.equals(TEST_CASES[i][1])) {
+                errln("FAIL: Returned[" + text + "] Expected[" + TEST_CASES[i][1] + "]");
+            }
+        }
+    }
+
+//#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..2214ad5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
@@ -0,0 +1,342 @@
+/*
+ ********************************************************************************
+ * Copyright (C) 2007-2009, 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);
+
+                        if (PATTERNS[patidx].equals("VVVV")) {
+                            // Location: time zone rule must be preserved except
+                            // zones not actually associated with a specific location.
+                            // Time zones in this category do not have "/" in its ID.
+                            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)) {
+                                    if (canonicalID.indexOf('/') == -1) {
+                                        logln("Canonical round trip failed (as expected); tz=" + tzids[tzidx]
+                                            + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx]
+                                            + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr
+                                            + ", outtz=" + outtz.getID());
+                                    } else {
+                                        errln("Canonical round trip failed; tz=" + tzids[tzidx]
+                                            + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx]
+                                            + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr
+                                            + ", outtz=" + outtz.getID());
+                                    }
+                                }
+                            }
+                        } else {
+                            // 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 {
+                                // 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]);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+
+    /*
+     * 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..8c0bed7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
@@ -0,0 +1,706 @@
+//##header
+/*
+**********************************************************************
+* Copyright (c) 2002-2009, 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..d71245e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Asian.txt
@@ -0,0 +1,10008 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, 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..4945ad2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Chinese.txt
@@ -0,0 +1,10902 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, 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..1ae1d8a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese.txt
@@ -0,0 +1,22833 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, 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..3bf407b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_h.txt
@@ -0,0 +1,22749 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, 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..86502c9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_k.txt
@@ -0,0 +1,22749 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, 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..e5731c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Korean.txt
@@ -0,0 +1,49795 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, 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..2aa7549
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Latin.txt
@@ -0,0 +1,7611 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, 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-2008, 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-2008, Samuel
+Colman 1832-2008, 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-2008, 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-2008, 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-2008, Alfred
+Stevens 1823-2008, 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-2008, Adrian
+Stokes 1902-2008, 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-2008, 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..cb23570
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Russian.txt
@@ -0,0 +1,1310 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, 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..c63d8d3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Simplified_Chinese.txt
@@ -0,0 +1,10902 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, 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..e978215
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Thai.txt
@@ -0,0 +1,10843 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, 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..9c41986
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/security.policy
@@ -0,0 +1,50 @@
+//#
+//#*******************************************************************************
+//#* Copyright (C) 1997-2009, 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";
+
+    // IBM 1.6 on Windows does not allow to use reflection to access
+    // getDSTSavings in TimeZone implementation class in sun.util.clanedar.
+    permission java.lang.RuntimePermission "accessClassInPackage.sun.util.calendar";
+};
+
+// 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";
+};
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..1371852
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
@@ -0,0 +1,278 @@
+/*
+ *******************************************************************************
+ * 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"},
+        {"ICU_3.6",     "com.ibm.icu.text.RuleBasedNumberFormat.dat"},
+        {"ICU_3.8.1",     "com.ibm.icu.text.RuleBasedNumberFormat.dat"},
+        {"ICU_4.0",     "com.ibm.icu.text.RuleBasedNumberFormat.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..f575026
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/CoverageTest.java
@@ -0,0 +1,211 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2009, 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
+
+            // TODO: Is the above statement really true?
+            // We probably need to set up the security policy properly
+            // for writing/reading serialized data.
+
+            return 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..125b4bf
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/FormatTests.java
@@ -0,0 +1,2163 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.CurrencyPluralInfo;
+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 CurrencyPluralInfoHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            CurrencyPluralInfo currencyPluralInfo[] = {
+                new CurrencyPluralInfo()
+            };
+            currencyPluralInfo[0].setPluralRules("one: n is 1; few: n in 2..4");
+            currencyPluralInfo[0].setCurrencyPluralPattern("few", "few currency");
+            return currencyPluralInfo;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return a.equals(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..1fd2b32
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/SerializableTest.java
@@ -0,0 +1,723 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.CurrencyPluralInfo", new FormatTests.CurrencyPluralInfoHandler());
+        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..a810631
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java
@@ -0,0 +1,906 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import java.util.Random;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.IDNA;
+import com.ibm.icu.text.StringPrep;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.UCharacterIterator;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * @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{
+        StringPrep namePrep = StringPrep.getInstance(StringPrep.RFC3491_NAMEPREP);
+        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..a715d0d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
@@ -0,0 +1,421 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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..9049e50
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java
@@ -0,0 +1,850 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, 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);
+        }
+
+        // We no longer use ICU TimeZone implementation for Java
+        // default TimeZone.  Java 1.3 or older version do not
+        // support historic transitions, therefore, the test below
+        // will fail on such environment (with the latest TimeZone
+        // patch for US 2007+ rule).
+        String javaver = System.getProperty("java.version", "1.3");
+        if (!javaver.startsWith("1.3"))
+        {
+            // 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);
+        }
+
+        //  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..ab10b0f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
@@ -0,0 +1,1154 @@
+//##header
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, 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..02a7f8e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java
@@ -0,0 +1,1656 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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);
+            }
+        }
+    }
+
+    public void TestT6669() {
+        // getNext/PreviousTransition implementation in SimpleTimeZone
+        // used to use a bad condition for detecting if DST is enabled or not.
+
+        SimpleTimeZone stz = new SimpleTimeZone(0, "CustomID",
+                Calendar.JANUARY, 1, Calendar.SUNDAY, 0,
+                Calendar.JULY, 1, Calendar.SUNDAY, 0);
+
+        long t = 1230681600000L; //2008-12-31T00:00:00
+        long expectedNext = 1231027200000L; //2009-01-04T00:00:00
+        long expectedPrev = 1215298800000L; //2008-07-06T00:00:00
+
+        TimeZoneTransition tzt = stz.getNextTransition(t, false);
+        if (tzt == null) {
+            errln("FAIL: No transition returned by getNextTransition.");
+        } else if (tzt.getTime() != expectedNext){
+            errln("FAIL: Wrong transition time returned by getNextTransition - "
+                    + tzt.getTime() + " Expected: " + expectedNext);
+        }
+
+        tzt = stz.getPreviousTransition(t, true);
+        if (tzt == null) {
+            errln("FAIL: No transition returned by getPreviousTransition.");
+        } else if (tzt.getTime() != expectedPrev){
+            errln("FAIL: Wrong transition time returned by getPreviousTransition - "
+                    + tzt.getTime() + " Expected: " + expectedPrev);
+        }
+    }
+
+    // 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..fad0c59
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
@@ -0,0 +1,1587 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, 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.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 {
+
+        // TODO: This test case is tzdata sensitive.
+        // We should actually put the data version in this test code
+        // at build time.  For now, we just hardcode the version string
+        // and display warning instead of error if non-reference tzdata
+        // version is used.
+        final String REFERENCE_DATA_VERSION = "2008i";
+
+        boolean isNonReferenceTzdataVersion = false;
+        String tzdataVer = TimeZone.getTZDataVersion();
+        if (!tzdataVer.equals(REFERENCE_DATA_VERSION)) {
+            // Note: We want to display a warning message here if
+            // REFERENCE_DATA_VERSION is out of date - so we
+            // do not forget to update the value before GA.
+            isNonReferenceTzdataVersion = true;
+            logln("Warning: Active tzdata version (" + tzdataVer +
+                    ") does not match the reference tzdata version ("
+                    + REFERENCE_DATA_VERSION + ") for this test case data.");
+        }
+
+        // Note: If the default TimeZone type is JDK, some time zones
+        // may differ from the test data below.  For example, "MST" on
+        // IBM JRE is an alias of "America/Denver" for supporting Java 1.1
+        // backward compatibility, while Olson tzdata (and ICU) treat it
+        // as -7hour fixed offset/no DST.
+        boolean isJDKTimeZone = (TimeZone.getDefaultTimeZoneType() == TimeZone.TIMEZONE_JDK);
+        if (isJDKTimeZone) {
+            logln("Warning: Using JDK TimeZone.  Some test cases may not return expected results.");
+        }
+
+        // Note: useDaylightTime returns true if DST is observed
+        // in the time zone in the current calendar year.  The test
+        // data is valid for the date after the reference year below.
+        // If system clock is before the year, some test cases may
+        // fail.
+        final int REFERENCE_YEAR = 2009;
+        GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone("Etc/GMT"));
+        cal.set(REFERENCE_YEAR, Calendar.JANUARY, 2); // day 2 in GMT
+
+        boolean isDateBeforeReferenceYear = System.currentTimeMillis() < cal.getTimeInMillis();
+        if (isDateBeforeReferenceYear) {
+            logln("Warning: Past time is set to the system clock.  Some test cases may not return expected results.");
+        }
+
+        ZoneDescriptor[] 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("GMT", 0, false),
+            new ZoneDescriptor("UTC", 0, false),
+            new ZoneDescriptor("ECT", 60, true),
+            new ZoneDescriptor("MET", 60, true),
+            new ZoneDescriptor("CAT", 120, false), // Africa/Harare
+            new ZoneDescriptor("ART", 120, true),
+            new ZoneDescriptor("EET", 120, true),
+            new ZoneDescriptor("EAT", 180, false),
+            new ZoneDescriptor("NET", 240, true),
+            new ZoneDescriptor("PLT", 300, false), // updated by tzdata 2008c - no DST after 2008
+            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, true), // Pacific/Auckland
+
+            new ZoneDescriptor("Etc/Unknown", 0, false),
+            new ZoneDescriptor("SystemV/AST4ADT", -240, true),
+            new ZoneDescriptor("SystemV/EST5EDT", -300, true),
+            new ZoneDescriptor("SystemV/CST6CDT", -360, true),
+            new ZoneDescriptor("SystemV/MST7MDT", -420, true),
+            new ZoneDescriptor("SystemV/PST8PDT", -480, true),
+            new ZoneDescriptor("SystemV/YST9YDT", -540, true),
+            new ZoneDescriptor("SystemV/AST4", -240, false),
+            new ZoneDescriptor("SystemV/EST5", -300, false),
+            new ZoneDescriptor("SystemV/CST6", -360, false),
+            new ZoneDescriptor("SystemV/MST7", -420, false),
+            new ZoneDescriptor("SystemV/PST8", -480, false),
+            new ZoneDescriptor("SystemV/YST9", -540, false),
+            new ZoneDescriptor("SystemV/HST10", -600, false),
+        };
+
+        for (int i=0; i<REFERENCE_LIST.length; ++i) {
+            ZoneDescriptor referenceZone = REFERENCE_LIST[i];
+            ZoneDescriptor currentZone = new ZoneDescriptor(TimeZone.getTimeZone(referenceZone.getID()));
+            if (referenceZone.equals(currentZone)) {
+                logln("ok " + referenceZone);
+            }
+            else {
+                if (isNonReferenceTzdataVersion
+                        || isJDKTimeZone || isDateBeforeReferenceYear) {
+                    logln("Warning: Expected " + referenceZone +
+                            "; got " + currentZone);
+                } else {
+                    errln("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, 86399999);
+        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);
+    }
+
+    /*
+     * Test Display Names, choosing zones and lcoales where there are multiple
+     * meta-zones defined.
+     */
+    public void TestDisplayNamesMeta() {
+        final Integer TZSHORT = new Integer(TimeZone.SHORT);
+        final Integer TZLONG = new Integer(TimeZone.LONG);
+
+        final Object[][] zoneDisplayTestData = {
+            //  zone id             locale  summer          format      expected display name
+            {"Europe/London",       "en",   Boolean.FALSE,  TZSHORT,    "GMT"},
+            {"Europe/London",       "en",   Boolean.FALSE,  TZLONG,     "Greenwich Mean Time"},
+            {"Europe/London",       "en",   Boolean.TRUE,   TZSHORT,    "GMT+01:00" /*"BST"*/},
+            {"Europe/London",       "en",   Boolean.TRUE,   TZLONG,     "British Summer Time"},
+
+            {"America/Anchorage",   "en",   Boolean.FALSE,  TZSHORT,    "AKST"},
+            {"America/Anchorage",   "en",   Boolean.FALSE,  TZLONG,     "Alaska Standard Time"},
+            {"America/Anchorage",   "en",   Boolean.TRUE,   TZSHORT,    "AKDT"},
+            {"America/Anchorage",   "en",   Boolean.TRUE,   TZLONG,     "Alaska Daylight Time"},
+
+            // Southern Hemisphere, all data from meta:Australia_Western
+            {"Australia/Perth",     "en",   Boolean.FALSE,  TZSHORT,    "GMT+08:00"/*"AWST"*/},
+            {"Australia/Perth",     "en",   Boolean.FALSE,  TZLONG,     "Australian Western Standard Time"},
+            {"Australia/Perth",     "en",   Boolean.TRUE,   TZSHORT,    "GMT+09:00"/*"AWDT"*/},
+            {"Australia/Perth",     "en",   Boolean.TRUE,   TZLONG,     "Australian Western Daylight Time"},
+
+            {"America/Sao_Paulo",   "en",   Boolean.FALSE,  TZSHORT,    "GMT-03:00"/*"BRT"*/},
+            {"America/Sao_Paulo",   "en",   Boolean.FALSE,  TZLONG,     "Brasilia Time"},
+            {"America/Sao_Paulo",   "en",   Boolean.TRUE,   TZSHORT,    "GMT-02:00"/*"BRST"*/},
+            {"America/Sao_Paulo",   "en",   Boolean.TRUE,   TZLONG,     "Brasilia Summer Time"},
+
+            // No Summer Time, but had it before 1983.
+            {"Pacific/Honolulu",    "en",   Boolean.FALSE,  TZSHORT,    "HST"},
+            {"Pacific/Honolulu",    "en",   Boolean.FALSE,  TZLONG,     "Hawaii-Aleutian Standard Time"},
+            {"Pacific/Honolulu",    "en",   Boolean.TRUE,   TZSHORT,    "HST"},
+            {"Pacific/Honolulu",    "en",   Boolean.TRUE,   TZLONG,     "Hawaii-Aleutian Standard Time"},
+
+            // Northern, has Summer, not commonly used.
+            {"Europe/Helsinki",     "en",   Boolean.FALSE,  TZSHORT,    "GMT+02:00"/*"EET"*/},
+            {"Europe/Helsinki",     "en",   Boolean.FALSE,  TZLONG,     "Eastern European Time"},
+            {"Europe/Helsinki",     "en",   Boolean.TRUE,   TZSHORT,    "GMT+03:00"/*"EEST"*/},
+            {"Europe/Helsinki",     "en",   Boolean.TRUE,   TZLONG,     "Eastern European Summer Time"},
+
+            // Repeating the test data for DST.  The test data below trigger the problem reported
+            // by Ticket#6644
+            {"Europe/London",       "en",   Boolean.TRUE,   TZSHORT,    "GMT+01:00" /*"BST"*/},
+            {"Europe/London",       "en",   Boolean.TRUE,   TZLONG,     "British Summer Time"},
+        };
+
+        boolean sawAnError = false;
+        for (int testNum = 0; testNum < zoneDisplayTestData.length; testNum++) {
+            ULocale locale = new ULocale((String)zoneDisplayTestData[testNum][1]);
+            TimeZone zone = TimeZone.getTimeZone((String)zoneDisplayTestData[testNum][0]);
+            String displayName = zone.getDisplayName(((Boolean)zoneDisplayTestData[testNum][2]).booleanValue(),
+                    ((Integer)zoneDisplayTestData[testNum][3]).intValue());
+            if (!displayName.equals(zoneDisplayTestData[testNum][4])) {
+                sawAnError = true;
+                errln("Incorrect time zone display name.  zone = "
+                        + zoneDisplayTestData[testNum][0] + ",\n"
+                        + "   locale = " + locale
+                        + ",   style = " + (zoneDisplayTestData[testNum][3] == TZSHORT ? "SHORT" : "LONG")
+                        + ",   Summertime = " + zoneDisplayTestData[testNum][2] + "\n"
+                        + "   Expected " + zoneDisplayTestData[testNum][4]
+                        + ",   Got " + displayName);
+            }
+        }
+        if (sawAnError) {
+            errln("Note: Errors could be the result of changes to zoneStrings locale data");
+        }
+    }
+}
+
+//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..7329908
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/RoundTripTest.java
@@ -0,0 +1,1588 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, 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,2,0)) {
+            // 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,2,0)) {
+            // 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,2,0)){
+            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,2,0)) {
+            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,2,0)) {
+            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..0364086
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
@@ -0,0 +1,74 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..1eabc50
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/BNF.java
@@ -0,0 +1,333 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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..8660524
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/BagFormatter.java
@@ -0,0 +1,1152 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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..f58f5e3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CollectionUtilities.java
@@ -0,0 +1,498 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..473028d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CurrencyTest.java
@@ -0,0 +1,487 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2009, 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 java.util.Date;
+import java.util.HashSet;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @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);
+        }
+    }
+    
+    public void TestGetKeywordValues(){
+
+        final String[][] PREFERRED = {
+            {"root",            "USD"},
+            {"und",             "USD"},
+            {"und_ZZ",          "USD"},
+            {"en_US",           "USD"},
+            {"en_029",          "USD"},
+            {"en_TH",           "THB"},
+            {"de",              "EUR"},
+            {"de_DE",           "EUR"},
+            {"ar",              "EGP"},
+            {"ar_PS",           "JOD", "ILS"},
+            {"en@currency=CAD",     "USD"},
+            {"fr@currency=ZZZ",     "EUR"},
+            {"de_DE@currency=DEM",  "EUR"},
+        };
+
+        String[] ALL = Currency.getKeywordValuesForLocale("currency", ULocale.getDefault(), false);
+        HashSet ALLSET = new HashSet();
+        for (int i = 0; i < ALL.length; i++) {
+            ALLSET.add(ALL[i]);
+        }
+
+        for (int i = 0; i < PREFERRED.length; i++) {
+            ULocale loc = new ULocale(PREFERRED[i][0]);
+            String[] expected = new String[PREFERRED[i].length - 1];
+            System.arraycopy(PREFERRED[i], 1, expected, 0, expected.length);
+
+            String[] pref = Currency.getKeywordValuesForLocale("currency", loc, true);
+            boolean matchPref = false;
+            if (pref.length == expected.length) {
+                matchPref = true;
+                for (int j = 0; j < pref.length; j++) {
+                    if (!pref[j].equals(expected[j])) {
+                        matchPref = false;
+                    }
+                }
+            }
+            if (!matchPref) {
+                errln("FAIL: Preferred values for locale " + loc 
+                        + " got:" + Utility.arrayToString(pref) + " expected:" + Utility.arrayToString(expected));
+            }
+
+            String[] all = Currency.getKeywordValuesForLocale("currency", loc, false);
+            boolean matchAll = false;
+            if (all.length == ALLSET.size()) {
+                matchAll = true;
+                for (int j = 0; j < all.length; j++) {
+                    if (!ALLSET.contains(all[j])) {
+                        matchAll = false;
+                        break;
+                    }
+                }
+            }
+            if (!matchAll) {
+                errln("FAIL: All values for locale " + loc
+                        + " got:" + Utility.arrayToString(all)); 
+            }
+        }
+    }
+}
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..88c8b80
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DataInputCompressor.java
@@ -0,0 +1,236 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..0d29a94
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DataOutputCompressor.java
@@ -0,0 +1,215 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..00e86aa
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
@@ -0,0 +1,138 @@
+/** Copyright (C) 2009, 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.3";
+    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..3588d31
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/FileUtilities.java
@@ -0,0 +1,82 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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..2924a14
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUPropertyFactory.java
@@ -0,0 +1,418 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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..133f1db
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
@@ -0,0 +1,1111 @@
+//##header
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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..d9781a3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestBNF.java
@@ -0,0 +1,246 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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..ed7e500
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestBagFormatter.java
@@ -0,0 +1,247 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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..34ad70b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestUtilities.java
@@ -0,0 +1,469 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..07ef57e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Tokenizer.java
@@ -0,0 +1,323 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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..6bfa8de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TransliteratorUtilities.java
@@ -0,0 +1,153 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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..249db95
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ULocaleTest.java
@@ -0,0 +1,3732 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2009, 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;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.VersionInfo;
+
+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 ujaJP_calJP = new ULocale("ja_JP@calendar=japanese");
+        ULocale.setDefault(ujaJP_calJP);
+        if (!Locale.getDefault().equals(jaJPJP)) {
+            errln("FAIL: ULocale#setDefault failed to set Java Locale ja_JP_JP /actual: " + Locale.getDefault());
+        }
+        // Ticket#6672 - missing keywords
+        defUloc = ULocale.getDefault();
+        if (!defUloc.equals(ujaJP_calJP)) {
+            errln("FAIL: ULocale#getDefault returned " + defUloc + " /expected: ja_JP@calendar=japanese");
+        }
+        // Set a incompatible base locale via Locale#setDefault
+        Locale.setDefault(Locale.US);
+        defUloc = ULocale.getDefault();
+        if (defUloc.equals(ujaJP_calJP)) {
+            errln("FAIL: ULocale#getDefault returned " + defUloc + " /expected: " + ULocale.forLocale(Locale.US));
+        }
+
+        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());
+                }
+            }
+        }
+    }
+    public void TestCLDRVersion() {
+        //VersionInfo zeroVersion = VersionInfo.getInstance(0, 0, 0, 0);
+        VersionInfo testExpect;
+        VersionInfo testCurrent;
+        VersionInfo cldrVersion;
+ 
+        cldrVersion = ULocale.getCLDRVersion();
+        
+        this.logln("uloc_getCLDRVersion() returned: '"+cldrVersion+"'");
+        
+        // why isn't this public for tests somewhere?
+        final ClassLoader testLoader = ICUResourceBundleTest.class.getClassLoader();
+        UResourceBundle bundle = (UResourceBundle) UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", ULocale.ROOT, testLoader);
+        
+        testExpect = VersionInfo.getInstance(bundle.getString("ExpectCLDRVersionAtLeast"));
+        testCurrent = VersionInfo.getInstance(bundle.getString("CurrentCLDRVersion"));
+
+        
+        logln("(data) ExpectCLDRVersionAtLeast { "+testExpect+""); 
+        if(cldrVersion.compareTo(testExpect)<0) {
+            errln("CLDR version is too old, expect at least "+testExpect+".");
+        }
+
+        int r = cldrVersion.compareTo(testCurrent);
+        if ( r < 0 ) {
+            logln("CLDR version is behind 'current' (for testdata/root.txt) "+testCurrent+". Some things may fail.\n");
+        } else if ( r > 0) {
+            logln("CLDR version is ahead of 'current' (for testdata/root.txt) "+testCurrent+". Some things may fail.\n");
+        } else {
+            // CLDR version is OK.
+        }
+  }
+}
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..e1489dc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UnicodeMap.java
@@ -0,0 +1,897 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..c28028b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UnicodeProperty.java
@@ -0,0 +1,1240 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..1dacb3d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UtilityTest.java
@@ -0,0 +1,233 @@
+//##header
+/*
+**********************************************************************
+* Copyright (c) 2003-2009, 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..ee50d03
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/CodeMangler.java
@@ -0,0 +1,783 @@
+/**
+*******************************************************************************
+* Copyright (C) 2004-2009, 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 boolean nonames;   // true if no names in header
+    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" +
+        "-n                     - do not put NAME/VALUE in header\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 if (arg.startsWith("-n")) {
+                        nonames = 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();
+        if (!nonames) {
+            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;
+                        if (header.length() > 0) {
+                            headerline += " ";
+                            headerline += header;
+                        }
+                        if (timestamp) {
+                            headerline += " ";
+                            headerline += String.valueOf(expectLastModified);
+                        }
+                        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;
+                    if (header.length() > 0) {
+                        headerline += " ";
+                        headerline += header;
+                    }
+                    if (timestamp) {
+                        headerline += " ";
+                        headerline += String.valueOf(outModTime);
+                    }
+                    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..7ce5017
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java
@@ -0,0 +1,292 @@
+//##header
+/**
+*******************************************************************************
+* Copyright (C) 2002-2009, 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/docs/icu4j401.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j401.api.gz
new file mode 100644
index 0000000..2d95d0b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j401.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:40282552376903450b4a1f3865a226c26648928507c1fbc602febcebf200de1d
+size 31556
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..72d2f5a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java
@@ -0,0 +1,304 @@
+/*
+ *******************************************************************************
+ * 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;
+        boolean newScripts = false;
+        
+        if(totalScript>previousTotalScripts){
+            newScripts = true;
+        }
+        //Processing old scripts
+        MessageFormat format = new MessageFormat(scriptPreamble); 
+        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++;
+        }
+        
+        if(newScripts){//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 <= totalScript; 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;
+        boolean newLanguage = false;
+        
+        if(totalLanguage>previousTotalLanguages){
+            newLanguage = true;
+        }
+        //Processing old languages
+        MessageFormat format = new MessageFormat(languagePreamble); 
+        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++;
+        }
+        if(newLanguage){
+            //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 <= totalLanguage; 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..6f0eb2f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzu.bat
@@ -0,0 +1,68 @@
+@echo off
+rem *******************************************************************************
+rem * Copyright (C) 2007-2008 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..1172e86
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzu.cmd
@@ -0,0 +1,68 @@
+@echo off
+rem *******************************************************************************
+rem * Copyright (C) 2007-2008 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..483b40d
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzu.sh
@@ -0,0 +1,73 @@
+#!/bin/sh
+
+# Copyright (c) 2007-2008 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..f3ae1e6
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.bat
@@ -0,0 +1,28 @@
+@echo off
+rem *******************************************************************************
+rem * Copyright (C) 2007-2008 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..f3ae1e6
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.cmd
@@ -0,0 +1,28 @@
+@echo off
+rem *******************************************************************************
+rem * Copyright (C) 2007-2008 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..e7ed562
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.sh
@@ -0,0 +1,24 @@
+# *******************************************************************************
+# * Copyright (C) 2007-2008 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..39f3dda
--- /dev/null
+++ b/src/com/ibm/icu/impl/ByteBuffer.java
@@ -0,0 +1,72 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(ECLIPSE_FRAGMENT)
+//##/*
+//## * *****************************************************************************
+//## * Copyright (C) 2006-2009, 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..d5af4e9
--- /dev/null
+++ b/src/com/ibm/icu/impl/CalendarData.java
@@ -0,0 +1,170 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.util.ArrayList;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+
+
+
+/**
+ * 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 String[] getDateTimePatterns(){
+        ICUResourceBundle bundle = get("DateTimePatterns");
+        ArrayList list = new ArrayList();
+        UResourceBundleIterator iter = bundle.getIterator();
+        while (iter.hasNext()) {
+            UResourceBundle patResource = iter.next();
+            int resourceType = patResource.getType();
+            switch (resourceType) {
+                case UResourceBundle.STRING:
+                    list.add(patResource.getString());
+                    break;
+                case UResourceBundle.ARRAY:
+                    String[] items = patResource.getStringArray();
+                    list.add(items[0]);
+                    break;
+            }
+        }
+
+        return (String[]) list.toArray(new String[list.size()]);
+    }
+
+    public String[] getOverrides(){
+        ICUResourceBundle bundle = get("DateTimePatterns");
+        ArrayList list = new ArrayList();
+        UResourceBundleIterator iter = bundle.getIterator();
+        while (iter.hasNext()) {
+            UResourceBundle patResource = iter.next();
+            int resourceType = patResource.getType();
+            switch (resourceType) {
+                case UResourceBundle.STRING:
+                    list.add(null);
+                    break;
+                case UResourceBundle.ARRAY:
+                    String[] items = patResource.getStringArray();
+                    list.add(items[1]);
+                    break;
+            }
+        }
+        return (String[]) list.toArray(new String[list.size()]);
+    }
+
+    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..f141a11
--- /dev/null
+++ b/src/com/ibm/icu/impl/DateNumberFormat.java
@@ -0,0 +1,213 @@
+//##header
+/*
+*******************************************************************************
+*   Copyright (C) 2007-2009, 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..00dd88c
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUResourceBundle.java
@@ -0,0 +1,1451 @@
+/*
+ * *****************************************************************************
+ * Copyright (C) 2005-2009, 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..6da1552
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUResourceBundleImpl.java
@@ -0,0 +1,331 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, 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..00a1a65
--- /dev/null
+++ b/src/com/ibm/icu/impl/JavaTimeZone.java
@@ -0,0 +1,219 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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..b0849bb
--- /dev/null
+++ b/src/com/ibm/icu/impl/OlsonTimeZone.java
@@ -0,0 +1,1013 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2005-2009, 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.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;
+        }
+        long current = System.currentTimeMillis();
+        if (current < finalMillis) {
+            int[] fields = Grego.timeToFields(current, null);
+            finalYear = fields[0] - 1; // finalYear is (year of finalMillis) - 1
+            finalMillis = Grego.fieldsToDay(fields[0], 0, 1);
+        }
+
+        if (finalZone == null) {
+            // Create SimpleTimeZone instance to store the offset
+            finalZone = new SimpleTimeZone(offsetMillis, getID());
+        } else {
+            finalZone.setRawOffset(offsetMillis);
+            finalZone.setStartYear(finalYear); // finalYear is (year of finalMillis) - 1
+        }
+
+        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/PVecToTrieCompactHandler.java b/src/com/ibm/icu/impl/PVecToTrieCompactHandler.java
new file mode 100644
index 0000000..3fb6049
--- /dev/null
+++ b/src/com/ibm/icu/impl/PVecToTrieCompactHandler.java
@@ -0,0 +1,40 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+/*
+ * @author Shaopeng Jia
+ */
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.impl.PropsVectors.CompactHandler;
+
+public class PVecToTrieCompactHandler implements CompactHandler {
+    public IntTrieBuilder builder;
+    public int initialValue;
+
+    public void setRowIndexForErrorValue(int rowIndex) {
+    }
+
+    public void setRowIndexForInitialValue(int rowIndex) {
+        initialValue = rowIndex;
+    }
+
+    public void setRowIndexForRange(int start, int end, int rowIndex) {
+        builder.setRange(start, end + 1, rowIndex, true);
+    }
+
+    public void startRealValues(int rowIndex) {
+        if (rowIndex > 0xffff) {
+            // too many rows for a 16-bit trie
+            throw new IndexOutOfBoundsException();
+        } else {
+            builder = new IntTrieBuilder(null, 100000, initialValue,
+                    initialValue, false);
+        } 
+    }
+}
diff --git a/src/com/ibm/icu/impl/PatternTokenizer.java b/src/com/ibm/icu/impl/PatternTokenizer.java
new file mode 100644
index 0000000..21c955c
--- /dev/null
+++ b/src/com/ibm/icu/impl/PatternTokenizer.java
@@ -0,0 +1,403 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2009, 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/PropsVectors.java b/src/com/ibm/icu/impl/PropsVectors.java
new file mode 100644
index 0000000..2c5dfa0
--- /dev/null
+++ b/src/com/ibm/icu/impl/PropsVectors.java
@@ -0,0 +1,559 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+/**
+ * Store bits (Unicode character properties) in bit set vectors.
+ * 
+ * This is a port of the C++ class UPropsVectors from ICU4C
+ * 
+ * @author Shaopeng Jia
+ * @internal
+ */
+
+package com.ibm.icu.impl;
+
+import java.util.Arrays;
+import java.util.Comparator;
+
+/**
+ * Unicode Properties Vectors associated with code point ranges.
+ * 
+ * Rows of primitive integers in a contiguous array store the range limits and
+ * the properties vectors.
+ * 
+ * In each row, row[0] contains the start code point and row[1] contains the
+ * limit code point, which is the start of the next range.
+ * 
+ * Initially, there is only one range [0..0x110000] with values 0.
+ * 
+ * It would be possible to store only one range boundary per row, but
+ * self-contained rows allow to later sort them by contents.
+ */
+public class PropsVectors {
+    private int v[];
+    private int columns; // number of columns, plus two for start
+    // and limit values
+    private int maxRows;
+    private int rows;
+    private int prevRow; // search optimization: remember last row seen
+    private boolean isCompacted;
+
+    // internal function to compare elements in v and target. Return true iff
+    // elements in v starting from index1 to index1 + length - 1 
+    // are exactly the same as elements in target
+    // starting from index2 to index2 + length - 1
+    private boolean areElementsSame(int index1, int[] target, int index2, 
+            int length) {
+        for (int i = 0; i < length; ++i) {
+            if (v[index1 + i] != target[index2 + i]) {
+                return false;
+            }
+        }
+        return true;
+    }
+    
+    // internal function which given rangeStart, returns
+    // index where v[index]<=rangeStart<v[index+1].
+    // The returned index is a multiple of columns, and therefore
+    // points to the start of a row.
+    private int findRow(int rangeStart) {
+        int index = 0;
+
+        // check the vicinity of the last-seen row (start
+        // searching with an unrolled loop)
+
+        index = prevRow * columns;
+        if (rangeStart >= v[index]) {
+            if (rangeStart < v[index + 1]) {
+                // same row as last seen
+                return index;
+            } else {
+                index += columns;
+                if (rangeStart < v[index + 1]) {
+                    ++prevRow;
+                    return index;
+                } else {
+                    index += columns;
+                    if (rangeStart < v[index + 1]) {
+                        prevRow += 2;
+                        return index;
+                    } else if ((rangeStart - v[index + 1]) < 10) {
+                        // we are close, continue looping
+                        prevRow += 2;
+                        do {
+                            ++prevRow;
+                            index += columns;
+                        } while (rangeStart >= v[index + 1]);
+                        return index;
+                    }
+                }
+            }
+        } else if (rangeStart < v[1]) {
+            // the very first row
+            prevRow = 0;
+            return 0;
+        }
+
+        // do a binary search for the start of the range
+        int start = 0;
+        int mid = 0;
+        int limit = rows;
+        while (start < limit - 1) {
+            mid = (start + limit) / 2;
+            index = columns * mid;
+            if (rangeStart < v[index]) {
+                limit = mid;
+            } else if (rangeStart < v[index + 1]) {
+                prevRow = mid;
+                return index;
+            } else {
+                start = mid;
+            }
+        }
+
+        // must be found because all ranges together always cover
+        // all of Unicode
+        prevRow = start;
+        index = start * columns;
+        return index;
+    }
+
+    /*
+     * Special pseudo code points for storing the initialValue and the
+     * errorValue which are used to initialize a Trie or similar.
+     */
+    public final static int FIRST_SPECIAL_CP = 0x110000;
+    public final static int INITIAL_VALUE_CP = 0x110000;
+    public final static int ERROR_VALUE_CP = 0x110001;
+    public final static int MAX_CP = 0x110001;
+
+    public final static int INITIAL_ROWS = 1 << 14;
+    public final static int MEDIUM_ROWS = 1 << 17;
+    public final static int MAX_ROWS = MAX_CP + 1;
+
+    /*
+     * Constructor.
+     * @param numOfColumns Number of value integers (32-bit int) per row.
+     */
+    public PropsVectors(int numOfColumns) {
+        if (numOfColumns < 1) {
+            throw new IllegalArgumentException("numOfColumns need to be no "
+                    + "less than 1; but it is " + numOfColumns);
+        }
+        columns = numOfColumns + 2; // count range start and limit columns
+        v = new int[INITIAL_ROWS * columns];
+        maxRows = INITIAL_ROWS;
+        rows = 2 + (MAX_CP - FIRST_SPECIAL_CP);
+        prevRow = 0;
+        isCompacted = false;
+        v[0] = 0;
+        v[1] = 0x110000;
+        int index = columns;
+        for (int cp = FIRST_SPECIAL_CP; cp <= MAX_CP; ++cp) {
+            v[index] = cp;
+            v[index + 1] = cp + 1;
+            index += columns;
+        }
+    }
+
+    /*
+     * In rows for code points [start..end], select the column, reset the mask
+     * bits and set the value bits (ANDed with the mask).
+     * 
+     * @throws IllegalArgumentException
+     * 
+     * @throws IllegalStateException
+     * 
+     * @throws IndexOutOfBoundsException
+     */
+    public void setValue(int start, int end, int column, int value, int mask) {
+        if (start < 0 || start > end || end > MAX_CP || column < 0
+                || column >= (columns - 2)) {
+            throw new IllegalArgumentException();
+        }
+        if (isCompacted) {
+            throw new IllegalStateException("Shouldn't be called after"
+                    + "compact()!");
+        }
+
+        int firstRow, lastRow;
+        int limit = end + 1;
+        boolean splitFirstRow, splitLastRow;
+        // skip range start and limit columns
+        column += 2;
+        value &= mask;
+
+        // find the rows whose ranges overlap with the input range
+        // find the first and last row, always successful
+        firstRow = findRow(start);
+        lastRow = findRow(end);
+
+        /*
+         * Rows need to be split if they partially overlap with the input range
+         * (only possible for the first and last rows) and if their value
+         * differs from the input value.
+         */
+        splitFirstRow = (start != v[firstRow] && value != (v[firstRow + column] & mask));
+        splitLastRow = (limit != v[lastRow + 1] && value != (v[lastRow + column] & mask));
+
+        // split first/last rows if necessary
+        if (splitFirstRow || splitLastRow) {
+            int rowsToExpand = 0;
+            if (splitFirstRow) {
+                ++rowsToExpand;
+            }
+            if (splitLastRow) {
+                ++rowsToExpand;
+            }
+            int newMaxRows = 0;
+            if ((rows + rowsToExpand) > maxRows) {
+                if (maxRows < MEDIUM_ROWS) {
+                    newMaxRows = MEDIUM_ROWS;
+                } else if (maxRows < MAX_ROWS) {
+                    newMaxRows = MAX_ROWS;
+                } else {
+                    throw new IndexOutOfBoundsException(
+                            "MAX_ROWS exceeded! Increase it to a higher value" +
+                            "in the implementation");
+                }
+                int[] temp = new int[newMaxRows * columns];
+                System.arraycopy(v, 0, temp, 0, rows * columns);
+                v = temp;
+                maxRows = newMaxRows;
+            }
+
+            // count the number of row cells to move after the last row,
+            // and move them
+            int count = (rows * columns) - (lastRow + columns);
+            if (count > 0) {
+                System.arraycopy(v, lastRow + columns, v, lastRow
+                        + (1 + rowsToExpand) * columns, count);
+            }
+            rows += rowsToExpand;
+
+            // split the first row, and move the firstRow pointer
+            // to the second part
+            if (splitFirstRow) {
+                // copy all affected rows up one and move the lastRow pointer
+                count = lastRow - firstRow + columns;
+                System.arraycopy(v, firstRow, v, firstRow + columns, count);
+                lastRow += columns;
+
+                // split the range and move the firstRow pointer
+                v[firstRow + 1] = v[firstRow + columns] = start;
+                firstRow += columns;
+            }
+
+            // split the last row
+            if (splitLastRow) {
+                // copy the last row data
+                System.arraycopy(v, lastRow, v, lastRow + columns, columns);
+
+                // split the range and move the firstRow pointer
+                v[lastRow + 1] = v[lastRow + columns] = limit;
+            }
+        }
+
+        // set the "row last seen" to the last row for the range
+        prevRow = lastRow / columns;
+
+        // set the input value in all remaining rows
+        firstRow += column;
+        lastRow += column;
+        mask = ~mask;
+        for (;;) {
+            v[firstRow] = (v[firstRow] & mask) | value;
+            if (firstRow == lastRow) {
+                break;
+            }
+            firstRow += columns;
+        }
+    }
+
+    /*
+     * Always returns 0 if called after compact().
+     */
+    public int getValue(int c, int column) {
+        if (isCompacted || c < 0 || c > MAX_CP || column < 0
+                || column >= (columns - 2)) {
+            return 0;
+        }
+        int index = findRow(c);
+        return v[index + 2 + column];
+    }
+
+    /*
+     * Returns an array which contains value elements
+     * in row rowIndex. 
+     *
+     * @throws IllegalStateException
+     * @throws IllegalArgumentException
+     */
+    public int[] getRow(int rowIndex) {
+        if (isCompacted) {
+            throw new IllegalStateException(
+                    "Illegal Invocation of the method after compact()");
+        }
+        if (rowIndex < 0 || rowIndex > rows) {
+            throw new IllegalArgumentException("rowIndex out of bound!");
+        }
+        int[] rowToReturn = new int[columns - 2];
+        System.arraycopy(v, rowIndex * columns + 2, rowToReturn, 0,
+                         columns - 2);
+        return rowToReturn;
+    }
+
+    /*
+     * Returns an int which is the start codepoint
+     * in row rowIndex.
+     * 
+     * @throws IllegalStateException
+     * 
+     * @throws IllegalArgumentException
+     */
+    public int getRowStart(int rowIndex) {
+        if (isCompacted) {
+            throw new IllegalStateException(
+                    "Illegal Invocation of the method after compact()");
+        }
+        if (rowIndex < 0 || rowIndex > rows) {
+            throw new IllegalArgumentException("rowIndex out of bound!");
+        }
+        return v[rowIndex * columns];
+    }
+
+    /*
+     * Returns an int which is the limit codepoint 
+     * minus 1 in row rowIndex.
+     * 
+     * @throws IllegalStateException
+     * 
+     * @throws IllegalArgumentException
+     */
+    public int getRowEnd(int rowIndex) {
+        if (isCompacted) {
+            throw new IllegalStateException(
+                    "Illegal Invocation of the method after compact()");
+        }
+        if (rowIndex < 0 || rowIndex > rows) {
+            throw new IllegalArgumentException("rowIndex out of bound!");
+        }
+        return v[rowIndex * columns + 1] - 1;
+    }
+    
+    /*
+     * Compact the vectors:
+     * - modify the memory
+     * - keep only unique vectors
+     * - store them contiguously from the beginning of the memory
+     * - for each (non-unique) row, call the respective function in 
+     *   CompactHandler
+     *
+     * The handler's rowIndex is the index of the row in the compacted
+     * memory block. Therefore, it starts at 0 increases in increments of the 
+     * columns value.
+     *
+     * In a first phase, only special values are delivered (each exactly once).
+     * Then CompactHandler::startRealValues() is called
+     * where rowIndex is the length of the compacted array.
+     * Then, in the second phase, the CompactHandler::setRowIndexForRange() is 
+     * called for each row of real values.
+     */
+    public void compact(CompactHandler compactor) {
+        if (isCompacted) {
+            return;
+        }
+
+        // Set the flag now: Sorting and compacting destroys the builder
+        // data structure.
+        isCompacted = true;
+        int valueColumns = columns - 2; // not counting start & limit
+
+        // sort the properties vectors to find unique vector values
+        Integer[] indexArray = new Integer[rows];
+        for (int i = 0; i < rows; ++i) {
+            indexArray[i] = new Integer(columns * i);
+        }
+
+        Arrays.sort(indexArray, new Comparator() {
+            public int compare(Object o1, Object o2) {
+                int indexOfRow1 = ((Integer) o1).intValue();
+                int indexOfRow2 = ((Integer) o2).intValue();
+                int count = columns; // includes start/limit columns
+
+                // start comparing after start/limit
+                // but wrap around to them
+                int index = 2;
+                do {
+                    if (v[indexOfRow1 + index] != v[indexOfRow2 + index]) {
+                        return v[indexOfRow1 + index] < v[indexOfRow2 + index] ? -1
+                                : 1;
+                    }
+                    if (++index == columns) {
+                        index = 0;
+                    }
+                } while (--count > 0);
+
+                return 0;
+            }
+        });
+
+        /*
+         * Find and set the special values. This has to do almost the same work
+         * as the compaction below, to find the indexes where the special-value
+         * rows will move.
+         */
+        int count = -valueColumns;
+        for (int i = 0; i < rows; ++i) {
+            int start = v[indexArray[i].intValue()];
+
+            // count a new values vector if it is different
+            // from the current one
+            if (count < 0 || !areElementsSame(indexArray[i].intValue() + 2, v,
+                    indexArray[i-1].intValue() + 2, valueColumns)) {
+                count += valueColumns;
+            }
+
+            if (start == INITIAL_VALUE_CP) {
+                compactor.setRowIndexForInitialValue(count);
+            } else if (start == ERROR_VALUE_CP) {
+                compactor.setRowIndexForErrorValue(count);
+            }
+        }
+
+        // count is at the beginning of the last vector,
+        // add valueColumns to include that last vector
+        count += valueColumns;
+
+        // Call the handler once more to signal the start of
+        // delivering real values.
+        compactor.startRealValues(count);
+
+        /*
+         * Move vector contents up to a contiguous array with only unique 
+         * vector values, and call the handler function for each vector.
+         * 
+         * This destroys the Properties Vector structure and replaces it 
+         * with an array of just vector values.
+         */
+        int[] temp = new int[count];
+        count = -valueColumns;
+        for (int i = 0; i < rows; ++i) {
+            int start = v[indexArray[i].intValue()];
+            int limit = v[indexArray[i].intValue() + 1];
+
+            // count a new values vector if it is different
+            // from the current one
+            if (count < 0 || !areElementsSame(indexArray[i].intValue() + 2, 
+                    temp, count, valueColumns)) {
+                count += valueColumns;
+                System.arraycopy(v, indexArray[i].intValue() + 2, temp, count,
+                        valueColumns);
+            }
+
+            if (start < FIRST_SPECIAL_CP) {
+                compactor.setRowIndexForRange(start, limit - 1, count);
+            }
+        }
+        v = temp;
+        
+        // count is at the beginning of the last vector,
+        // add one to include that last vector
+        rows = count / valueColumns + 1;
+    }
+
+    /*
+     * Get the vectors array after calling compact().
+     * 
+     * @throws IllegalStateException
+     */
+    public int[] getCompactedArray() {
+        if (!isCompacted) {
+            throw new IllegalStateException(
+                    "Illegal Invocation of the method before compact()");
+        }
+        return v;
+    }
+
+    /*
+     * Get the number of rows for the compacted array.
+     * 
+     * @throws IllegalStateException
+     */
+    public int getCompactedRows() {
+        if (!isCompacted) {
+            throw new IllegalStateException(
+                    "Illegal Invocation of the method before compact()");
+        }
+        return rows;
+    }
+
+    /*
+     * Get the number of columns for the compacted array.
+     * 
+     * @throws IllegalStateException
+     */
+    public int getCompactedColumns() {
+        if (!isCompacted) {
+            throw new IllegalStateException(
+                    "Illegal Invocation of the method before compact()");
+        }
+        return columns - 2;
+    }
+
+    /*
+     * Call compact(), create a IntTrie with indexes into the compacted
+     * vectors array.
+     */
+    public IntTrie compactToTrieWithRowIndexes() {
+        PVecToTrieCompactHandler compactor = new PVecToTrieCompactHandler();
+        compact(compactor);
+        return compactor.builder.serialize(new DefaultGetFoldedValue(
+                compactor.builder), new DefaultGetFoldingOffset());
+    }
+
+    // inner class implementation of Trie.DataManipulate
+    private static class DefaultGetFoldingOffset implements Trie.DataManipulate {
+        public int getFoldingOffset(int value) {
+            return value;
+        }
+    }
+
+    // inner class implementation of TrieBuilder.DataManipulate
+    private static class DefaultGetFoldedValue implements
+            TrieBuilder.DataManipulate {
+        private IntTrieBuilder builder;
+
+        public DefaultGetFoldedValue(IntTrieBuilder inBuilder) {
+            builder = inBuilder;
+        }
+
+        public int getFoldedValue(int start, int offset) {
+            int initialValue = builder.m_initialValue_; 
+            int limit = start + 0x400;
+            while (start < limit) {
+                boolean[] inBlockZero = new boolean[1];
+                int value = builder.getValue(start, inBlockZero);
+                if (inBlockZero[0]) {
+                    start += TrieBuilder.DATA_BLOCK_LENGTH;
+                } else if (value != initialValue) {
+                    return offset;
+                } else {
+                    ++start;
+                }
+            }
+            return 0;
+        }
+    }
+    
+    public static interface CompactHandler {
+        public void setRowIndexForRange(int start, int end, int rowIndex);
+        public void setRowIndexForInitialValue(int rowIndex);
+        public void setRowIndexForErrorValue(int rowIndex);
+        public void startRealValues(int rowIndex);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/RelativeDateFormat.java b/src/com/ibm/icu/impl/RelativeDateFormat.java
new file mode 100644
index 0000000..1f45df2
--- /dev/null
+++ b/src/com/ibm/icu/impl/RelativeDateFormat.java
@@ -0,0 +1,232 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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.getDateTimePatterns();
+            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..14af05e
--- /dev/null
+++ b/src/com/ibm/icu/impl/Utility.java
@@ -0,0 +1,1972 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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/1.4 compatibility
+   public static String replace(String src, String target, String replacement) {
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//##       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.replace(target, replacement);
+//#endif
+   }
+
+   // !!! 1.3 compatibility
+   public static String replaceAll(String src, String target, String replacement) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##       return replace(src, target, replacement);
+//#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);
+   }
+
+   // !!! 1.3/1.4 compatibility
+   // Arrays.toString(Object[])
+   public static String arrayToString(Object[] a) {
+       StringBuffer buf = new StringBuffer("[");
+       for (int i = 0; i < a.length; i++) {
+           if (i != 0) {
+               buf.append(", ");
+           }
+           if (a[i] == null) {
+               buf.append("null");
+           } else {
+               buf.append(a[i].toString());
+           }
+       }
+       buf.append("]");
+       return buf.toString();
+   }
+}
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..55f5a24
--- /dev/null
+++ b/src/com/ibm/icu/impl/ZoneStringFormat.java
@@ -0,0 +1,1001 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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 yoshito
+ *
+ */
+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 {
+                if (tzid.startsWith("Etc/")) {
+                    // "Etc/xxx" is not associated with a specific location, so localized
+                    // GMT format is always used as generic location format.
+                    zstrarray[ZSIDX_LOCATION] = null;
+                } else {
+                    // When a new time zone ID, which is actually associated with a specific
+                    // location, is added in tzdata, but the current CLDR data does not have
+                    // the information yet, ICU creates a generic location string based on 
+                    // the ID.  This implementation supports canonical time zone round trip
+                    // with format pattern "VVVV".  See #6602 for the details.
+                    String location = tzid;
+                    int slashIdx = location.lastIndexOf('/');
+                    if (slashIdx == -1) {
+                        // A time zone ID without slash in the tz database is not
+                        // associated with a specific location.  For instances,
+                        // MET, CET, EET and WET fall into this catetory.
+                        zstrarray[ZSIDX_LOCATION] = null;
+                    } else {
+                        location = tzid.substring(slashIdx + 1);
+                        zstrarray[ZSIDX_LOCATION] = regionFmt.format(new Object[] {location});
+                    }
+                }
+            }
+
+            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..122d28c
--- /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:10c254503993836a36a56b9aa7712cabb77a96727f12e54c4aa1829ee10f51c7
+size 6685379
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..f734574
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicDurationFormat.java
@@ -0,0 +1,187 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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..a40ae26
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java
@@ -0,0 +1,247 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2009, 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;
+      if (builder != null) {
+          builder = builder.withLocale(localeName);
+      }
+      if (formatter != null) {
+          formatter = formatter.withLocale(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;
+      if (builder != null) {
+          builder = builder.withTimeZone(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();
+      builder = getPeriodBuilder();
+
+      f = createFormatter();
+    }
+    return f;
+  }
+
+  /**
+   * Return the current period formatter.
+   *
+   * @return the current period formatter
+   */
+  public PeriodFormatter getPeriodFormatter() {
+    if (formatter == null) {
+      formatter = ps.newPeriodFormatterFactory()
+          .setLocale(localeName)
+          .getFormatter();
+    }
+    return formatter;
+  }
+
+  /**
+   * Return the current builder.
+   *
+   * @return the current builder
+   */
+  public PeriodBuilder getPeriodBuilder() {
+    if (builder == null) {
+      builder = ps.newPeriodBuilderFactory()
+          .setLocale(localeName)
+          .setTimeZone(timeZone)
+          .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..027aa8d
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java
@@ -0,0 +1,514 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2009, 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 allowMillis = 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 (allowMillis) {
+        return uset;
+      }
+      return (short)(uset & ~(1 << TimeUnit.MILLISECOND.ordinal));
+    }
+    
+    TimeUnit effectiveMinUnit() {
+        if (allowMillis || minUnit != TimeUnit.MILLISECOND) {
+            return minUnit;
+        }
+        // -1 to skip millisecond
+        for (int i = TimeUnit.units.length - 1; --i >= 0;) {
+            if (0 != (uset & (1 << i))) {
+                return TimeUnit.units[i];
+            }
+        }
+        return TimeUnit.SECOND; // default for pathological case
+    }
+    
+    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 allowMillis) {
+      if (this.allowMillis == allowMillis) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+      result.allowMillis = allowMillis;
+      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) {
+      if (maxLimit > 0) {
+          long maxUnitDuration = approximateDurationOf(maxUnit);
+          if (duration * 1000 > maxLimit * maxUnitDuration) {
+              return Period.moreThan(maxLimit/1000f, maxUnit).inPast(inPast);
+          }
+      }
+      
+      if (minLimit > 0) {
+          TimeUnit emu = effectiveMinUnit();
+          long emud = approximateDurationOf(emu);
+          long eml = (emu == minUnit) ? minLimit :
+              Math.max(1000, (approximateDurationOf(minUnit) * minLimit) / emud);
+          if (duration * 1000 < eml * emud) {
+              return Period.lessThan(eml/1000f, emu).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.allowMillis = allowMillis;
+        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 allow) {
+    settings = settings.setAllowMilliseconds(allow);
+    return this;
+  }
+
+  public PeriodBuilderFactory setLocale(String localeName) {
+    settings = settings.setLocale(localeName);
+    return this;
+  }
+  
+  public PeriodBuilderFactory setTimeZone(TimeZone timeZone) {
+      // ignore this
+      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.effectiveMinUnit()).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..5b022ff
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java
@@ -0,0 +1,131 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2009, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.TimeZone;
+
+/**
+ */
+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);
+
+  /**
+   * Sets 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 whether milliseconds are allowed.  This is only examined
+   * when milliseconds are an available field. The default is to allow 
+   * milliseconds to display normally.
+   * <p>
+   * This is intended to be used to set locale-specific behavior.  Typically clients will
+   * not call this API and instead call {@link #setLocale}.
+   *
+   * @param allow whether milliseconds should be allowed.
+   * @return a builder
+   */
+   PeriodBuilderFactory setAllowMilliseconds(boolean allow);
+   
+  /**
+   * 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);
+
+  /**
+   * Sets the time zone for the factory.  This can affect the timezone
+   * used for date computations.
+   * @param timeZone the timeZone
+   * @return a builder
+   */
+  PeriodBuilderFactory setTimeZone(TimeZone timeZone);
+ /**
+   * 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..ead7988
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/index.txt
@@ -0,0 +1,19 @@
+#******************************************************************************
+#* Copyright (C) 2007-2008 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..f78c305
--- /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-2008 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..63bc4f9
--- /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-2008 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..49b24f7
--- /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-2008 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..b1473e3
--- /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-2008 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..0809dd2
--- /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-2008 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..4018d0d
--- /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-2008 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..6222ef5
--- /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-2008 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..245a317
--- /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-2008 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..a309ce8
--- /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-2008 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..32de9a7
--- /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-2008 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..55dc352
--- /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-2008 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..f453651
--- /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-2008 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..b3f60ae
--- /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-2008 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..bb8eca8
--- /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-2008 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..8b84f23
--- /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-2008 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..e474dee
--- /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-2008 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..357709f
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacter.java
@@ -0,0 +1,6579 @@
+//##header
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, 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..d6d7562
--- /dev/null
+++ b/src/com/ibm/icu/math/BigDecimal.java
@@ -0,0 +1,4406 @@
+//##header
+/* 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-2009.  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..8b26ae2
--- /dev/null
+++ b/src/com/ibm/icu/text/Bidi.java
@@ -0,0 +1,4953 @@
+//##header
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2009, 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..6b69aec
--- /dev/null
+++ b/src/com/ibm/icu/text/ChineseDateFormat.java
@@ -0,0 +1,279 @@
+//##header
+/*********************************************************************
+ * Copyright (C) 2000-2009, 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) {
+       this(pattern, null, 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, String override, ULocale locale) {
+       super(pattern, new ChineseDateFormatSymbols(locale), 
+               new ChineseCalendar(TimeZone.getDefault(), locale), locale, true, override);
+    }
+
+// 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(numberFormat,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..e6ab76d
--- /dev/null
+++ b/src/com/ibm/icu/text/Collator.java
@@ -0,0 +1,1091 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.LinkedList;
+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.UResourceBundle;
+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);
+    }
+
+    /**
+     * Given a key and a locale, returns an array of string values in a preferred
+     * order that would make a difference. These are all and only those values where
+     * the open (creation) of the service with the locale formed from the input locale
+     * plus input keyword and that value has different behavior than creation with the
+     * input locale alone.
+     * @param key           one of the keys supported by this service.  For now, only
+     *                      "collation" is supported.
+     * @param locale        the locale
+     * @param commonlyUsed  if set to true it will return only commonly used values
+     *                      with the given locale in preferred order.  Otherwise,
+     *                      it will return all the available values for the locale.
+     * @return an array of string values for the given key and the locale.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String[] getKeywordValuesForLocale(String key, ULocale locale, boolean commonlyUsed) {
+        // Note: The parameter commonlyUsed is actually not used.
+        // The switch is in the method signature for consistency
+        // with other locale services.
+
+        // Read available collation values from collation bundles
+        String baseLoc = locale.getBaseName();
+        LinkedList values = new LinkedList();
+
+        UResourceBundle bundle = UResourceBundle.getBundleInstance(
+                ICUResourceBundle.ICU_BASE_NAME + "/coll", baseLoc);
+
+        String defcoll = null;
+        while (bundle != null) {
+            UResourceBundle collations = bundle.get("collations");
+            Enumeration collEnum = collations.getKeys();
+            while (collEnum.hasMoreElements()) {
+                String collkey = (String)collEnum.nextElement();
+                if (collkey.equals("default")) {
+                    if (defcoll == null) {
+                        // Keep the default
+                        defcoll = collations.getString("default");
+                    }
+                } else if (!values.contains(collkey)) {
+                    values.add(collkey);
+                }
+            }
+            bundle = ((ICUResourceBundle)bundle).getParent();
+        }
+        // Reordering
+        Iterator itr = values.iterator();
+        String[] result = new String[values.size()];
+        result[0] = defcoll;
+        int idx = 1;
+        while (itr.hasNext()) {
+            String collKey = (String)itr.next();
+            if (!collKey.equals(defcoll)) {
+                result[idx++] = collKey;
+            }
+        }
+        return result;
+    }
+    /**
+     * 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/CurrencyPluralInfo.java b/src/com/ibm/icu/text/CurrencyPluralInfo.java
new file mode 100644
index 0000000..d4b51ae
--- /dev/null
+++ b/src/com/ibm/icu/text/CurrencyPluralInfo.java
@@ -0,0 +1,331 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, 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.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+/**
+ * This class represents the information needed by 
+ * DecimalFormat to format currency plural, 
+ * such as "3.00 US dollars" or "1.00 US dollar". 
+ * DecimalFormat creates for itself an instance of
+ * CurrencyPluralInfo from its locale data.  
+ * If you need to change any of these symbols, you can get the
+ * CurrencyPluralInfo object from your 
+ * DecimalFormat and modify it.
+ *
+ * Following are the information needed for currency plural format and parse:
+ * locale information,
+ * plural rule of the locale,
+ * currency plural pattern of the locale.
+ *
+ * @draft ICU 4.2
+ * @provisional This API might change or be removed in a future release.
+ */
+
+public class CurrencyPluralInfo implements Cloneable, Serializable {
+    private static final long serialVersionUID = 1;
+
+    /**
+     * Create a CurrencyPluralInfo object for the default locale.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public CurrencyPluralInfo() {
+        initialize( ULocale.getDefault() );
+    }
+
+    /**
+     * Create a CurrencyPluralInfo object for the given locale.
+     * @param locale the locale
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public CurrencyPluralInfo( Locale locale ) {
+        initialize( ULocale.forLocale(locale) );
+    }
+
+    /**
+     * Create a CurrencyPluralInfo object for the given locale.
+     * @param locale the locale
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public CurrencyPluralInfo( ULocale locale ) {
+        initialize( locale );
+    }
+
+    /**
+     * Gets a CurrencyPluralInfo instance for the default locale.
+     * 
+     * @return A CurrencyPluralInfo instance.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static CurrencyPluralInfo getInstance() {
+        return new CurrencyPluralInfo();
+    }
+
+    /**
+     * Gets a CurrencyPluralInfo instance for the given locale.
+     * 
+     * @param locale the locale.
+     * @return A CurrencyPluralInfo instance.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static CurrencyPluralInfo getInstance(Locale locale) {
+        return new CurrencyPluralInfo(locale);
+    }
+
+    /**
+     * Gets a CurrencyPluralInfo instance for the given locale.
+     * 
+     * @param locale the locale.
+     * @return A CurrencyPluralInfo instance.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static CurrencyPluralInfo getInstance(ULocale locale) {
+        return new CurrencyPluralInfo(locale);
+    }
+
+    /**
+     * Gets plural rules of this locale, used for currency plural format
+     *
+     * @return plural rule
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralRules getPluralRules() {
+        return pluralRules;
+    }
+
+    /**
+     * Given a plural count, gets currency plural pattern of this locale, 
+     * used for currency plural format
+     *
+     * @param  pluralCount currency plural count
+     * @return a currency plural pattern based on plural count
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getCurrencyPluralPattern(String pluralCount) {
+        String currencyPluralPattern = 
+            (String)pluralCountToCurrencyUnitPattern.get(pluralCount);
+        if (currencyPluralPattern == null) {
+            // fall back to "other"
+            if (!pluralCount.equals("other")) {
+                currencyPluralPattern = 
+                    (String)pluralCountToCurrencyUnitPattern.get("other");
+            }
+            if (currencyPluralPattern == null) {
+                // no currencyUnitPatterns defined, 
+                // fallback to predefined defult.
+                // This should never happen when ICU resource files are
+                // available, since currencyUnitPattern of "other" is always
+                // defined in root.
+                currencyPluralPattern = defaultCurrencyPluralPattern;
+            }
+        }
+        return currencyPluralPattern;
+    }
+
+    /**
+     * Get locale 
+     *
+     * @return locale
+     *
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ULocale getLocale() {
+        return ulocale;
+    }
+
+    /**
+     * Set plural rules.
+     * The plural rule is set when CurrencyPluralInfo
+     * instance is created.
+     * You can call this method to reset plural rules only if you want
+     * to modify the default plural rule of the locale.
+     *
+     * @param ruleDescription new plural rule description
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setPluralRules(String ruleDescription) {
+        pluralRules = PluralRules.createRules(ruleDescription);
+    }
+
+    /**
+     * Set currency plural patterns.
+     * The currency plural pattern is set when CurrencyPluralInfo
+     * instance is created.
+     * You can call this method to reset currency plural patterns only if 
+     * you want to modify the default currency plural pattern of the locale.
+     *
+     * @param pluralCount the plural count for which the currency pattern will 
+     *                    be overridden.
+     * @param pattern     the new currency plural pattern
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setCurrencyPluralPattern(String pluralCount, String pattern) {
+        pluralCountToCurrencyUnitPattern.put(pluralCount, pattern);
+    }
+
+    /**
+     * Set locale
+     *
+     * @param loc the new locale to set
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setLocale(ULocale loc) {
+        ulocale = loc;
+        initialize(loc);
+    }
+
+    /**
+     * Standard override
+     *
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object clone() {
+        try {
+            CurrencyPluralInfo other = (CurrencyPluralInfo) super.clone();
+            // locale is immutable
+            other.ulocale = (ULocale)ulocale.clone();
+            // plural rule is immutable
+            //other.pluralRules = pluralRules;
+            // clone content
+            //other.pluralCountToCurrencyUnitPattern = pluralCountToCurrencyUnitPattern;
+            other.pluralCountToCurrencyUnitPattern = new HashMap();
+            Iterator iter = pluralCountToCurrencyUnitPattern.keySet().iterator();
+            while (iter.hasNext()) {
+                String pluralCount = (String)iter.next();
+                String currencyPattern = (String)pluralCountToCurrencyUnitPattern.get(pluralCount);
+                other.pluralCountToCurrencyUnitPattern.put(pluralCount, currencyPattern);
+            }
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException();
+        }
+    }
+
+    /**
+     * Override equals
+     *
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(Object a) {
+        if (a instanceof CurrencyPluralInfo) {
+            CurrencyPluralInfo other = (CurrencyPluralInfo)a;
+            return pluralRules.equals(other.pluralRules) && 
+                   pluralCountToCurrencyUnitPattern.equals(other.pluralCountToCurrencyUnitPattern);
+        }
+        return false;
+    }
+
+    /**
+     * Given a number, returns the keyword of the first rule that applies 
+     * to the number
+     */
+    String select(double number) {
+        return pluralRules.select(number);
+    }
+
+    /**
+     * Currency plural pattern iterator.
+     *
+     * @return a iterator on currency plural pattern key set.
+     */
+    Iterator pluralPatternIterator() {
+        return pluralCountToCurrencyUnitPattern.keySet().iterator();
+    }
+
+    private void initialize(ULocale uloc) {
+        ulocale = uloc;
+        pluralRules = PluralRules.forLocale(uloc);
+        setupCurrencyPluralPattern(uloc);
+    }
+
+   
+    private void setupCurrencyPluralPattern(ULocale uloc) {
+        pluralCountToCurrencyUnitPattern = new HashMap();
+        Set pluralCountSet = new HashSet();
+        ULocale parentLocale = uloc;
+        String numberStylePattern = NumberFormat.getPattern(uloc, NumberFormat.NUMBERSTYLE);
+        while (parentLocale != null) {
+            try {
+                ICUResourceBundle resource = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, parentLocale);
+                ICUResourceBundle currencyRes = resource.getWithFallback("CurrencyUnitPatterns");
+                int size = currencyRes.getSize();
+                for (int index = 0; index < size; ++index) {
+                    String pluralCount = currencyRes.get(index).getKey();
+                    if (pluralCountSet.contains(pluralCount)) {
+                        continue;
+                    }
+                    String pattern = currencyRes.get(index).getString();
+                    // replace {0} with numberStylePattern
+                    // and {1} with triple currency sign
+                    String patternWithNumber = Utility.replace(pattern, "{0}", numberStylePattern);
+                    String patternWithCurrencySign = Utility.replace(patternWithNumber, "{1}", tripleCurrencyStr);
+                    pluralCountToCurrencyUnitPattern.put(pluralCount, patternWithCurrencySign);
+                    pluralCountSet.add(pluralCount);
+                }
+            } catch (MissingResourceException e) {
+            }
+            parentLocale = parentLocale.getFallback();
+        } 
+    }
+
+
+
+    //-------------------- private data member ---------------------
+    //
+    // triple currency sign char array
+    private static final char[] tripleCurrencySign = {0xA4, 0xA4, 0xA4};
+    // triple currency sign string
+    private static final String tripleCurrencyStr = new String(tripleCurrencySign);
+
+    // default currency plural pattern char array
+    private static final char[] defaultCurrencyPluralPatternChar = {0, '.', '#', '#', ' ', 0xA4, 0xA4, 0xA4};
+    // default currency plural pattern string
+    private static final String defaultCurrencyPluralPattern = new String(defaultCurrencyPluralPatternChar);
+
+    // map from plural count to currency plural pattern, for example
+    // one (plural count) --> {0} {1} (currency plural pattern, 
+    // in which, {0} is the amount number, and {1} is the currency plural name.
+    private Map pluralCountToCurrencyUnitPattern = null;
+
+    /*
+     * The plural rule is used to format currency plural name,
+     * for example: "3.00 US Dollars".
+     * If there are 3 currency signs in the currency patttern,
+     * the 3 currency signs will be replaced by currency plural name.
+     */
+    private PluralRules pluralRules = null;
+
+    // locale
+    private ULocale ulocale = null;
+}
diff --git a/src/com/ibm/icu/text/DateFormat.java b/src/com/ibm/icu/text/DateFormat.java
new file mode 100644
index 0000000..6ce8bb8
--- /dev/null
+++ b/src/com/ibm/icu/text/DateFormat.java
@@ -0,0 +1,1858 @@
+//##header
+/*
+*   Copyright (C) 1996-2009, 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 locale 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
+     * occurrence 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 occurrence 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.  When the calendar type is different from
+     * the internal calendar held by this DateFormat instance, the date
+     * and the time zone will be inherited from the input calendar, but
+     * other calendar field values will be calculated by the internal calendar.
+     * @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
+     * occurrence 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 occurrence 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
+     * occurrence 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 occurrence 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.  When the calendar type is different
+     *              from the internal calendar held by this DateFormat
+     *              instance, calendar field values will be parsed based
+     *              on the internal calendar initialized with the time and
+     *              the time zone taken from this calendar, then the
+     *              parse result (time in milliseconds and time zone) will
+     *              be set back to this calendar.
+     *
+     * @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 minute.
+     * @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);
+    }
+
+    /**
+     * 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..7915931
--- /dev/null
+++ b/src/com/ibm/icu/text/DateIntervalFormat.java
@@ -0,0 +1,1625 @@
+/*
+*   Copyright (C) 2008-2009, 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();
+    
+    /*
+     * 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;
+
+        DateTimePatternGenerator generator = DateTimePatternGenerator.getInstance(locale);
+        final String bestPattern = generator.getBestPattern(skeleton);
+        fDateFormat = new SimpleDateFormat(bestPattern, locale);
+        fFromCalendar = (Calendar) fDateFormat.getCalendar().clone();
+        fToCalendar = (Calendar) fDateFormat.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) {
+        DateTimePatternGenerator dtpng = DateTimePatternGenerator.getInstance(locale);
+        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.getDateTimePatterns();
+            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;
+              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..9422730
--- /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);
+            // TODO: 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;
+            // TODO: 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;
+
+        // TODO: this is a 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..6fbec2c
--- /dev/null
+++ b/src/com/ibm/icu/text/DateTimePatternGenerator.java
@@ -0,0 +1,1811 @@
+//##header
+/*
+ ********************************************************************************
+ * Copyright (C) 2006-2009, 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.ICUCache;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.PatternTokenizer;
+import com.ibm.icu.impl.SimpleCache;
+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) {
+        String localeKey = uLocale.toString();
+        DateTimePatternGenerator result = (DateTimePatternGenerator)DTPNG_CACHE.get(localeKey);
+        if (result != null) {
+            return result;
+        }
+        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.getDateTimePatterns();
+        result.setDateTimeFormat(patterns[8]);
+        
+        // decimal point for seconds
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(uLocale);
+        result.setDecimal(String.valueOf(dfs.getDecimalSeparator()));
+        DTPNG_CACHE.put(localeKey, result);
+        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);
+
+    // Cache for DateTimePatternGenerator
+    private static ICUCache DTPNG_CACHE = new SimpleCache();
+    
+    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..1c731f6
--- /dev/null
+++ b/src/com/ibm/icu/text/DecimalFormat.java
@@ -0,0 +1,5804 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+//#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;
+import com.ibm.icu.math.MathContext;
+
+//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.00", "USD123.00", "123.00 US dollars").
+ * 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>
+ *
+ * <P>
+ * Another example use getInstance(style)
+ * <P>
+ * <pre>
+ * <strong>// Print out a number using the localized number, currency,
+ * // percent, scientific, integer, iso currency, and plural currency
+ * // format for each locale</strong>
+ * ULocale locale = new ULocale("en_US");
+ * double myNumber = 1234.56;
+ * for (int j=NumberFormat.NUMBERSTYLE; j<=NumberFormat.PLURALCURRENCYSTYLE; ++j) {
+ *     NumberFormat format = NumberFormat.getInstance(locale, j);
+ *     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 tripled, replaced by currency plural names, for example,
+ *         "US dollar" or "US dollars" for America.
+ *         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>For currency parsing, the formatter is able to parse every currency
+ * style formats no matter which style the formatter is constructed with.
+ * For example, a formatter instance gotten from 
+ * NumberFormat.getInstance(ULocale, NumberFormat.CURRENCYSTYLE) can parse
+ * formats such as "USD1.00" and "3.00 US dollars".
+ *
+ * <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));
+        applyPatternWithoutExpandAffix(pattern, false);
+        if (currencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT) {
+            currencyPluralInfo = new CurrencyPluralInfo(def);
+            // the exact pattern is not known until the plural count is known.
+            // so, no need to expand affix now.
+        } else {
+            expandAffixAdjustWidth(null);
+        }
+    }
+
+
+    /**
+     * 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));
+        applyPatternWithoutExpandAffix( pattern, false );
+        if (currencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT) {
+            currencyPluralInfo = new CurrencyPluralInfo(def);
+        } else {
+            expandAffixAdjustWidth(null);
+        }
+    }
+
+
+    /**
+     * 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) {
+        createFromPatternAndSymbols(pattern, symbols);
+    }
+
+    private void createFromPatternAndSymbols(String pattern, DecimalFormatSymbols inputSymbols) {
+        // Always applyPattern after the symbols are set
+        symbols = (DecimalFormatSymbols) inputSymbols.clone();
+        setCurrencyForSymbols();
+        applyPatternWithoutExpandAffix(pattern, false);
+        if (currencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT) {
+            currencyPluralInfo = new CurrencyPluralInfo(symbols.getLocale());
+        } else {
+            expandAffixAdjustWidth(null);
+        }
+    }
+
+
+    /**
+     * Create a DecimalFormat from the given pattern, symbols,
+     * information used for currency plural format, and format style.
+     * 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. 
+     * <p>
+     * If you need only minor adjustments to a standard format, 
+     * you can modify the format returned by
+     * a NumberFormat factory method using the setters.
+     * <p>
+     * If you want to completely customize a decimal format,
+     * using your own DecimalFormatSymbols (such as group separators) and
+     * your own information for currency plural formatting (such as
+     * plural rule and currency plural patterns), you can use this constructor.
+     * <p> 
+     * @param pattern a non-localized pattern string
+     * @param symbols the set of symbols to be used
+     * @param infoInput the information used for currency plural format, 
+     *                  including currency plural patterns and plural rules.
+     * @param style the decimal formatting style, 
+     *              it is one of the following values:
+     *              NumberFormat.NUMBERSTYLE;
+     *              NumberFormat.CURRENCYSTYLE;
+     *              NumberFormat.PERCENTSTYLE;
+     *              NumberFormat.SCIENTIFICSTYLE;
+     *              NumberFormat.INTEGERSTYLE;
+     *              NumberFormat.ISOCURRENCYSTYLE;
+     *              NumberFormat.PLURALCURRENCYSTYLE;
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DecimalFormat(String pattern, DecimalFormatSymbols symbols,
+                         CurrencyPluralInfo infoInput,
+                         int style) {
+        CurrencyPluralInfo info = infoInput;
+        if (style == NumberFormat.PLURALCURRENCYSTYLE) {
+            info = (CurrencyPluralInfo)infoInput.clone();
+        }
+        create(pattern, symbols, info, style);
+    }
+
+
+    private void create(String pattern, DecimalFormatSymbols inputSymbols,
+                        CurrencyPluralInfo info,
+                        int inputStyle) {
+        if (inputStyle != NumberFormat.PLURALCURRENCYSTYLE) {
+            createFromPatternAndSymbols(pattern, inputSymbols);
+        } else {
+            // Always applyPattern after the symbols are set
+            symbols = (DecimalFormatSymbols) inputSymbols.clone();
+            currencyPluralInfo = info;
+            // the pattern used in format is not fixed until formatting,
+            // in which, the number is known and 
+            // will be used to pick the right pattern based on plural count.
+            // Here, set the pattern as the pattern of plural count == "other".
+            // For most locale, the patterns are probably the same for all
+            // plural count. If not, the right pattern need to be re-applied
+            // during format.
+            String currencyPluralPatternForOther = currencyPluralInfo.getCurrencyPluralPattern("other");
+            applyPatternWithoutExpandAffix(currencyPluralPatternForOther,false);
+            setCurrencyForSymbols();
+        }
+        style = inputStyle;
+    }
+
+
+    /*
+     * Create a DecimalFormat for currency plural format 
+     * from the given pattern, symbols, and style.
+     */
+    DecimalFormat(String pattern, DecimalFormatSymbols inputSymbols, int style) {
+        CurrencyPluralInfo info = null;
+        if (style == NumberFormat.PLURALCURRENCYSTYLE) {
+            info = new CurrencyPluralInfo(inputSymbols.getLocale());
+        }
+        create(pattern, inputSymbols, info, style);
+    }
+
+    /**
+     * @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());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+            else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+//#endif 
+
+            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());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+            else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setEndIndex(result.length());
+            }
+//#endif 
+
+            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());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+            else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+//#endif 
+
+            // [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());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+            else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setEndIndex(result.length());
+            }
+//#endif 
+
+            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(number, 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(number, 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(number.intValue(), 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(number.doubleValue(), 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), mathContext);
+        }
+
+        if (roundingIncrementICU != null) {
+            number = number.divide(roundingIncrementICU, 0, roundingMode)
+                .multiply(roundingIncrementICU, mathContext);
+        }
+
+        synchronized(digitList) {
+            digitList.set(number, precision(false),
+                          !useExponentialNotation && !areSignificantDigitsUsed());
+            return subformat(number.doubleValue(), result, fieldPosition, number.signum() < 0, false, 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();
+        }
+    }
+
+    private StringBuffer subformat(int number, StringBuffer result, 
+                                   FieldPosition fieldPosition,
+                                   boolean isNegative, boolean isInteger, 
+                                   boolean parseAttr) {
+        if (currencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT) { 
+            return subformat(currencyPluralInfo.select(number), result, fieldPosition,
+                             isNegative, isInteger, parseAttr);
+        } else {
+            return subformat(result, fieldPosition, isNegative, isInteger, parseAttr);
+        }
+    }
+
+    private StringBuffer subformat(double number, StringBuffer result, 
+                                   FieldPosition fieldPosition,
+                                   boolean isNegative, boolean isInteger,
+                                   boolean parseAttr) {
+        if (currencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT) { 
+            return subformat(currencyPluralInfo.select(number), result, fieldPosition,
+                             isNegative, isInteger, parseAttr);
+        } else {
+            return subformat(result, fieldPosition, isNegative, isInteger, parseAttr);
+        }
+    }
+
+    private StringBuffer subformat(String pluralCount, 
+            StringBuffer result,
+            FieldPosition fieldPosition, boolean isNegative, boolean isInteger,
+            boolean parseAttr) 
+    {
+        // There are 2 ways to activate currency plural format:
+        // by applying a pattern with 3 currency sign directly,
+        // or by instantiate a decimal formatter using PLURALCURRENCYSTYLE.
+        // For both cases, the number of currency sign in the pattern is 3.
+        // Even if the number of currency sign in the pattern is 3, 
+        // it does not mean we need to reset the pattern.
+        // For 1st case, we do not need to reset pattern.
+        // For 2nd case, we might need to reset pattern,
+        // if the default pattern (corresponding to plural count 'other')
+        // we use is different from the pattern based on 'pluralCount'.
+        // 
+        // style is only valid when decimal formatter is constructed through
+        // DecimalFormat(pattern, symbol, style)
+        if (style == NumberFormat.PLURALCURRENCYSTYLE) {
+            // May need to reset pattern if the style is PLURALCURRENCYSTYLE.
+            String currencyPluralPattern = currencyPluralInfo.getCurrencyPluralPattern(pluralCount);
+            if (formatPattern.equals(currencyPluralPattern) == false) {
+                applyPatternWithoutExpandAffix(currencyPluralPattern, false);
+            }
+        }
+        // Expand the affix to the right name according to
+        // the plural rule.
+        // This is only used for currency plural formatting.
+        // Currency plural name is not a fixed static one,
+        // it is a dynamic name based on the currency plural count.
+        // So, the affixes need to be expanded here.
+        // For other cases, the affix is a static one based on pattern alone,
+        // and it is already expanded during applying pattern,
+        // or setDecimalFormatSymbols, or setCurrency.
+        expandAffixAdjustWidth(pluralCount);
+        return subformat(result, fieldPosition, isNegative, isInteger, parseAttr);
+    }
+
+    /**
+     * 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,
+            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 = currencySignCount > 0 ?
+                    symbols.getMonetaryGroupingSeparator() :
+                    symbols.getGroupingSeparator();
+        char decimal =  currencySignCount > 0 ?
+            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 
+            else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setBeginIndex(result.length());
+                fieldPosition.setEndIndex(-1);
+            } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+                fieldPosition.setBeginIndex(-1);
+            } 
+//#endif 
+
+//#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 
+                    else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                        fieldPosition.setEndIndex(result.length());
+                    }
+//#endif 
+
+//#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());
+                    }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+                    else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+                        fieldPosition.setBeginIndex(result.length());
+                    }
+//#endif 
+
+                }
+                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 
+            else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                if (fieldPosition.getEndIndex() < 0) {
+                    fieldPosition.setEndIndex(result.length());
+                }
+            } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+                if (fieldPosition.getBeginIndex() < 0) {
+                    fieldPosition.setBeginIndex(result.length());
+                }
+                fieldPosition.setEndIndex(result.length());
+            }
+//#endif 
+
+//#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());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+            else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+//#endif 
+
+            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());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+            else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setEndIndex(result.length());
+            }
+//#endif 
+
+            // 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 
+            else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+//#endif 
+
+//#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 
+            else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+                fieldPosition.setEndIndex(result.length());
+            }
+//#endif 
+
+//#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 (currencySignCount > 0) {
+            if (!parseForCurrency(text, parsePosition, parseCurrency, 
+                                  currency, status)) {
+                return null;
+            }
+        } else {
+            if (!subparse(text, parsePosition, digitList, false, status, 
+                          currency, negPrefixPattern, negSuffixPattern,
+                          posPrefixPattern, posSuffixPattern)) {
+                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), mathContext);
+                }
+            }
+        }
+
+        // Assemble into CurrencyAmount if necessary
+        return parseCurrency ? (Object) new CurrencyAmount(n, currency[0])
+                             : (Object) n;
+    }
+
+
+    private boolean parseForCurrency(String text, ParsePosition parsePosition, 
+                                     boolean parseCurrency, Currency[] currency,
+                                     boolean[] status) {
+        int origPos = parsePosition.getIndex();
+        if (!isReadyForParsing) {
+            int savedCurrencySignCount = currencySignCount;
+            setupCurrencyAffixForAllPatterns();
+            // reset pattern back
+            if (savedCurrencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT) {
+                applyPatternWithoutExpandAffix(formatPattern, false);
+            } else {
+                applyPattern(formatPattern, false);
+            }
+            isReadyForParsing = true;
+        }
+        int maxPosIndex = origPos;
+        int maxErrorPos = -1;
+        boolean[] savedStatus = null;
+        // First, parse against current pattern.
+        // Since current pattern could be set by applyPattern(),
+        // it could be an arbitrary pattern, and it may not be the one
+        // defined in current locale.
+        boolean[] tmpStatus = new boolean[STATUS_LENGTH];
+        ParsePosition tmpPos = new ParsePosition(origPos);
+        DigitList tmpDigitList = new DigitList();
+        boolean found = subparse(text, tmpPos, tmpDigitList, false, 
+                  tmpStatus, currency, negPrefixPattern, negSuffixPattern,
+                  posPrefixPattern, posSuffixPattern);
+        if (found) {
+            if (tmpPos.getIndex() > maxPosIndex) {
+                maxPosIndex = tmpPos.getIndex();
+                savedStatus = tmpStatus;
+                digitList = tmpDigitList;
+            }
+        } else {
+            maxErrorPos = tmpPos.getErrorIndex();
+        }
+        // Then, parse against affix patterns.
+        // Those are currency patterns and currency plural patterns
+        // defined in the locale.
+        Iterator  iter = affixPatternsForCurrency.iterator();
+        while (iter.hasNext()) {
+            AffixForCurrency affix = (AffixForCurrency)iter.next();
+
+            tmpStatus = new boolean[STATUS_LENGTH];
+            tmpPos = new ParsePosition(origPos); 
+            tmpDigitList = new DigitList();
+            boolean result = subparse(text, tmpPos, tmpDigitList, false, 
+                               tmpStatus, currency, affix.getNegPrefix(),
+                               affix.getNegSuffix(), affix.getPosPrefix(), 
+                               affix.getPosSuffix());
+            if (result) {
+                found = true;
+                if (tmpPos.getIndex() > maxPosIndex) {
+                    maxPosIndex = tmpPos.getIndex();
+                    savedStatus = tmpStatus;
+                    digitList = tmpDigitList;
+                }
+            } else {
+                maxErrorPos = (tmpPos.getErrorIndex() > maxErrorPos) ?
+                              tmpPos.getErrorIndex() : maxErrorPos;
+            }
+        }
+        // Finally, parse against simple affix to find the match.
+        // For example, in TestMonster suite,
+        // if the to-be-parsed text is "-\u00A40,00".
+        // complexAffixCompare will not find match,
+        // since there is no ISO code matches "\u00A4",
+        // and the parse stops at "\u00A4".
+        // We will just use simple affix comparison (look for exact match)
+        // to pass it.
+        tmpStatus = new boolean[STATUS_LENGTH];
+        tmpPos = new ParsePosition(origPos); 
+        tmpDigitList = new DigitList();
+        int savedCurrencySignCount = currencySignCount;
+        // set currencySignCount to 0 so that compareAffix function will
+        // fall to compareSimpleAffix path, not compareComplexAffix path.
+        currencySignCount = 0;
+        boolean result = subparse(text, tmpPos, tmpDigitList, false, 
+                  tmpStatus, currency, negativePrefix, negativeSuffix,
+                  positivePrefix, positiveSuffix);
+        currencySignCount = savedCurrencySignCount;
+        if (result) {
+            if (tmpPos.getIndex() > maxPosIndex) {
+                maxPosIndex = tmpPos.getIndex();
+                savedStatus = tmpStatus;
+                digitList = tmpDigitList;
+            }
+            found = true;
+        } else {
+                maxErrorPos = (tmpPos.getErrorIndex() > maxErrorPos) ?
+                              tmpPos.getErrorIndex() : maxErrorPos;
+        }
+
+        if (!found) {
+            //parsePosition.setIndex(origPos);
+            parsePosition.setErrorIndex(maxErrorPos);
+        } else {
+            parsePosition.setIndex(maxPosIndex);
+            parsePosition.setErrorIndex(-1);
+            for (int index = 0; index < STATUS_LENGTH; ++index) {
+                status[index] = savedStatus[index];
+            }
+        }
+        return found;
+    }
+
+
+    // Get affix patterns used in locale's currency pattern
+    // (NumberPatterns[1]) and currency plural pattern (CurrencyUnitPatterns).
+    private void setupCurrencyAffixForAllPatterns() {
+        if (currencyPluralInfo == null) {
+            currencyPluralInfo = new CurrencyPluralInfo(symbols.getLocale());
+        }
+        affixPatternsForCurrency = new HashSet();
+
+        // save the current pattern, since it will be changed by
+        // applyPatternWithoutExpandAffix
+        String savedFormatPattern = formatPattern;
+        
+        // CURRENCYSTYLE and ISOCURRENCYSTYLE should have the same
+        // prefix and suffix, so, only need to save one of them.
+        // Here, chose onlyApplyPatternWithoutExpandAffix without
+        // saving the actualy pattern in 'pattern' data member.
+        // TODO: is it uloc?
+        applyPatternWithoutExpandAffix(getPattern(symbols.getLocale(), NumberFormat.CURRENCYSTYLE), false);
+        AffixForCurrency affixes = new AffixForCurrency(negPrefixPattern,
+                                                        negSuffixPattern,
+                                                        posPrefixPattern,
+                                                        posSuffixPattern);
+        affixPatternsForCurrency.add(affixes);
+        
+        // add plural pattern
+        Iterator iter = currencyPluralInfo.pluralPatternIterator();
+        Set currencyUnitPatternSet = new HashSet();
+        while (iter.hasNext()) {
+            String pluralCount = (String)iter.next();
+            String currencyPattern = (String)currencyPluralInfo.getCurrencyPluralPattern(pluralCount);
+            if (currencyPattern != null &&
+                currencyUnitPatternSet.contains(currencyPattern) == false) {
+                currencyUnitPatternSet.add(currencyPattern);
+                applyPatternWithoutExpandAffix(currencyPattern, false);
+                affixes = new AffixForCurrency(negPrefixPattern,
+                                               negSuffixPattern,
+                                               posPrefixPattern,
+                                               posSuffixPattern);
+                affixPatternsForCurrency.add(affixes);
+            }   
+        }
+        // reset pattern back
+        formatPattern = savedFormatPattern;
+    }
+
+    private static final int CURRENCY_SIGN_COUNT_IN_SYMBOL_FORMAT = 1;
+    private static final int CURRENCY_SIGN_COUNT_IN_ISO_FORMAT = 2;
+    private static final int CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT = 3;
+
+    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.
+     * @param negPrefix negative prefix pattern
+     * @param negSuffix negative suffix pattern
+     * @param posPrefix positive prefix pattern
+     * @param negSuffix negative suffix pattern
+     */
+    private final boolean subparse(String text, ParsePosition parsePosition,
+                   DigitList digits, boolean isExponent,
+                   boolean status[], Currency currency[],
+                   String negPrefix, String negSuffix,
+                   String posPrefix, String posSuffix)
+    {
+        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, posPrefix, currency);
+        int negMatch = compareAffix(text, position, true, true, negPrefix, 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 = currencySignCount > 0 ?
+            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, posSuffix, currency);
+        }
+        if (negMatch >= 0) {
+            negMatch = compareAffix(text, position, true, false, negSuffix, 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 affixPat affix pattern used for currency affix comparison
+     * @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,
+                             String affixPat,
+                             Currency[] currency) {
+        if (currency != null || currencyChoice != null ||
+            currencySignCount > 0) {
+                return compareComplexAffix(affixPat, 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 position after the matched text, or -1 if match failure
+     */
+    private int compareComplexAffix(String affixPat, String text, int pos,
+                                    Currency[] currency) {
+        int start = pos;
+        for (int i=0; 
+             i < affixPat.length() && pos >= 0 && pos < text.length(); ) {
+            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:
+                // since the currency names in choice format is saved
+                // the same way as other currency names, 
+                // do not need to do currency choice parsing here.
+                // the general currency parsing parse against all names,
+                // including names in choice format.
+                //assert(currency != null ||
+                //       (getCurrency() != null && currencyChoice != null));
+                boolean intl = i<affixPat.length() &&
+                    affixPat.charAt(i) == CURRENCY_SIGN;
+                if (intl) {
+                    ++i;
+                }
+                boolean plural = i<affixPat.length() &&
+                    affixPat.charAt(i) == CURRENCY_SIGN;
+                if (plural) {
+                    ++i;
+                    intl = false;
+                }
+                // Parse generic currency -- anything for which we
+                // have a display name, or any 3-letter ISO code.
+                // Try to parse display name for our locale; first
+                // determine our locale.
+                // TODO: use locale in CurrencyPluralInfo
+                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);
+                // using Currency.parse to handle mixed style parsing.
+                String iso = Currency.parse(uloc, text, ppos);
+
+                // If parse succeeds, populate currency[0]
+                if (iso != null) {
+                    if (currency != null) {
+                        currency[0] = Currency.getInstance(iso);
+                    }
+                    pos = ppos.getIndex();
+                } else {
+                    pos = -1;
+                }
+                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 - start;
+    }
+
+    /**
+     * 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(null);
+    }
+
+    /**
+     * 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 according 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;
+
+        if (getRoundingIncrement() == null) {
+            setRoundingIncrement(Math.pow(10.0,(double)-getMaximumFractionDigits()));
+        }
+    }
+
+    // [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;
+    }
+
+    // [NEW]
+    /**
+     * Returns the MathContext
+     * used by this format. 
+     * @return desired MathContext
+     * @see #mathContext
+     * @see #getMathContext
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public MathContext getMathContextICU() {
+        try {
+            // don't allow multiple references
+            return mathContext == null ?
+                   null :
+                   new MathContext(mathContext.getDigits(),
+                                   mathContext.getForm(),
+                                   mathContext.getLostDigits(),
+                                   mathContext.getRoundingMode());
+        } catch (Exception foo) {
+            return null; // should never happen
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+    // [NEW]
+    /**
+     * Returns the MathContext
+     * used by this format. 
+     * @return desired MathContext
+     * @see #mathContext
+     * @see #getMathContext
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public java.math.MathContext getMathContext()
+    {
+        try
+        {
+            // don't allow multiple references
+            return mathContext == null ?
+                   null :
+                   new java.math.MathContext(mathContext.getDigits(),
+                                             java.math.RoundingMode.valueOf(mathContext.getRoundingMode()));
+        }
+        catch (Exception foo)
+        {
+            return null; // should never happen
+        }
+    }
+//#endif
+
+    // [NEW]
+    /**
+     * Sets the MathContext used by this format.
+     * @param newValue desired MathContext
+     * @see #mathContext
+     * @see #getMathContext
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setMathContextICU(MathContext newValue) {
+        mathContext = newValue;
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+    // [NEW]
+    /**
+     * Sets the MathContext used by this format.
+     * @param newValue desired MathContext
+     * @see #mathContext
+     * @see #getMathContext
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setMathContext(java.math.MathContext newValue)
+    {
+        mathContext = new MathContext(newValue.getPrecision(),
+                                      MathContext.SCIENTIFIC,
+                                      false,
+                                      (newValue.getRoundingMode()).ordinal()
+                                      );
+    }
+//#endif
+
+    /**
+     * 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;
+    }
+
+    /**
+     * Returns a copy of the CurrencyPluralInfo 
+     * used by this format. 
+     * It might return null if the decimal format is not a plural type 
+     * currency decimal format.
+     * Plural type currency decimal format means either
+     * the pattern in the decimal format contains 3 currency signs,
+     * or the decimal format is initialized with PLURALCURRENCYSTYLE.
+     * @return desired CurrencyPluralInfo
+     * @see CurrencyPluralInfo
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public CurrencyPluralInfo getCurrencyPluralInfo() {
+        try {
+            // don't allow multiple references
+            return currencyPluralInfo == null ? 
+                   null :
+                   (CurrencyPluralInfo) currencyPluralInfo.clone();
+        } catch (Exception foo) {
+            return null; // should never happen
+        }
+    }
+
+
+    /**
+     * Sets the CurrencyPluralInfo used by this format.  The
+     * format uses a copy of the provided information.
+     * @param newInfo desired CurrencyPluralInfo
+     * @see CurrencyPluralInfo
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setCurrencyPluralInfo(CurrencyPluralInfo newInfo) {
+        currencyPluralInfo = (CurrencyPluralInfo) newInfo.clone();
+        isReadyForParsing = false;
+    }
+
+    /**
+     * 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
+            if (currencyPluralInfo != null) {
+                other.currencyPluralInfo = (CurrencyPluralInfo)currencyPluralInfo.clone();
+            }
+            /*
+             * 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]
+         */
+        // following are added to accomodate changes for currency plural format.
+        return currencySignCount == other.currencySignCount && 
+               (style == NumberFormat.PLURALCURRENCYSTYLE)? true :
+                ((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) 
+            && (currencyPluralInfo == null 
+                || currencyPluralInfo.equals(other.currencyPluralInfo));
+    }
+
+    //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() {
+        if (style == NumberFormat.PLURALCURRENCYSTYLE) {
+            // the prefix or suffix pattern might not be defined yet,
+            // so they can not be synthesized,
+            // instead, get them directly.
+            // but it might not be the actual pattern used in formatting.
+            // the actual pattern used in formatting depends on the 
+            // formatted number's plural count.
+            return formatPattern;
+        }
+        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() {
+        if (style == NumberFormat.PLURALCURRENCYSTYLE) {
+            return formatPattern;
+        }
+        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.
+     * This method also will be called before formatting if format currency
+     * plural names, since the plural name is not a static one, it is 
+     * based on the currency plural count, the affix will be known only
+     * after the currency plural count is know. 
+     * In which case, the parameter
+     * 'pluralCount' will be a non-null currency plural count.
+     * In all other cases, the 'pluralCount' is null, which means 
+     * it is not needed.
+     */
+    //Bug 4212072 [Richard/GCL]
+    private void expandAffixes(String pluralCount) {
+        // 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, pluralCount, buffer, false);
+            positivePrefix = buffer.toString();
+        }
+        if (posSuffixPattern != null) {
+            expandAffix(posSuffixPattern, pluralCount, buffer, false);
+            positiveSuffix = buffer.toString();
+        }
+        if (negPrefixPattern != null) {
+            expandAffix(negPrefixPattern, pluralCount, buffer, false);
+            negativePrefix = buffer.toString();
+        }
+        if (negSuffixPattern != null) {
+            expandAffix(negSuffixPattern, pluralCount, 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.  If CURRENCY_SIGN is tripled,
+     * it is interpreted as currency plural long names, such as "US Dollars".
+     * 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 pluralCount the plural count. It is only used for currency
+     *                    plural format. In which case, it is the plural
+     *                    count of the currency amount. For example,
+     *                    in en_US, it is the singular "one", or the plural
+     *                    "other". For all other cases, it is null, and
+     *                    is not being used.
+     * @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, 
+                             String pluralCount, 
+                             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;
+                boolean plural = false;
+                if (intl) {
+                    ++i;
+                    if (i<pattern.length() &&
+                        pattern.charAt(i) == CURRENCY_SIGN) {
+                        plural = true;
+                        intl = false;
+                        ++i;
+                    }
+                }
+                String s = null;
+                Currency currency = getCurrency();
+                if (currency != null) {
+                    // plural name is only needed when pluralCount != null,
+                    // which means when formatting currency plural names.
+                    // For other cases, pluralCount == null,
+                    // and plural names are not needed.
+                    if (plural && pluralCount != null) {
+                        boolean isChoiceFormat[] = new boolean[1];
+                        s = currency.getName(symbols.getULocale(), 
+                                             Currency.PLURAL_LONG_NAME, 
+                                             pluralCount, 
+                                             isChoiceFormat);
+                    }
+                    else 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, null, 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) {
+        applyPatternWithoutExpandAffix(pattern, localized);
+        expandAffixAdjustWidth(null);
+    }
+
+    private void expandAffixAdjustWidth(String pluralCount) {
+        /*Bug 4212072
+          Update the affix strings according to symbols in order to keep
+          the affix strings up to date.
+          [Richard/GCL]
+        */
+        expandAffixes(pluralCount);
+
+        // Now that we have the actual prefix and suffix, fix up formatWidth
+        if (formatWidth > 0) {
+            formatWidth += positivePrefix.length() + positiveSuffix.length();
+        }
+    }
+
+    private void applyPatternWithoutExpandAffix(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;
+
+            // 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
+                            if ((pos + 1) < pattern.length() &&
+                                pattern.charAt(pos + 1) == CURRENCY_SIGN) {
+                                ++pos; // Skip over the tripled character
+                                affix.append(ch); // append again
+                                currencySignCount = CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT;
+                            } else {
+                                currencySignCount = CURRENCY_SIGN_COUNT_IN_ISO_FORMAT;
+                            } 
+                        } else {
+                            currencySignCount = CURRENCY_SIGN_COUNT_IN_SYMBOL_FORMAT;
+                        }
+                        // 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;
+                }
+                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;
+        }
+        setLocale(null, null);
+        // save the pattern
+        formatPattern = pattern;
+        // initialize currencyPluralInfo if needed 
+        if (currencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT &&
+            currencyPluralInfo == null) { 
+            currencyPluralInfo = new CurrencyPluralInfo(symbols.getLocale());
+        }
+    }
+
+    /**
+     * 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 (currencySignCount > 0) {
+            if (theCurrency != null) {
+                setRoundingIncrement(theCurrency.getRoundingIncrement());
+                int d = theCurrency.getDefaultFractionDigits();
+                setMinimumFractionDigits(d);
+                setMaximumFractionDigits(d);
+            }
+            expandAffixes(null);
+        }
+    }
+
+    /**
+     * 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;
+    
+    
+    /**
+     * 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]
+    /**
+     * Operations on <code>BigDecimal</code> numbers are controlled by a
+     * {@link MathContext} object, which provides the context (precision and
+     * other information) for the operation. The default <code>MathContext</code> 
+     * settings 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
+     */
+    private MathContext mathContext = new MathContext(0, MathContext.PLAIN); // context for plain unlimited math
+
+    // [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
+
+    /*
+     * Following are used in currency format
+     */
+/*
+    // triple currency sign char array
+    private static final char[] tripleCurrencySign = {0xA4, 0xA4, 0xA4};
+    // triple currency sign string
+    private static final String tripleCurrencyStr = new String(tripleCurrencySign);
+
+    // default currency plural pattern char array
+    private static final char[] defaultCurrencyPluralPatternChar = {0, '.', '#', '#', ' ', 0xA4, 0xA4, 0xA4};
+    // default currency plural pattern string
+    private static final String defaultCurrencyPluralPattern = new String(defaultCurrencyPluralPatternChar);
+*/
+
+    // pattern used in this formatter
+    private String formatPattern = "";
+    // style is only valid when decimal formatter is constructed by
+    // DecimalFormat(pattern, decimalFormatSymbol, style)
+    private int style = NumberFormat.NUMBERSTYLE;
+    /*
+     * Represents whether this is a currency format, and which
+     * currency format style.
+     * 0: not currency format type;
+     * 1: currency style -- symbol name, such as "$" for US dollar.
+     * 2: currency style -- ISO name, such as USD for US dollar.
+     * 3: currency style -- plural long name, such as "US Dollar" for
+     *                      "1.00 US Dollar", or "US Dollars" for
+     *                      "3.00 US Dollars".
+     */
+    private int currencySignCount = 0;
+
+
+    /* For parsing purose,
+     * Need to remember all prefix patterns and suffix patterns of 
+     * every currency format pattern, 
+     * including the pattern of default currecny style, ISO currency style,
+     * and plural currency style. And the patterns are set through applyPattern.
+     * Following are used to represent the affix patterns in currency plural
+     * formats.
+     */
+    private static final class AffixForCurrency {
+        // negative prefix pattern
+        private String negPrefixPatternForCurrency = null; 
+        // negative suffix pattern
+        private String negSuffixPatternForCurrency = null; 
+        // positive prefix pattern
+        private String posPrefixPatternForCurrency = null; 
+        // positive suffix pattern
+        private String posSuffixPatternForCurrency = null; 
+        
+        public AffixForCurrency() {}
+        public AffixForCurrency(String negPrefix, String negSuffix,
+                                String posPrefix, String posSuffix) {
+            negPrefixPatternForCurrency = negPrefix;
+            negSuffixPatternForCurrency = negSuffix;
+            posPrefixPatternForCurrency = posPrefix;
+            posSuffixPatternForCurrency = posSuffix;
+        }
+
+        public String getNegPrefix() {
+            return negPrefixPatternForCurrency;
+        }
+
+        public String getNegSuffix() {
+            return negSuffixPatternForCurrency;
+        }
+
+        public String getPosPrefix() {
+            return posPrefixPatternForCurrency;
+        }
+
+        public String getPosSuffix() {
+            return posSuffixPatternForCurrency;
+        }
+    }
+    // Affix patter set for currency.
+    // It is a set of AffixForCurrency,
+    // each element of the set saves the negative prefix,
+    // negative suffix, positive prefix, and positive suffix of a pattern.
+    private transient Set affixPatternsForCurrency = null;
+
+    // For currency parsing, since currency parsing need to parse
+    // against all currency patterns, before the parsing, need to set up 
+    // the affix patterns for currency.
+    private transient boolean isReadyForParsing = false;
+
+    // Information needed for DecimalFormat to format/parse currency plural.
+    private CurrencyPluralInfo currencyPluralInfo = null;
+
+}
+
+//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..348eac6
--- /dev/null
+++ b/src/com/ibm/icu/text/DecimalFormatSymbols.java
@@ -0,0 +1,1102 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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;
+        
+        // Attempt to set the zero digit based on the numbering system for the locale requested
+        //
+        NumberingSystem ns = NumberingSystem.getInstance(locale);
+        if ( ns != null && ns.getRadix() == 10 && !ns.isAlgorithmic()) {
+            zeroDigit = ns.getDescription().charAt(0);
+        }
+
+        // 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..50c5a7b
--- /dev/null
+++ b/src/com/ibm/icu/text/DigitList.java
@@ -0,0 +1,865 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..b1de056
--- /dev/null
+++ b/src/com/ibm/icu/text/IDNA.java
@@ -0,0 +1,962 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.ParseException;
+
+/**
+ *
+ * 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(){
+        namePrep = StringPrep.getInstance(StringPrep.RFC3491_NAMEPREP);
+    }
+    
+    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 
+     *                              StringPrepParseException.
+     *
+     *  - 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 StringPrepParseException
+     * @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..d68139f
--- /dev/null
+++ b/src/com/ibm/icu/text/IndexCharacters.java
@@ -0,0 +1,274 @@
+//##header
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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..49109de
--- /dev/null
+++ b/src/com/ibm/icu/text/MessageFormat.java
@@ -0,0 +1,2313 @@
+//##header
+/*
+**********************************************************************
+* Copyright (c) 2004-2009, 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.containsKey(argumentName)) {
+                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..deed4ec
--- /dev/null
+++ b/src/com/ibm/icu/text/NFSubstitution.java
@@ -0,0 +1,1849 @@
+/*
+ *******************************************************************************
+ * 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;
+    
+    /**
+     * Link to the RBNF so that we can access its decimalFormat if need be.
+     */
+    RuleBasedNumberFormat rbnf = 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;
+        this.rbnf = formatter;
+
+        // 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 = rbnf.getDecimalFormat().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 = rbnf.getDecimalFormat().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..9a7be11
--- /dev/null
+++ b/src/com/ibm/icu/text/NumberFormat.java
@@ -0,0 +1,1808 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.impl.Utility;
+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>
+ * Starting from ICU 4.2, you can use getInstance() by passing in a 'style'
+ * as parameter to get the correct instance. 
+ * For example, 
+ * use getInstance(...NUMBERSTYLE) to get the normal number format,
+ * getInstance(...PERCENTSTYLE) to get a format for displaying percentage,
+ * getInstance(...SCIENTIFICSTYLE) to get a format for displaying scientific number,
+ * getInstance(...INTEGERSTYLE) to get an integer number format,
+ * getInstance(...CURRENCYSTYLE) to get the currency number format, 
+ * in which the currency is represented by its symbol, for example, "$3.00".
+ * getInstance(...ISOCURRENCYSTYLE)  to get the currency number format, 
+ * in which the currency is represented by its ISO code, for example "USD3.00".
+ * getInstance(...PLURALCURRENCYSTYLE) to get the currency number format,
+ * in which the currency is represented by its full name in plural format,
+ * for example, "3.00 US dollars" or "1.00 US dollar".
+ *
+ *
+ * <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 to specify normal number style of format.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int NUMBERSTYLE = 0;
+    /**
+     * Constants to specify currency style of format which uses currency symbol
+     * to represent currency, for example: "$3.00".
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int CURRENCYSTYLE = 1;
+    /**
+     * Constants to specify a style of format to display percent.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int PERCENTSTYLE = 2;
+    /**
+     * Constants to specify a style of format to display scientific number.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int SCIENTIFICSTYLE = 3;
+    /**
+     * Constants to specify a integer number style format.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int INTEGERSTYLE = 4;
+    /**
+     * Constants to specify currency style of format which uses currency 
+     * ISO code to represent currency, for example: "USD3.00".
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int ISOCURRENCYSTYLE = 5;
+    /**
+     * Constants to specify currency style of format which uses currency 
+     * long name with plural format to represent currency, for example,
+     * "3.00 US Dollars".
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int PLURALCURRENCYSTYLE = 6;
+
+    /**
+     * 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 specific style number format for default locale.
+     * @param style  number format style
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final static NumberFormat getInstance(int style) {
+        return getInstance(ULocale.getDefault(), style);
+    }
+
+    /**
+     * Returns a specific style number format for a specific locale.
+     * @param inLocale  the specific locale.
+     * @param style     number format style
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static NumberFormat getInstance(Locale inLocale, int style) {
+        return getInstance(ULocale.forLocale(inLocale), style);
+    }
+
+
+    /**
+     * 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.");
+    }
+
+
+    /**
+     * Returns a specific style number format for a specific locale.
+     * @param desiredLocale  the specific locale.
+     * @param choice         number format style
+     * @throws IllegalArgumentException  if choice is not one of
+     *                                   NUMBERSTYLE, CURRENCYSTYLE, 
+     *                                   PERCENTSTYLE, SCIENTIFICSTYLE, 
+     *                                   INTEGERSTYLE, 
+     *                                   ISOCURRENCYSTYLE, PLURALCURRENCYSTYLE,
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static NumberFormat getInstance(ULocale desiredLocale, int choice) {
+        if (choice < NUMBERSTYLE || choice > PLURALCURRENCYSTYLE) {
+            throw new IllegalArgumentException("choice should be from NUMBERSTYLE to PLURALCURRENCYSTYLE");
+        }       
+//          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);
+    }
+
+    // =======================privates===============================
+    // Hook for service
+    // [NEW]
+    static NumberFormat createInstance(ULocale desiredLocale, int choice) {
+        // If the choice is PLURALCURRENCYSTYLE, the pattern is not a single
+        // pattern, it is a pattern set, so we do not need to get them here.
+        // If the choice is ISOCURRENCYSTYLE, the pattern is the currrency
+        // pattern in the locale but by replacing the single currency sign 
+        // with double currency sign.
+        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
+        // This style wont work for currency plural format.
+        // For currency plural format, the pattern is get from 
+        // the locale (from CurrencyUnitPatterns) without override.
+        if(choice == CURRENCYSTYLE || choice == ISOCURRENCYSTYLE){
+            String temp = symbols.getCurrencyPattern();
+            if(temp!=null){
+                pattern = temp;
+            }
+        }
+
+        // replace single currency sign in the pattern with double currency sign
+        // if the choice is ISOCURRENCYSTYLE.
+        if (choice == ISOCURRENCYSTYLE) {
+            pattern = Utility.replace(pattern, "\u00A4", doubleCurrencyStr);
+        }
+
+        NumberingSystem ns = NumberingSystem.getInstance(desiredLocale);
+        if ( ns == null ) {
+            return null;
+        }
+
+        NumberFormat format;
+
+        if ( ns != null && ns.isAlgorithmic()) {
+            RuleBasedNumberFormat r = new RuleBasedNumberFormat(desiredLocale,RuleBasedNumberFormat.NUMBERING_SYSTEM);
+            r.setDefaultRuleSet(ns.getDescription());
+            format = r;
+        } else {
+            DecimalFormat f = new DecimalFormat(pattern, symbols, choice);
+            // 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) {
+                f.setMaximumFractionDigits(0);
+                f.setDecimalSeparatorAlwaysShown(false);
+                f.setParseIntegerOnly(true);
+            }
+            format = f;
+       } 
+        // 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]
+        */
+        /* for ISOCURRENCYSTYLE and PLURALCURRENCYSTYLE,
+         * the pattern is the same as the pattern of CURRENCYSTYLE
+         * but by replacing the single currency sign with
+         * double currency sign or triple currency sign.
+         */
+        int entry = (choice == INTEGERSTYLE) ? NUMBERSTYLE : 
+                ((choice == ISOCURRENCYSTYLE || choice == PLURALCURRENCYSTYLE)?
+                CURRENCYSTYLE : 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);
+
+      private static final char[] doubleCurrencySign = {0xA4, 0xA4};
+      private static final String doubleCurrencyStr = new String(doubleCurrencySign);
+
+    /*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/NumberingSystem.java b/src/com/ibm/icu/text/NumberingSystem.java
new file mode 100644
index 0000000..1c56ce0
--- /dev/null
+++ b/src/com/ibm/icu/text/NumberingSystem.java
@@ -0,0 +1,174 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.util.ArrayList;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+import com.ibm.icu.text.UCharacterIterator;
+
+/**
+ * <code>NumberingSystem</code> is the base class for all number
+ * systems. This class provides the interface for setting different numbering
+ * system types, whether it be a simple alternate digit system such as 
+ * Thai digits or Devanagari digits, or an algorithmic numbering system such
+ * as Hebrew numbering or Chinese numbering.
+ *
+ * @author       John Emmons
+ * @draft ICU 4.2
+ */
+
+public class NumberingSystem {
+
+    public NumberingSystem() {
+        radix = 10;
+        algorithmic = false;
+        desc = "0123456789";
+    }
+
+    public static NumberingSystem getInstance(int radix_in, boolean isAlgorithmic_in, String desc_in ) {
+        if ( radix_in < 2 ) {
+            throw new IllegalArgumentException("Invalid radix for numbering system");
+        }
+
+        if ( !isAlgorithmic_in ) {
+            if ( desc_in.length() != radix_in || !isValidDigitString(desc_in)) {
+                throw new IllegalArgumentException("Invalid digit string for numbering system");
+            }
+        }
+        NumberingSystem ns = new NumberingSystem();
+        ns.radix = radix_in;
+        ns.algorithmic = isAlgorithmic_in;
+        ns.desc = desc_in;
+        return ns;
+    }
+
+    public static NumberingSystem getInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale));
+    }
+
+    public static NumberingSystem getInstance(ULocale locale) {
+
+        String numbersKeyword = locale.getKeywordValue("numbers");
+        if (numbersKeyword != null) {
+            NumberingSystem ns = getInstanceByName(numbersKeyword);
+            if ( ns != null ) {
+                return ns;
+            }
+        }
+
+        String defaultNumberingSystem;
+
+        try {
+            ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,locale);
+            defaultNumberingSystem = rb.getString("defaultNumberingSystem");
+        } catch (MissingResourceException ex) {
+            return new NumberingSystem();
+        }
+
+        NumberingSystem ns = getInstanceByName(defaultNumberingSystem);
+        if ( ns != null ) {
+           return ns;
+        }
+
+        return new NumberingSystem();
+    }
+
+    public static NumberingSystem getInstance() {
+        return getInstance(ULocale.getDefault());
+    }
+
+    public static NumberingSystem getInstanceByName(String name) {
+        int radix;
+        boolean isAlgorithmic;
+        String description;
+        try {
+            UResourceBundle numberingSystemsInfo = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "numberingSystems");
+            UResourceBundle nsCurrent = numberingSystemsInfo.get("numberingSystems");
+            UResourceBundle nsTop = nsCurrent.get(name);
+
+            description = nsTop.getString("desc");
+            UResourceBundle nsRadixBundle = nsTop.get("radix");
+            UResourceBundle nsAlgBundle = nsTop.get("algorithmic");
+            radix = nsRadixBundle.getInt();
+            int algorithmic = nsAlgBundle.getInt();
+
+            isAlgorithmic = ( algorithmic == 1 );
+
+        } catch (MissingResourceException ex) {
+            return null;
+        }
+
+        return getInstance(radix,isAlgorithmic,description); 
+    }
+
+    public static String [] getAvailableNames() {
+    
+            UResourceBundle numberingSystemsInfo = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "numberingSystems");
+            UResourceBundle nsCurrent = numberingSystemsInfo.get("numberingSystems");
+            UResourceBundle temp;
+
+            String nsName;
+            ArrayList output = new ArrayList();
+            UResourceBundleIterator it = nsCurrent.getIterator();
+            while (it.hasNext()) {
+                temp = it.next();
+                nsName = temp.getKey();
+                output.add(nsName);
+            }
+            return (String[]) output.toArray(new String[output.size()]);
+    }
+
+    public static boolean isValidDigitString(String str) {
+
+        int c;
+        int prev = 0;
+        int i = 0;
+        UCharacterIterator it = UCharacterIterator.getInstance(str);
+
+        it.setToStart();
+        while ( (c = it.nextCodePoint()) != UCharacterIterator.DONE) {
+            if ( UCharacter.digit(c) != i ) { // Digits outside the Unicode decimal digit class are not currently supported
+                return false;
+            }
+            if ( prev != 0 && c != prev + 1 ) { // Non-contiguous digits are not currently supported
+                return false;
+            }
+            if ( UCharacter.isSupplementary(c)) { // Digits outside the BMP are not currently supported
+                return false;
+            }
+            i++;
+            prev = c;
+        }
+        return true;
+    }
+
+    public int getRadix() {
+        return radix;
+    }
+
+    public String getDescription() {
+        return desc;
+    }
+
+    public boolean isAlgorithmic() {
+        return algorithmic;
+    }
+
+
+    private String desc;
+    private int radix;
+    private boolean algorithmic;
+
+}
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..427e135
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedCollator.java
@@ -0,0 +1,4689 @@
+//##header
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, 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..949a90c
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedNumberFormat.java
@@ -0,0 +1,1776 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 com.ibm.icu.util.UResourceBundleIterator;
+
+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;
+
+    /**
+     * Selector code that tells the constructor to create a numbering system formatter
+     * @draft ICU 4.2
+     */
+    public static final int NUMBERING_SYSTEM = 4;
+
+    //-----------------------------------------------------------------------
+    // 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;
+    
+    /**
+     * The NumberFormat used when lenient parsing numbers.  This needs to reflect
+     * the locale.  This is lazy-evaluated, like decimalFormatSymbols.  It is
+     * here so it can be shared by different NFSubstitutions.
+     */
+    private transient DecimalFormat decimalFormat = 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 four 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"),
+     * DURATION, which formats a duration in seconds as hours, minutes, and seconds, and
+     * NUMBERING_SYSTEM, which is used to invoke rules for alternate numbering
+     * systems such as the Hebrew numbering system, or for Roman numerals, etc..
+     * @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 {
+            // For backwards compatability - If we have a pre-4.2 style RBNF resource, attempt to read it.
+            description = bundle.getString(rulenames[format-1]);
+        }
+        catch (MissingResourceException e) {
+            try {
+                ICUResourceBundle rules = bundle.getWithFallback("RBNFRules/"+rulenames[format-1]);
+                UResourceBundleIterator it = rules.getIterator(); 
+                while (it.hasNext()) {
+                   description = description.concat(it.nextString());
+                }
+            }
+            catch (MissingResourceException e1) {
+            } 
+        }
+
+        try {
+            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", "NumberingSystemRules",
+    };
+    private static final String[] locnames = {
+        "SpelloutLocalizations", "OrdinalLocalizations", "DurationLocalizations", "NumberingSystemLocalizations",
+    };
+
+    /**
+     * 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.
+     * or NUMBERING_SYSTEM, which is used for alternate numbering systems such as Hebrew.
+     * @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;
+        decimalFormat = temp.decimalFormat;
+        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) {
+                   String currentName = ruleSets[n].getName();
+                   if (currentName.equals("%spellout") || currentName.equals("%ordinal") || currentName.equals("%duration")) {
+                       defaultRuleSet = ruleSets[n];
+                       return;
+                   } 
+                }
+
+                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;
+    }
+    
+    DecimalFormat getDecimalFormat() {
+        if (decimalFormat == null) {
+            decimalFormat = (DecimalFormat)NumberFormat.getInstance(locale);
+        }
+        return decimalFormat;
+    }
+
+    //-----------------------------------------------------------------------
+    // 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.
+
+        // Set the default ruleset to the last public ruleset, unless one of the predefined
+        // ruleset names %spellout, %ordinal, or %duration is found
+
+        boolean defaultNameFound = false;                  
+        int n = ruleSets.length;
+        defaultRuleSet = ruleSets[ruleSets.length - 1];
+
+        while (--n >= 0) {
+            String currentName = ruleSets[n].getName();
+            if (currentName.equals("%spellout") || currentName.equals("%ordinal") || currentName.equals("%duration")) {
+                defaultRuleSet = ruleSets[n];
+                defaultNameFound = true;                  
+                break;
+            } 
+        }
+
+        if ( !defaultNameFound ) {
+            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..d4c1750
--- /dev/null
+++ b/src/com/ibm/icu/text/SimpleDateFormat.java
@@ -0,0 +1,3084 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.lang.Character;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+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 override string of this formatter.  Used to override the
+     * numbering system for one or more fields.
+     * @serial
+     */
+    private String override;
+
+    /**
+     * The hash map used for number format overrides.
+     * @serial
+     */
+    private HashMap numberFormatters;
+
+    /**
+     * The hash map used for number format overrides.
+     * @serial
+     */
+    private HashMap overrideMap;
+
+    /**
+     * 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, null);
+    }
+
+    /**
+     * 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, null);
+    }
+
+    /**
+     * 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, null);
+    }
+
+    /**
+     * 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, null);
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern , override and locale.
+     * @draft ICU 4.2
+     */
+    public SimpleDateFormat(String pattern, String override, ULocale loc)
+    {
+        this(pattern, null, null, null, loc, false,override);
+    }
+
+    /**
+     * 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, null);
+    }
+
+    /**
+     * @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,null);
+    }
+
+    /**
+     * 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, String override) {
+        this(pattern, (DateFormatSymbols)formatData.clone(), (Calendar)calendar.clone(), null, locale, useFastFormat,override);
+    }
+
+    SimpleDateFormat(String pattern, DateFormatSymbols formatData, Calendar calendar, ULocale locale,
+                     boolean useFastFormat) {
+        this(pattern, (DateFormatSymbols)formatData.clone(), (Calendar)calendar.clone(), null, locale, useFastFormat,null);
+    }
+
+    /*
+     * The constructor called from all other SimpleDateFormat constructors
+     */
+    private SimpleDateFormat(String pattern, DateFormatSymbols formatData, Calendar calendar,
+            NumberFormat numberFormat, ULocale locale, boolean useFastFormat,String override) {
+        this.pattern = pattern;
+        this.formatData = formatData;
+        this.calendar = calendar;
+        this.numberFormat = numberFormat;
+        this.locale = locale; // time zone formatting
+        this.useFastFormat = useFastFormat;
+        this.override = override;
+        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) {
+       
+        String ostr = formatConfig.getOverrideString();
+        boolean useFast = ( ostr != null && ostr.length() > 0 );
+
+        return new SimpleDateFormat(formatConfig.getPatternString(),
+                    formatConfig.getDateFormatSymbols(),
+                    formatConfig.getCalendar(),
+                    null,
+                    formatConfig.getLocale(),
+                    useFast,
+                    formatConfig.getOverrideString());
+    }
+
+    /*
+     * 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();
+
+        if (override != null) {
+           initNumberFormatters(locale);
+        }
+
+    }
+
+    // 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.getDateTimePatterns();
+                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) {
+        TimeZone backupTZ = null;
+        if (cal != calendar && !cal.getType().equals(calendar.getType())) {
+            // Different calendar type
+            // We use the time and time zone from the input calendar, but
+            // do not use the input calendar for field calculation.
+            calendar.setTimeInMillis(cal.getTimeInMillis());
+            backupTZ = calendar.getTimeZone();
+            calendar.setTimeZone(cal.getTimeZone());
+            cal = calendar;
+        }
+        StringBuffer result = format(cal, toAppendTo, pos, null);
+        if (backupTZ != null) {
+            // Restore the original time zone
+            calendar.setTimeZone(backupTZ);
+        }
+        return result;
+    }
+
+    // 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;
+
+        NumberFormat currentNumberFormat = getNumberFormat(ch);
+
+        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(currentNumberFormat,buf, value, 2, 2); // clip 1996 to 96
+            else //count = 1 or count > 2
+                zeroPaddingNumber(currentNumberFormat,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(currentNumberFormat,buf, value+1, count, maxIntCount);
+            }
+            break;
+        case 4: // 'k' - HOUR_OF_DAY (1..24)
+            if (value == 0)
+                zeroPaddingNumber(currentNumberFormat,buf,
+                                  cal.getMaximum(Calendar.HOUR_OF_DAY)+1,
+                                  count, maxIntCount);
+            else
+                zeroPaddingNumber(currentNumberFormat,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(currentNumberFormat,buf,
+                                  cal.getLeastMaximum(Calendar.HOUR)+1,
+                                  count, maxIntCount);
+            else
+                zeroPaddingNumber(currentNumberFormat,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(currentNumberFormat,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(currentNumberFormat,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(currentNumberFormat,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(currentNumberFormat,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(currentNumberFormat,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(currentNumberFormat,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(currentNumberFormat,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(currentNumberFormat,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(currentNumberFormat,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(NumberFormat currentNumberFormat,StringBuffer buf, Calendar cal) {
+        int offset = cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET);
+
+        if (isDefaultGMTFormat()) {
+            formatGMTDefault(currentNumberFormat,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(NumberFormat currentNumberFormat,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(currentNumberFormat,buf, hour, 2, 2);
+        buf.append(COLON);
+        zeroPaddingNumber(currentNumberFormat,buf, min, 2, 2);
+        if (sec != 0) {
+            buf.append(COLON);
+            zeroPaddingNumber(currentNumberFormat,buf, sec, 2, 2);
+        }
+    }
+
+    private Integer parseGMT(String text, ParsePosition pos, NumberFormat currentNumberFormat) {
+        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, currentNumberFormat);
+    }
+
+    private Integer parseGMTDefault(String text, ParsePosition pos, NumberFormat currentNumberFormat) {
+        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,currentNumberFormat);
+        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,currentNumberFormat);
+                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,currentNumberFormat);
+                        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(NumberFormat nf,StringBuffer buf, int value,
+                                     int minDigits, int maxDigits) {
+        if (useLocalZeroPaddingNumberFormat) {
+            fastZeroPaddingNumber(buf, value, minDigits, maxDigits);
+        } else {
+            nf.setMinimumIntegerDigits(minDigits);
+            nf.setMaximumIntegerDigits(maxDigits);
+            nf.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)
+    {
+        TimeZone backupTZ = null;
+        Calendar resultCal = null;
+        if (cal != calendar && !cal.getType().equals(calendar.getType())) {
+            // Different calendar type
+            // We use the time/zone from the input calendar, but
+            // do not use the input calendar for field calculation.
+            calendar.setTimeInMillis(cal.getTimeInMillis());
+            backupTZ = calendar.getTimeZone();
+            calendar.setTimeZone(cal.getTimeZone());
+            resultCal = cal;
+            cal = calendar;
+        }
+
+        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);
+                            if (backupTZ != null) {
+                                calendar.setTimeZone(backupTZ);
+                            }
+                            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);
+                        if (backupTZ != null) {
+                            calendar.setTimeZone(backupTZ);
+                        }
+                        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);
+                    if (backupTZ != null) {
+                        calendar.setTimeZone(backupTZ);
+                    }
+                    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);
+            if (backupTZ != null) {
+                calendar.setTimeZone(backupTZ);
+            }
+            return;
+        }
+        // Set the parsed result if local calendar is used
+        // instead of the input calendar
+        if (resultCal != null) {
+            resultCal.setTimeZone(cal.getTimeZone());
+            resultCal.setTimeInMillis(cal.getTimeInMillis());
+        }
+        // Restore the original time zone if required
+        if (backupTZ != null) {
+            calendar.setTimeZone(backupTZ);
+        }
+    }
+
+    /**
+     * 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;
+        NumberFormat currentNumberFormat = 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;
+        }
+
+        currentNumberFormat = getNumberFormat(ch);
+ 
+        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,currentNumberFormat);
+                    }
+                else number = parseInt(text, pos, allowNegative,currentNumberFormat);
+                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, currentNumberFormat);
+                    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,currentNumberFormat);
+                            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,currentNumberFormat);
+                    }
+                else number = parseInt(text, pos, allowNegative,currentNumberFormat);
+                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,
+                            NumberFormat fmt) {
+        return parseInt(text, -1, pos, allowNegative, fmt);
+    }
+    
+    /**
+     * Parse an integer using numberFormat up to maxDigits.
+     */
+    private Number parseInt(String text,
+                            int maxDigits,
+                            ParsePosition pos,
+                            boolean allowNegative,
+                            NumberFormat fmt) {
+        Number number;
+        int oldPos = pos.getIndex();
+        if (allowNegative) {
+            number = fmt.parse(text, pos);
+        } else {
+            // Invalidate negative numbers
+            if (fmt instanceof DecimalFormat) {
+                String oldPrefix = ((DecimalFormat)fmt).getNegativePrefix();
+                ((DecimalFormat)fmt).setNegativePrefix(SUPPRESS_NEGATIVE_PREFIX);
+                number = fmt.parse(text, pos);
+                ((DecimalFormat)fmt).setNegativePrefix(oldPrefix);
+            } else {
+                boolean dateNumberFormat = (fmt instanceof DateNumberFormat);
+                if (dateNumberFormat) {
+                    ((DateNumberFormat)fmt).setParsePositiveOnly(true);
+                }
+                number = fmt.parse(text, pos);                
+                if (dateNumberFormat) {
+                    ((DateNumberFormat)fmt).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;
+    }
+
+    protected NumberFormat getNumberFormat(char ch) {
+
+       Character ovrField;
+       ovrField = new Character(ch);
+       if (overrideMap != null && overrideMap.containsKey(ovrField)) {
+           String nsName = overrideMap.get(ovrField).toString();
+           NumberFormat nf = (NumberFormat)numberFormatters.get(nsName);
+           return nf;
+       } else {
+           return numberFormat;
+       }
+    }
+
+    private void initNumberFormatters(ULocale loc) {
+
+       numberFormatters = new HashMap();
+       overrideMap = new HashMap();
+       processOverrideString(loc,override); 
+
+    }
+
+    private void processOverrideString(ULocale loc, String str) {
+
+        if ( str == null || str.length() == 0 )
+            return;
+
+        int start = 0;
+        int end;
+        String nsName;
+        Character ovrField;
+        boolean moreToProcess = true;
+        boolean fullOverride;
+
+        while (moreToProcess) {
+            int delimiterPosition = str.indexOf(";",start);
+            if (delimiterPosition == -1) {
+                moreToProcess = false;
+                end = str.length();
+            } else {
+                end = delimiterPosition;
+            }
+
+            String currentString = str.substring(start,end);
+            int equalSignPosition = currentString.indexOf("=");
+            if (equalSignPosition == -1) { // Simple override string such as "hebrew"
+               nsName = currentString;
+               fullOverride = true;
+            } else { // Field specific override string such as "y=hebrew"
+               nsName = currentString.substring(equalSignPosition+1);
+               ovrField = new Character(currentString.charAt(0));
+               overrideMap.put(ovrField,nsName);
+               fullOverride = false;
+            }
+
+            ULocale ovrLoc = new ULocale(loc.getBaseName()+"@numbers="+nsName);
+            NumberFormat nf = NumberFormat.createInstance(ovrLoc,NumberFormat.NUMBERSTYLE);
+            
+            if (fullOverride) {
+                setNumberFormat(nf);
+            } else {
+                // Since one or more of the override number formatters might be complex,
+                // we can't rely on the fast numfmt where we have a partial field override.
+                useLocalZeroPaddingNumberFormat = false;
+            }
+
+            if (!numberFormatters.containsKey(nsName)) {
+                  numberFormatters.put(nsName,nf);
+            }
+
+            start = delimiterPosition + 1;
+
+        }    
+    }
+}
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..ec7797f
--- /dev/null
+++ b/src/com/ibm/icu/text/StringPrep.java
@@ -0,0 +1,646 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, 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 java.lang.ref.WeakReference;
+
+import com.ibm.icu.impl.CharTrie;
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.StringPrepDataReader;
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.lang.UCharacterDirection;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+ * 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;
+
+    /**
+     * Profile type: RFC3491 Nameprep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3491_NAMEPREP = 0;
+
+    /**
+     * Profile type: RFC3530 nfs4_cs_prep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3530_NFS4_CS_PREP = 1;
+
+    /**
+     * Profile type: RFC3530 nfs4_cs_prep with case insensitive option
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3530_NFS4_CS_PREP_CI = 2;
+
+    /**
+     * Profile type: RFC3530 nfs4_cis_prep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3530_NSF4_CIS_PREP = 3;
+
+    /**
+     * Profile type: RFC3530 nfs4_mixed_prep for prefix
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3530_NSF4_MIXED_PREP_PREFIX = 4;
+
+    /**
+     * Profile type: RFC3530 nfs4_mixed_prep for suffix
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3530_NSF4_MIXED_PREP_SUFFIX = 5;
+
+    /**
+     * Profile type: RFC3722 iSCSI
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3722_ISCSI = 6;
+
+    /**
+     * Profile type: RFC3920 XMPP Nodeprep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3920_NODEPREP = 7;
+
+    /**
+     * Profile type: RFC3920 XMPP Resourceprep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3920_RESOURCEPREP = 8;
+
+    /**
+     * Profile type: RFC4011 Policy MIB Stringprep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC4011_MIB = 9;
+
+    /**
+     * Profile type: RFC4013 SASLprep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC4013_SASLPREP = 10;
+
+    /**
+     * Profile type: RFC4505 trace
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC4505_TRACE = 11;
+
+    /**
+     * Profile type: RFC4518 LDAP
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC4518_LDAP = 12;
+
+    /**
+     * Profile type: RFC4518 LDAP for case ignore, numeric and stored prefix
+     * matching rules
+     * @see #getInstance(int)
+     * @provisional This API might change or be removed in a future release.
+     * @draft ICU 4.2
+     */
+    public static final int RFC4518_LDAP_CI = 13;
+
+    // Last available profile
+    private static final int MAX_PROFILE = RFC4518_LDAP_CI;
+
+    // Profile names must be aligned to profile type definitions 
+    private static final String[] PROFILE_NAMES = {
+        "rfc3491",      /* RFC3491_NAMEPREP */
+        "rfc3530cs",    /* RFC3530_NFS4_CS_PREP */
+        "rfc3530csci",  /* RFC3530_NFS4_CS_PREP_CI */
+        "rfc3491",      /* RFC3530_NSF4_CIS_PREP */
+        "rfc3530mixp",  /* RFC3530_NSF4_MIXED_PREP_PREFIX */
+        "rfc3491",      /* RFC3530_NSF4_MIXED_PREP_SUFFIX */
+        "rfc3722",      /* RFC3722_ISCSI */
+        "rfc3920node",  /* RFC3920_NODEPREP */
+        "rfc3920res",   /* RFC3920_RESOURCEPREP */
+        "rfc4011",      /* RFC4011_MIB */
+        "rfc4013",      /* RFC4013_SASLPREP */
+        "rfc4505",      /* RFC4505_TRACE */
+        "rfc4518",      /* RFC4518_LDAP */
+        "rfc4518ci",    /* RFC4518_LDAP_CI */
+    };
+
+    private static final WeakReference[] CACHE = new WeakReference[MAX_PROFILE];
+
+    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();
+        }
+    }
+ 
+    /**
+     * Gets a StringPrep instance for the specified profile
+     * 
+     * @param profile 
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static StringPrep getInstance(int profile) {
+        if (profile < 0 || profile > MAX_PROFILE) {
+            throw new IllegalArgumentException("Bad profile type");
+        }
+
+        StringPrep instance = null;
+
+        // A StringPrep instance is immutable.  We use a single instance
+        // per type and store it in the internal cache.
+        synchronized (CACHE) {
+            WeakReference ref = CACHE[profile];
+            if (ref != null) {
+                instance = (StringPrep)ref.get();
+            }
+
+            if (instance == null) {
+                InputStream stream = ICUData.getRequiredStream(ICUResourceBundle.ICU_BUNDLE + "/"
+                        + PROFILE_NAMES[profile] + ".spp");
+                if (stream != null) {
+                    try {
+                        try {
+                            instance = new StringPrep(stream);
+                        } finally {
+                            stream.close();
+                        }
+                    } catch (IOException e) {
+                        throw new RuntimeException(e.toString());
+                    }
+                }
+                if (instance != null) {
+                    CACHE[profile] = new WeakReference(instance);
+                }
+            }            
+        }
+        return instance;
+    }
+ 
+    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 prohibited 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 StringPrepParseException
+     * @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;
+
+      }
+
+    /**
+     * Prepare the input String for use in applications with the given profile. This operation maps, normalizes(NFKC),
+     * checks for prohibited and BiDi characters in the order defined by RFC 3454
+     * depending on the options specified in the profile.
+     *
+     * @param src           A 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 String A String containing the output
+     * @throws StringPrepParseException
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String prepare(String src, int options)
+        throws StringPrepParseException{
+        StringBuffer result = prepare(UCharacterIterator.getInstance(src), options);
+        return result.toString();
+    }
+}
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..7faff10
--- /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.2
+     * @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.2
+     * @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.2
+     * @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.2
+     * @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.
+                // TODO: 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..3f2c2b0
--- /dev/null
+++ b/src/com/ibm/icu/text/UTF16.java
@@ -0,0 +1,2858 @@
+//##header
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..67fcf99
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeSet.java
@@ -0,0 +1,3756 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..88b863e
--- /dev/null
+++ b/src/com/ibm/icu/util/ByteArrayWrapper.java
@@ -0,0 +1,288 @@
+//##header
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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..49116f3
--- /dev/null
+++ b/src/com/ibm/icu/util/Calendar.java
@@ -0,0 +1,5493 @@
+/*
+*   Copyright (C) 1996-2009, 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.text.StringCharacterIterator;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.LinkedList;
+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 ====
+
+    //TODO: The table below should be retrieved from ICU resource when CLDR supplementalData
+    // is fully updated.
+    private static final String[][] CALPREF = {
+        {"001", "gregorian"},
+        {"AE", "gregorian", "islamic", "islamic-civil"},
+        {"AF", "gregorian", "islamic", "islamic-civil", "persian"},
+        {"BH", "gregorian", "islamic", "islamic-civil"},
+        {"CN", "gregorian", "chinese"},
+        {"CX", "gregorian", "chinese"},
+        {"DJ", "gregorian", "islamic", "islamic-civil"},
+        {"DZ", "gregorian", "islamic", "islamic-civil"},
+        {"EG", "gregorian", "islamic", "islamic-civil", "coptic"},
+        {"EH", "gregorian", "islamic", "islamic-civil"},
+        {"ER", "gregorian", "islamic", "islamic-civil"},
+        {"ET", "gregorian", "ethiopic", "ethiopic-amete-alem"},
+        {"HK", "gregorian", "chinese"},
+        {"IL", "gregorian", "hebrew"},
+        {"IL", "gregorian", "islamic", "islamic-civil"},
+        {"IN", "gregorian", "indian"},
+        {"IQ", "gregorian", "islamic", "islamic-civil"},
+        {"IR", "gregorian", "islamic", "islamic-civil", "persian"},
+        {"JO", "gregorian", "islamic", "islamic-civil"},
+        {"JP", "gregorian", "japanese"},
+        {"KM", "gregorian", "islamic", "islamic-civil"},
+        {"KW", "gregorian", "islamic", "islamic-civil"},
+        {"LB", "gregorian", "islamic", "islamic-civil"},
+        {"LY", "gregorian", "islamic", "islamic-civil"},
+        {"MA", "gregorian", "islamic", "islamic-civil"},
+        {"MO", "gregorian", "chinese"},
+        {"MR", "gregorian", "islamic", "islamic-civil"},
+        {"OM", "gregorian", "islamic", "islamic-civil"},
+        {"PS", "gregorian", "islamic", "islamic-civil"},
+        {"QA", "gregorian", "islamic", "islamic-civil"},
+        {"SA", "gregorian", "islamic", "islamic-civil"},
+        {"SD", "gregorian", "islamic", "islamic-civil"},
+        {"SG", "gregorian", "chinese"},
+        {"SY", "gregorian", "islamic", "islamic-civil"},
+        {"TD", "gregorian", "islamic", "islamic-civil"},
+        {"TH", "buddhist", "gregorian"},
+        {"TN", "gregorian", "islamic", "islamic-civil"},
+        {"TW", "gregorian", "roc", "chinese"},
+        {"YE", "gregorian", "islamic", "islamic-civil"},
+    };
+
+    /**
+     * Given a key and a locale, returns an array of string values in a preferred
+     * order that would make a difference. These are all and only those values where
+     * the open (creation) of the service with the locale formed from the input locale
+     * plus input keyword and that value has different behavior than creation with the
+     * input locale alone.
+     * @param key           one of the keys supported by this service.  For now, only
+     *                      "calendar" is supported.
+     * @param locale        the locale
+     * @param commonlyUsed  if set to true it will return only commonly used values
+     *                      with the given locale in preferred order.  Otherwise,
+     *                      it will return all the available values for the locale.
+     * @return an array of string values for the given key and the locale.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String[] getKeywordValuesForLocale(String key, ULocale locale, boolean commonlyUsed) {
+        // Resolve region
+        String prefRegion = locale.getCountry();
+        if (prefRegion.length() == 0){
+            ULocale loc = ULocale.addLikelySubtags(locale);
+            prefRegion = loc.getCountry();
+        }
+
+        // Read preferred calendar values from supplementalData calendarPreferences
+        LinkedList values = new LinkedList();
+        //TODO: START
+        String[] preferences = CALPREF[0];
+        for (int i = 0; i < CALPREF.length; i++) {
+            if (prefRegion.equals(CALPREF[i][0])) {
+                preferences = CALPREF[i];
+                break;
+            }
+        }
+        for (int i = 1; i < preferences.length; i++) {
+            if (!values.contains(preferences[i])) {
+                values.add(preferences[i]);
+            }
+        }
+        //TODO: END
+
+        if (!commonlyUsed) {
+            // if not commonlyUsed, add other available values
+            for (int i = 0; i < calTypes.length; i++) {
+                if (!values.contains(calTypes[i])) {
+                    values.add(calTypes[i]);
+                }
+            }
+        }
+        return (String[])values.toArray(new String[values.size()]);
+    }
+
+    /**
+     * 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, null, 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
+     * @stable ICU 2.0
+     */
+    protected DateFormat handleGetDateFormat(String pattern, String override, Locale locale) {
+        return handleGetDateFormat(pattern, override, 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
+     * @stable ICU 2.0
+     */
+    protected DateFormat handleGetDateFormat(String pattern, ULocale locale) {
+        return handleGetDateFormat(pattern, null, 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, String override, ULocale locale) {
+        FormatConfiguration fmtConfig = new FormatConfiguration();
+        fmtConfig.pattern = pattern;
+        fmtConfig.override = override;
+        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);
+        String[] overrides = null;
+        String override = null;
+        if (patterns == null) {
+            // Cache missed.  Get one from bundle
+            try {
+                CalendarData calData = new CalendarData(loc, cal.getType());
+                overrides = calData.getOverrides();
+                patterns = calData.getDateTimePatterns();
+            } 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]});
+            // Might need to merge the overrides from the date and time into a single override string
+            // TODO: Right now we are forcing the date's override into the time style.
+            if ( overrides != null ) {
+                String dateOverride = overrides[dateStyle + 4];
+                String timeOverride = overrides[timeStyle];
+                override = mergeOverrideStrings(patterns[dateStyle+4],patterns[timeStyle],dateOverride,timeOverride);
+            }
+        } else if (timeStyle >= 0) {
+            pattern = patterns[timeStyle];
+            if ( overrides != null ) {
+                override = overrides[timeStyle];
+            }
+        } else if (dateStyle >= 0) {
+            pattern = patterns[dateStyle + 4];
+            if ( overrides != null ) {
+                override = overrides[dateStyle + 4];
+            }
+        } else {
+            throw new IllegalArgumentException("No date or time style specified");
+        }
+        DateFormat result = cal.handleGetDateFormat(pattern, override, loc);
+        result.setCalendar(cal);
+        return result;
+    }
+
+    private static String mergeOverrideStrings( String datePattern, String timePattern, String dateOverride, String timeOverride ) {
+
+        if ( dateOverride == null && timeOverride == null ) {
+            return null;
+        }
+
+        if ( dateOverride == null ) {
+            return expandOverride(timePattern,timeOverride);
+        }
+
+        if ( timeOverride == null ) {
+            return expandOverride(datePattern,dateOverride);
+        }
+        
+        if ( dateOverride.equals(timeOverride) ) {
+            return dateOverride;
+        }
+
+        return (expandOverride(datePattern,dateOverride)+";"+expandOverride(timePattern,timeOverride));
+
+    }
+
+    private static final char QUOTE = '\'';
+    private static String expandOverride(String pattern, String override) {
+
+        if (override.indexOf('=') >= 0) {
+            return override;
+        }
+        boolean inQuotes = false;
+        char prevChar = ' ';
+        StringBuffer result = new StringBuffer();
+
+        StringCharacterIterator it = new StringCharacterIterator(pattern);
+
+        for (char c = it.first(); c!= StringCharacterIterator.DONE; c = it.next()) {
+            if ( c == QUOTE ) {
+               inQuotes = !inQuotes;
+               prevChar = c;
+               continue;
+            }
+            if ( !inQuotes && c != prevChar ) {
+                if (result.length() > 0) {
+                    result.append(";");
+                }
+                result.append(c);
+                result.append("=");
+                result.append(override);
+            }  
+            prevChar = c;
+        } 
+        return result.toString();
+    }
+    /**
+     * 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 String override;
+        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;
+        }
+
+        public String getOverrideString() {
+            return override;
+        }
+
+        /**
+         * 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..d829480
--- /dev/null
+++ b/src/com/ibm/icu/util/ChineseCalendar.java
@@ -0,0 +1,991 @@
+/*********************************************************************
+ * Copyright (C) 2000-2009, 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, String override, ULocale locale) {
+        return new ChineseDateFormat(pattern, override, 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..02bd1fc
--- /dev/null
+++ b/src/com/ibm/icu/util/Currency.java
@@ -0,0 +1,1160 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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.ArrayList;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Vector;
+
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.TextTrieMap;
+
+/**
+ * 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");
+
+    // Cache to save currency name trie
+    private static ICUCache CURRENCY_NAME_CACHE =  new SimpleCache();
+
+    /**
+     * 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;
+   
+    /**
+     * Selector for getName() indicating the plural long name for a 
+     * currency, such as "US dollar" for USD in "1 US dollar", 
+     * and "US dollars" for USD in "2 US dollars".
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int PLURAL_LONG_NAME = 2;
+
+    // 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
+
+    /**
+     * Given a key and a locale, returns an array of string values in a preferred
+     * order that would make a difference. These are all and only those values where
+     * the open (creation) of the service with the locale formed from the input locale
+     * plus input keyword and that value has different behavior than creation with the
+     * input locale alone.
+     * @param key           one of the keys supported by this service.  For now, only
+     *                      "currency" is supported.
+     * @param locale        the locale
+     * @param commonlyUsed  if set to true it will return only commonly used values
+     *                      with the given locale in preferred order.  Otherwise,
+     *                      it will return all the available values for the locale.
+     * @return an array of string values for the given key and the locale.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String[] getKeywordValuesForLocale(String key, ULocale locale, boolean commonlyUsed) {
+        // Resolve region
+        String prefRegion = locale.getCountry();
+        if (prefRegion.length() == 0){
+            ULocale loc = ULocale.addLikelySubtags(locale);
+            prefRegion = loc.getCountry();
+        }
+
+        // Read values from supplementalData
+        LinkedList values = new LinkedList();
+        LinkedList otherValues = new LinkedList();
+
+        UResourceBundle bundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "supplementalData");
+        bundle = bundle.get("CurrencyMap");
+        Enumeration keyEnum = bundle.getKeys();
+        boolean done = false;
+        while (keyEnum.hasMoreElements() && !done) {
+            String region = (String)keyEnum.nextElement();
+            boolean isPrefRegion = prefRegion.equals(region);
+            if (!isPrefRegion && commonlyUsed) {
+                // With commonlyUsed=true, we do not put
+                // currencies for other regions in the
+                // result list.
+                continue;
+            }
+            UResourceBundle regbndl = bundle.get(region);
+            for (int i = 0; i < regbndl.getSize(); i++) {
+                UResourceBundle curbndl = regbndl.get(i);
+                if (curbndl.getType() != UResourceBundle.TABLE) {
+                    // Currently, an empty ARRAY is mixed in..
+                    continue;
+                }
+                String curID = curbndl.getString("id");
+                boolean hasTo = false;
+                try {
+                    UResourceBundle to = curbndl.get("to");
+                    if (to != null) {
+                        hasTo = true;
+                    }
+                } catch (MissingResourceException e) {
+                    // Do nothing here...
+                }
+                if (isPrefRegion && !hasTo && !values.contains(curID)) {
+                    // Currently active currency for the target country
+                    values.add(curID);
+                } else if (!otherValues.contains(curID) && !commonlyUsed){
+                    otherValues.add(curID);
+                }
+            }
+        }
+        if (commonlyUsed) {
+            if (values.size() == 0) {
+                // This could happen if no valid region is supplied in the input
+                // locale.  In this case, we use the CLDR's default.
+                return getKeywordValuesForLocale(key, new ULocale("und"), true);
+            }
+        } else {
+            // Consolidate the list
+            Iterator itr = otherValues.iterator();
+            while (itr.hasNext()) {
+                String curID = (String)itr.next();
+                if (!values.contains(curID)) {
+                    values.add(curID);
+                }
+            }
+        }
+        return (String[]) values.toArray(new String[values.size()]);
+    }
+
+    /**
+     * 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.  
+     * This is a convenient method for 
+     * getName(ULocale, int, boolean[]); 
+     * @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.
+     *                  The nameStyle should be either SYMBOL_NAME or 
+     *                  LONG_NAME. Otherwise, throw IllegalArgumentException.
+     * @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.
+     * @throws  IllegalArgumentException  if the nameStyle is not SYMBOL_NAME
+     *                                    or LONG_NAME.
+     * @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;
+    }
+
+    /**
+     * Returns the display name for the given currency in the
+     * given locale.  
+     * This is a convenient method of 
+     * getName(ULocale, int, String, boolean[]);
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getName(Locale locale,
+                          int nameStyle,
+                          String pluralCount,
+                          boolean[] isChoiceFormat) {
+        return getName(ULocale.forLocale(locale), nameStyle, 
+                       pluralCount, isChoiceFormat);
+    }
+
+    /**
+     * Returns the display name for the given currency in the
+     * given locale.  For example, the SYMBOL_NAME for the USD
+     * currency object in the en_US locale is "$".
+     * The PLURAL_LONG_NAME for the USD currency object when the currency 
+     * amount is plural is "US dollars", such as in "3.00 US dollars";
+     * while the PLURAL_LONG_NAME for the USD currency object when the currency
+     * amount is singular is "US dollar", such as in "1.00 US dollar".
+     * @param locale locale in which to display currency
+     * @param nameStyle selector for which kind of name to return
+     * @param pluralCount plural count string for this locale
+     * @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.
+     * @throws  IllegalArgumentException  if the nameStyle is not SYMBOL_NAME
+     *                                    or LONG_NAME, or PLURAL_LONG_NAME.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getName(ULocale locale,
+                          int nameStyle,
+                          String pluralCount,
+                          boolean[] isChoiceFormat) {
+        if (nameStyle != PLURAL_LONG_NAME) {
+            return getName(locale, nameStyle, isChoiceFormat);
+        }
+
+        // Look up the CurrencyPlurals resource for the given locale.  The
+        // CurrencyPlurals locale data looks like this:
+        //|en {
+        //|  CurrencyPlurals {
+        //|    USD{
+        //|      one{"US dollar"}
+        //|      other{"US dollars"}
+        //|    }
+        //|    ...
+        //|  }
+        //|}
+        // 
+        // Algorithm detail: http://unicode.org/reports/tr35/#Currencies
+        // especially the fallback rule.
+        String s = null;
+        ICUResourceBundle isoCodeBundle;
+        // search at run time, not saved in initialization
+        try {
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,locale);
+            // get handles fallback
+            ICUResourceBundle currencies = (ICUResourceBundle)rb.get("CurrencyPlurals");
+
+            // Fetch resource with multi-level resource inheritance fallback
+            isoCodeBundle = currencies.getWithFallback(isoCode);
+        } catch (MissingResourceException e) {
+            // if there is no CurrencyPlurals defined or no plural long names
+            // defined in the locale chain, fall back to long name.
+            return getName(locale, LONG_NAME, isChoiceFormat);
+        }
+        try {
+            s = isoCodeBundle.getStringWithFallback(pluralCount);
+        } catch (MissingResourceException e1) {
+            try {
+                // if there is no name corresponding to 'pluralCount' defined,
+                // fall back to name corresponding to "other".
+                s = isoCodeBundle.getStringWithFallback("other");
+            } catch (MissingResourceException e) {
+                // if there is no name corresponding to plural count "other",
+                // fall back to long name.
+                return getName(locale, LONG_NAME, isChoiceFormat);
+            }
+        }
+        // No support for choice format for getting plural currency names.
+        if (s != null) {
+            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) {
+        TextTrieMap currencyNameTrie = (TextTrieMap)CURRENCY_NAME_CACHE.get(locale);
+        if (currencyNameTrie == null) {
+            currencyNameTrie = new TextTrieMap(true);
+            setupCurrencyNameTrie(locale, currencyNameTrie);
+            CURRENCY_NAME_CACHE.put(locale, currencyNameTrie);
+        }
+        
+        // look for the names
+        CurrencyNameResultHandler handler = new CurrencyNameResultHandler();
+        currencyNameTrie.find(text, pos.getIndex(), handler);
+        List list = handler.getMatchedCurrencyNames();
+        int maxLength = 0;
+        String isoResult = null;
+        if (list != null && list.size() != 0) {
+            Iterator it = list.iterator();
+            while (it.hasNext()) {
+                CurrencyStringInfo info = (CurrencyStringInfo)it.next();
+                String isoCode = info.getISOCode();
+                String currencyString = info.getCurrencyString();
+                if (currencyString.length() > maxLength) {
+                    maxLength = currencyString.length();
+                    isoResult = isoCode;
+                }
+            }
+        }
+
+        int start = pos.getIndex();
+        if (isoResult == null || 
+            maxLength < 3 && (text.length() - start) >= 3) {
+            // 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.
+            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) {
+                pos.setIndex(pos.getIndex() + 3);
+                return text.substring(start, start+3);
+            }
+        }
+        pos.setIndex(start + maxLength);
+        return isoResult;
+    }
+
+    private static void setupCurrencyNameTrie(ULocale locale, TextTrieMap trie) {
+        // 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
+
+        /*
+        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}.
+        */
+        HashSet visited = new HashSet();
+        ULocale parentLocale = locale;
+        while (parentLocale != null) {
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,parentLocale);
+            // 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) {
+                    UResourceBundle item = currencies.get(i);
+                    String ISOCode = item.getKey();
+                    if (!visited.contains(ISOCode)) {
+                        CurrencyStringInfo info = new CurrencyStringInfo(ISOCode, ISOCode);
+                        trie.put(ISOCode, info);
+
+                        String name = item.getString(0);
+                        if (name.length() > 1 && name.charAt(0) == '=' &&
+                            name.charAt(1) != '=') {
+                            // handle choice format here
+                            name = name.substring(1);
+                            ChoiceFormat choice = new ChoiceFormat(name);
+                            Object[] names = choice.getFormats();
+                            for (int nameIndex = 0; nameIndex < names.length;
+                                 ++nameIndex) {
+                                info = new CurrencyStringInfo(ISOCode, 
+                                                      (String)names[nameIndex]);
+                                trie.put((String)names[nameIndex], info);
+                            }
+                        } else {
+                            info = new CurrencyStringInfo(ISOCode, name);
+                            trie.put(name, info);
+                        }
+
+                        info = new CurrencyStringInfo(ISOCode, item.getString(1));
+                        trie.put(item.getString(1), info);
+                        visited.add(ISOCode);
+                    }
+                }
+            }
+            catch (MissingResourceException e) {}
+
+            parentLocale = parentLocale.getFallback();
+        }
+        // Look up the CurrencyPlurals resource for the given locale.  The
+        // CurrencyPlurals locale data looks like this:
+        //|en {
+        //|  CurrencyPlurals {
+        //|    USD { 
+        //|      one{"US Dollar"}  
+        //|      other{"US dollars"} 
+        //|    }
+        //|    //...
+        //|  }
+        //|}
+
+        HashMap visitedInMap = new HashMap();
+        parentLocale = locale;
+        while (parentLocale != null) {
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,parentLocale);
+            try {
+                UResourceBundle currencies;
+                currencies = rb.get("CurrencyPlurals");
+                for (int i=0; i<currencies.getSize(); ++i) {
+                    UResourceBundle item = currencies.get(i);
+                    String ISOCode = item.getKey();
+                    HashSet visitPluralCount = (HashSet)visitedInMap.get(ISOCode);
+                    if (visitPluralCount == null) {
+                        visitPluralCount = new HashSet();
+                        visitedInMap.put(ISOCode, visitPluralCount);
+                    }
+                    for (int j=0; j<item.getSize(); ++j) {
+                        String count = item.get(j).getKey();
+                        if (!visitPluralCount.contains(count)) {
+                            CurrencyStringInfo info = new CurrencyStringInfo(ISOCode, item.get(j).getString());
+
+                            trie.put(item.get(j).getString(), info);
+                            visitPluralCount.add(count);
+                        }
+                    }
+                }
+            }
+            catch (MissingResourceException e) {}
+
+            parentLocale = parentLocale.getFallback();
+        }
+    }
+
+    private static final class CurrencyStringInfo {
+        private String isoCode;
+        private String currencyString;
+
+        public CurrencyStringInfo(String isoCode, String currencyString) {
+            this.isoCode = isoCode;
+            this.currencyString = currencyString;
+        }
+
+        private String getISOCode() {
+            return isoCode;
+        }
+
+        private String getCurrencyString() {
+            return currencyString;
+        }
+    }
+
+    private static class CurrencyNameResultHandler implements TextTrieMap.ResultHandler {
+        private ArrayList resultList;
+    
+        public boolean handlePrefixMatch(int matchLength, Iterator values) {
+            if (resultList == null) {
+                resultList = new ArrayList();
+            }
+            while (values.hasNext()) {
+                CurrencyStringInfo item = (CurrencyStringInfo)values.next();
+                if (item == null) {
+                    break;
+                }
+                int i = 0;
+                for (; i < resultList.size(); i++) {
+                    CurrencyStringInfo tmp = (CurrencyStringInfo)resultList.get(i);
+                    if (item.getISOCode() == tmp.getISOCode()) {
+                        if (matchLength > tmp.getCurrencyString().length()) {
+                            resultList.set(i, item);
+                        }
+                        break;
+                    }
+                }
+                if (i == resultList.size()) {
+                    // not found in the current list
+                    resultList.add(item);
+                }
+            }
+            return true;
+        }
+
+        List getMatchedCurrencyNames() {
+            if (resultList == null || resultList.size() == 0) {
+                return null;
+            }
+            return resultList;
+        }
+    }
+
+    /**
+     * 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..4260f29
--- /dev/null
+++ b/src/com/ibm/icu/util/SimpleTimeZone.java
@@ -0,0 +1,1326 @@
+ /*
+*   Copyright (C) 1996-2009, 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 (!useDaylight) {
+            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 (!useDaylight) {
+            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 = useDaylight ? 3 : 1;
+        TimeZoneRule[] rules = new TimeZoneRule[size];
+        rules[0] = initialRule;
+        if (useDaylight) {
+            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 (useDaylight) {
+            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..f585bc9
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeZone.java
@@ -0,0 +1,887 @@
+/*
+ * @(#)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.
+     */
+    private synchronized 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
+         * around 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]);
+        format.setTimeZone(this);
+        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.
+            return format.format(d);
+        } else {
+            int[] offsets = new int[2];
+            getOffset(d.getTime(), false, offsets);
+            if ((daylight && offsets[1] != 0) || (!daylight && offsets[1] == 0)) {
+                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..972c1d5
--- /dev/null
+++ b/src/com/ibm/icu/util/ULocale.java
@@ -0,0 +1,3759 @@
+/*
+******************************************************************************
+* Copyright (C) 2003-2009, 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.equals(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();
+    }
+    
+    private static VersionInfo gCLDRVersion = null;
+    
+    /**
+     * Returns the current CLDR version
+     * @draft ICU 4.2
+     */
+    public static VersionInfo getCLDRVersion() {
+        // fetching this data should be idempotent.
+        if(gCLDRVersion == null) {
+            // from ZoneMeta.java
+            UResourceBundle supplementalDataBundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "supplementalData", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            UResourceBundle cldrVersionBundle = supplementalDataBundle.get("cldrVersion");
+            gCLDRVersion = VersionInfo.getInstance(cldrVersionBundle.getString());
+        }
+        return gCLDRVersion;
+    }
+
+    /**
+     * 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..a9e00b9
--- /dev/null
+++ b/src/com/ibm/icu/util/UResourceBundle.java
@@ -0,0 +1,1028 @@
+//##header
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, 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..88ddae9
--- /dev/null
+++ b/src/com/ibm/icu/util/VersionInfo.java
@@ -0,0 +1,492 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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, 3, 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
