diff --git a/intl/uconv/tests/unit/test_bug365345.js b/intl/uconv/tests/unit/test_bug365345.js deleted file mode 100644 index 9fb5745c7f22..000000000000 --- a/intl/uconv/tests/unit/test_bug365345.js +++ /dev/null @@ -1,52 +0,0 @@ -/* Tests conversion of unrepresented characters that should be transliterated - * to spaces (bug 365345), and some others from transliterate.properties while - * I'm here - */ - -const inSpace = "Hello Space"; -const inEnSpace = "Hello\u2002EnSpace"; -const inEmSpace = "Hello\u2003EmSpace"; -const inEuro = "Hello\u20ACEuro"; -const inTamil1000 = "Hello\u0BF2Tamil1000"; -const inMonospace9 = "Hello\ud835\udfffMonospace9"; - -const expectedSpace = "Hello Space"; -const expectedEnSpace = "Hello EnSpace"; -const expectedEmSpace = "Hello EmSpace"; -const expectedEuro = "HelloEUREuro"; -const expectedTamil1000 = "Hello[1000]Tamil1000"; -const expectedMonospace9 = "Hello9Monospace9"; - -const EntityAfterCharsetConv = 512; -const transliterate = 8; - -const charset = "ISO-8859-2"; - -function run_test() { - var SaveAsCharset = - Components.Constructor("@mozilla.org/intl/saveascharset;1", - "nsISaveAsCharset", - "Init"); - - var converter = new SaveAsCharset(charset, - EntityAfterCharsetConv, - transliterate); - - var outSpace = converter.Convert(inSpace); - do_check_eq(outSpace, expectedSpace); - - var outEnSpace = converter.Convert(inEnSpace); - do_check_eq(outEnSpace, expectedEnSpace); - - var outEmSpace = converter.Convert(inEmSpace); - do_check_eq(outEmSpace, expectedEmSpace); - - var outEuro = converter.Convert(inEuro); - do_check_eq(outEuro, expectedEuro); - - var outTamil1000 = converter.Convert(inTamil1000); - do_check_eq(outTamil1000, expectedTamil1000); - - var outMonospace9 = converter.Convert(inMonospace9); - do_check_eq(outMonospace9, expectedMonospace9); -} diff --git a/intl/uconv/tests/unit/xpcshell.ini b/intl/uconv/tests/unit/xpcshell.ini index 1bbf53a59800..a7da6a25f462 100644 --- a/intl/uconv/tests/unit/xpcshell.ini +++ b/intl/uconv/tests/unit/xpcshell.ini @@ -14,7 +14,6 @@ support-files = [test_bug317216.js] [test_bug321379.js] [test_bug340714.js] -[test_bug365345.js] [test_bug381412.Big5-HKSCS.js] [test_bug381412.Big5.js] [test_bug381412.euc-kr.js] diff --git a/intl/unicharutil/nsEntityConverter.cpp b/intl/unicharutil/nsEntityConverter.cpp index ad3aaa0f2236..94853df74970 100644 --- a/intl/unicharutil/nsEntityConverter.cpp +++ b/intl/unicharutil/nsEntityConverter.cpp @@ -1,4 +1,4 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ @@ -13,137 +13,75 @@ // // implementation methods // -nsEntityConverter::nsEntityConverter() : - mVersionList(nullptr), - mVersionListLength(0) -{ -} +nsEntityConverter::nsEntityConverter() { } -nsEntityConverter::~nsEntityConverter() -{ - if (mVersionList) - delete [] mVersionList; -} - -NS_IMETHODIMP -nsEntityConverter::LoadVersionPropertyFile() -{ - NS_NAMED_LITERAL_CSTRING(url, "resource://gre/res/entityTables/htmlEntityVersions.properties"); - - nsCOMPtr bundleService = - mozilla::services::GetStringBundleService(); - if (!bundleService) - return NS_ERROR_FAILURE; - - nsCOMPtr entities; - nsresult rv = bundleService->CreateBundle(url.get(), getter_AddRefs(entities)); - if (NS_FAILED(rv)) return rv; - - nsresult result; - - nsAutoString key; - nsXPIDLString value; - rv = entities->GetStringFromName(MOZ_UTF16("length"), - getter_Copies(value)); - NS_ASSERTION(NS_SUCCEEDED(rv),"nsEntityConverter: malformed entity table\n"); - if (NS_FAILED(rv)) return rv; - - mVersionListLength = nsAutoString(value).ToInteger(&result); - NS_ASSERTION(32 >= mVersionListLength,"nsEntityConverter: malformed entity table\n"); - if (32 < mVersionListLength) return NS_ERROR_FAILURE; - - mVersionList = new nsEntityVersionList[mVersionListLength]; - if (!mVersionList) return NS_ERROR_OUT_OF_MEMORY; - - for (uint32_t i = 0; i < mVersionListLength && NS_SUCCEEDED(rv); i++) { - key.SetLength(0); - key.AppendInt(i+1, 10); - rv = entities->GetStringFromName(key.get(), getter_Copies(value)); - uint32_t len = value.Length(); - if (kVERSION_STRING_LEN < len) return NS_ERROR_UNEXPECTED; - - memcpy(mVersionList[i].mEntityListName, value.get(), len*sizeof(char16_t)); - mVersionList[i].mEntityListName[len] = 0; - mVersionList[i].mVersion = (1 << i); - } - - return NS_OK; -} - -already_AddRefed -nsEntityConverter::LoadEntityBundle(uint32_t version) -{ - nsAutoCString url(NS_LITERAL_CSTRING("resource://gre/res/entityTables/")); - nsresult rv; - - nsCOMPtr bundleService = - do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, nullptr); - - const char16_t *versionName = GetVersionName(version); - NS_ENSURE_TRUE(versionName, nullptr); - - // all property file names are ASCII, like "html40Latin1" so this is safe - LossyAppendUTF16toASCII(versionName, url); - url.AppendLiteral(".properties"); - - nsCOMPtr bundle; - rv = bundleService->CreateBundle(url.get(), getter_AddRefs(bundle)); - NS_ENSURE_SUCCESS(rv, nullptr); - - return bundle.forget(); -} - -const char16_t* -nsEntityConverter:: GetVersionName(uint32_t versionNumber) -{ - for (uint32_t i = 0; i < mVersionListLength; i++) { - if (versionNumber == mVersionList[i].mVersion) - return mVersionList[i].mEntityListName; - } - - return nullptr; -} +nsEntityConverter::~nsEntityConverter() { } nsIStringBundle* nsEntityConverter:: GetVersionBundleInstance(uint32_t versionNumber) { - if (!mVersionList) { - // load the property file which contains available version names - // and generate a list of version/name pair - if (NS_FAILED(LoadVersionPropertyFile())) - return nullptr; - } - - uint32_t i; - for (i = 0; i < mVersionListLength; i++) { - if (versionNumber == mVersionList[i].mVersion) { - if (!mVersionList[i].mEntities) - { // not loaded - // load the property file - mVersionList[i].mEntities = LoadEntityBundle(versionNumber); - NS_ASSERTION(mVersionList[i].mEntities, "LoadEntityBundle failed"); - } - return mVersionList[i].mEntities.get(); + switch(versionNumber){ + case nsIEntityConverter::html40Latin1: + if (!mHTML40Latin1Bundle) { + mHTML40Latin1Bundle = LoadEntityBundle(kHTML40LATIN1); + MOZ_ASSERT(mHTML40Latin1Bundle, "LoadEntityBundle failed"); } + return mHTML40Latin1Bundle; + case nsIEntityConverter::html40Symbols: + if (!mHTML40SymbolsBundle) { + mHTML40SymbolsBundle = LoadEntityBundle(kHTML40SYMBOLS); + MOZ_ASSERT(mHTML40SymbolsBundle, "LoadEntityBundle failed"); + } + return mHTML40SymbolsBundle; + case nsIEntityConverter::html40Special: + if (!mHTML40SpecialBundle) { + mHTML40SpecialBundle = LoadEntityBundle(kHTML40SPECIAL); + MOZ_ASSERT(mHTML40SpecialBundle, "LoadEntityBundle failed"); + } + return mHTML40SpecialBundle; + case nsIEntityConverter::mathml20: + if (!mMathML20Bundle) { + mMathML20Bundle = LoadEntityBundle(kMATHML20); + MOZ_ASSERT(mMathML20Bundle, "LoadEntityBundle failed"); + } + return mMathML20Bundle; + default: + return nullptr; } - - return nullptr; } +already_AddRefed +nsEntityConverter:: LoadEntityBundle(const char *fileName) +{ + NS_ENSURE_TRUE(fileName, nullptr); + + nsAutoCString url("resource://gre/res/entityTables/"); + nsresult rv; + + nsCOMPtr bundleService = + do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv); + NS_ENSURE_SUCCESS(rv, nullptr); + + url.Append(fileName); + + nsCOMPtr bundle; + rv = bundleService->CreateBundle(url.get(), getter_AddRefs(bundle)); + NS_ENSURE_SUCCESS(rv, nullptr); + + return bundle.forget(); +} // // nsISupports methods // NS_IMPL_ISUPPORTS(nsEntityConverter,nsIEntityConverter) - // // nsIEntityConverter // NS_IMETHODIMP nsEntityConverter::ConvertToEntity(char16_t character, uint32_t entityVersion, char **_retval) -{ +{ return ConvertUTF32ToEntity((uint32_t)character, entityVersion, _retval); } @@ -151,18 +89,22 @@ NS_IMETHODIMP nsEntityConverter::ConvertUTF32ToEntity(uint32_t character, uint32_t entityVersion, char **_retval) { NS_ASSERTION(_retval, "null ptr- _retval"); - if(nullptr == _retval) + if (nullptr == _retval) { return NS_ERROR_NULL_POINTER; + } *_retval = nullptr; for (uint32_t mask = 1, mask2 = 0xFFFFFFFFL; (0!=(entityVersion & mask2)); mask<<=1, mask2<<=1) { - if (0 == (entityVersion & mask)) + if (0 == (entityVersion & mask)) { continue; - nsIStringBundle* entities = GetVersionBundleInstance(entityVersion & mask); - NS_ASSERTION(entities, "Cannot get the property file"); + } - if (!entities) + nsIStringBundle* entities = GetVersionBundleInstance(entityVersion & mask); + NS_ASSERTION(entities, "Cannot get the entity"); + + if (!entities) { continue; + } nsAutoString key(NS_LITERAL_STRING("entity.")); key.AppendInt(character,10); @@ -171,13 +113,10 @@ nsEntityConverter::ConvertUTF32ToEntity(uint32_t character, uint32_t entityVersi nsresult rv = entities->GetStringFromName(key.get(), getter_Copies(value)); if (NS_SUCCEEDED(rv)) { *_retval = ToNewCString(value); - if(nullptr == *_retval) - return NS_ERROR_OUT_OF_MEMORY; - else - return NS_OK; + return NS_OK; } } - return NS_ERROR_ILLEGAL_VALUE; + return NS_ERROR_ILLEGAL_VALUE; } NS_IMETHODIMP @@ -194,30 +133,28 @@ nsEntityConverter::ConvertToEntities(const char16_t *inString, uint32_t entityVe uint32_t len = NS_strlen(inString); for (uint32_t i = 0; i < len; i++) { nsAutoString key(NS_LITERAL_STRING("entity.")); - if (NS_IS_HIGH_SURROGATE(inString[i]) && - i + 2 < len && - NS_IS_LOW_SURROGATE(inString[i + 1])) { + if (NS_IS_HIGH_SURROGATE(inString[i]) && i + 2 < len && NS_IS_LOW_SURROGATE(inString[i + 1])) { key.AppendInt(SURROGATE_TO_UCS4(inString[i], inString[i+1]), 10); ++i; - } - else { + } else { key.AppendInt(inString[i],10); } - + nsXPIDLString value; const char16_t *entity = nullptr; for (uint32_t mask = 1, mask2 = 0xFFFFFFFFL; (0!=(entityVersion & mask2)); mask<<=1, mask2<<=1) { - if (0 == (entityVersion & mask)) - continue; + if (0 == (entityVersion & mask)) { + continue; + } nsIStringBundle* entities = GetVersionBundleInstance(entityVersion & mask); NS_ASSERTION(entities, "Cannot get the property file"); - if (!entities) - continue; + if (!entities) { + continue; + } - nsresult rv = entities->GetStringFromName(key.get(), - getter_Copies(value)); + nsresult rv = entities->GetStringFromName(key.get(), getter_Copies(value)); if (NS_SUCCEEDED(rv)) { entity = value.get(); break; @@ -225,15 +162,12 @@ nsEntityConverter::ConvertToEntities(const char16_t *inString, uint32_t entityVe } if (entity) { outString.Append(entity); - } - else { + } else { outString.Append(&inString[i], 1); } } *_retval = ToNewUnicode(outString); - if (!*_retval) - return NS_ERROR_OUT_OF_MEMORY; return NS_OK; } diff --git a/intl/unicharutil/nsEntityConverter.h b/intl/unicharutil/nsEntityConverter.h index f033d961dfb1..cb78d9bfe789 100644 --- a/intl/unicharutil/nsEntityConverter.h +++ b/intl/unicharutil/nsEntityConverter.h @@ -10,59 +10,40 @@ #include "nsIStringBundle.h" #include "nsCOMPtr.h" -#define kVERSION_STRING_LEN 128 - -class nsEntityVersionList -{ -public: - nsEntityVersionList() {} - - uint32_t mVersion; - char16_t mEntityListName[kVERSION_STRING_LEN+1]; - nsCOMPtr mEntities; -}; - class nsEntityConverter: public nsIEntityConverter { public: - - // - // implementation methods - // - nsEntityConverter(); + // + // implementation methods + // + nsEntityConverter(); - // - // nsISupports - // - NS_DECL_ISUPPORTS + // + // nsISupports + // + NS_DECL_ISUPPORTS - // - // nsIEntityConverter - // - NS_IMETHOD ConvertUTF32ToEntity(uint32_t character, uint32_t entityVersion, char **_retval) override; - NS_IMETHOD ConvertToEntity(char16_t character, uint32_t entityVersion, char **_retval) override; - - NS_IMETHOD ConvertToEntities(const char16_t *inString, uint32_t entityVersion, char16_t **_retval) override; + NS_IMETHOD ConvertUTF32ToEntity(uint32_t character, uint32_t entityVersion, char **_retval) override; + NS_IMETHOD ConvertToEntity(char16_t character, uint32_t entityVersion, char **_retval) override; + NS_IMETHOD ConvertToEntities(const char16_t *inString, uint32_t entityVersion, char16_t **_retval) override; protected: + // map version number to a string bundle + nsIStringBundle* GetVersionBundleInstance(uint32_t versionNumber); - // load a version property file and generate a version list (number/name pair) - NS_IMETHOD LoadVersionPropertyFile(); + // load a string bundle file + already_AddRefed LoadEntityBundle(const char *fileName); - // map version number to version string - const char16_t* GetVersionName(uint32_t versionNumber); + const char* kHTML40LATIN1 = "html40Latin1.properties"; + const char* kHTML40SYMBOLS = "html40Symbols.properties"; + const char* kHTML40SPECIAL = "html40Special.properties"; + const char* kMATHML20 = "mathml20.properties"; + nsCOMPtr mHTML40Latin1Bundle; + nsCOMPtr mHTML40SymbolsBundle; + nsCOMPtr mHTML40SpecialBundle; + nsCOMPtr mMathML20Bundle; - // map version number to a string bundle - nsIStringBundle* GetVersionBundleInstance(uint32_t versionNumber); - - // load a string bundle file - already_AddRefed LoadEntityBundle(uint32_t version); - - - nsEntityVersionList *mVersionList; // array of version number/name pairs - uint32_t mVersionListLength; // number of supported versions - - virtual ~nsEntityConverter(); + virtual ~nsEntityConverter(); }; #endif diff --git a/intl/unicharutil/nsIEntityConverter.idl b/intl/unicharutil/nsIEntityConverter.idl index 9424a5c50dc6..865ef3dc3062 100644 --- a/intl/unicharutil/nsIEntityConverter.idl +++ b/intl/unicharutil/nsIEntityConverter.idl @@ -18,7 +18,7 @@ interface nsIEntityConverter : nsISupports const unsigned long html40Latin1 = 1; const unsigned long html40Symbols = 2; const unsigned long html40Special = 4; // excludes ", &, <, > - const unsigned long transliterate = 8; + const unsigned long transliterate = 8; // Obsolete const unsigned long mathml20 = 16; const unsigned long html32 = html40Latin1; const unsigned long html40 = html40Latin1+html40Symbols+html40Special; diff --git a/intl/unicharutil/tables/htmlEntityVersions.properties b/intl/unicharutil/tables/htmlEntityVersions.properties deleted file mode 100644 index 3690414e9335..000000000000 --- a/intl/unicharutil/tables/htmlEntityVersions.properties +++ /dev/null @@ -1,18 +0,0 @@ - -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - - -# LOCALIZATION NOTE: FILE -# This file associates internal names of entity lists to integers. -# Do not translate anything in this file - -# list supported versions number/name pair -# length should not be greater than 32 -length=5 -1=html40Latin1 -2=html40Symbols -3=html40Special -4=transliterate -5=mathml20 diff --git a/intl/unicharutil/tables/moz.build b/intl/unicharutil/tables/moz.build index b375b635c7d4..56e672850f98 100644 --- a/intl/unicharutil/tables/moz.build +++ b/intl/unicharutil/tables/moz.build @@ -5,12 +5,10 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. RESOURCE_FILES.entityTables = [ - 'htmlEntityVersions.properties', 'html40Latin1.properties', 'html40Symbols.properties', 'html40Special.properties', 'mathml20.properties', - 'transliterate.properties', ] if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt': diff --git a/intl/unicharutil/tables/transliterate.properties b/intl/unicharutil/tables/transliterate.properties deleted file mode 100644 index d725d84aa5b7..000000000000 --- a/intl/unicharutil/tables/transliterate.properties +++ /dev/null @@ -1,2893 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# -# THIS FILE IS GENERATED BY mozilla/intl/unicharutil/tools/gentransliterate.pl -# PLEASE DO NOT MODIFY THIS FILE BY HAND -# -entity.list.name=transliterate -entity.169=(c) -# -# -# Here are the windows-1252 characters from the range 0x80 - 0x9F -# -entity.8364=EUR -entity.8218=, -entity.402=f -entity.8222=" -entity.8224=+ -entity.8225=++ -entity.710=^ -entity.8240=0/00 -entity.8249=< -entity.338=OE -entity.8216=' -entity.8217=' -entity.8220=" -entity.8221=" -entity.8226=. -entity.8211=-- -entity.8212=--- -entity.732=~ -entity.8250=> -entity.339=oe -entity.8192=\u0020 -entity.8193=\u0020 -entity.8208=- -entity.8209=- -entity.8210=- -entity.8213=-- -entity.8203= -entity.8289= -entity.8290= -entity.8518=d -entity.8722=- -entity.1470=- -entity.1472=| -entity.1475=: -entity.1523=' -entity.1524=" -## -## End of hand coded section -## Below are generated from the unicode character database -## -entity.160=\u0020 -entity.170=^(a) -entity.178=^(2) -entity.179=^(3) -entity.185=^(1) -entity.186=^(o) -entity.188=1/4 -entity.189=1/2 -entity.190=3/4 -entity.192=A` -entity.193=A' -entity.194=A^ -entity.195=A~ -entity.196=A" -entity.197=A* -entity.199=C, -entity.200=E` -entity.201=E' -entity.202=E^ -entity.203=E" -entity.204=I` -entity.205=I' -entity.206=I^ -entity.207=I" -entity.209=N~ -entity.210=O` -entity.211=O' -entity.212=O^ -entity.213=O~ -entity.214=O" -entity.217=U` -entity.218=U' -entity.219=U^ -entity.220=U" -entity.221=Y' -entity.224=a` -entity.225=a' -entity.226=a^ -entity.227=a~ -entity.228=a" -entity.229=a* -entity.231=c, -entity.232=e` -entity.233=e' -entity.234=e^ -entity.235=e" -entity.236=i` -entity.237=i' -entity.238=i^ -entity.239=i" -entity.241=n~ -entity.242=o` -entity.243=o' -entity.244=o^ -entity.245=o~ -entity.246=o" -entity.249=u` -entity.250=u' -entity.251=u^ -entity.252=u" -entity.253=y' -entity.255=y" -entity.256=A- -entity.257=a- -entity.258=A( -entity.259=a( -entity.260=A; -entity.261=a; -entity.262=C' -entity.263=c' -entity.264=C^ -entity.265=c^ -entity.266=C. -entity.267=c. -entity.268=C( -entity.269=c( -entity.270=D( -entity.271=d( -entity.274=E- -entity.275=e- -entity.276=E( -entity.277=e( -entity.278=E. -entity.279=e. -entity.280=E; -entity.281=e; -entity.282=E( -entity.283=e( -entity.284=G^ -entity.285=g^ -entity.286=G( -entity.287=g( -entity.288=G. -entity.289=g. -entity.290=G, -entity.291=g, -entity.292=H^ -entity.293=h^ -entity.296=I~ -entity.297=i~ -entity.298=I- -entity.299=i- -entity.300=I( -entity.301=i( -entity.302=I; -entity.303=i; -entity.304=I. -entity.306=IJ -entity.307=ij -entity.308=J^ -entity.309=j^ -entity.310=K, -entity.311=k, -entity.313=L' -entity.314=l' -entity.315=L, -entity.316=l, -entity.317=L( -entity.318=l( -entity.319=L. -entity.320=l. -entity.323=N' -entity.324=n' -entity.325=N, -entity.326=n, -entity.327=N( -entity.328=n( -entity.329='n -entity.332=O- -entity.333=o- -entity.334=O( -entity.335=o( -entity.336=O" -entity.337=o" -entity.340=R' -entity.341=r' -entity.342=R, -entity.343=r, -entity.344=R( -entity.345=r( -entity.346=S' -entity.347=s' -entity.348=S^ -entity.349=s^ -entity.350=S, -entity.351=s, -entity.352=S( -entity.353=s( -entity.354=T, -entity.355=t, -entity.356=T( -entity.357=t( -entity.360=U~ -entity.361=u~ -entity.362=U- -entity.363=u- -entity.364=U( -entity.365=u( -entity.366=U* -entity.367=u* -entity.368=U" -entity.369=u" -entity.370=U; -entity.371=u; -entity.372=W^ -entity.373=w^ -entity.374=Y^ -entity.375=y^ -entity.376=Y" -entity.377=Z' -entity.378=z' -entity.379=Z. -entity.380=z. -entity.381=Z( -entity.382=z( -entity.383=s -entity.416=O+ -entity.417=o+ -entity.431=U+ -entity.432=u+ -entity.452=DZ( -entity.453=Dz( -entity.454=dz( -entity.455=LJ -entity.456=Lj -entity.457=lj -entity.458=NJ -entity.459=Nj -entity.460=nj -entity.461=A( -entity.462=a( -entity.463=I( -entity.464=i( -entity.465=O( -entity.466=o( -entity.467=U( -entity.468=u( -entity.469=U"- -entity.470=u"- -entity.471=U"' -entity.472=u"' -entity.473=U"( -entity.474=u"( -entity.475=U"` -entity.476=u"` -entity.478=A"- -entity.479=a"- -entity.480=A.- -entity.481=a.- -entity.482=AE- -entity.483=ae- -entity.486=G( -entity.487=g( -entity.488=K( -entity.489=k( -entity.490=O; -entity.491=o; -entity.492=O;- -entity.493=o;- -entity.494=EZH( -entity.495=ezh( -entity.496=j( -entity.497=DZ -entity.498=Dz -entity.499=dz -entity.500=G' -entity.501=g' -entity.504=N` -entity.505=n` -entity.506=A*' -entity.507=a*' -entity.508=AE' -entity.509=ae' -entity.510=O/' -entity.511=o/' -entity.512=A`` -entity.513=a`` -entity.514=A( -entity.515=a( -entity.516=E`` -entity.517=e`` -entity.518=E( -entity.519=e( -entity.520=I`` -entity.521=i`` -entity.522=I( -entity.523=i( -entity.524=O`` -entity.525=o`` -entity.526=O( -entity.527=o( -entity.528=R`` -entity.529=r`` -entity.530=R( -entity.531=r( -entity.532=U`` -entity.533=u`` -entity.534=U( -entity.535=u( -entity.536=S, -entity.537=s, -entity.538=T, -entity.539=t, -entity.542=H( -entity.543=h( -entity.550=A. -entity.551=a. -entity.552=E, -entity.553=e, -entity.554=O"- -entity.555=o"- -entity.556=O~- -entity.557=o~- -entity.558=O. -entity.559=o. -entity.560=O.- -entity.561=o.- -entity.562=Y- -entity.563=y- -entity.688=^(h) -entity.690=^(j) -entity.691=^(r) -entity.695=^(w) -entity.696=^(y) -entity.737=^(l) -entity.738=^(s) -entity.739=^(x) -entity.1632=0 -entity.1633=1 -entity.1634=2 -entity.1635=3 -entity.1636=4 -entity.1637=5 -entity.1638=6 -entity.1639=7 -entity.1640=8 -entity.1641=9 -entity.1776=0 -entity.1777=1 -entity.1778=2 -entity.1779=3 -entity.1780=4 -entity.1781=5 -entity.1782=6 -entity.1783=7 -entity.1784=8 -entity.1785=9 -entity.1984=0 -entity.1985=1 -entity.1986=2 -entity.1987=3 -entity.1988=4 -entity.1989=5 -entity.1990=6 -entity.1991=7 -entity.1992=8 -entity.1993=9 -entity.2406=0 -entity.2407=1 -entity.2408=2 -entity.2409=3 -entity.2410=4 -entity.2411=5 -entity.2412=6 -entity.2413=7 -entity.2414=8 -entity.2415=9 -entity.2534=0 -entity.2535=1 -entity.2536=2 -entity.2537=3 -entity.2538=4 -entity.2539=5 -entity.2540=6 -entity.2541=7 -entity.2542=8 -entity.2543=9 -entity.2548=[1/16] -entity.2549=[1/8] -entity.2550=[3/16] -entity.2551=[1/4] -entity.2552=[3/4] -entity.2553=[16] -entity.2662=0 -entity.2663=1 -entity.2664=2 -entity.2665=3 -entity.2666=4 -entity.2667=5 -entity.2668=6 -entity.2669=7 -entity.2670=8 -entity.2671=9 -entity.2790=0 -entity.2791=1 -entity.2792=2 -entity.2793=3 -entity.2794=4 -entity.2795=5 -entity.2796=6 -entity.2797=7 -entity.2798=8 -entity.2799=9 -entity.2918=0 -entity.2919=1 -entity.2920=2 -entity.2921=3 -entity.2922=4 -entity.2923=5 -entity.2924=6 -entity.2925=7 -entity.2926=8 -entity.2927=9 -entity.2930=[1/4] -entity.2931=[1/2] -entity.2932=[3/4] -entity.2933=[1/16] -entity.2934=[1/8] -entity.2935=[3/16] -entity.3046=0 -entity.3047=1 -entity.3048=2 -entity.3049=3 -entity.3050=4 -entity.3051=5 -entity.3052=6 -entity.3053=7 -entity.3054=8 -entity.3055=9 -entity.3056=[10] -entity.3057=[100] -entity.3058=[1000] -entity.3174=0 -entity.3175=1 -entity.3176=2 -entity.3177=3 -entity.3178=4 -entity.3179=5 -entity.3180=6 -entity.3181=7 -entity.3182=8 -entity.3183=9 -entity.3192=[0] -entity.3193=[1] -entity.3194=[2] -entity.3195=[3] -entity.3196=[1] -entity.3197=[2] -entity.3198=[3] -entity.3302=0 -entity.3303=1 -entity.3304=2 -entity.3305=3 -entity.3306=4 -entity.3307=5 -entity.3308=6 -entity.3309=7 -entity.3310=8 -entity.3311=9 -entity.3430=0 -entity.3431=1 -entity.3432=2 -entity.3433=3 -entity.3434=4 -entity.3435=5 -entity.3436=6 -entity.3437=7 -entity.3438=8 -entity.3439=9 -entity.3440=[10] -entity.3441=[100] -entity.3442=[1000] -entity.3443=[1/4] -entity.3444=[1/2] -entity.3445=[3/4] -entity.3558=0 -entity.3559=1 -entity.3560=2 -entity.3561=3 -entity.3562=4 -entity.3563=5 -entity.3564=6 -entity.3565=7 -entity.3566=8 -entity.3567=9 -entity.3664=0 -entity.3665=1 -entity.3666=2 -entity.3667=3 -entity.3668=4 -entity.3669=5 -entity.3670=6 -entity.3671=7 -entity.3672=8 -entity.3673=9 -entity.3792=0 -entity.3793=1 -entity.3794=2 -entity.3795=3 -entity.3796=4 -entity.3797=5 -entity.3798=6 -entity.3799=7 -entity.3800=8 -entity.3801=9 -entity.3872=0 -entity.3873=1 -entity.3874=2 -entity.3875=3 -entity.3876=4 -entity.3877=5 -entity.3878=6 -entity.3879=7 -entity.3880=8 -entity.3881=9 -entity.3882=[1/2] -entity.3883=[3/2] -entity.3884=[5/2] -entity.3885=[7/2] -entity.3886=[9/2] -entity.3887=[11/2] -entity.3888=[13/2] -entity.3889=[15/2] -entity.3890=[17/2] -entity.3891=[-1/2] -entity.4160=0 -entity.4161=1 -entity.4162=2 -entity.4163=3 -entity.4164=4 -entity.4165=5 -entity.4166=6 -entity.4167=7 -entity.4168=8 -entity.4169=9 -entity.4240=0 -entity.4241=1 -entity.4242=2 -entity.4243=3 -entity.4244=4 -entity.4245=5 -entity.4246=6 -entity.4247=7 -entity.4248=8 -entity.4249=9 -entity.4969=[1] -entity.4970=[2] -entity.4971=[3] -entity.4972=[4] -entity.4973=[5] -entity.4974=[6] -entity.4975=[7] -entity.4976=[8] -entity.4977=[9] -entity.4978=[10] -entity.4979=[20] -entity.4980=[30] -entity.4981=[40] -entity.4982=[50] -entity.4983=[60] -entity.4984=[70] -entity.4985=[80] -entity.4986=[90] -entity.4987=[100] -entity.4988=[10000] -entity.5870=[17] -entity.5871=[18] -entity.5872=[19] -entity.6112=0 -entity.6113=1 -entity.6114=2 -entity.6115=3 -entity.6116=4 -entity.6117=5 -entity.6118=6 -entity.6119=7 -entity.6120=8 -entity.6121=9 -entity.6128=[0] -entity.6129=[1] -entity.6130=[2] -entity.6131=[3] -entity.6132=[4] -entity.6133=[5] -entity.6134=[6] -entity.6135=[7] -entity.6136=[8] -entity.6137=[9] -entity.6160=0 -entity.6161=1 -entity.6162=2 -entity.6163=3 -entity.6164=4 -entity.6165=5 -entity.6166=6 -entity.6167=7 -entity.6168=8 -entity.6169=9 -entity.6470=0 -entity.6471=1 -entity.6472=2 -entity.6473=3 -entity.6474=4 -entity.6475=5 -entity.6476=6 -entity.6477=7 -entity.6478=8 -entity.6479=9 -entity.6608=0 -entity.6609=1 -entity.6610=2 -entity.6611=3 -entity.6612=4 -entity.6613=5 -entity.6614=6 -entity.6615=7 -entity.6616=8 -entity.6617=9 -entity.6618=[1] -entity.6784=0 -entity.6785=1 -entity.6786=2 -entity.6787=3 -entity.6788=4 -entity.6789=5 -entity.6790=6 -entity.6791=7 -entity.6792=8 -entity.6793=9 -entity.6800=0 -entity.6801=1 -entity.6802=2 -entity.6803=3 -entity.6804=4 -entity.6805=5 -entity.6806=6 -entity.6807=7 -entity.6808=8 -entity.6809=9 -entity.6992=0 -entity.6993=1 -entity.6994=2 -entity.6995=3 -entity.6996=4 -entity.6997=5 -entity.6998=6 -entity.6999=7 -entity.7000=8 -entity.7001=9 -entity.7088=0 -entity.7089=1 -entity.7090=2 -entity.7091=3 -entity.7092=4 -entity.7093=5 -entity.7094=6 -entity.7095=7 -entity.7096=8 -entity.7097=9 -entity.7232=0 -entity.7233=1 -entity.7234=2 -entity.7235=3 -entity.7236=4 -entity.7237=5 -entity.7238=6 -entity.7239=7 -entity.7240=8 -entity.7241=9 -entity.7248=0 -entity.7249=1 -entity.7250=2 -entity.7251=3 -entity.7252=4 -entity.7253=5 -entity.7254=6 -entity.7255=7 -entity.7256=8 -entity.7257=9 -entity.7468=^(A) -entity.7470=^(B) -entity.7472=^(D) -entity.7473=^(E) -entity.7475=^(G) -entity.7476=^(H) -entity.7477=^(I) -entity.7478=^(J) -entity.7479=^(K) -entity.7480=^(L) -entity.7481=^(M) -entity.7482=^(N) -entity.7484=^(O) -entity.7486=^(P) -entity.7487=^(R) -entity.7488=^(T) -entity.7489=^(U) -entity.7490=^(W) -entity.7491=^(a) -entity.7495=^(b) -entity.7496=^(d) -entity.7497=^(e) -entity.7501=^(g) -entity.7503=^(k) -entity.7504=^(m) -entity.7506=^(o) -entity.7510=^(p) -entity.7511=^(t) -entity.7512=^(u) -entity.7515=^(v) -entity.7522=v(i) -entity.7523=v(r) -entity.7524=v(u) -entity.7525=v(v) -entity.7580=^(c) -entity.7584=^(f) -entity.7611=^(z) -entity.7680=A* -entity.7681=a* -entity.7682=B. -entity.7683=b. -entity.7684=B. -entity.7685=b. -entity.7686=B_ -entity.7687=b_ -entity.7688=C,' -entity.7689=c,' -entity.7690=D. -entity.7691=d. -entity.7692=D. -entity.7693=d. -entity.7694=D_ -entity.7695=d_ -entity.7696=D, -entity.7697=d, -entity.7698=D^ -entity.7699=d^ -entity.7700=E-` -entity.7701=e-` -entity.7702=E-' -entity.7703=e-' -entity.7704=E^ -entity.7705=e^ -entity.7706=E~ -entity.7707=e~ -entity.7708=E,( -entity.7709=e,( -entity.7710=F. -entity.7711=f. -entity.7712=G- -entity.7713=g- -entity.7714=H. -entity.7715=h. -entity.7716=H. -entity.7717=h. -entity.7718=H" -entity.7719=h" -entity.7720=H, -entity.7721=h, -entity.7722=H( -entity.7723=h( -entity.7724=I~ -entity.7725=i~ -entity.7726=I"' -entity.7727=i"' -entity.7728=K' -entity.7729=k' -entity.7730=K. -entity.7731=k. -entity.7732=K_ -entity.7733=k_ -entity.7734=L. -entity.7735=l. -entity.7736=L.- -entity.7737=l.- -entity.7738=L_ -entity.7739=l_ -entity.7740=L^ -entity.7741=l^ -entity.7742=M' -entity.7743=m' -entity.7744=M. -entity.7745=m. -entity.7746=M. -entity.7747=m. -entity.7748=N. -entity.7749=n. -entity.7750=N. -entity.7751=n. -entity.7752=N_ -entity.7753=n_ -entity.7754=N^ -entity.7755=n^ -entity.7756=O~' -entity.7757=o~' -entity.7758=O~" -entity.7759=o~" -entity.7760=O-` -entity.7761=o-` -entity.7762=O-' -entity.7763=o-' -entity.7764=P' -entity.7765=p' -entity.7766=P. -entity.7767=p. -entity.7768=R. -entity.7769=r. -entity.7770=R. -entity.7771=r. -entity.7772=R.- -entity.7773=r.- -entity.7774=R_ -entity.7775=r_ -entity.7776=S. -entity.7777=s. -entity.7778=S. -entity.7779=s. -entity.7780=S'. -entity.7781=s'. -entity.7782=S(. -entity.7783=s(. -entity.7784=S.. -entity.7785=s.. -entity.7786=T. -entity.7787=t. -entity.7788=T. -entity.7789=t. -entity.7790=T_ -entity.7791=t_ -entity.7792=T^ -entity.7793=t^ -entity.7794=U" -entity.7795=u" -entity.7796=U~ -entity.7797=u~ -entity.7798=U^ -entity.7799=u^ -entity.7800=U~' -entity.7801=u~' -entity.7802=U-" -entity.7803=u-" -entity.7804=V~ -entity.7805=v~ -entity.7806=V. -entity.7807=v. -entity.7808=W` -entity.7809=w` -entity.7810=W' -entity.7811=w' -entity.7812=W" -entity.7813=w" -entity.7814=W. -entity.7815=w. -entity.7816=W. -entity.7817=w. -entity.7818=X. -entity.7819=x. -entity.7820=X" -entity.7821=x" -entity.7822=Y. -entity.7823=y. -entity.7824=Z^ -entity.7825=z^ -entity.7826=Z. -entity.7827=z. -entity.7828=Z_ -entity.7829=z_ -entity.7830=h_ -entity.7831=t" -entity.7832=w* -entity.7833=y* -entity.7834=a* -entity.7840=A. -entity.7841=a. -entity.7842=A? -entity.7843=a? -entity.7844=A^' -entity.7845=a^' -entity.7846=A^` -entity.7847=a^` -entity.7848=A^? -entity.7849=a^? -entity.7850=A^~ -entity.7851=a^~ -entity.7852=A^. -entity.7853=a^. -entity.7854=A(' -entity.7855=a(' -entity.7856=A(` -entity.7857=a(` -entity.7858=A(? -entity.7859=a(? -entity.7860=A(~ -entity.7861=a(~ -entity.7862=A(. -entity.7863=a(. -entity.7864=E. -entity.7865=e. -entity.7866=E? -entity.7867=e? -entity.7868=E~ -entity.7869=e~ -entity.7870=E^' -entity.7871=e^' -entity.7872=E^` -entity.7873=e^` -entity.7874=E^? -entity.7875=e^? -entity.7876=E^~ -entity.7877=e^~ -entity.7878=E^. -entity.7879=e^. -entity.7880=I? -entity.7881=i? -entity.7882=I. -entity.7883=i. -entity.7884=O. -entity.7885=o. -entity.7886=O? -entity.7887=o? -entity.7888=O^' -entity.7889=o^' -entity.7890=O^` -entity.7891=o^` -entity.7892=O^? -entity.7893=o^? -entity.7894=O^~ -entity.7895=o^~ -entity.7896=O^. -entity.7897=o^. -entity.7898=O+' -entity.7899=o+' -entity.7900=O+` -entity.7901=o+` -entity.7902=O+? -entity.7903=o+? -entity.7904=O+~ -entity.7905=o+~ -entity.7906=O+. -entity.7907=o+. -entity.7908=U. -entity.7909=u. -entity.7910=U? -entity.7911=u? -entity.7912=U+' -entity.7913=u+' -entity.7914=U+` -entity.7915=u+` -entity.7916=U+? -entity.7917=u+? -entity.7918=U+~ -entity.7919=u+~ -entity.7920=U+. -entity.7921=u+. -entity.7922=Y` -entity.7923=y` -entity.7924=Y. -entity.7925=y. -entity.7926=Y? -entity.7927=y? -entity.7928=Y~ -entity.7929=y~ -entity.8194=\u0020 -entity.8195=\u0020 -entity.8196=\u0020 -entity.8197=\u0020 -entity.8198=\u0020 -entity.8199=\u0020 -entity.8200=\u0020 -entity.8201=\u0020 -entity.8202=\u0020 -entity.8228=. -entity.8229=.. -entity.8230=... -entity.8239=\u0020 -entity.8252=!! -entity.8263=?? -entity.8264=?! -entity.8265=!? -entity.8287=\u0020 -entity.8304=^(0) -entity.8305=^(i) -entity.8308=^(4) -entity.8309=^(5) -entity.8310=^(6) -entity.8311=^(7) -entity.8312=^(8) -entity.8313=^(9) -entity.8314=^(+) -entity.8316=^(=) -entity.8317=^(() -entity.8318=^()) -entity.8319=^(n) -entity.8320=v(0) -entity.8321=v(1) -entity.8322=v(2) -entity.8323=v(3) -entity.8324=v(4) -entity.8325=v(5) -entity.8326=v(6) -entity.8327=v(7) -entity.8328=v(8) -entity.8329=v(9) -entity.8330=v(+) -entity.8332=v(=) -entity.8333=v(() -entity.8334=v()) -entity.8336=v(a) -entity.8337=v(e) -entity.8338=v(o) -entity.8339=v(x) -entity.8340=schwa -entity.8341=v(h) -entity.8342=v(k) -entity.8343=v(l) -entity.8344=v(m) -entity.8345=v(n) -entity.8346=v(p) -entity.8347=v(s) -entity.8348=v(t) -entity.8360=Rs -entity.8448=a/c -entity.8449=a/s -entity.8450=C -entity.8453=c/o -entity.8454=c/u -entity.8458=g -entity.8459=H -entity.8460=H -entity.8461=H -entity.8462=h -entity.8464=I -entity.8465=I -entity.8466=L -entity.8467=l -entity.8469=N -entity.8470=No -entity.8473=P -entity.8474=Q -entity.8475=R -entity.8476=R -entity.8477=R -entity.8480=^(SM) -entity.8481=TEL -entity.8482=^(TM) -entity.8484=Z -entity.8488=Z -entity.8492=B -entity.8493=C -entity.8495=e -entity.8496=E -entity.8497=F -entity.8499=M -entity.8500=o -entity.8505=i -entity.8507=FAX -entity.8517=D -entity.8518=d -entity.8519=e -entity.8520=i -entity.8521=j -entity.8528=1/7 -entity.8529=1/9 -entity.8530=1/10 -entity.8531=1/3 -entity.8532=2/3 -entity.8533=1/5 -entity.8534=2/5 -entity.8535=3/5 -entity.8536=4/5 -entity.8537=1/6 -entity.8538=5/6 -entity.8539=1/8 -entity.8540=3/8 -entity.8541=5/8 -entity.8542=7/8 -entity.8543=1/ -entity.8544=I -entity.8545=II -entity.8546=III -entity.8547=IV -entity.8548=V -entity.8549=VI -entity.8550=VII -entity.8551=VIII -entity.8552=IX -entity.8553=X -entity.8554=XI -entity.8555=XII -entity.8556=L -entity.8557=C -entity.8558=D -entity.8559=M -entity.8560=i -entity.8561=ii -entity.8562=iii -entity.8563=iv -entity.8564=v -entity.8565=vi -entity.8566=vii -entity.8567=viii -entity.8568=ix -entity.8569=x -entity.8570=xi -entity.8571=xii -entity.8572=l -entity.8573=c -entity.8574=d -entity.8575=m -entity.8576=[1000] -entity.8577=[5000] -entity.8578=[10000] -entity.8581=[6] -entity.8582=[50] -entity.8583=[50000] -entity.8584=[100000] -entity.8585=0/3 -entity.9312=(1) -entity.9313=(2) -entity.9314=(3) -entity.9315=(4) -entity.9316=(5) -entity.9317=(6) -entity.9318=(7) -entity.9319=(8) -entity.9320=(9) -entity.9321=(10) -entity.9322=(11) -entity.9323=(12) -entity.9324=(13) -entity.9325=(14) -entity.9326=(15) -entity.9327=(16) -entity.9328=(17) -entity.9329=(18) -entity.9330=(19) -entity.9331=(20) -entity.9332=(1) -entity.9333=(2) -entity.9334=(3) -entity.9335=(4) -entity.9336=(5) -entity.9337=(6) -entity.9338=(7) -entity.9339=(8) -entity.9340=(9) -entity.9341=(10) -entity.9342=(11) -entity.9343=(12) -entity.9344=(13) -entity.9345=(14) -entity.9346=(15) -entity.9347=(16) -entity.9348=(17) -entity.9349=(18) -entity.9350=(19) -entity.9351=(20) -entity.9352=1. -entity.9353=2. -entity.9354=3. -entity.9355=4. -entity.9356=5. -entity.9357=6. -entity.9358=7. -entity.9359=8. -entity.9360=9. -entity.9361=10. -entity.9362=11. -entity.9363=12. -entity.9364=13. -entity.9365=14. -entity.9366=15. -entity.9367=16. -entity.9368=17. -entity.9369=18. -entity.9370=19. -entity.9371=20. -entity.9372=(a) -entity.9373=(b) -entity.9374=(c) -entity.9375=(d) -entity.9376=(e) -entity.9377=(f) -entity.9378=(g) -entity.9379=(h) -entity.9380=(i) -entity.9381=(j) -entity.9382=(k) -entity.9383=(l) -entity.9384=(m) -entity.9385=(n) -entity.9386=(o) -entity.9387=(p) -entity.9388=(q) -entity.9389=(r) -entity.9390=(s) -entity.9391=(t) -entity.9392=(u) -entity.9393=(v) -entity.9394=(w) -entity.9395=(x) -entity.9396=(y) -entity.9397=(z) -entity.9398=(A) -entity.9399=(B) -entity.9400=(C) -entity.9401=(D) -entity.9402=(E) -entity.9403=(F) -entity.9404=(G) -entity.9405=(H) -entity.9406=(I) -entity.9407=(J) -entity.9408=(K) -entity.9409=(L) -entity.9410=(M) -entity.9411=(N) -entity.9412=(O) -entity.9413=(P) -entity.9414=(Q) -entity.9415=(R) -entity.9416=(S) -entity.9417=(T) -entity.9418=(U) -entity.9419=(V) -entity.9420=(W) -entity.9421=(X) -entity.9422=(Y) -entity.9423=(Z) -entity.9424=(a) -entity.9425=(b) -entity.9426=(c) -entity.9427=(d) -entity.9428=(e) -entity.9429=(f) -entity.9430=(g) -entity.9431=(h) -entity.9432=(i) -entity.9433=(j) -entity.9434=(k) -entity.9435=(l) -entity.9436=(m) -entity.9437=(n) -entity.9438=(o) -entity.9439=(p) -entity.9440=(q) -entity.9441=(r) -entity.9442=(s) -entity.9443=(t) -entity.9444=(u) -entity.9445=(v) -entity.9446=(w) -entity.9447=(x) -entity.9448=(y) -entity.9449=(z) -entity.9450=(0) -entity.9451=(11) -entity.9452=(12) -entity.9453=(13) -entity.9454=(14) -entity.9455=(15) -entity.9456=(16) -entity.9457=(17) -entity.9458=(18) -entity.9459=(19) -entity.9460=(20) -entity.9461=(1) -entity.9462=(2) -entity.9463=(3) -entity.9464=(4) -entity.9465=(5) -entity.9466=(6) -entity.9467=(7) -entity.9468=(8) -entity.9469=(9) -entity.9470=(10) -entity.9471=(0) -entity.10102=(1) -entity.10103=(2) -entity.10104=(3) -entity.10105=(4) -entity.10106=(5) -entity.10107=(6) -entity.10108=(7) -entity.10109=(8) -entity.10110=(9) -entity.10111=(10) -entity.10112=(1) -entity.10113=(2) -entity.10114=(3) -entity.10115=(4) -entity.10116=(5) -entity.10117=(6) -entity.10118=(7) -entity.10119=(8) -entity.10120=(9) -entity.10121=(10) -entity.10122=(1) -entity.10123=(2) -entity.10124=(3) -entity.10125=(4) -entity.10126=(5) -entity.10127=(6) -entity.10128=(7) -entity.10129=(8) -entity.10130=(9) -entity.10131=(10) -entity.10868=::= -entity.10869=== -entity.10870==== -entity.11388=v(j) -entity.11389=^(V) -entity.11517=[1/2] -entity.12288=\u0020 -entity.12295=[0] -entity.12321=[1] -entity.12322=[2] -entity.12323=[3] -entity.12324=[4] -entity.12325=[5] -entity.12326=[6] -entity.12327=[7] -entity.12328=[8] -entity.12329=[9] -entity.12872=(10) -entity.12873=(20) -entity.12874=(30) -entity.12875=(40) -entity.12876=(50) -entity.12877=(60) -entity.12878=(70) -entity.12879=(80) -entity.12881=(21) -entity.12882=(22) -entity.12883=(23) -entity.12884=(24) -entity.12885=(25) -entity.12886=(26) -entity.12887=(27) -entity.12888=(28) -entity.12889=(29) -entity.12890=(30) -entity.12891=(31) -entity.12892=(32) -entity.12893=(33) -entity.12894=(34) -entity.12895=(35) -entity.12977=(36) -entity.12978=(37) -entity.12979=(38) -entity.12980=(39) -entity.12981=(40) -entity.12982=(41) -entity.12983=(42) -entity.12984=(43) -entity.12985=(44) -entity.12986=(45) -entity.12987=(46) -entity.12988=(47) -entity.12989=(48) -entity.12990=(49) -entity.12991=(50) -entity.42528=0 -entity.42529=1 -entity.42530=2 -entity.42531=3 -entity.42532=4 -entity.42533=5 -entity.42534=6 -entity.42535=7 -entity.42536=8 -entity.42537=9 -entity.42726=[1] -entity.42727=[2] -entity.42728=[3] -entity.42729=[4] -entity.42730=[5] -entity.42731=[6] -entity.42732=[7] -entity.42733=[8] -entity.42734=[9] -entity.42735=[0] -entity.43056=[1/4] -entity.43057=[1/2] -entity.43058=[3/4] -entity.43059=[1/16] -entity.43060=[1/8] -entity.43061=[3/16] -entity.43216=0 -entity.43217=1 -entity.43218=2 -entity.43219=3 -entity.43220=4 -entity.43221=5 -entity.43222=6 -entity.43223=7 -entity.43224=8 -entity.43225=9 -entity.43264=0 -entity.43265=1 -entity.43266=2 -entity.43267=3 -entity.43268=4 -entity.43269=5 -entity.43270=6 -entity.43271=7 -entity.43272=8 -entity.43273=9 -entity.43472=0 -entity.43473=1 -entity.43474=2 -entity.43475=3 -entity.43476=4 -entity.43477=5 -entity.43478=6 -entity.43479=7 -entity.43480=8 -entity.43481=9 -entity.43504=0 -entity.43505=1 -entity.43506=2 -entity.43507=3 -entity.43508=4 -entity.43509=5 -entity.43510=6 -entity.43511=7 -entity.43512=8 -entity.43513=9 -entity.43600=0 -entity.43601=1 -entity.43602=2 -entity.43603=3 -entity.43604=4 -entity.43605=5 -entity.43606=6 -entity.43607=7 -entity.43608=8 -entity.43609=9 -entity.44016=0 -entity.44017=1 -entity.44018=2 -entity.44019=3 -entity.44020=4 -entity.44021=5 -entity.44022=6 -entity.44023=7 -entity.44024=8 -entity.44025=9 -entity.64256=ff -entity.64257=fi -entity.64258=fl -entity.64259=ffi -entity.64260=ffl -entity.64262=st -entity.64297=+ -entity.65101=_ -entity.65102=_ -entity.65103=_ -entity.65104=, -entity.65106=. -entity.65108=; -entity.65109=: -entity.65110=? -entity.65111=! -entity.65113=( -entity.65114=) -entity.65115={ -entity.65116=} -entity.65119=# -entity.65120=& -entity.65121=* -entity.65122=+ -entity.65123=- -entity.65124=< -entity.65125=> -entity.65126== -entity.65128=\u005C -entity.65129=$ -entity.65130=% -entity.65131=@ -entity.65281=! -entity.65282=" -entity.65283=# -entity.65284=$ -entity.65285=% -entity.65286=& -entity.65287=' -entity.65288=( -entity.65289=) -entity.65290=* -entity.65291=+ -entity.65292=, -entity.65293=- -entity.65294=. -entity.65295=/ -entity.65296=0 -entity.65297=1 -entity.65298=2 -entity.65299=3 -entity.65300=4 -entity.65301=5 -entity.65302=6 -entity.65303=7 -entity.65304=8 -entity.65305=9 -entity.65306=: -entity.65307=; -entity.65308=< -entity.65309== -entity.65310=> -entity.65311=? -entity.65312=@ -entity.65313=A -entity.65314=B -entity.65315=C -entity.65316=D -entity.65317=E -entity.65318=F -entity.65319=G -entity.65320=H -entity.65321=I -entity.65322=J -entity.65323=K -entity.65324=L -entity.65325=M -entity.65326=N -entity.65327=O -entity.65328=P -entity.65329=Q -entity.65330=R -entity.65331=S -entity.65332=T -entity.65333=U -entity.65334=V -entity.65335=W -entity.65336=X -entity.65337=Y -entity.65338=Z -entity.65339=[ -entity.65340=\u005C -entity.65341=] -entity.65342=^ -entity.65343=_ -entity.65344=` -entity.65345=a -entity.65346=b -entity.65347=c -entity.65348=d -entity.65349=e -entity.65350=f -entity.65351=g -entity.65352=h -entity.65353=i -entity.65354=j -entity.65355=k -entity.65356=l -entity.65357=m -entity.65358=n -entity.65359=o -entity.65360=p -entity.65361=q -entity.65362=r -entity.65363=s -entity.65364=t -entity.65365=u -entity.65366=v -entity.65367=w -entity.65368=x -entity.65369=y -entity.65370=z -entity.65371={ -entity.65372=| -entity.65373=} -entity.65374=~ -entity.65799=[1] -entity.65800=[2] -entity.65801=[3] -entity.65802=[4] -entity.65803=[5] -entity.65804=[6] -entity.65805=[7] -entity.65806=[8] -entity.65807=[9] -entity.65808=[10] -entity.65809=[20] -entity.65810=[30] -entity.65811=[40] -entity.65812=[50] -entity.65813=[60] -entity.65814=[70] -entity.65815=[80] -entity.65816=[90] -entity.65817=[100] -entity.65818=[200] -entity.65819=[300] -entity.65820=[400] -entity.65821=[500] -entity.65822=[600] -entity.65823=[700] -entity.65824=[800] -entity.65825=[900] -entity.65826=[1000] -entity.65827=[2000] -entity.65828=[3000] -entity.65829=[4000] -entity.65830=[5000] -entity.65831=[6000] -entity.65832=[7000] -entity.65833=[8000] -entity.65834=[9000] -entity.65835=[10000] -entity.65836=[20000] -entity.65837=[30000] -entity.65838=[40000] -entity.65839=[50000] -entity.65840=[60000] -entity.65841=[70000] -entity.65842=[80000] -entity.65843=[90000] -entity.65856=[1/4] -entity.65857=[1/2] -entity.65858=[1] -entity.65859=[5] -entity.65860=[50] -entity.65861=[500] -entity.65862=[5000] -entity.65863=[50000] -entity.65864=[5] -entity.65865=[10] -entity.65866=[50] -entity.65867=[100] -entity.65868=[500] -entity.65869=[1000] -entity.65870=[5000] -entity.65871=[5] -entity.65872=[10] -entity.65873=[50] -entity.65874=[100] -entity.65875=[500] -entity.65876=[1000] -entity.65877=[10000] -entity.65878=[50000] -entity.65879=[10] -entity.65880=[1] -entity.65881=[1] -entity.65882=[1] -entity.65883=[2] -entity.65884=[2] -entity.65885=[2] -entity.65886=[2] -entity.65887=[5] -entity.65888=[10] -entity.65889=[10] -entity.65890=[10] -entity.65891=[10] -entity.65892=[10] -entity.65893=[30] -entity.65894=[50] -entity.65895=[50] -entity.65896=[50] -entity.65897=[50] -entity.65898=[100] -entity.65899=[300] -entity.65900=[500] -entity.65901=[500] -entity.65902=[500] -entity.65903=[500] -entity.65904=[500] -entity.65905=[1000] -entity.65906=[5000] -entity.65907=[5] -entity.65908=[50] -entity.65909=[1/2] -entity.65910=[1/2] -entity.65911=[2/3] -entity.65912=[3/4] -entity.65930=[0] -entity.65931=[1/4] -entity.66273=[1] -entity.66274=[2] -entity.66275=[3] -entity.66276=[4] -entity.66277=[5] -entity.66278=[6] -entity.66279=[7] -entity.66280=[8] -entity.66281=[9] -entity.66282=[10] -entity.66283=[20] -entity.66284=[30] -entity.66285=[40] -entity.66286=[50] -entity.66287=[60] -entity.66288=[70] -entity.66289=[80] -entity.66290=[90] -entity.66291=[100] -entity.66292=[200] -entity.66293=[300] -entity.66294=[400] -entity.66295=[500] -entity.66296=[600] -entity.66297=[700] -entity.66298=[800] -entity.66299=[900] -entity.66336=[1] -entity.66337=[5] -entity.66338=[10] -entity.66339=[50] -entity.66369=[90] -entity.66378=[900] -entity.66513=[1] -entity.66514=[2] -entity.66515=[10] -entity.66516=[20] -entity.66517=[100] -entity.66720=0 -entity.66721=1 -entity.66722=2 -entity.66723=3 -entity.66724=4 -entity.66725=5 -entity.66726=6 -entity.66727=7 -entity.66728=8 -entity.66729=9 -entity.67672=[1] -entity.67673=[2] -entity.67674=[3] -entity.67675=[10] -entity.67676=[20] -entity.67677=[100] -entity.67678=[1000] -entity.67679=[10000] -entity.67705=[1] -entity.67706=[2] -entity.67707=[3] -entity.67708=[4] -entity.67709=[5] -entity.67710=[10] -entity.67711=[20] -entity.67751=[1] -entity.67752=[2] -entity.67753=[3] -entity.67754=[4] -entity.67755=[4] -entity.67756=[5] -entity.67757=[10] -entity.67758=[20] -entity.67759=[100] -entity.67862=[1] -entity.67863=[10] -entity.67864=[20] -entity.67865=[100] -entity.67866=[2] -entity.67867=[3] -entity.68160=[1] -entity.68161=[2] -entity.68162=[3] -entity.68163=[4] -entity.68164=[10] -entity.68165=[20] -entity.68166=[100] -entity.68167=[1000] -entity.68221=[1] -entity.68222=[50] -entity.68253=[1] -entity.68254=[10] -entity.68255=[20] -entity.68331=[1] -entity.68332=[5] -entity.68333=[10] -entity.68334=[20] -entity.68335=[100] -entity.68440=[1] -entity.68441=[2] -entity.68442=[3] -entity.68443=[4] -entity.68444=[10] -entity.68445=[20] -entity.68446=[100] -entity.68447=[1000] -entity.68472=[1] -entity.68473=[2] -entity.68474=[3] -entity.68475=[4] -entity.68476=[10] -entity.68477=[20] -entity.68478=[100] -entity.68479=[1000] -entity.68521=[1] -entity.68522=[2] -entity.68523=[3] -entity.68524=[4] -entity.68525=[10] -entity.68526=[20] -entity.68527=[100] -entity.69216=[1] -entity.69217=[2] -entity.69218=[3] -entity.69219=[4] -entity.69220=[5] -entity.69221=[6] -entity.69222=[7] -entity.69223=[8] -entity.69224=[9] -entity.69225=[10] -entity.69226=[20] -entity.69227=[30] -entity.69228=[40] -entity.69229=[50] -entity.69230=[60] -entity.69231=[70] -entity.69232=[80] -entity.69233=[90] -entity.69234=[100] -entity.69235=[200] -entity.69236=[300] -entity.69237=[400] -entity.69238=[500] -entity.69239=[600] -entity.69240=[700] -entity.69241=[800] -entity.69242=[900] -entity.69243=[1/2] -entity.69244=[1/4] -entity.69245=[1/3] -entity.69246=[2/3] -entity.69714=[1] -entity.69715=[2] -entity.69716=[3] -entity.69717=[4] -entity.69718=[5] -entity.69719=[6] -entity.69720=[7] -entity.69721=[8] -entity.69722=[9] -entity.69723=[10] -entity.69724=[20] -entity.69725=[30] -entity.69726=[40] -entity.69727=[50] -entity.69728=[60] -entity.69729=[70] -entity.69730=[80] -entity.69731=[90] -entity.69732=[100] -entity.69733=[1000] -entity.69734=0 -entity.69735=1 -entity.69736=2 -entity.69737=3 -entity.69738=4 -entity.69739=5 -entity.69740=6 -entity.69741=7 -entity.69742=8 -entity.69743=9 -entity.69872=0 -entity.69873=1 -entity.69874=2 -entity.69875=3 -entity.69876=4 -entity.69877=5 -entity.69878=6 -entity.69879=7 -entity.69880=8 -entity.69881=9 -entity.69942=0 -entity.69943=1 -entity.69944=2 -entity.69945=3 -entity.69946=4 -entity.69947=5 -entity.69948=6 -entity.69949=7 -entity.69950=8 -entity.69951=9 -entity.70096=0 -entity.70097=1 -entity.70098=2 -entity.70099=3 -entity.70100=4 -entity.70101=5 -entity.70102=6 -entity.70103=7 -entity.70104=8 -entity.70105=9 -entity.70113=[1] -entity.70114=[2] -entity.70115=[3] -entity.70116=[4] -entity.70117=[5] -entity.70118=[6] -entity.70119=[7] -entity.70120=[8] -entity.70121=[9] -entity.70122=[10] -entity.70123=[20] -entity.70124=[30] -entity.70125=[40] -entity.70126=[50] -entity.70127=[60] -entity.70128=[70] -entity.70129=[80] -entity.70130=[90] -entity.70131=[100] -entity.70132=[1000] -entity.70384=0 -entity.70385=1 -entity.70386=2 -entity.70387=3 -entity.70388=4 -entity.70389=5 -entity.70390=6 -entity.70391=7 -entity.70392=8 -entity.70393=9 -entity.70864=0 -entity.70865=1 -entity.70866=2 -entity.70867=3 -entity.70868=4 -entity.70869=5 -entity.70870=6 -entity.70871=7 -entity.70872=8 -entity.70873=9 -entity.71248=0 -entity.71249=1 -entity.71250=2 -entity.71251=3 -entity.71252=4 -entity.71253=5 -entity.71254=6 -entity.71255=7 -entity.71256=8 -entity.71257=9 -entity.71360=0 -entity.71361=1 -entity.71362=2 -entity.71363=3 -entity.71364=4 -entity.71365=5 -entity.71366=6 -entity.71367=7 -entity.71368=8 -entity.71369=9 -entity.71904=0 -entity.71905=1 -entity.71906=2 -entity.71907=3 -entity.71908=4 -entity.71909=5 -entity.71910=6 -entity.71911=7 -entity.71912=8 -entity.71913=9 -entity.71914=[10] -entity.71915=[20] -entity.71916=[30] -entity.71917=[40] -entity.71918=[50] -entity.71919=[60] -entity.71920=[70] -entity.71921=[80] -entity.71922=[90] -entity.74752=[2] -entity.74753=[3] -entity.74754=[4] -entity.74755=[5] -entity.74756=[6] -entity.74757=[7] -entity.74758=[8] -entity.74759=[9] -entity.74760=[3] -entity.74761=[4] -entity.74762=[5] -entity.74763=[6] -entity.74764=[7] -entity.74765=[8] -entity.74766=[9] -entity.74767=[4] -entity.74768=[5] -entity.74769=[6] -entity.74770=[7] -entity.74771=[8] -entity.74772=[9] -entity.74773=[1] -entity.74774=[2] -entity.74775=[3] -entity.74776=[4] -entity.74777=[5] -entity.74778=[6] -entity.74779=[7] -entity.74780=[8] -entity.74781=[9] -entity.74782=[1] -entity.74783=[2] -entity.74784=[3] -entity.74785=[4] -entity.74786=[5] -entity.74787=[2] -entity.74788=[3] -entity.74789=[3] -entity.74790=[4] -entity.74791=[5] -entity.74792=[6] -entity.74793=[7] -entity.74794=[8] -entity.74795=[9] -entity.74796=[1] -entity.74797=[2] -entity.74798=[3] -entity.74799=[3] -entity.74800=[4] -entity.74801=[5] -entity.74802=[216000] -entity.74803=[432000] -entity.74804=[1] -entity.74805=[2] -entity.74806=[3] -entity.74807=[3] -entity.74808=[4] -entity.74809=[5] -entity.74810=[3] -entity.74811=[3] -entity.74812=[4] -entity.74813=[4] -entity.74814=[4] -entity.74815=[4] -entity.74816=[6] -entity.74817=[7] -entity.74818=[7] -entity.74819=[7] -entity.74820=[8] -entity.74821=[8] -entity.74822=[9] -entity.74823=[9] -entity.74824=[9] -entity.74825=[9] -entity.74826=[2] -entity.74827=[3] -entity.74828=[4] -entity.74829=[5] -entity.74830=[6] -entity.74831=[1] -entity.74832=[2] -entity.74833=[3] -entity.74834=[4] -entity.74835=[4] -entity.74836=[5] -entity.74837=[5] -entity.74838=[2] -entity.74839=[3] -entity.74840=[1] -entity.74841=[2] -entity.74842=[1/3] -entity.74843=[2/3] -entity.74844=[5/6] -entity.74845=[1/3] -entity.74846=[2/3] -entity.74847=[1/8] -entity.74848=[1/4] -entity.74849=[1/6] -entity.74850=[1/4] -entity.74851=[1/4] -entity.74852=[1/2] -entity.74853=[1/3] -entity.74854=[2/3] -entity.74855=[40] -entity.74856=[50] -entity.74857=[4] -entity.74858=[5] -entity.74859=[6] -entity.74860=[7] -entity.74861=[8] -entity.74862=[9] -entity.92768=0 -entity.92769=1 -entity.92770=2 -entity.92771=3 -entity.92772=4 -entity.92773=5 -entity.92774=6 -entity.92775=7 -entity.92776=8 -entity.92777=9 -entity.93008=0 -entity.93009=1 -entity.93010=2 -entity.93011=3 -entity.93012=4 -entity.93013=5 -entity.93014=6 -entity.93015=7 -entity.93016=8 -entity.93017=9 -entity.93019=[10] -entity.93020=[100] -entity.93021=[10000] -entity.93022=[1000000] -entity.93023=[100000000] -entity.93024=[10000000000] -entity.93025=[1000000000000] -entity.119648=[1] -entity.119649=[2] -entity.119650=[3] -entity.119651=[4] -entity.119652=[5] -entity.119653=[6] -entity.119654=[7] -entity.119655=[8] -entity.119656=[9] -entity.119657=[10] -entity.119658=[20] -entity.119659=[30] -entity.119660=[40] -entity.119661=[50] -entity.119662=[60] -entity.119663=[70] -entity.119664=[80] -entity.119665=[90] -entity.119808=A -entity.119809=B -entity.119810=C -entity.119811=D -entity.119812=E -entity.119813=F -entity.119814=G -entity.119815=H -entity.119816=I -entity.119817=J -entity.119818=K -entity.119819=L -entity.119820=M -entity.119821=N -entity.119822=O -entity.119823=P -entity.119824=Q -entity.119825=R -entity.119826=S -entity.119827=T -entity.119828=U -entity.119829=V -entity.119830=W -entity.119831=X -entity.119832=Y -entity.119833=Z -entity.119834=a -entity.119835=b -entity.119836=c -entity.119837=d -entity.119838=e -entity.119839=f -entity.119840=g -entity.119841=h -entity.119842=i -entity.119843=j -entity.119844=k -entity.119845=l -entity.119846=m -entity.119847=n -entity.119848=o -entity.119849=p -entity.119850=q -entity.119851=r -entity.119852=s -entity.119853=t -entity.119854=u -entity.119855=v -entity.119856=w -entity.119857=x -entity.119858=y -entity.119859=z -entity.119860=A -entity.119861=B -entity.119862=C -entity.119863=D -entity.119864=E -entity.119865=F -entity.119866=G -entity.119867=H -entity.119868=I -entity.119869=J -entity.119870=K -entity.119871=L -entity.119872=M -entity.119873=N -entity.119874=O -entity.119875=P -entity.119876=Q -entity.119877=R -entity.119878=S -entity.119879=T -entity.119880=U -entity.119881=V -entity.119882=W -entity.119883=X -entity.119884=Y -entity.119885=Z -entity.119886=a -entity.119887=b -entity.119888=c -entity.119889=d -entity.119890=e -entity.119891=f -entity.119892=g -entity.119894=i -entity.119895=j -entity.119896=k -entity.119897=l -entity.119898=m -entity.119899=n -entity.119900=o -entity.119901=p -entity.119902=q -entity.119903=r -entity.119904=s -entity.119905=t -entity.119906=u -entity.119907=v -entity.119908=w -entity.119909=x -entity.119910=y -entity.119911=z -entity.119912=A -entity.119913=B -entity.119914=C -entity.119915=D -entity.119916=E -entity.119917=F -entity.119918=G -entity.119919=H -entity.119920=I -entity.119921=J -entity.119922=K -entity.119923=L -entity.119924=M -entity.119925=N -entity.119926=O -entity.119927=P -entity.119928=Q -entity.119929=R -entity.119930=S -entity.119931=T -entity.119932=U -entity.119933=V -entity.119934=W -entity.119935=X -entity.119936=Y -entity.119937=Z -entity.119938=a -entity.119939=b -entity.119940=c -entity.119941=d -entity.119942=e -entity.119943=f -entity.119944=g -entity.119945=h -entity.119946=i -entity.119947=j -entity.119948=k -entity.119949=l -entity.119950=m -entity.119951=n -entity.119952=o -entity.119953=p -entity.119954=q -entity.119955=r -entity.119956=s -entity.119957=t -entity.119958=u -entity.119959=v -entity.119960=w -entity.119961=x -entity.119962=y -entity.119963=z -entity.119964=A -entity.119966=C -entity.119967=D -entity.119970=G -entity.119973=J -entity.119974=K -entity.119977=N -entity.119978=O -entity.119979=P -entity.119980=Q -entity.119982=S -entity.119983=T -entity.119984=U -entity.119985=V -entity.119986=W -entity.119987=X -entity.119988=Y -entity.119989=Z -entity.119990=a -entity.119991=b -entity.119992=c -entity.119993=d -entity.119995=f -entity.119997=h -entity.119998=i -entity.119999=j -entity.120000=k -entity.120001=l -entity.120002=m -entity.120003=n -entity.120005=p -entity.120006=q -entity.120007=r -entity.120008=s -entity.120009=t -entity.120010=u -entity.120011=v -entity.120012=w -entity.120013=x -entity.120014=y -entity.120015=z -entity.120016=A -entity.120017=B -entity.120018=C -entity.120019=D -entity.120020=E -entity.120021=F -entity.120022=G -entity.120023=H -entity.120024=I -entity.120025=J -entity.120026=K -entity.120027=L -entity.120028=M -entity.120029=N -entity.120030=O -entity.120031=P -entity.120032=Q -entity.120033=R -entity.120034=S -entity.120035=T -entity.120036=U -entity.120037=V -entity.120038=W -entity.120039=X -entity.120040=Y -entity.120041=Z -entity.120042=a -entity.120043=b -entity.120044=c -entity.120045=d -entity.120046=e -entity.120047=f -entity.120048=g -entity.120049=h -entity.120050=i -entity.120051=j -entity.120052=k -entity.120053=l -entity.120054=m -entity.120055=n -entity.120056=o -entity.120057=p -entity.120058=q -entity.120059=r -entity.120060=s -entity.120061=t -entity.120062=u -entity.120063=v -entity.120064=w -entity.120065=x -entity.120066=y -entity.120067=z -entity.120068=A -entity.120069=B -entity.120071=D -entity.120072=E -entity.120073=F -entity.120074=G -entity.120077=J -entity.120078=K -entity.120079=L -entity.120080=M -entity.120081=N -entity.120082=O -entity.120083=P -entity.120084=Q -entity.120086=S -entity.120087=T -entity.120088=U -entity.120089=V -entity.120090=W -entity.120091=X -entity.120092=Y -entity.120094=a -entity.120095=b -entity.120096=c -entity.120097=d -entity.120098=e -entity.120099=f -entity.120100=g -entity.120101=h -entity.120102=i -entity.120103=j -entity.120104=k -entity.120105=l -entity.120106=m -entity.120107=n -entity.120108=o -entity.120109=p -entity.120110=q -entity.120111=r -entity.120112=s -entity.120113=t -entity.120114=u -entity.120115=v -entity.120116=w -entity.120117=x -entity.120118=y -entity.120119=z -entity.120120=A -entity.120121=B -entity.120123=D -entity.120124=E -entity.120125=F -entity.120126=G -entity.120128=I -entity.120129=J -entity.120130=K -entity.120131=L -entity.120132=M -entity.120134=O -entity.120138=S -entity.120139=T -entity.120140=U -entity.120141=V -entity.120142=W -entity.120143=X -entity.120144=Y -entity.120146=a -entity.120147=b -entity.120148=c -entity.120149=d -entity.120150=e -entity.120151=f -entity.120152=g -entity.120153=h -entity.120154=i -entity.120155=j -entity.120156=k -entity.120157=l -entity.120158=m -entity.120159=n -entity.120160=o -entity.120161=p -entity.120162=q -entity.120163=r -entity.120164=s -entity.120165=t -entity.120166=u -entity.120167=v -entity.120168=w -entity.120169=x -entity.120170=y -entity.120171=z -entity.120172=A -entity.120173=B -entity.120174=C -entity.120175=D -entity.120176=E -entity.120177=F -entity.120178=G -entity.120179=H -entity.120180=I -entity.120181=J -entity.120182=K -entity.120183=L -entity.120184=M -entity.120185=N -entity.120186=O -entity.120187=P -entity.120188=Q -entity.120189=R -entity.120190=S -entity.120191=T -entity.120192=U -entity.120193=V -entity.120194=W -entity.120195=X -entity.120196=Y -entity.120197=Z -entity.120198=a -entity.120199=b -entity.120200=c -entity.120201=d -entity.120202=e -entity.120203=f -entity.120204=g -entity.120205=h -entity.120206=i -entity.120207=j -entity.120208=k -entity.120209=l -entity.120210=m -entity.120211=n -entity.120212=o -entity.120213=p -entity.120214=q -entity.120215=r -entity.120216=s -entity.120217=t -entity.120218=u -entity.120219=v -entity.120220=w -entity.120221=x -entity.120222=y -entity.120223=z -entity.120224=A -entity.120225=B -entity.120226=C -entity.120227=D -entity.120228=E -entity.120229=F -entity.120230=G -entity.120231=H -entity.120232=I -entity.120233=J -entity.120234=K -entity.120235=L -entity.120236=M -entity.120237=N -entity.120238=O -entity.120239=P -entity.120240=Q -entity.120241=R -entity.120242=S -entity.120243=T -entity.120244=U -entity.120245=V -entity.120246=W -entity.120247=X -entity.120248=Y -entity.120249=Z -entity.120250=a -entity.120251=b -entity.120252=c -entity.120253=d -entity.120254=e -entity.120255=f -entity.120256=g -entity.120257=h -entity.120258=i -entity.120259=j -entity.120260=k -entity.120261=l -entity.120262=m -entity.120263=n -entity.120264=o -entity.120265=p -entity.120266=q -entity.120267=r -entity.120268=s -entity.120269=t -entity.120270=u -entity.120271=v -entity.120272=w -entity.120273=x -entity.120274=y -entity.120275=z -entity.120276=A -entity.120277=B -entity.120278=C -entity.120279=D -entity.120280=E -entity.120281=F -entity.120282=G -entity.120283=H -entity.120284=I -entity.120285=J -entity.120286=K -entity.120287=L -entity.120288=M -entity.120289=N -entity.120290=O -entity.120291=P -entity.120292=Q -entity.120293=R -entity.120294=S -entity.120295=T -entity.120296=U -entity.120297=V -entity.120298=W -entity.120299=X -entity.120300=Y -entity.120301=Z -entity.120302=a -entity.120303=b -entity.120304=c -entity.120305=d -entity.120306=e -entity.120307=f -entity.120308=g -entity.120309=h -entity.120310=i -entity.120311=j -entity.120312=k -entity.120313=l -entity.120314=m -entity.120315=n -entity.120316=o -entity.120317=p -entity.120318=q -entity.120319=r -entity.120320=s -entity.120321=t -entity.120322=u -entity.120323=v -entity.120324=w -entity.120325=x -entity.120326=y -entity.120327=z -entity.120328=A -entity.120329=B -entity.120330=C -entity.120331=D -entity.120332=E -entity.120333=F -entity.120334=G -entity.120335=H -entity.120336=I -entity.120337=J -entity.120338=K -entity.120339=L -entity.120340=M -entity.120341=N -entity.120342=O -entity.120343=P -entity.120344=Q -entity.120345=R -entity.120346=S -entity.120347=T -entity.120348=U -entity.120349=V -entity.120350=W -entity.120351=X -entity.120352=Y -entity.120353=Z -entity.120354=a -entity.120355=b -entity.120356=c -entity.120357=d -entity.120358=e -entity.120359=f -entity.120360=g -entity.120361=h -entity.120362=i -entity.120363=j -entity.120364=k -entity.120365=l -entity.120366=m -entity.120367=n -entity.120368=o -entity.120369=p -entity.120370=q -entity.120371=r -entity.120372=s -entity.120373=t -entity.120374=u -entity.120375=v -entity.120376=w -entity.120377=x -entity.120378=y -entity.120379=z -entity.120380=A -entity.120381=B -entity.120382=C -entity.120383=D -entity.120384=E -entity.120385=F -entity.120386=G -entity.120387=H -entity.120388=I -entity.120389=J -entity.120390=K -entity.120391=L -entity.120392=M -entity.120393=N -entity.120394=O -entity.120395=P -entity.120396=Q -entity.120397=R -entity.120398=S -entity.120399=T -entity.120400=U -entity.120401=V -entity.120402=W -entity.120403=X -entity.120404=Y -entity.120405=Z -entity.120406=a -entity.120407=b -entity.120408=c -entity.120409=d -entity.120410=e -entity.120411=f -entity.120412=g -entity.120413=h -entity.120414=i -entity.120415=j -entity.120416=k -entity.120417=l -entity.120418=m -entity.120419=n -entity.120420=o -entity.120421=p -entity.120422=q -entity.120423=r -entity.120424=s -entity.120425=t -entity.120426=u -entity.120427=v -entity.120428=w -entity.120429=x -entity.120430=y -entity.120431=z -entity.120432=A -entity.120433=B -entity.120434=C -entity.120435=D -entity.120436=E -entity.120437=F -entity.120438=G -entity.120439=H -entity.120440=I -entity.120441=J -entity.120442=K -entity.120443=L -entity.120444=M -entity.120445=N -entity.120446=O -entity.120447=P -entity.120448=Q -entity.120449=R -entity.120450=S -entity.120451=T -entity.120452=U -entity.120453=V -entity.120454=W -entity.120455=X -entity.120456=Y -entity.120457=Z -entity.120458=a -entity.120459=b -entity.120460=c -entity.120461=d -entity.120462=e -entity.120463=f -entity.120464=g -entity.120465=h -entity.120466=i -entity.120467=j -entity.120468=k -entity.120469=l -entity.120470=m -entity.120471=n -entity.120472=o -entity.120473=p -entity.120474=q -entity.120475=r -entity.120476=s -entity.120477=t -entity.120478=u -entity.120479=v -entity.120480=w -entity.120481=x -entity.120482=y -entity.120483=z -entity.120782=0 -entity.120783=1 -entity.120784=2 -entity.120785=3 -entity.120786=4 -entity.120787=5 -entity.120788=6 -entity.120789=7 -entity.120790=8 -entity.120791=9 -entity.120792=0 -entity.120793=1 -entity.120794=2 -entity.120795=3 -entity.120796=4 -entity.120797=5 -entity.120798=6 -entity.120799=7 -entity.120800=8 -entity.120801=9 -entity.120802=0 -entity.120803=1 -entity.120804=2 -entity.120805=3 -entity.120806=4 -entity.120807=5 -entity.120808=6 -entity.120809=7 -entity.120810=8 -entity.120811=9 -entity.120812=0 -entity.120813=1 -entity.120814=2 -entity.120815=3 -entity.120816=4 -entity.120817=5 -entity.120818=6 -entity.120819=7 -entity.120820=8 -entity.120821=9 -entity.120822=0 -entity.120823=1 -entity.120824=2 -entity.120825=3 -entity.120826=4 -entity.120827=5 -entity.120828=6 -entity.120829=7 -entity.120830=8 -entity.120831=9 -entity.125127=[1] -entity.125128=[2] -entity.125129=[3] -entity.125130=[4] -entity.125131=[5] -entity.125132=[6] -entity.125133=[7] -entity.125134=[8] -entity.125135=[9] -entity.127232=0. -entity.127233=0, -entity.127234=1, -entity.127235=2, -entity.127236=3, -entity.127237=4, -entity.127238=5, -entity.127239=6, -entity.127240=7, -entity.127241=8, -entity.127242=9, -entity.127243=(0) -entity.127244=(0) -entity.127248=(A) -entity.127249=(B) -entity.127250=(C) -entity.127251=(D) -entity.127252=(E) -entity.127253=(F) -entity.127254=(G) -entity.127255=(H) -entity.127256=(I) -entity.127257=(J) -entity.127258=(K) -entity.127259=(L) -entity.127260=(M) -entity.127261=(N) -entity.127262=(O) -entity.127263=(P) -entity.127264=(Q) -entity.127265=(R) -entity.127266=(S) -entity.127267=(T) -entity.127268=(U) -entity.127269=(V) -entity.127270=(W) -entity.127271=(X) -entity.127272=(Y) -entity.127273=(Z) -entity.127274=S -entity.127275=(C) -entity.127276=(R) -entity.127277=(CD) -entity.127278=(WZ) -entity.127338=^(MC) -entity.127339=^(MD) diff --git a/intl/unicharutil/tests/moz.build b/intl/unicharutil/tests/moz.build old mode 100644 new mode 100755 index 8cc74f51ad81..4a5706cf1ded --- a/intl/unicharutil/tests/moz.build +++ b/intl/unicharutil/tests/moz.build @@ -4,8 +4,6 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini'] - GeckoSimplePrograms([ 'NormalizationTest', 'UnicharSelfTest', diff --git a/intl/unicharutil/tests/unit/test_bug_427350_1.js b/intl/unicharutil/tests/unit/test_bug_427350_1.js deleted file mode 100644 index 7d0f8180a0f7..000000000000 --- a/intl/unicharutil/tests/unit/test_bug_427350_1.js +++ /dev/null @@ -1,56 +0,0 @@ -/* Tests transliteration of new characters in Unicode 5.1, 5.2, and 6.0 - */ - -const inTeluguFractions = "\u0C78\u0C79\u0C7A\u0C7B\u0C7C\u0C7D\u0C7E"; -const inMalayalamNumbers = "\u0D70\u0D71\u0D72\u0D73\u0D74\u0D75"; - -/* MYANMAR SHAN DIGIT ONE, - SUNDANESE DIGIT TWO, - LEPCHA DIGIT THREE, - OL CHIKI DIGIT FOUR, - VAI DIGIT FIVE, - SAURASHTRA DIGIT SIX - KAYAH LI DIGIT SEVEN - CHAM DIGIT EIGHT - JAVANESE DIGIT NINE - MEETEI MAYEK DIGIT ZERO */ -const inDigits = "\u1091\u1BB2\u1C43\u1C54\uA625\uA8D6\uA907\uAA58\uA9D9\uABF0"; -const inRomanNumerals = "\u2185\u2186\u2187\u2188"; -const inSuperSubscripts = "\u2C7C\u2C7D\u2095\u209C"; - -const expectedTeluguFractions = "[0][1][2][3][1][2][3]"; -const expectedMalayalamNumbers = "[10][100][1000][1/4][1/2][3/4]"; -const expectedDigits = "1234567890"; -const expectedRomanNumerals = "[6][50][50000][100000]"; -const expectedSuperSubscripts = "v(j)^(V)v(h)v(t)"; - -const EntityAfterCharsetConv = 512; -const transliterate = 8; - -const charset = "ISO-8859-1"; - -function run_test() { - var SaveAsCharset = - Components.Constructor("@mozilla.org/intl/saveascharset;1", - "nsISaveAsCharset", - "Init"); - - var converter = new SaveAsCharset(charset, - EntityAfterCharsetConv, - transliterate); - - var outTeluguFractions = converter.Convert(inTeluguFractions); - do_check_eq(outTeluguFractions, expectedTeluguFractions); - - var outMalayalamNumbers = converter.Convert(inMalayalamNumbers); - do_check_eq(outMalayalamNumbers, expectedMalayalamNumbers); - - var outDigits = converter.Convert(inDigits); - do_check_eq(outDigits, expectedDigits); - - var outRomanNumerals = converter.Convert(inRomanNumerals); - do_check_eq(outRomanNumerals, expectedRomanNumerals); - - var outSuperSubscripts = converter.Convert(inSuperSubscripts); - do_check_eq(outSuperSubscripts, expectedSuperSubscripts); -} diff --git a/intl/unicharutil/tests/unit/xpcshell.ini b/intl/unicharutil/tests/unit/xpcshell.ini old mode 100644 new mode 100755 index 622dbcfe4138..aab17cacf514 --- a/intl/unicharutil/tests/unit/xpcshell.ini +++ b/intl/unicharutil/tests/unit/xpcshell.ini @@ -2,5 +2,3 @@ head = tail = skip-if = toolkit == 'gonk' - -[test_bug_427350_1.js] diff --git a/widget/nsPrimitiveHelpers.cpp b/widget/nsPrimitiveHelpers.cpp index e141e65c7b50..543fd94fafb4 100644 --- a/widget/nsPrimitiveHelpers.cpp +++ b/widget/nsPrimitiveHelpers.cpp @@ -69,11 +69,11 @@ nsPrimitiveHelpers :: CreatePrimitiveForData ( const char* aFlavor, const void* nsCOMPtr primitive = do_CreateInstance(NS_SUPPORTS_STRING_CONTRACTID); if (primitive ) { - if (aDataLen % 2) { + if (aDataLen % 2) { nsAutoArrayPtr buffer(new char[aDataLen + 1]); if (!MOZ_LIKELY(buffer)) return; - + memcpy(buffer, aDataBuff, aDataLen); buffer[aDataLen] = 0; const char16_t* start = reinterpret_cast(buffer.get()); @@ -85,7 +85,7 @@ nsPrimitiveHelpers :: CreatePrimitiveForData ( const char* aFlavor, const void* primitive->SetData(Substring(start, start + (aDataLen / 2))); } NS_ADDREF(*aPrimitive = primitive); - } + } } } // CreatePrimitiveForData @@ -99,7 +99,7 @@ nsPrimitiveHelpers :: CreatePrimitiveForData ( const char* aFlavor, const void* // parameter does not reflect that. // void -nsPrimitiveHelpers :: CreateDataFromPrimitive ( const char* aFlavor, nsISupports* aPrimitive, +nsPrimitiveHelpers :: CreateDataFromPrimitive ( const char* aFlavor, nsISupports* aPrimitive, void** aDataBuff, uint32_t aDataLen ) { if ( !aDataBuff ) @@ -132,11 +132,11 @@ nsPrimitiveHelpers :: CreateDataFromPrimitive ( const char* aFlavor, nsISupports // // Given a unicode buffer (flavor text/unicode), this converts it to plain text using // the appropriate platform charset encoding. |inUnicodeLen| is the length of the input -// string, not the # of bytes in the buffer. The |outPlainTextData| is null terminated, +// string, not the # of bytes in the buffer. The |outPlainTextData| is null terminated, // but its length parameter, |outPlainTextLen|, does not reflect that. // nsresult -nsPrimitiveHelpers :: ConvertUnicodeToPlatformPlainText ( char16_t* inUnicode, int32_t inUnicodeLen, +nsPrimitiveHelpers :: ConvertUnicodeToPlatformPlainText ( char16_t* inUnicode, int32_t inUnicodeLen, char** outPlainTextData, int32_t* outPlainTextLen ) { if ( !outPlainTextData || !outPlainTextLen ) @@ -160,14 +160,14 @@ nsPrimitiveHelpers :: ConvertUnicodeToPlatformPlainText ( char16_t* inUnicode, i rv = converter->Init(platformCharset.get(), nsISaveAsCharset::attr_EntityAfterCharsetConv + nsISaveAsCharset::attr_FallbackQuestionMark, - nsIEntityConverter::transliterate); + 0); NS_ENSURE_SUCCESS(rv, rv); rv = converter->Convert(inUnicode, outPlainTextData); *outPlainTextLen = *outPlainTextData ? strlen(*outPlainTextData) : 0; NS_ASSERTION ( NS_SUCCEEDED(rv), "Error converting unicode to plain text" ); - + return rv; } // ConvertUnicodeToPlatformPlainText @@ -176,12 +176,12 @@ nsPrimitiveHelpers :: ConvertUnicodeToPlatformPlainText ( char16_t* inUnicode, i // ConvertPlatformPlainTextToUnicode // // Given a char buffer (flavor text/plaikn), this converts it to unicode using -// the appropriate platform charset encoding. |outUnicode| is null terminated, +// the appropriate platform charset encoding. |outUnicode| is null terminated, // but its length parameter, |outUnicodeLen|, does not reflect that. |outUnicodeLen| is // the length of the string in characters, not bytes. // nsresult -nsPrimitiveHelpers :: ConvertPlatformPlainTextToUnicode ( const char* inText, int32_t inTextLen, +nsPrimitiveHelpers :: ConvertPlatformPlainTextToUnicode ( const char* inText, int32_t inTextLen, char16_t** outUnicode, int32_t* outUnicodeLen ) { if ( !outUnicode || !outUnicodeLen ) @@ -200,14 +200,14 @@ nsPrimitiveHelpers :: ConvertPlatformPlainTextToUnicode ( const char* inText, in rv = platformCharsetService->GetCharset(kPlatformCharsetSel_PlainTextInClipboard, platformCharset); if (NS_FAILED(rv)) platformCharset.AssignLiteral("windows-1252"); - + decoder = EncodingUtils::DecoderForEncoding(platformCharset); hasConverter = true; } - + // Estimate out length and allocate the buffer based on a worst-case estimate, then do - // the conversion. + // the conversion. decoder->GetMaxLength(inText, inTextLen, outUnicodeLen); // |outUnicodeLen| is number of chars if ( *outUnicodeLen ) { *outUnicode = reinterpret_cast(moz_xmalloc((*outUnicodeLen + 1) * sizeof(char16_t))); @@ -234,20 +234,20 @@ nsPrimitiveHelpers :: ConvertPlatformPlainTextToUnicode ( const char* inText, in // NOTE: this assumes that it can use 'free' to dispose of the old buffer. // nsresult -nsLinebreakHelpers :: ConvertPlatformToDOMLinebreaks ( const char* inFlavor, void** ioData, +nsLinebreakHelpers :: ConvertPlatformToDOMLinebreaks ( const char* inFlavor, void** ioData, int32_t* ioLengthInBytes ) { NS_ASSERTION ( ioData && *ioData && ioLengthInBytes, "Bad Params"); if ( !(ioData && *ioData && ioLengthInBytes) ) return NS_ERROR_INVALID_ARG; - + nsresult retVal = NS_OK; - + if ( strcmp(inFlavor, "text/plain") == 0 ) { char* buffAsChars = reinterpret_cast(*ioData); char* oldBuffer = buffAsChars; - retVal = nsLinebreakConverter::ConvertLineBreaksInSitu ( &buffAsChars, nsLinebreakConverter::eLinebreakAny, - nsLinebreakConverter::eLinebreakContent, + retVal = nsLinebreakConverter::ConvertLineBreaksInSitu ( &buffAsChars, nsLinebreakConverter::eLinebreakAny, + nsLinebreakConverter::eLinebreakContent, *ioLengthInBytes, ioLengthInBytes ); if ( NS_SUCCEEDED(retVal) ) { if ( buffAsChars != oldBuffer ) // check if buffer was reallocated @@ -258,12 +258,12 @@ nsLinebreakHelpers :: ConvertPlatformToDOMLinebreaks ( const char* inFlavor, voi else if ( strcmp(inFlavor, "image/jpeg") == 0 ) { // I'd assume we don't want to do anything for binary data.... } - else { + else { char16_t* buffAsUnichar = reinterpret_cast(*ioData); char16_t* oldBuffer = buffAsUnichar; int32_t newLengthInChars; - retVal = nsLinebreakConverter::ConvertUnicharLineBreaksInSitu ( &buffAsUnichar, nsLinebreakConverter::eLinebreakAny, - nsLinebreakConverter::eLinebreakContent, + retVal = nsLinebreakConverter::ConvertUnicharLineBreaksInSitu ( &buffAsUnichar, nsLinebreakConverter::eLinebreakAny, + nsLinebreakConverter::eLinebreakContent, *ioLengthInBytes / sizeof(char16_t), &newLengthInChars ); if ( NS_SUCCEEDED(retVal) ) { if ( buffAsUnichar != oldBuffer ) // check if buffer was reallocated @@ -272,7 +272,7 @@ nsLinebreakHelpers :: ConvertPlatformToDOMLinebreaks ( const char* inFlavor, voi *ioLengthInBytes = newLengthInChars * sizeof(char16_t); } } - + return retVal; } // ConvertPlatformToDOMLinebreaks