Bug 1048191 - Remove capability to generate entities other than quot, amp, gt, lt and nbsp. r?emk. draft
authorHenri Sivonen <hsivonen@hsivonen.fi>
Fri, 04 Aug 2017 12:37:53 +0300
changeset 641060 7b932d45e0d51dd79b0cd9e8d5ce73dd9e9ca4b7
parent 641059 ab81d3d87d875cd6759e07b59a7834b7681e6f12
child 724707 efeb1abbb037e79387a2dd3e925861c069f2f96c
push id72419
push userbmo:hsivonen@hsivonen.fi
push dateSat, 05 Aug 2017 06:05:02 +0000
reviewersemk
bugs1048191
milestone57.0a1
Bug 1048191 - Remove capability to generate entities other than quot, amp, gt, lt and nbsp. r?emk. MozReview-Commit-ID: CHQQzPHxrus
browser/base/content/test/static/browser_all_files_referenced.js
browser/installer/package-manifest.in
dom/base/nsCopySupport.cpp
dom/base/nsHTMLContentSerializer.cpp
dom/base/nsHTMLContentSerializer.h
dom/base/nsIDocumentEncoder.idl
dom/base/nsXHTMLContentSerializer.cpp
dom/base/nsXHTMLContentSerializer.h
dom/base/test/file_htmlserializer_2_enthtml.html
dom/base/test/file_htmlserializer_2_entw3c.html
dom/base/test/file_htmlserializer_2_latin1.html
dom/base/test/mochitest.ini
dom/base/test/test_bug424359-2.html
dom/webbrowserpersist/WebBrowserPersistLocalDocument.cpp
dom/webbrowserpersist/nsIWebBrowserPersist.idl
intl/build/nsI18nModule.cpp
intl/unicharutil/moz.build
intl/unicharutil/nsEntityConverter.cpp
intl/unicharutil/nsEntityConverter.h
intl/unicharutil/nsIEntityConverter.idl
intl/unicharutil/tables/html40Latin1.properties
intl/unicharutil/tables/html40Special.properties
intl/unicharutil/tables/html40Symbols.properties
intl/unicharutil/tables/mathml20.properties
intl/unicharutil/tables/moz.build
mobile/android/installer/package-manifest.in
parser/htmlparser/moz.build
parser/htmlparser/nsHTMLEntities.cpp
parser/htmlparser/nsHTMLEntities.h
parser/htmlparser/nsHTMLEntityList.h
parser/htmlparser/nsIParserService.h
parser/htmlparser/nsParserModule.cpp
parser/htmlparser/nsParserService.cpp
parser/htmlparser/nsParserService.h
toolkit/content/browser-content.js
--- a/browser/base/content/test/static/browser_all_files_referenced.js
+++ b/browser/base/content/test/static/browser_all_files_referenced.js
@@ -235,20 +235,16 @@ for (let entry of ignorableWhitelist) {
 if (!isDevtools) {
   // services/sync/modules/service.js
   for (let module of ["addons.js", "bookmarks.js", "forms.js", "history.js",
                       "passwords.js", "prefs.js", "tabs.js",
                       "extension-storage.js"]) {
     whitelist.add("resource://services-sync/engines/" + module);
   }
 
-  // intl/unicharutil/nsEntityConverter.h
-  for (let name of ["html40Latin1", "html40Symbols", "html40Special", "mathml20"]) {
-    whitelist.add("resource://gre/res/entityTables/" + name + ".properties");
-  }
 }
 
 const gInterestingCategories = new Set([
   "agent-style-sheets", "addon-provider-module", "webextension-scripts",
   "webextension-schemas", "webextension-scripts-addon",
   "webextension-scripts-content", "webextension-scripts-devtools"
 ]);
 
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -706,17 +706,16 @@
 @RESPATH@/res/grabber.gif
 #ifdef XP_MACOSX
 @RESPATH@/res/cursors/*
 #endif
 @RESPATH@/res/fonts/*
 @RESPATH@/res/dtd/*
 @RESPATH@/res/html/*
 @RESPATH@/res/language.properties
-@RESPATH@/res/entityTables/*
 #ifdef XP_MACOSX
 @RESPATH@/res/MainMenu.nib/
 #endif
 
 ; svg
 @RESPATH@/res/svg.css
 @RESPATH@/components/dom_svg.xpt
 @RESPATH@/components/dom_smil.xpt
--- a/dom/base/nsCopySupport.cpp
+++ b/dom/base/nsCopySupport.cpp
@@ -554,17 +554,17 @@ static nsresult AppendDOMNode(nsITransfe
     nsCOMPtr<nsIHTMLDocument>(do_QueryInterface(document, &rv));
   NS_ENSURE_SUCCESS(rv, NS_OK);
 
   NS_ENSURE_TRUE(document->IsHTMLDocument(), NS_OK);
 
   // init encoder with document and node
   rv = docEncoder->NativeInit(document, NS_LITERAL_STRING(kHTMLMime),
                               nsIDocumentEncoder::OutputAbsoluteLinks |
-                              nsIDocumentEncoder::OutputEncodeW3CEntities);
+                              nsIDocumentEncoder::OutputEncodeBasicEntities);
   NS_ENSURE_SUCCESS(rv, rv);
 
   rv = docEncoder->SetNativeNode(aDOMNode);
   NS_ENSURE_SUCCESS(rv, rv);
 
   // serialize to string
   nsAutoString html, context, info;
   rv = docEncoder->EncodeToStringWithContext(context, info, html);
--- a/dom/base/nsHTMLContentSerializer.cpp
+++ b/dom/base/nsHTMLContentSerializer.cpp
@@ -483,23 +483,17 @@ nsHTMLContentSerializer::AppendAndTransl
   if (mBodyOnly && !mInBody) {
     return true;
   }
 
   if (mDisableEntityEncoding) {
     return aOutputStr.Append(aStr, mozilla::fallible);
   }
 
-  bool nonBasicEntities =
-    !!(mFlags & (nsIDocumentEncoder::OutputEncodeLatin1Entities |
-                 nsIDocumentEncoder::OutputEncodeHTMLEntities   |
-                 nsIDocumentEncoder::OutputEncodeW3CEntities));
-
-  if (!nonBasicEntities &&
-      (mFlags & (nsIDocumentEncoder::OutputEncodeBasicEntities))) {
+  if (mFlags & (nsIDocumentEncoder::OutputEncodeBasicEntities)) {
     const uint8_t* entityTable = mInAttribute ? kAttrEntities : kEntities;
     uint32_t start = 0;
     const uint32_t len = aStr.Length();
     for (uint32_t i = 0; i < len; ++i) {
       const char* entity = nullptr;
       i = FindNextBasicEntity(aStr, len, i, entityTable, &entity);
       uint32_t normalTextLen = i - start;
       if (normalTextLen) {
@@ -507,110 +501,14 @@ nsHTMLContentSerializer::AppendAndTransl
                                          mozilla::fallible), false);
       }
       if (entity) {
         NS_ENSURE_TRUE(aOutputStr.AppendASCII(entity, mozilla::fallible), false);
         start = i + 1;
       }
     }
     return true;
-  } else if (nonBasicEntities) {
-    nsIParserService* parserService = nsContentUtils::GetParserService();
-
-    if (!parserService) {
-      NS_ERROR("Can't get parser service");
-      return true;
-    }
-
-    nsReadingIterator<char16_t> done_reading;
-    aStr.EndReading(done_reading);
-
-    // for each chunk of |aString|...
-    uint32_t advanceLength = 0;
-    nsReadingIterator<char16_t> iter;
-
-    const uint8_t* entityTable = mInAttribute ? kAttrEntities : kEntities;
-    nsAutoCString entityReplacement;
-
-    for (aStr.BeginReading(iter);
-         iter != done_reading;
-         iter.advance(int32_t(advanceLength))) {
-      uint32_t fragmentLength = done_reading - iter;
-      uint32_t lengthReplaced = 0; // the number of UTF-16 codepoints
-                                    //  replaced by a particular entity
-      const char16_t* c = iter.get();
-      const char16_t* fragmentStart = c;
-      const char16_t* fragmentEnd = c + fragmentLength;
-      const char* entityText = nullptr;
-      const char* fullConstEntityText = nullptr;
-      char* fullEntityText = nullptr;
-
-      advanceLength = 0;
-      // for each character in this chunk, check if it
-      // needs to be replaced
-      for (; c < fragmentEnd; c++, advanceLength++) {
-        char16_t val = *c;
-        if (val <= kValNBSP && entityTable[val]) {
-          fullConstEntityText = kEntityStrings[entityTable[val]];
-          break;
-        } else if (val > 127 &&
-                  ((val < 256 &&
-                    mFlags & nsIDocumentEncoder::OutputEncodeLatin1Entities) ||
-                    mFlags & nsIDocumentEncoder::OutputEncodeHTMLEntities)) {
-          entityReplacement.Truncate();
-          parserService->HTMLConvertUnicodeToEntity(val, entityReplacement);
-
-          if (!entityReplacement.IsEmpty()) {
-            entityText = entityReplacement.get();
-            break;
-          }
-        }
-        else if (val > 127 &&
-                  mFlags & nsIDocumentEncoder::OutputEncodeW3CEntities &&
-                  mEntityConverter) {
-          if (NS_IS_HIGH_SURROGATE(val) &&
-              c + 1 < fragmentEnd &&
-              NS_IS_LOW_SURROGATE(*(c + 1))) {
-            uint32_t valUTF32 = SURROGATE_TO_UCS4(val, *(++c));
-            if (NS_SUCCEEDED(mEntityConverter->ConvertUTF32ToEntity(valUTF32,
-                              nsIEntityConverter::entityW3C, &fullEntityText))) {
-              lengthReplaced = 2;
-              break;
-            }
-            else {
-              advanceLength++;
-            }
-          }
-          else if (NS_SUCCEEDED(mEntityConverter->ConvertToEntity(val,
-                                nsIEntityConverter::entityW3C,
-                                &fullEntityText))) {
-            lengthReplaced = 1;
-            break;
-          }
-        }
-      }
-
-      bool result = aOutputStr.Append(fragmentStart, advanceLength, mozilla::fallible);
-      if (entityText) {
-        NS_ENSURE_TRUE(aOutputStr.Append(char16_t('&'), mozilla::fallible), false);
-        NS_ENSURE_TRUE(AppendASCIItoUTF16(entityText, aOutputStr, mozilla::fallible), false);
-        NS_ENSURE_TRUE(aOutputStr.Append(char16_t(';'), mozilla::fallible), false);
-        advanceLength++;
-      }
-      else if (fullConstEntityText) {
-        NS_ENSURE_TRUE(aOutputStr.AppendASCII(fullConstEntityText, mozilla::fallible), false);
-        ++advanceLength;
-      }
-      // if it comes from nsIEntityConverter, it already has '&' and ';'
-      else if (fullEntityText) {
-        bool ok = AppendASCIItoUTF16(fullEntityText, aOutputStr, mozilla::fallible);
-        free(fullEntityText);
-        advanceLength += lengthReplaced;
-        NS_ENSURE_TRUE(ok, false);
-      }
-      NS_ENSURE_TRUE(result, false);
-    }
   } else {
     NS_ENSURE_TRUE(nsXMLContentSerializer::AppendAndTranslateEntities(aStr, aOutputStr), false);
   }
 
   return true;
 }
--- a/dom/base/nsHTMLContentSerializer.h
+++ b/dom/base/nsHTMLContentSerializer.h
@@ -10,17 +10,16 @@
  * string that could be parsed into more or less the original DOM.
  */
 
 #ifndef nsHTMLContentSerializer_h__
 #define nsHTMLContentSerializer_h__
 
 #include "mozilla/Attributes.h"
 #include "nsXHTMLContentSerializer.h"
-#include "nsIEntityConverter.h"
 #include "nsString.h"
 
 class nsIContent;
 class nsIAtom;
 
 class nsHTMLContentSerializer final : public nsXHTMLContentSerializer {
  public:
   nsHTMLContentSerializer();
--- a/dom/base/nsIDocumentEncoder.idl
+++ b/dom/base/nsIDocumentEncoder.idl
@@ -35,19 +35,19 @@ interface nsIDocumentEncoderNodeFixup : 
   nsIDOMNode fixupNode(in nsIDOMNode aNode, out boolean aSerializeCloneKids);
 };
 
 [scriptable, uuid(21f112df-d96f-47da-bfcb-5331273003d1)]
 interface nsIDocumentEncoder : nsISupports
 {
   // Output methods flag bits. There are a frightening number of these,
   // because everyone wants something a little bit different
-   
+
 
-  /** 
+  /**
    * Output only the selection (as opposed to the whole document).
    */
   const unsigned long OutputSelectionOnly = (1 << 0);
 
   /** Plaintext output: Convert html to plaintext that looks like the html.
     * Implies wrap (except inside <pre>), since html wraps.
     * HTML, XHTML and XML output: do prettyprinting, ignoring existing formatting.
     * XML output : it doesn't implicitly wrap
@@ -58,17 +58,17 @@ interface nsIDocumentEncoder : nsISuppor
    * HTML/XML source. This option overrides OutputFormatted if both are set.
    * HTML/XHTML output: If neither are set, there won't be prettyprinting too, but
    * long lines will be wrapped.
    * Supported also in XML and Plaintext output.
    * @note This option does not affect entity conversion.
    */
   const unsigned long OutputRaw           = (1 << 2);
 
-  /** 
+  /**
    * Do not print html head tags.
    * XHTML/HTML output only.
    */
   const unsigned long OutputBodyOnly      = (1 << 3);
 
   /**
    * Output as though the content is preformatted
    * (e.g. maybe it's wrapped in a PRE or PRE_WRAP style tag)
@@ -102,33 +102,24 @@ interface nsIDocumentEncoder : nsISuppor
 
   /**
    * Convert links, image src, and script src to absolute URLs when possible.
    * XHTML/HTML output only.
    */
   const unsigned long OutputAbsoluteLinks = (1 << 7);
 
   /**
-   * Attempt to encode entities standardized at W3C (HTML, MathML, etc).
-   * This is a catch-all flag for documents with mixed contents. Beware of
-   * interoperability issues. See below for other flags which might likely
-   * do what you want.
-   * HTML output only.
-   */
-  const unsigned long OutputEncodeW3CEntities = (1 << 8);
-
-  /** 
    * LineBreak processing: if this flag is set than CR line breaks will
    * be written. If neither this nor OutputLFLineBreak is set, then we
    * will use platform line breaks. The combination of the two flags will
    * cause CRLF line breaks to be written.
    */
   const unsigned long OutputCRLineBreak = (1 << 9);
 
-  /** 
+  /**
    * LineBreak processing: if this flag is set than LF line breaks will
    * be written. If neither this nor OutputCRLineBreak is set, then we
    * will use platform line breaks. The combination of the two flags will
    * cause CRLF line breaks to be written.
    */
   const unsigned long OutputLFLineBreak = (1 << 10);
 
   /**
@@ -153,62 +144,46 @@ interface nsIDocumentEncoder : nsISuppor
   /**
    * Encode entities when outputting to a string.
    * E.g. If set, we'll output &nbsp; if clear, we'll output 0xa0.
    * The basic set is just &nbsp; &amp; &lt; &gt; &quot; for interoperability
    * with older products that don't support &alpha; and friends.
    * HTML output only.
    */
   const unsigned long OutputEncodeBasicEntities = (1 << 14);
-    
-  /**
-   * Encode entities when outputting to a string.
-   * The Latin1 entity set additionally includes 8bit accented letters
-   * between 128 and 255.
-   * HTML output only.
-   */
-  const unsigned long OutputEncodeLatin1Entities = (1 << 15);
-  
-  /**
-   * Encode entities when outputting to a string.
-   * The HTML entity set additionally includes accented letters, greek
-   * letters, and other special markup symbols as defined in HTML4.
-   * HTML output only.
-   */
-  const unsigned long OutputEncodeHTMLEntities = (1 << 16);
 
   /**
    * Normally &nbsp; is replaced with a space character when
    * encoding data as plain text, set this flag if that's
    * not desired.
    * Plaintext output only.
    */
   const unsigned long OutputPersistNBSP = (1 << 17);
 
   /**
-   * Normally when serializing the whole document using the HTML or 
+   * Normally when serializing the whole document using the HTML or
    * XHTML serializer, the encoding declaration is rewritten to match.
    * This flag suppresses that behavior.
    */
   const unsigned long OutputDontRewriteEncodingDeclaration = (1 << 18);
- 
+
   /**
    * When using the HTML or XHTML serializer, skip elements that are not
    * visible when this flag is set.  Elements are not visible when they
    * have CSS style display:none or visibility:collapse, for example.
    */
   const unsigned long SkipInvisibleContent = (1 << 19);
-  
+
   /**
    * Output for delsp=yes (RFC 3676). This is used with OutputFormatFlowed
    * when converting to text for mail sending.
    * PlainText output only.
    */
   const unsigned long OutputFormatDelSp  = (1 << 20);
- 
+
   /**
    * Drop <br> elements considered "invisible" by the editor. OutputPreformatted
    * implies this flag.
    */
   const unsigned long OutputDropInvisibleBreak = (1 << 21);
 
   /**
    * Don't check for _moz_dirty attributes when deciding whether to
@@ -321,17 +296,17 @@ interface nsIDocumentEncoder : nsISuppor
 
   /**
    *  The mime type preferred by the encoder.  This piece of api was
    *  added because the copy encoder may need to switch mime types on you
    *  if you ask it to copy html that really represents plaintext content.
    *  Call this AFTER Init() and SetSelection() have both been called.
    */
   readonly attribute AString mimeType;
-  
+
   /**
    *  Encode the document and send the result to the nsIOutputStream.
    *
    *  Possible result codes are the stream errors which might have
    *  been encountered.
    * @param aStream Stream into which to encode.
    */
   void encodeToStream(in nsIOutputStream aStream);
@@ -346,17 +321,17 @@ interface nsIDocumentEncoder : nsISuppor
   /**
    * Encode the document into a string. Stores the extra context information
    * into the two arguments.
    * @param [OUT] aContextString The string where the parent hierarchy
    *              information will be stored.
    * @param [OUT] aInfoString The string where extra context info will
    *              be stored.
    * @return The document encoded as a string.
-   * 
+   *
    */
   AString encodeToStringWithContext( out AString aContextString,
                                      out AString aInfoString);
 
   /**
    * Encode the document into a string of limited size.
    * @param aMaxLength After aMaxLength characters, the encoder will stop
    *                   encoding new data.
--- a/dom/base/nsXHTMLContentSerializer.cpp
+++ b/dom/base/nsXHTMLContentSerializer.cpp
@@ -81,20 +81,16 @@ nsXHTMLContentSerializer::Init(uint32_t 
   mRewriteEncodingDeclaration = aRewriteEncodingDeclaration;
   mIsCopying = aIsCopying;
   mIsFirstChildOfOL = false;
   mInBody = 0;
   mDisableEntityEncoding = 0;
   mBodyOnly = (mFlags & nsIDocumentEncoder::OutputBodyOnly) ? true
                                                             : false;
 
-  // set up entity converter if we are going to need it
-  if (mFlags & nsIDocumentEncoder::OutputEncodeW3CEntities) {
-    mEntityConverter = do_CreateInstance(NS_ENTITYCONVERTER_CONTRACTID);
-  }
   return NS_OK;
 }
 
 
 // See if the string has any lines longer than longLineLen:
 // if so, we presume formatting is wonky (e.g. the node has been edited)
 // and we'd better rewrap the whole text node.
 bool
--- a/dom/base/nsXHTMLContentSerializer.h
+++ b/dom/base/nsXHTMLContentSerializer.h
@@ -10,17 +10,16 @@
  * string that could be parsed into more or less the original DOM.
  */
 
 #ifndef nsXHTMLContentSerializer_h__
 #define nsXHTMLContentSerializer_h__
 
 #include "mozilla/Attributes.h"
 #include "nsXMLContentSerializer.h"
-#include "nsIEntityConverter.h"
 #include "nsString.h"
 #include "nsTArray.h"
 
 class nsIContent;
 class nsIAtom;
 
 namespace mozilla {
 class Encoding;
@@ -98,17 +97,16 @@ class nsXHTMLContentSerializer : public 
   MOZ_MUST_USE
   virtual bool AppendAndTranslateEntities(const nsAString& aStr,
                                           nsAString& aOutputStr) override;
 
 private:
   bool IsElementPreformatted(nsIContent* aNode);
 
 protected:
-  nsCOMPtr<nsIEntityConverter> mEntityConverter;
 
   /*
    * isHTMLParser should be set to true by the HTML parser which inherits from
    * this class. It avoids to redefine methods just for few changes.
    */
   bool          mIsHTMLSerializer;
 
   bool          mDoHeader;
deleted file mode 100644
--- a/dom/base/test/file_htmlserializer_2_enthtml.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<meta http-equiv="content-type" content="text/html; charset="><title>Test for html serializer with entities</title>
-</head><body>
-
-<p>The basic set is just &nbsp; &amp; &lt; &gt; " for interoperability with older products that don't support &alpha; and friends.</p>
-
-<p>latin1 &iexcl; &cent; &pound; &curren; &yen; &brvbar; &sect; &uml; 
-&copy; &ordf; &laquo; &not; &shy; &reg; &macr; &deg; &plusmn; &sup2; 
-&sup3; &acute; 
-&micro; &para; &middot; &cedil; &sup1; &ordm; &raquo; &frac14; &frac12; 
-&frac34; &iquest; &Agrave; &Aacute; &Acirc; &Atilde; &Auml; &Aring; 
-&AElig;
-&Ccedil; &Egrave; &Eacute; &Ecirc; &Euml; &Igrave; &Iacute; &Icirc; 
-&Iuml; &ETH; &Ntilde; &Ograve; &Oacute; &Ocirc; &Otilde; &Ouml; &times; 
-&Oslash;
-&Ugrave; &Uacute; &Ucirc; &Uuml; &Yacute; &THORN; &szlig; &agrave; 
-&aacute; &acirc; &atilde; &auml; &aring; &aelig; &ccedil; &egrave; 
-&eacute; &ecirc; 
-&euml; &igrave; &iacute; &icirc; &iuml; &eth; &ntilde; &ograve; &oacute;
- &ocirc; &otilde; &ouml; &divide; &oslash; &ugrave; &uacute; &ucirc; 
-&uuml; &yacute; 
-&thorn; &yuml; </p>
-<p>symbols, math.. &fnof; &Alpha; &Beta; &Gamma; &Delta; &Epsilon; 
-&Zeta; &Eta; &Theta; &Iota; &Kappa; &Lambda; &Mu; &Nu; &Xi; &Omicron; 
-&Pi; &Rho; &Sigma; &Tau; &Upsilon;
-&Phi; &Chi; &Psi; &Omega; &alpha; &beta; &gamma; &delta; &epsilon; 
-&zeta; &eta; &theta; &iota; &kappa; &lambda; &mu; &nu; &xi; &omicron; 
-&pi; &rho; &sigmaf;
-&sigma; &tau; &upsilon; &phi; &chi; &psi; &omega; &thetasym; &upsih; 
-&piv; &bull; &hellip; &prime; &Prime; &oline; &frasl; &weierp; &image; 
-&real;
-&trade; &alefsym; &larr; &uarr; &rarr; &darr; &harr; &crarr; &lArr; 
-&uArr; &rArr; &dArr; &hArr; &forall; &part; &exist; &empty; &nabla; 
-&isin; &notin;
-&ni; &prod; &sum; &minus; &lowast; &radic; &prop; &infin; &ang; &and; 
-&or; &cap; &cup; &int; &there4; &sim; &cong; &asymp; &ne; &equiv; &le; 
-&ge;
-&sub; &sup; &nsub; &sube; &supe; &oplus; &otimes; &perp; &sdot; &lceil; 
-&rceil; &lfloor; &rfloor; &loz; &spades; &clubs; &hearts; &diams;
-</p>
-<p> others
-&OElig; &oelig; &Scaron; &scaron; &Yuml; &circ; &tilde; &ensp; &emsp; 
-&thinsp; &zwnj; &zwj; &lrm; &rlm;&ndash;&mdash; &lsquo; &rsquo;
-&sbquo;&ldquo; &rdquo; &bdquo; &dagger; &Dagger; &permil; &lsaquo; 
-&rsaquo; &euro;
-</p></body></html>
\ No newline at end of file
deleted file mode 100644
--- a/dom/base/test/file_htmlserializer_2_entw3c.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<meta http-equiv="content-type" content="text/html; charset="><title>Test for html serializer with entities</title>
-</head><body>
-
-<p>The basic set is just &nbsp; &amp; &lt; &gt; " for interoperability with older products that don't support &alpha; and friends.</p>
-
-<p>latin1 &iexcl; &cent; &pound; &curren; &yen; &brvbar; &sect; &uml; 
-&copy; &ordf; &laquo; &not; &shy; &reg; &macr; &deg; &plusmn; &sup2; 
-&sup3; &acute; 
-&micro; &para; &middot; &cedil; &sup1; &ordm; &raquo; &frac14; &frac12; 
-&frac34; &iquest; &Agrave; &Aacute; &Acirc; &Atilde; &Auml; &Aring; 
-&AElig;
-&Ccedil; &Egrave; &Eacute; &Ecirc; &Euml; &Igrave; &Iacute; &Icirc; 
-&Iuml; &ETH; &Ntilde; &Ograve; &Oacute; &Ocirc; &Otilde; &Ouml; &times; 
-&Oslash;
-&Ugrave; &Uacute; &Ucirc; &Uuml; &Yacute; &THORN; &szlig; &agrave; 
-&aacute; &acirc; &atilde; &auml; &aring; &aelig; &ccedil; &egrave; 
-&eacute; &ecirc; 
-&euml; &igrave; &iacute; &icirc; &iuml; &eth; &ntilde; &ograve; &oacute;
- &ocirc; &otilde; &ouml; &divide; &oslash; &ugrave; &uacute; &ucirc; 
-&uuml; &yacute; 
-&thorn; &yuml; </p>
-<p>symbols, math.. &fnof; &Alpha; &Beta; &Gamma; &Delta; &Epsilon; 
-&Zeta; &Eta; &Theta; &Iota; &Kappa; &Lambda; &Mu; &Nu; &Xi; &Omicron; 
-&Pi; &Rho; &Sigma; &Tau; &Upsilon;
-&Phi; &Chi; &Psi; &Omega; &alpha; &beta; &gamma; &delta; &epsilon; 
-&zeta; &eta; &theta; &iota; &kappa; &lambda; &mu; &nu; &xi; &omicron; 
-&pi; &rho; &sigmaf;
-&sigma; &tau; &upsilon; &phi; &chi; &psi; &omega; &thetasym; &upsih; 
-&piv; &bull; &hellip; &prime; &Prime; &oline; &frasl; &weierp; &image; 
-&real;
-&trade; &alefsym; &larr; &uarr; &rarr; &darr; &harr; &crarr; &lArr; 
-&uArr; &rArr; &dArr; &hArr; &forall; &part; &exist; &empty; &nabla; 
-&isin; &notin;
-&ni; &prod; &sum; &minus; &lowast; &radic; &prop; &infin; &ang; &and; 
-&or; &cap; &cup; &int; &there4; &sim; &cong; &asymp; &ne; &equiv; &le; 
-&ge;
-&sub; &sup; &nsub; &sube; &supe; &oplus; &otimes; &perp; &sdot; &lceil; 
-&rceil; &lfloor; &rfloor; &loz; &spades; &clubs; &hearts; &diams;
-</p>
-<p> others
-&OElig; &oelig; &Scaron; &scaron; &Yuml; &circ; &tilde; &ensp; &emsp; 
-&thinsp; &zwnj; &zwj; &lrm; &rlm;&ndash;&mdash; &lsquo; &rsquo;
-&sbquo;&ldquo; &rdquo; &bdquo; &dagger; &Dagger; &permil; &lsaquo; 
-&rsaquo; &euro;
-</p></body></html>
\ No newline at end of file
deleted file mode 100644
--- a/dom/base/test/file_htmlserializer_2_latin1.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<meta http-equiv="content-type" content="text/html; charset="><title>Test for html serializer with entities</title>
-</head><body>
-
-<p>The basic set is just &nbsp; &amp; &lt; &gt; " for interoperability with older products that don't support α and friends.</p>
-
-<p>latin1 &iexcl; &cent; &pound; &curren; &yen; &brvbar; &sect; &uml; 
-&copy; &ordf; &laquo; &not; &shy; &reg; &macr; &deg; &plusmn; &sup2; 
-&sup3; &acute; 
-&micro; &para; &middot; &cedil; &sup1; &ordm; &raquo; &frac14; &frac12; 
-&frac34; &iquest; &Agrave; &Aacute; &Acirc; &Atilde; &Auml; &Aring; 
-&AElig;
-&Ccedil; &Egrave; &Eacute; &Ecirc; &Euml; &Igrave; &Iacute; &Icirc; 
-&Iuml; &ETH; &Ntilde; &Ograve; &Oacute; &Ocirc; &Otilde; &Ouml; &times; 
-&Oslash;
-&Ugrave; &Uacute; &Ucirc; &Uuml; &Yacute; &THORN; &szlig; &agrave; 
-&aacute; &acirc; &atilde; &auml; &aring; &aelig; &ccedil; &egrave; 
-&eacute; &ecirc; 
-&euml; &igrave; &iacute; &icirc; &iuml; &eth; &ntilde; &ograve; &oacute;
- &ocirc; &otilde; &ouml; &divide; &oslash; &ugrave; &uacute; &ucirc; 
-&uuml; &yacute; 
-&thorn; &yuml; </p>
-<p>symbols, math.. ƒ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ
-Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ ς
-σ τ υ φ χ ψ ω ϑ ϒ ϖ • … ′ ″ ‾ ⁄ ℘ ℑ ℜ
-™ ℵ ← ↑ → ↓ ↔ ↵ ⇐ ⇑ ⇒ ⇓ ⇔ ∀ ∂ ∃ ∅ ∇ ∈ ∉
-∋ ∏ ∑ − ∗ √ ∝ ∞ ∠ ∧ ∨ ∩ ∪ ∫ ∴ ∼ ≅ ≈ ≠ ≡ ≤ ≥
-⊂ ⊃ ⊄ ⊆ ⊇ ⊕ ⊗ ⊥ ⋅ ⌈ ⌉ ⌊ ⌋ ◊ ♠ ♣ ♥ ♦
-</p>
-<p> others
-Œ œ Š š Ÿ ˆ ˜       ‌ ‍ ‎ ‏–— ‘ ’
-‚“ ” „ † ‡ ‰ ‹ › €
-</p></body></html>
\ No newline at end of file
--- a/dom/base/test/mochitest.ini
+++ b/dom/base/test/mochitest.ini
@@ -140,19 +140,16 @@ support-files =
   file_htmlserializer_1_noflag.html
   file_htmlserializer_1_noformatpre.html
   file_htmlserializer_1_raw.html
   file_htmlserializer_1_sibling_body.html
   file_htmlserializer_1_sibling_body_only_body.html
   file_htmlserializer_1_wrap.html
   file_htmlserializer_2.html
   file_htmlserializer_2_basic.html
-  file_htmlserializer_2_enthtml.html
-  file_htmlserializer_2_entw3c.html
-  file_htmlserializer_2_latin1.html
   file_htmlserializer_ipv6.html
   file_htmlserializer_ipv6_out.html
   file_lock_orientation.html
   file_mozfiledataurl_img.jpg
   file_record_orientation.html
   file_restrictedEventSource.sjs
   file_settimeout_inner.html
   file_timer_flood.html
--- a/dom/base/test/test_bug424359-2.html
+++ b/dom/base/test/test_bug424359-2.html
@@ -46,64 +46,45 @@ function loadFileContent(aFile, aCharset
     var str = {}, content = '';
     while (inputStream.readString(4096, str) != 0) {
         content += str.value;
     }
     return content;
 }
 
 function isRoughly(actual, expected, message) {
-  return is(actual.replace("<!DOCTYPE HTML", "<!DOCTYPE html"), 
-            expected, 
+  return is(actual.replace("<!DOCTYPE HTML", "<!DOCTYPE html"),
+            expected,
             message);
 }
 
 function testHtmlSerializer_1 () {
   const de = SpecialPowers.Ci.nsIDocumentEncoder;
   var encoder = SpecialPowers.Cc["@mozilla.org/layout/documentEncoder;1?type=text/html"]
                    .createInstance(SpecialPowers.Ci.nsIDocumentEncoder);
 
   var doc = $("testframe").contentDocument;
   var out, expected;
 
-  // in the following tests, we must use the OutputLFLineBreak flag, to avoid
+  // in the following test, we must use the OutputLFLineBreak flag, to avoid
   // to have the default line break of the platform in the result, so the test
   // can pass on all platform
 
-  //------------ OutputEncodeW3CEntities
-  encoder.init(doc, "text/html", de.OutputLFLineBreak | de.OutputEncodeW3CEntities);
-  out = encoder.encodeToString();
-  expected = loadFileContent("file_htmlserializer_2_entw3c.html");
-  isRoughly(out, expected, "test OutputEncodeW3CEntities");
-
   //------------ OutputEncodeBasicEntities
   encoder.init(doc, "text/html", de.OutputLFLineBreak | de.OutputEncodeBasicEntities);
   out = encoder.encodeToString();
   expected = loadFileContent("file_htmlserializer_2_basic.html");
   isRoughly(out, expected, "test OutputEncodeBasicEntities");
 
-  //------------ OutputEncodeLatin1Entities
-  encoder.init(doc, "text/html", de.OutputLFLineBreak | de.OutputEncodeLatin1Entities);
-  out = encoder.encodeToString();
-  expected = loadFileContent("file_htmlserializer_2_latin1.html");
-  isRoughly(out, expected, "test OutputEncodeLatin1Entities");
-
-  //------------ OutputEncodeHTMLEntities
-  encoder.init(doc, "text/html", de.OutputLFLineBreak | de.OutputEncodeHTMLEntities);
-  out = encoder.encodeToString();
-  expected = loadFileContent("file_htmlserializer_2_enthtml.html");
-  isRoughly(out, expected, "test OutputEncodeHTMLEntities");
-
-
   // tests on the serialization of selections
 
   var node = document.getElementById('draggable');
 
   var select = window.getSelection();
-  select.selectAllChildren(node);  
+  select.selectAllChildren(node);
 
   encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
   encoder.setSelection(select);
   out = encoder.encodeToString();
   expected = 'This is a <em>draggable</em> bit of text.';
   is(out, expected, "test selection");
 
   encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
@@ -117,17 +98,17 @@ function testHtmlSerializer_1 () {
   encoder.setNode(node);
   out = encoder.encodeToString();
   expected = "<div id=\"draggable\" ondragstart=\"doDragStartSelection(event)\">This is a <em>draggable</em> bit of text.</div>";
   is(out, expected, "test node");
 
   node = document.getElementById('aList');
 
   var select = window.getSelection();
-  select.selectAllChildren(node);  
+  select.selectAllChildren(node);
 
   encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
   encoder.setSelection(select);
   out = encoder.encodeToString();
   expected = '\n   <li>Lorem ipsum dolor</li>\n  <li>sit amet, <strong>consectetuer</strong> </li>\n  <li>adipiscing elit</li>\n  <li>Nam eu sapien. Sed viverra lacus. Donec quis ipsum. Nunc cursus aliquet lectus. Nunc vitae eros. Class</li>\n  <li>aptent taciti</li>\n';
   is(out, expected, "test list selection");
 
   encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
--- a/dom/webbrowserpersist/WebBrowserPersistLocalDocument.cpp
+++ b/dom/webbrowserpersist/WebBrowserPersistLocalDocument.cpp
@@ -1258,22 +1258,16 @@ ConvertEncoderFlags(uint32_t aEncoderFla
     if (aEncoderFlags & nsIWebBrowserPersist::ENCODE_FLAGS_WRAP)
         encoderFlags |= nsIDocumentEncoder::OutputWrap;
     if (aEncoderFlags & nsIWebBrowserPersist::ENCODE_FLAGS_FORMAT_FLOWED)
         encoderFlags |= nsIDocumentEncoder::OutputFormatFlowed;
     if (aEncoderFlags & nsIWebBrowserPersist::ENCODE_FLAGS_ABSOLUTE_LINKS)
         encoderFlags |= nsIDocumentEncoder::OutputAbsoluteLinks;
     if (aEncoderFlags & nsIWebBrowserPersist::ENCODE_FLAGS_ENCODE_BASIC_ENTITIES)
         encoderFlags |= nsIDocumentEncoder::OutputEncodeBasicEntities;
-    if (aEncoderFlags & nsIWebBrowserPersist::ENCODE_FLAGS_ENCODE_LATIN1_ENTITIES)
-        encoderFlags |= nsIDocumentEncoder::OutputEncodeLatin1Entities;
-    if (aEncoderFlags & nsIWebBrowserPersist::ENCODE_FLAGS_ENCODE_HTML_ENTITIES)
-        encoderFlags |= nsIDocumentEncoder::OutputEncodeHTMLEntities;
-    if (aEncoderFlags & nsIWebBrowserPersist::ENCODE_FLAGS_ENCODE_W3C_ENTITIES)
-        encoderFlags |= nsIDocumentEncoder::OutputEncodeW3CEntities;
     if (aEncoderFlags & nsIWebBrowserPersist::ENCODE_FLAGS_CR_LINEBREAKS)
         encoderFlags |= nsIDocumentEncoder::OutputCRLineBreak;
     if (aEncoderFlags & nsIWebBrowserPersist::ENCODE_FLAGS_LF_LINEBREAKS)
         encoderFlags |= nsIDocumentEncoder::OutputLFLineBreak;
     if (aEncoderFlags & nsIWebBrowserPersist::ENCODE_FLAGS_NOSCRIPT_CONTENT)
         encoderFlags |= nsIDocumentEncoder::OutputNoScriptContent;
     if (aEncoderFlags & nsIWebBrowserPersist::ENCODE_FLAGS_NOFRAMES_CONTENT)
         encoderFlags |= nsIDocumentEncoder::OutputNoFramesContent;
--- a/dom/webbrowserpersist/nsIWebBrowserPersist.idl
+++ b/dom/webbrowserpersist/nsIWebBrowserPersist.idl
@@ -68,22 +68,22 @@ interface nsIWebBrowserPersist : nsICanc
 
   /**
    * Force relevant cookies to be sent with this load even if normally they
    * wouldn't be.
    */
   const unsigned long PERSIST_FLAGS_FORCE_ALLOW_COOKIES = 65536;
 
   /**
-   * Flags governing how data is fetched and saved from the network. 
+   * Flags governing how data is fetched and saved from the network.
    * It is best to set this value explicitly unless you are prepared
    * to accept the default values.
    */
   attribute unsigned long persistFlags;
-    
+
   /** Persister is ready to save data */
   const unsigned long PERSIST_STATE_READY = 1;
   /** Persister is saving data */
   const unsigned long PERSIST_STATE_SAVING = 2;
   /** Persister has finished saving data */
   const unsigned long PERSIST_STATE_FINISHED = 3;
 
   /**
@@ -194,24 +194,16 @@ interface nsIWebBrowserPersist : nsICanc
    * when converting to text for mail sending. This differs just slightly
    * but in an important way from normal formatted, and that is that
    * lines are space stuffed. This can't (correctly) be done later.
    */
   const unsigned long ENCODE_FLAGS_FORMAT_FLOWED = 64;
   /** Convert links to absolute links where possible. */
   const unsigned long ENCODE_FLAGS_ABSOLUTE_LINKS = 128;
 
-  /** 
-   * Attempt to encode entities standardized at W3C (HTML, MathML, etc).
-   * This is a catch-all flag for documents with mixed contents. Beware of
-   * interoperability issues. See below for other flags which might likely
-   * do what you want.
-   */
-  const unsigned long ENCODE_FLAGS_ENCODE_W3C_ENTITIES = 256;
-
   /**
    * Output with carriage return line breaks. May also be combined with
    * ENCODE_FLAGS_LF_LINEBREAKS and if neither is specified, the platform
    * default format is used.
    */
   const unsigned long ENCODE_FLAGS_CR_LINEBREAKS = 512;
   /**
    * Output with linefeed line breaks. May also be combined with
@@ -220,31 +212,21 @@ interface nsIWebBrowserPersist : nsICanc
    */
   const unsigned long ENCODE_FLAGS_LF_LINEBREAKS = 1024;
   /** For plaintext output. Output the content of noscript elements. */
   const unsigned long ENCODE_FLAGS_NOSCRIPT_CONTENT = 2048;
   /** For plaintext output. Output the content of noframes elements. */
   const unsigned long ENCODE_FLAGS_NOFRAMES_CONTENT = 4096;
 
   /**
-   * Encode basic entities, e.g. output &nbsp; instead of character code 0xa0. 
+   * Encode basic entities, e.g. output &nbsp; instead of character code 0xa0.
    * The basic set is just &nbsp; &amp; &lt; &gt; &quot; for interoperability
    * with older products that don't support &alpha; and friends.
    */
   const unsigned long ENCODE_FLAGS_ENCODE_BASIC_ENTITIES = 8192;
-  /**
-   * Encode Latin1 entities. This includes the basic set and
-   * accented letters between 128 and 255.
-   */
-  const unsigned long ENCODE_FLAGS_ENCODE_LATIN1_ENTITIES = 16384;
-  /**
-   * Encode HTML4 entities. This includes the basic set, accented
-   * letters, greek letters and certain special markup symbols.
-   */
-  const unsigned long ENCODE_FLAGS_ENCODE_HTML_ENTITIES = 32768;
 
   /**
    * Save the specified DOM document to file and optionally all linked files
    * (e.g. images, CSS, JS & subframes). Do not call this method until the
    * document has finished loading!
    *
    * @param aDocument          Document to save to file. Some implementations of
    *                           this interface may also support <CODE>nullptr</CODE>
@@ -252,17 +234,17 @@ interface nsIWebBrowserPersist : nsICanc
    *                           nsIWebBrowserPersistDocument or nsIDOMDocument.
    * @param aFile              Target local file. This may be a nsIFile object or an
    *                           nsIURI object with a file scheme or a scheme that
    *                           supports uploading (e.g. ftp).
    * @param aDataPath          Path to directory where URIs linked to the document
    *                           are saved or nullptr if no linked URIs should be saved.
    *                           This may be a nsIFile object or an nsIURI object
    *                           with a file scheme.
-   * @param aOutputContentType The desired MIME type format to save the 
+   * @param aOutputContentType The desired MIME type format to save the
    *                           document and all subdocuments into or nullptr to use
    *                           the default behaviour.
    * @param aEncodingFlags     Flags to pass to the encoder.
    * @param aWrapColumn        For text documents, indicates the desired width to
    *                           wrap text at. Parameter is ignored if wrapping is not
    *                           specified by the encoding flags.
    *
    * @see nsIWebBrowserPersistDocument
--- a/intl/build/nsI18nModule.cpp
+++ b/intl/build/nsI18nModule.cpp
@@ -6,17 +6,16 @@
 #include "mozilla/ModuleUtils.h"
 
 // lwbrk
 #include "nsLWBrkCIID.h"
 #include "nsJISx4051LineBreaker.h"
 #include "nsSampleWordBreaker.h"
 
 // unicharutil
-#include "nsEntityConverter.h"
 #include "nsUnicodeNormalizer.h"
 
 // string bundles (intl)
 #include "nsStringBundleService.h"
 #include "nsStringBundleTextOverride.h"
 
 // locale
 #include "nsLocaleConstructors.h"
@@ -24,52 +23,48 @@
 // uconv
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsJISx4051LineBreaker)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSampleWordBreaker)
 
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStringBundleService, Init)
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStringBundleTextOverride, Init)
 
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsEntityConverter)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeNormalizer)
 
 NS_DEFINE_NAMED_CID(MOZ_LOCALESERVICE_CID);
 NS_DEFINE_NAMED_CID(MOZ_OSPREFERENCES_CID);
 NS_DEFINE_NAMED_CID(NS_LBRK_CID);
 NS_DEFINE_NAMED_CID(NS_WBRK_CID);
-NS_DEFINE_NAMED_CID(NS_ENTITYCONVERTER_CID);
 NS_DEFINE_NAMED_CID(NS_UNICODE_NORMALIZER_CID);
 NS_DEFINE_NAMED_CID(NS_STRINGBUNDLESERVICE_CID);
 NS_DEFINE_NAMED_CID(NS_STRINGBUNDLETEXTOVERRIDE_CID);
 NS_DEFINE_NAMED_CID(NS_COLLATIONFACTORY_CID);
 NS_DEFINE_NAMED_CID(NS_PLATFORMCHARSET_CID);
 NS_DEFINE_NAMED_CID(NS_COLLATION_CID);
 
 static const mozilla::Module::CIDEntry kIntlCIDs[] = {
     { &kMOZ_LOCALESERVICE_CID, false, nullptr, mozilla::intl::LocaleServiceConstructor },
     { &kMOZ_OSPREFERENCES_CID, false, nullptr, mozilla::intl::OSPreferencesConstructor },
     { &kNS_LBRK_CID, false, nullptr, nsJISx4051LineBreakerConstructor },
     { &kNS_WBRK_CID, false, nullptr, nsSampleWordBreakerConstructor },
-    { &kNS_ENTITYCONVERTER_CID, false, nullptr, nsEntityConverterConstructor },
     { &kNS_UNICODE_NORMALIZER_CID, false, nullptr, nsUnicodeNormalizerConstructor },
     { &kNS_STRINGBUNDLESERVICE_CID, false, nullptr, nsStringBundleServiceConstructor },
     { &kNS_STRINGBUNDLETEXTOVERRIDE_CID, false, nullptr, nsStringBundleTextOverrideConstructor },
     { &kNS_COLLATIONFACTORY_CID, false, nullptr, nsCollationFactoryConstructor },
     { &kNS_PLATFORMCHARSET_CID, false, nullptr, nsPlatformCharsetConstructor },
     { &kNS_COLLATION_CID, false, nullptr, nsCollationConstructor },
     { nullptr }
 };
 
 static const mozilla::Module::ContractIDEntry kIntlContracts[] = {
     { MOZ_LOCALESERVICE_CONTRACTID, &kMOZ_LOCALESERVICE_CID },
     { MOZ_OSPREFERENCES_CONTRACTID, &kMOZ_OSPREFERENCES_CID },
     { NS_LBRK_CONTRACTID, &kNS_LBRK_CID },
     { NS_WBRK_CONTRACTID, &kNS_WBRK_CID },
-    { NS_ENTITYCONVERTER_CONTRACTID, &kNS_ENTITYCONVERTER_CID },
     { NS_UNICODE_NORMALIZER_CONTRACTID, &kNS_UNICODE_NORMALIZER_CID },
     { NS_STRINGBUNDLE_CONTRACTID, &kNS_STRINGBUNDLESERVICE_CID },
     { NS_STRINGBUNDLETEXTOVERRIDE_CONTRACTID, &kNS_STRINGBUNDLETEXTOVERRIDE_CID },
     { NS_COLLATIONFACTORY_CONTRACTID, &kNS_COLLATIONFACTORY_CID },
     { NS_PLATFORMCHARSET_CONTRACTID, &kNS_PLATFORMCHARSET_CID },
     { NS_COLLATION_CONTRACTID, &kNS_COLLATION_CID },
     { nullptr }
 };
--- a/intl/unicharutil/moz.build
+++ b/intl/unicharutil/moz.build
@@ -1,33 +1,28 @@
 # -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # 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/.
 
-DIRS += ['util', 'tables']
+DIRS += ['util']
 TEST_DIRS += ['tests']
 
 XPIDL_SOURCES += [
-    'nsIEntityConverter.idl',
     'nsIUnicodeNormalizer.idl',
 ]
 
 XPIDL_MODULE = 'unicharutil'
 
 EXPORTS += [
     'nsUGenCategory.h',
     'nsUnicodeNormalizer.h',
 ]
 
-UNIFIED_SOURCES += [
-    'nsEntityConverter.cpp',
-]
-
 if CONFIG['ENABLE_INTL_API']:
     UNIFIED_SOURCES += [
         'nsUnicodeNormalizer_ICU.cpp',
     ]
 else:
     UNIFIED_SOURCES += [
         'nsUnicodeNormalizer.cpp',
     ]
deleted file mode 100644
--- a/intl/unicharutil/nsEntityConverter.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/* -*- 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/. */
-
-#include "nsEntityConverter.h"
-#include "nsLiteralString.h"
-#include "nsString.h"
-#include "mozilla/Services.h"
-#include "nsServiceManagerUtils.h"
-#include "nsCRT.h"
-
-//
-// implementation methods
-//
-nsEntityConverter::nsEntityConverter() { }
-
-nsEntityConverter::~nsEntityConverter() { }
-
-nsIStringBundle*
-nsEntityConverter:: GetVersionBundleInstance(uint32_t versionNumber)
-{
-  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;
-  }
-}
-
-already_AddRefed<nsIStringBundle>
-nsEntityConverter:: LoadEntityBundle(const char *fileName)
-{
-  NS_ENSURE_TRUE(fileName, nullptr);
-
-  nsAutoCString url("resource://gre/res/entityTables/");
-  nsresult rv;
-
-  nsCOMPtr<nsIStringBundleService> bundleService =
-  do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv);
-  NS_ENSURE_SUCCESS(rv, nullptr);
-
-  url.Append(fileName);
-
-  nsCOMPtr<nsIStringBundle> 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);
-}
-
-NS_IMETHODIMP
-nsEntityConverter::ConvertUTF32ToEntity(uint32_t character, uint32_t entityVersion, char **_retval)
-{
-  NS_ASSERTION(_retval, "null ptr- _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)) {
-      continue;
-    }
-
-    nsIStringBundle* entities = GetVersionBundleInstance(entityVersion & mask);
-    NS_ASSERTION(entities, "Cannot get the entity");
-
-    if (!entities) {
-      continue;
-    }
-
-    nsAutoCString key("entity.");
-    key.AppendInt(character,10);
-
-    nsXPIDLString value;
-    nsresult rv = entities->GetStringFromName(key.get(), getter_Copies(value));
-    if (NS_SUCCEEDED(rv)) {
-      *_retval = ToNewCString(value);
-      return NS_OK;
-    }
-  }
-  return NS_ERROR_ILLEGAL_VALUE;
-}
-
-NS_IMETHODIMP
-nsEntityConverter::ConvertToEntities(const char16_t *inString, uint32_t entityVersion, char16_t **_retval)
-{
-  NS_ENSURE_ARG_POINTER(inString);
-  NS_ENSURE_ARG_POINTER(_retval);
-
-  *_retval = nullptr;
-
-  nsString outString;
-
-  // per character look for the entity
-  uint32_t len = NS_strlen(inString);
-  for (uint32_t i = 0; i < len; i++) {
-    nsAutoCString key("entity.");
-    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 {
-      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;
-      }
-      nsIStringBundle* entities = GetVersionBundleInstance(entityVersion & mask);
-      NS_ASSERTION(entities, "Cannot get the property file");
-
-      if (!entities) {
-        continue;
-      }
-
-      nsresult rv =
-        entities->GetStringFromName(key.get(), getter_Copies(value));
-      if (NS_SUCCEEDED(rv)) {
-        entity = value.get();
-        break;
-      }
-    }
-    if (entity) {
-      outString.Append(entity);
-    } else {
-      outString.Append(&inString[i], 1);
-    }
-  }
-
-  *_retval = ToNewUnicode(outString);
-
-  return NS_OK;
-}
deleted file mode 100644
--- a/intl/unicharutil/nsEntityConverter.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* 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/. */
-
-#ifndef nsEntityConverter_h__
-#define nsEntityConverter_h__
-
-#include "nsIEntityConverter.h"
-#include "nsIStringBundle.h"
-#include "nsCOMPtr.h"
-
-class nsEntityConverter: public nsIEntityConverter
-{
-public:
-    //
-    // implementation methods
-    //
-    nsEntityConverter();
-
-    //
-    // nsISupports
-    //
-    NS_DECL_ISUPPORTS
-
-    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 string bundle file
-    already_AddRefed<nsIStringBundle> LoadEntityBundle(const char *fileName);
-
-    const char* kHTML40LATIN1 = "html40Latin1.properties";
-    const char* kHTML40SYMBOLS = "html40Symbols.properties";
-    const char* kHTML40SPECIAL = "html40Special.properties";
-    const char* kMATHML20 = "mathml20.properties";
-    nsCOMPtr<nsIStringBundle> mHTML40Latin1Bundle;
-    nsCOMPtr<nsIStringBundle> mHTML40SymbolsBundle;
-    nsCOMPtr<nsIStringBundle> mHTML40SpecialBundle;
-    nsCOMPtr<nsIStringBundle> mMathML20Bundle;
-
-    virtual ~nsEntityConverter();
-};
-
-#endif
deleted file mode 100644
--- a/intl/unicharutil/nsIEntityConverter.idl
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* 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/. */
-
-#include "nsISupports.idl"
-
-%{C++
-// {9E9B565A-8E52-4C1A-8805-B2B91655F874}
-#define NS_ENTITYCONVERTER_CID { 0x9e9b565a, 0x8e52, 0x4c1a, {0x88, 0x05, 0xb2, 0xb9, 0x16, 0x55, 0xf8, 0x74}}
-#define NS_ENTITYCONVERTER_CONTRACTID "@mozilla.org/intl/entityconverter;1"
-%}
-
-[scriptable, uuid(D14C7111-55E0-11d3-91D9-00105AA3F7DC)]
-interface nsIEntityConverter : nsISupports
-{
-  const unsigned long entityNone = 0;
-  const unsigned long html40Latin1 = 1;
-  const unsigned long html40Symbols = 2;
-  const unsigned long html40Special = 4;                       // excludes &quot, &amp, &lt, &gt
-  const unsigned long transliterate = 8;                       // Obsolete
-  const unsigned long mathml20 = 16;
-  const unsigned long html32 = html40Latin1;
-  const unsigned long html40 = html40Latin1+html40Symbols+html40Special;
-  const unsigned long entityW3C = html40+mathml20;
-
-  string ConvertUTF32ToEntity(in unsigned long character, in unsigned long entityVersion);
-  string ConvertToEntity(in wchar character, in unsigned long entityVersion);
-
-  wstring ConvertToEntities(in wstring inString, in unsigned long entityVersion);
-};
deleted file mode 100644
--- a/intl/unicharutil/tables/html40Latin1.properties
+++ /dev/null
@@ -1,114 +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 contains names that assign html elements to
-#  ascii codepoints. Do not translate any of the "entities" in
-#  this file.
-
-entity.list.name=html40Latin1
-entity.160=&nbsp;
-entity.161=&iexcl;
-entity.162=&cent;
-entity.163=&pound;
-entity.164=&curren;
-entity.165=&yen;
-entity.166=&brvbar;
-entity.167=&sect;
-entity.168=&uml;
-entity.169=&copy;
-entity.170=&ordf;
-entity.171=&laquo;
-entity.172=&not;
-entity.173=&shy;
-entity.174=&reg;
-entity.175=&macr;
-entity.176=&deg;
-entity.177=&plusmn;
-entity.178=&sup2;
-entity.179=&sup3;
-entity.180=&acute;
-entity.181=&micro;
-entity.182=&para;
-entity.183=&middot;
-entity.184=&cedil;
-entity.185=&sup1;
-entity.186=&ordm;
-entity.187=&raquo;
-entity.188=&frac14;
-entity.189=&frac12;
-entity.190=&frac34;
-entity.191=&iquest;
-entity.192=&Agrave;
-entity.193=&Aacute;
-entity.194=&Acirc;
-entity.195=&Atilde;
-entity.196=&Auml;
-entity.197=&Aring;
-entity.198=&AElig;
-entity.199=&Ccedil;
-entity.200=&Egrave;
-entity.201=&Eacute;
-entity.202=&Ecirc;
-entity.203=&Euml;
-entity.204=&Igrave;
-entity.205=&Iacute;
-entity.206=&Icirc;
-entity.207=&Iuml;
-entity.208=&ETH;
-entity.209=&Ntilde;
-entity.210=&Ograve;
-entity.211=&Oacute;
-entity.212=&Ocirc;
-entity.213=&Otilde;
-entity.214=&Ouml;
-entity.215=&times;
-entity.216=&Oslash;
-entity.217=&Ugrave;
-entity.218=&Uacute;
-entity.219=&Ucirc;
-entity.220=&Uuml;
-entity.221=&Yacute;
-entity.222=&THORN;
-entity.223=&szlig;
-entity.224=&agrave;
-entity.225=&aacute;
-entity.226=&acirc;
-entity.227=&atilde;
-entity.228=&auml;
-entity.229=&aring;
-entity.230=&aelig;
-entity.231=&ccedil;
-entity.232=&egrave;
-entity.233=&eacute;
-entity.234=&ecirc;
-entity.235=&euml;
-entity.236=&igrave;
-entity.237=&iacute;
-entity.238=&icirc;
-entity.239=&iuml;
-entity.240=&eth;
-entity.241=&ntilde;
-entity.242=&ograve;
-entity.243=&oacute;
-entity.244=&ocirc;
-entity.245=&otilde;
-entity.246=&ouml;
-entity.247=&divide;
-entity.248=&oslash;
-entity.249=&ugrave;
-entity.250=&uacute;
-entity.251=&ucirc;
-entity.252=&uuml;
-entity.253=&yacute;
-entity.254=&thorn;
-entity.255=&yuml;
-
-
-
-
-
-
-
-
deleted file mode 100644
--- a/intl/unicharutil/tables/html40Special.properties
+++ /dev/null
@@ -1,37 +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 contains names that assign entity references to
-#	numbers in an entity.list object. Do not translate this file.
-
-entity.list.name=html40Special
-entity.338=&OElig;
-entity.339=&oelig;
-entity.352=&Scaron;
-entity.353=&scaron;
-entity.376=&Yuml;
-entity.710=&circ;
-entity.732=&tilde;
-entity.8194=&ensp;
-entity.8195=&emsp;
-entity.8201=&thinsp;
-entity.8204=&zwnj;
-entity.8205=&zwj;
-entity.8206=&lrm;
-entity.8207=&rlm;
-entity.8211=&ndash;
-entity.8212=&mdash;
-entity.8216=&lsquo;
-entity.8217=&rsquo;
-entity.8218=&sbquo;
-entity.8220=&ldquo;
-entity.8221=&rdquo;
-entity.8222=&bdquo;
-entity.8224=&dagger;
-entity.8225=&Dagger;
-entity.8240=&permil;
-entity.8249=&lsaquo;
-entity.8250=&rsaquo;
-entity.8364=&euro;
deleted file mode 100644
--- a/intl/unicharutil/tables/html40Symbols.properties
+++ /dev/null
@@ -1,132 +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
-# Do not translate this file.
-
-entity.list.name=html40Symbols
-entity.402=&fnof;
-entity.913=&Alpha;
-entity.914=&Beta;
-entity.915=&Gamma;
-entity.916=&Delta;
-entity.917=&Epsilon;
-entity.918=&Zeta;
-entity.919=&Eta;
-entity.920=&Theta;
-entity.921=&Iota;
-entity.922=&Kappa;
-entity.923=&Lambda;
-entity.924=&Mu;
-entity.925=&Nu;
-entity.926=&Xi;
-entity.927=&Omicron;
-entity.928=&Pi;
-entity.929=&Rho;
-entity.931=&Sigma;
-entity.932=&Tau;
-entity.933=&Upsilon;
-entity.934=&Phi;
-entity.935=&Chi;
-entity.936=&Psi;
-entity.937=&Omega;
-entity.945=&alpha;
-entity.946=&beta;
-entity.947=&gamma;
-entity.948=&delta;
-entity.949=&epsilon;
-entity.950=&zeta;
-entity.951=&eta;
-entity.952=&theta;
-entity.953=&iota;
-entity.954=&kappa;
-entity.955=&lambda;
-entity.956=&mu;
-entity.957=&nu;
-entity.958=&xi;
-entity.959=&omicron;
-entity.960=&pi;
-entity.961=&rho;
-entity.962=&sigmaf;
-entity.963=&sigma;
-entity.964=&tau;
-entity.965=&upsilon;
-entity.966=&phi;
-entity.967=&chi;
-entity.968=&psi;
-entity.969=&omega;
-entity.977=&thetasym;
-entity.978=&upsih;
-entity.982=&piv;
-entity.8226=&bull;
-entity.8230=&hellip;
-entity.8242=&prime;
-entity.8243=&Prime;
-entity.8254=&oline;
-entity.8260=&frasl;
-entity.8472=&weierp;
-entity.8465=&image;
-entity.8476=&real;
-entity.8482=&trade;
-entity.8501=&alefsym;
-entity.8592=&larr;
-entity.8593=&uarr;
-entity.8594=&rarr;
-entity.8595=&darr;
-entity.8596=&harr;
-entity.8629=&crarr;
-entity.8656=&lArr;
-entity.8657=&uArr;
-entity.8658=&rArr;
-entity.8659=&dArr;
-entity.8660=&hArr;
-entity.8704=&forall;
-entity.8706=&part;
-entity.8707=&exist;
-entity.8709=&empty;
-entity.8711=&nabla;
-entity.8712=&isin;
-entity.8713=&notin;
-entity.8715=&ni;
-entity.8719=&prod;
-entity.8721=&sum;
-entity.8722=&minus;
-entity.8727=&lowast;
-entity.8730=&radic;
-entity.8733=&prop;
-entity.8734=&infin;
-entity.8736=&ang;
-entity.8743=&and;
-entity.8744=&or;
-entity.8745=&cap;
-entity.8746=&cup;
-entity.8747=&int;
-entity.8756=&there4;
-entity.8764=&sim;
-entity.8773=&cong;
-entity.8776=&asymp;
-entity.8800=&ne;
-entity.8801=&equiv;
-entity.8804=&le;
-entity.8805=&ge;
-entity.8834=&sub;
-entity.8835=&sup;
-entity.8836=&nsub;
-entity.8838=&sube;
-entity.8839=&supe;
-entity.8853=&oplus;
-entity.8855=&otimes;
-entity.8869=&perp;
-entity.8901=&sdot;
-entity.8968=&lceil;
-entity.8969=&rceil;
-entity.8970=&lfloor;
-entity.8971=&rfloor;
-entity.9001=&lang;
-entity.9002=&rang;
-entity.9674=&loz;
-entity.9824=&spades;
-entity.9827=&clubs;
-entity.9829=&hearts;
-entity.9830=&diams;
deleted file mode 100644
--- a/intl/unicharutil/tables/mathml20.properties
+++ /dev/null
@@ -1,1253 +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
-#  Do not translate this file.
-#  The file contains a mapping of Unicode values to MathML entity names.
-#  Entities already listed in html40 were deliberately excluded. So you must use
-#  nsIEntityConverter.html40 + nsIEntityConverter.mathml20 to access everything.
-
-entity.list.name=mathml20
-entity.168=&DoubleDot;
-entity.175=&OverBar;
-entity.177=&PlusMinus;
-entity.184=&Cedilla;
-entity.256=&Amacr;
-entity.257=&amacr;
-entity.258=&Abreve;
-entity.259=&abreve;
-entity.260=&Aogon;
-entity.261=&aogon;
-entity.262=&Cacute;
-entity.263=&cacute;
-entity.264=&Ccirc;
-entity.265=&ccirc;
-entity.266=&Cdot;
-entity.267=&cdot;
-entity.268=&Ccaron;
-entity.269=&ccaron;
-entity.270=&Dcaron;
-entity.271=&dcaron;
-entity.272=&Dstrok;
-entity.273=&dstrok;
-entity.274=&Emacr;
-entity.275=&emacr;
-entity.278=&Edot;
-entity.279=&edot;
-entity.280=&Eogon;
-entity.281=&eogon;
-entity.282=&Ecaron;
-entity.283=&ecaron;
-entity.284=&Gcirc;
-entity.285=&gcirc;
-entity.286=&Gbreve;
-entity.287=&gbreve;
-entity.288=&Gdot;
-entity.289=&gdot;
-entity.290=&Gcedil;
-entity.292=&Hcirc;
-entity.293=&hcirc;
-entity.294=&Hstrok;
-entity.295=&hstrok;
-entity.296=&Itilde;
-entity.297=&itilde;
-entity.298=&Imacr;
-entity.299=&imacr;
-entity.302=&Iogon;
-entity.303=&iogon;
-entity.304=&Idot;
-entity.306=&IJlig;
-entity.307=&ijlig;
-entity.308=&Jcirc;
-entity.309=&jcirc;
-entity.310=&Kcedil;
-entity.311=&kcedil;
-entity.312=&kgreen;
-entity.313=&Lacute;
-entity.314=&lacute;
-entity.315=&Lcedil;
-entity.316=&lcedil;
-entity.317=&Lcaron;
-entity.318=&lcaron;
-entity.319=&Lmidot;
-entity.320=&lmidot;
-entity.321=&Lstrok;
-entity.322=&lstrok;
-entity.323=&Nacute;
-entity.324=&nacute;
-entity.325=&Ncedil;
-entity.326=&ncedil;
-entity.327=&Ncaron;
-entity.328=&ncaron;
-entity.329=&napos;
-entity.330=&ENG;
-entity.331=&eng;
-entity.332=&Omacr;
-entity.333=&omacr;
-entity.336=&Odblac;
-entity.337=&odblac;
-entity.340=&Racute;
-entity.341=&racute;
-entity.342=&Rcedil;
-entity.343=&rcedil;
-entity.344=&Rcaron;
-entity.345=&rcaron;
-entity.346=&Sacute;
-entity.347=&sacute;
-entity.348=&Scirc;
-entity.349=&scirc;
-entity.350=&Scedil;
-entity.351=&scedil;
-entity.354=&Tcedil;
-entity.355=&tcedil;
-entity.356=&Tcaron;
-entity.357=&tcaron;
-entity.358=&Tstrok;
-entity.359=&tstrok;
-entity.360=&Utilde;
-entity.361=&utilde;
-entity.362=&Umacr;
-entity.363=&umacr;
-entity.364=&Ubreve;
-entity.365=&ubreve;
-entity.366=&Uring;
-entity.367=&uring;
-entity.368=&Udblac;
-entity.369=&udblac;
-entity.370=&Uogon;
-entity.371=&uogon;
-entity.372=&Wcirc;
-entity.373=&wcirc;
-entity.374=&Ycirc;
-entity.375=&ycirc;
-entity.377=&Zacute;
-entity.378=&zacute;
-entity.379=&Zdot;
-entity.380=&zdot;
-entity.381=&Zcaron;
-entity.382=&zcaron;
-entity.437=&imped;
-entity.501=&gacute;
-entity.711=&Hacek;
-entity.728=&Breve;
-entity.729=&DiacriticalDot;
-entity.730=&ring;
-entity.731=&ogon;
-entity.732=&DiacriticalTilde;
-entity.733=&DiacriticalDoubleAcute;
-entity.785=&DownBreve;
-entity.818=&UnderBar;
-entity.949=&varepsilon;
-entity.962=&varsigma;
-entity.966=&varphi;
-entity.977=&vartheta;
-entity.978=&Upsi;
-entity.981=&straightphi;
-entity.982=&varpi;
-entity.988=&Gammad;
-entity.989=&digamma;
-entity.1008=&varkappa;
-entity.1009=&varrho;
-entity.1013=&straightepsilon;
-entity.1014=&backepsilon;
-entity.1025=&IOcy;
-entity.1026=&DJcy;
-entity.1027=&GJcy;
-entity.1028=&Jukcy;
-entity.1029=&DScy;
-entity.1030=&Iukcy;
-entity.1031=&YIcy;
-entity.1032=&Jsercy;
-entity.1033=&LJcy;
-entity.1034=&NJcy;
-entity.1035=&TSHcy;
-entity.1036=&KJcy;
-entity.1038=&Ubrcy;
-entity.1039=&DZcy;
-entity.1040=&Acy;
-entity.1041=&Bcy;
-entity.1042=&Vcy;
-entity.1043=&Gcy;
-entity.1044=&Dcy;
-entity.1045=&IEcy;
-entity.1046=&ZHcy;
-entity.1047=&Zcy;
-entity.1048=&Icy;
-entity.1049=&Jcy;
-entity.1050=&Kcy;
-entity.1051=&Lcy;
-entity.1052=&Mcy;
-entity.1053=&Ncy;
-entity.1054=&Ocy;
-entity.1055=&Pcy;
-entity.1056=&Rcy;
-entity.1057=&Scy;
-entity.1058=&Tcy;
-entity.1059=&Ucy;
-entity.1060=&Fcy;
-entity.1061=&KHcy;
-entity.1062=&TScy;
-entity.1063=&CHcy;
-entity.1064=&SHcy;
-entity.1065=&SHCHcy;
-entity.1066=&HARDcy;
-entity.1067=&Ycy;
-entity.1068=&SOFTcy;
-entity.1069=&Ecy;
-entity.1070=&YUcy;
-entity.1071=&YAcy;
-entity.1072=&acy;
-entity.1073=&bcy;
-entity.1074=&vcy;
-entity.1075=&gcy;
-entity.1076=&dcy;
-entity.1077=&iecy;
-entity.1078=&zhcy;
-entity.1079=&zcy;
-entity.1080=&icy;
-entity.1081=&jcy;
-entity.1082=&kcy;
-entity.1083=&lcy;
-entity.1084=&mcy;
-entity.1085=&ncy;
-entity.1086=&ocy;
-entity.1087=&pcy;
-entity.1088=&rcy;
-entity.1089=&scy;
-entity.1090=&tcy;
-entity.1091=&ucy;
-entity.1092=&fcy;
-entity.1093=&khcy;
-entity.1094=&tscy;
-entity.1095=&chcy;
-entity.1096=&shcy;
-entity.1097=&shchcy;
-entity.1098=&hardcy;
-entity.1099=&ycy;
-entity.1100=&softcy;
-entity.1101=&ecy;
-entity.1102=&yucy;
-entity.1103=&yacy;
-entity.1105=&iocy;
-entity.1106=&djcy;
-entity.1107=&gjcy;
-entity.1108=&jukcy;
-entity.1109=&dscy;
-entity.1110=&iukcy;
-entity.1111=&yicy;
-entity.1112=&jsercy;
-entity.1113=&ljcy;
-entity.1114=&njcy;
-entity.1115=&tshcy;
-entity.1116=&kjcy;
-entity.1118=&ubrcy;
-entity.1119=&dzcy;
-entity.8196=&emsp13;
-entity.8197=&emsp14;
-entity.8199=&numsp;
-entity.8200=&puncsp;
-entity.8201=&ThinSpace;
-entity.8202=&VeryThinSpace;
-entity.8203=&ZeroWidthSpace;
-entity.8208=&hyphen;
-entity.8213=&horbar;
-entity.8214=&Verbar;
-entity.8216=&OpenCurlyQuote;
-entity.8217=&CloseCurlyQuote;
-entity.8218=&lsquor;
-entity.8220=&OpenCurlyDoubleQuote;
-entity.8221=&CloseCurlyDoubleQuote;
-entity.8222=&ldquor;
-entity.8226=&bullet;
-entity.8229=&nldr;
-entity.8241=&pertenk;
-entity.8244=&tprime;
-entity.8245=&backprime;
-entity.8257=&caret;
-entity.8259=&hybull;
-entity.8271=&bsemi;
-entity.8279=&qprime;
-entity.8287=&MediumSpace;
-entity.8288=&NoBreak;
-entity.8289=&ApplyFunction;
-entity.8290=&InvisibleTimes;
-entity.8291=&InvisibleComma;
-entity.8411=&TripleDot;
-entity.8412=&DotDot;
-entity.8450=&Copf;
-entity.8453=&incare;
-entity.8458=&gscr;
-entity.8459=&HilbertSpace;
-entity.8460=&Poincareplane;
-entity.8461=&Hopf;
-entity.8462=&planckh;
-entity.8463=&hslash;
-entity.8464=&Iscr;
-entity.8465=&Ifr;
-entity.8466=&Laplacetrf;
-entity.8467=&ell;
-entity.8469=&Nopf;
-entity.8470=&numero;
-entity.8471=&copysr;
-entity.8473=&Popf;
-entity.8474=&Qopf;
-entity.8475=&Rscr;
-entity.8476=&Rfr;
-entity.8477=&Ropf;
-entity.8478=&rx;
-entity.8484=&Zopf;
-entity.8486=&ohm;
-entity.8487=&mho;
-entity.8488=&Zfr;
-entity.8489=&iiota;
-entity.8491=&angst;
-entity.8492=&Bernoullis;
-entity.8493=&Cayleys;
-entity.8495=&escr;
-entity.8496=&Escr;
-entity.8497=&Fouriertrf;
-entity.8499=&Mellintrf;
-entity.8500=&orderof;
-entity.8501=&aleph;
-entity.8502=&beth;
-entity.8503=&gimel;
-entity.8504=&daleth;
-entity.8517=&CapitalDifferentialD;
-entity.8518=&DifferentialD;
-entity.8519=&ExponentialE;
-entity.8520=&ImaginaryI;
-entity.8531=&frac13;
-entity.8532=&frac23;
-entity.8533=&frac15;
-entity.8534=&frac25;
-entity.8535=&frac35;
-entity.8536=&frac45;
-entity.8537=&frac16;
-entity.8538=&frac56;
-entity.8539=&frac18;
-entity.8540=&frac38;
-entity.8541=&frac58;
-entity.8542=&frac78;
-entity.8592=&LeftArrow;
-entity.8593=&UpArrow;
-entity.8594=&RightArrow;
-entity.8595=&DownArrow;
-entity.8596=&LeftRightArrow;
-entity.8597=&UpDownArrow;
-entity.8598=&UpperLeftArrow;
-entity.8599=&UpperRightArrow;
-entity.8600=&LowerRightArrow;
-entity.8601=&LowerLeftArrow;
-entity.8602=&nleftarrow;
-entity.8603=&nrightarrow;
-entity.8605=&rightsquigarrow;
-entity.8606=&Larr;
-entity.8607=&Uarr;
-entity.8608=&Rarr;
-entity.8609=&Darr;
-entity.8610=&leftarrowtail;
-entity.8611=&rightarrowtail;
-entity.8612=&LeftTeeArrow;
-entity.8613=&UpTeeArrow;
-entity.8614=&RightTeeArrow;
-entity.8615=&DownTeeArrow;
-entity.8617=&hookleftarrow;
-entity.8618=&hookrightarrow;
-entity.8619=&looparrowleft;
-entity.8620=&looparrowright;
-entity.8621=&leftrightsquigarrow;
-entity.8622=&nleftrightarrow;
-entity.8624=&Lsh;
-entity.8625=&Rsh;
-entity.8626=&ldsh;
-entity.8627=&rdsh;
-entity.8630=&curvearrowleft;
-entity.8631=&curvearrowright;
-entity.8634=&circlearrowleft;
-entity.8635=&circlearrowright;
-entity.8636=&LeftVector;
-entity.8637=&DownLeftVector;
-entity.8638=&RightUpVector;
-entity.8639=&LeftUpVector;
-entity.8640=&RightVector;
-entity.8641=&DownRightVector;
-entity.8642=&RightDownVector;
-entity.8643=&LeftDownVector;
-entity.8644=&RightArrowLeftArrow;
-entity.8645=&UpArrowDownArrow;
-entity.8646=&LeftArrowRightArrow;
-entity.8647=&leftleftarrows;
-entity.8648=&upuparrows;
-entity.8649=&rightrightarrows;
-entity.8650=&downdownarrows;
-entity.8651=&ReverseEquilibrium;
-entity.8652=&Equilibrium;
-entity.8653=&nLeftarrow;
-entity.8654=&nLeftrightarrow;
-entity.8655=&nRightarrow;
-entity.8656=&DoubleLeftArrow;
-entity.8657=&DoubleUpArrow;
-entity.8658=&DoubleRightArrow;
-entity.8659=&DoubleDownArrow;
-entity.8660=&DoubleLeftRightArrow;
-entity.8661=&DoubleUpDownArrow;
-entity.8662=&nwArr;
-entity.8663=&neArr;
-entity.8664=&seArr;
-entity.8665=&swArr;
-entity.8666=&Lleftarrow;
-entity.8667=&Rrightarrow;
-entity.8669=&zigrarr;
-entity.8676=&LeftArrowBar;
-entity.8677=&RightArrowBar;
-entity.8693=&DownArrowUpArrow;
-entity.8701=&loarr;
-entity.8702=&roarr;
-entity.8703=&hoarr;
-entity.8704=&ForAll;
-entity.8705=&complement;
-entity.8706=&PartialD;
-entity.8707=&Exists;
-entity.8708=&NotExists;
-entity.8709=&emptyset;
-entity.8711=&Del;
-entity.8712=&Element;
-entity.8713=&NotElement;
-entity.8715=&ReverseElement;
-entity.8716=&NotReverseElement;
-entity.8719=&Product;
-entity.8720=&Coproduct;
-entity.8721=&Sum;
-entity.8723=&MinusPlus;
-entity.8724=&dotplus;
-entity.8726=&Backslash;
-entity.8728=&SmallCircle;
-entity.8730=&Sqrt;
-entity.8733=&Proportional;
-entity.8735=&angrt;
-entity.8736=&angle;
-entity.8737=&measuredangle;
-entity.8738=&angsph;
-entity.8739=&VerticalBar;
-entity.8740=&NotVerticalBar;
-entity.8741=&DoubleVerticalBar;
-entity.8742=&NotDoubleVerticalBar;
-entity.8743=&wedge;
-entity.8744=&vee;
-entity.8747=&Integral;
-entity.8748=&Int;
-entity.8749=&iiint;
-entity.8750=&ContourIntegral;
-entity.8751=&DoubleContourIntegral;
-entity.8752=&Cconint;
-entity.8753=&cwint;
-entity.8754=&ClockwiseContourIntegral;
-entity.8755=&CounterClockwiseContourIntegral;
-entity.8756=&Therefore;
-entity.8757=&Because;
-entity.8758=&ratio;
-entity.8759=&Proportion;
-entity.8760=&dotminus;
-entity.8762=&mDDot;
-entity.8763=&homtht;
-entity.8764=&Tilde;
-entity.8765=&backsim;
-entity.8766=&mstpos;
-entity.8767=&acd;
-entity.8768=&VerticalTilde;
-entity.8769=&NotTilde;
-entity.8770=&EqualTilde;
-entity.8771=&TildeEqual;
-entity.8772=&NotTildeEqual;
-entity.8773=&TildeFullEqual;
-entity.8774=&simne;
-entity.8775=&NotTildeFullEqual;
-entity.8776=&TildeTilde;
-entity.8777=&NotTildeTilde;
-entity.8778=&approxeq;
-entity.8779=&apid;
-entity.8780=&backcong;
-entity.8781=&CupCap;
-entity.8782=&HumpDownHump;
-entity.8783=&HumpEqual;
-entity.8784=&DotEqual;
-entity.8785=&doteqdot;
-entity.8786=&fallingdotseq;
-entity.8787=&risingdotseq;
-entity.8788=&Assign;
-entity.8789=&eqcolon;
-entity.8790=&eqcirc;
-entity.8791=&circeq;
-entity.8793=&wedgeq;
-entity.8794=&veeeq;
-entity.8796=&triangleq;
-entity.8799=&questeq;
-entity.8800=&NotEqual;
-entity.8801=&Congruent;
-entity.8802=&NotCongruent;
-entity.8804=&leq;
-entity.8805=&GreaterEqual;
-entity.8806=&LessFullEqual;
-entity.8807=&GreaterFullEqual;
-entity.8808=&lneqq;
-entity.8809=&gneqq;
-entity.8810=&NestedLessLess;
-entity.8811=&NestedGreaterGreater;
-entity.8812=&between;
-entity.8813=&NotCupCap;
-entity.8814=&NotLess;
-entity.8815=&NotGreater;
-entity.8816=&NotLessEqual;
-entity.8817=&NotGreaterEqual;
-entity.8818=&LessTilde;
-entity.8819=&GreaterTilde;
-entity.8820=&NotLessTilde;
-entity.8821=&NotGreaterTilde;
-entity.8822=&LessGreater;
-entity.8823=&GreaterLess;
-entity.8824=&NotLessGreater;
-entity.8825=&NotGreaterLess;
-entity.8826=&Precedes;
-entity.8827=&Succeeds;
-entity.8828=&PrecedesSlantEqual;
-entity.8829=&SucceedsSlantEqual;
-entity.8830=&PrecedesTilde;
-entity.8831=&SucceedsTilde;
-entity.8832=&NotPrecedes;
-entity.8833=&NotSucceeds;
-entity.8834=&subset;
-entity.8835=&Superset;
-entity.8837=&nsup;
-entity.8838=&SubsetEqual;
-entity.8839=&SupersetEqual;
-entity.8840=&NotSubsetEqual;
-entity.8841=&NotSupersetEqual;
-entity.8842=&subsetneq;
-entity.8843=&supsetneq;
-entity.8845=&cupdot;
-entity.8846=&UnionPlus;
-entity.8847=&SquareSubset;
-entity.8848=&SquareSuperset;
-entity.8849=&SquareSubsetEqual;
-entity.8850=&SquareSupersetEqual;
-entity.8851=&SquareIntersection;
-entity.8852=&SquareUnion;
-entity.8853=&CirclePlus;
-entity.8854=&CircleMinus;
-entity.8855=&CircleTimes;
-entity.8856=&osol;
-entity.8857=&CircleDot;
-entity.8858=&circledcirc;
-entity.8859=&circledast;
-entity.8861=&circleddash;
-entity.8862=&boxplus;
-entity.8863=&boxminus;
-entity.8864=&boxtimes;
-entity.8865=&dotsquare;
-entity.8866=&RightTee;
-entity.8867=&LeftTee;
-entity.8868=&DownTee;
-entity.8869=&UpTee;
-entity.8871=&models;
-entity.8872=&DoubleRightTee;
-entity.8873=&Vdash;
-entity.8874=&Vvdash;
-entity.8875=&VDash;
-entity.8876=&nvdash;
-entity.8877=&nvDash;
-entity.8878=&nVdash;
-entity.8879=&nVDash;
-entity.8880=&prurel;
-entity.8882=&LeftTriangle;
-entity.8883=&RightTriangle;
-entity.8884=&LeftTriangleEqual;
-entity.8885=&RightTriangleEqual;
-entity.8886=&origof;
-entity.8887=&imof;
-entity.8888=&multimap;
-entity.8889=&hercon;
-entity.8890=&intercal;
-entity.8891=&veebar;
-entity.8893=&barvee;
-entity.8894=&angrtvb;
-entity.8895=&lrtri;
-entity.8896=&Wedge;
-entity.8897=&Vee;
-entity.8898=&Intersection;
-entity.8899=&Union;
-entity.8900=&Diamond;
-entity.8902=&Star;
-entity.8903=&divideontimes;
-entity.8904=&bowtie;
-entity.8905=&ltimes;
-entity.8906=&rtimes;
-entity.8907=&leftthreetimes;
-entity.8908=&rightthreetimes;
-entity.8909=&backsimeq;
-entity.8910=&curlyvee;
-entity.8911=&curlywedge;
-entity.8912=&Subset;
-entity.8913=&Supset;
-entity.8914=&Cap;
-entity.8915=&Cup;
-entity.8916=&pitchfork;
-entity.8917=&epar;
-entity.8918=&lessdot;
-entity.8919=&gtrdot;
-entity.8920=&Ll;
-entity.8921=&Gg;
-entity.8922=&LessEqualGreater;
-entity.8923=&GreaterEqualLess;
-entity.8926=&curlyeqprec;
-entity.8927=&curlyeqsucc;
-entity.8928=&NotPrecedesSlantEqual;
-entity.8929=&NotSucceedsSlantEqual;
-entity.8930=&NotSquareSubsetEqual;
-entity.8931=&NotSquareSupersetEqual;
-entity.8934=&lnsim;
-entity.8935=&gnsim;
-entity.8936=&precnsim;
-entity.8937=&succnsim;
-entity.8938=&NotLeftTriangle;
-entity.8939=&NotRightTriangle;
-entity.8940=&NotLeftTriangleEqual;
-entity.8941=&NotRightTriangleEqual;
-entity.8942=&vellip;
-entity.8943=&ctdot;
-entity.8944=&utdot;
-entity.8945=&dtdot;
-entity.8946=&disin;
-entity.8947=&isinsv;
-entity.8948=&isins;
-entity.8949=&isindot;
-entity.8950=&notinvc;
-entity.8951=&notinvb;
-entity.8953=&isinE;
-entity.8954=&nisd;
-entity.8955=&xnis;
-entity.8956=&nis;
-entity.8957=&notnivc;
-entity.8958=&notnivb;
-entity.8965=&barwedge;
-entity.8966=&Barwed;
-entity.8968=&LeftCeiling;
-entity.8969=&RightCeiling;
-entity.8970=&LeftFloor;
-entity.8971=&RightFloor;
-entity.8972=&drcrop;
-entity.8973=&dlcrop;
-entity.8974=&urcrop;
-entity.8975=&ulcrop;
-entity.8976=&bnot;
-entity.8978=&profline;
-entity.8979=&profsurf;
-entity.8981=&telrec;
-entity.8982=&target;
-entity.8988=&ulcorner;
-entity.8989=&urcorner;
-entity.8990=&llcorner;
-entity.8991=&lrcorner;
-entity.8994=&frown;
-entity.8995=&smile;
-entity.9005=&cylcty;
-entity.9006=&profalar;
-entity.9014=&topbot;
-entity.9021=&ovbar;
-entity.9023=&solbar;
-entity.9084=&angzarr;
-entity.9136=&lmoustache;
-entity.9137=&rmoustache;
-entity.9140=&OverBracket;
-entity.9141=&UnderBracket;
-entity.9142=&bbrktbrk;
-entity.9180=&OverParenthesis;
-entity.9181=&UnderParenthesis;
-entity.9182=&OverBrace;
-entity.9183=&UnderBrace;
-entity.9186=&trpezium;
-entity.9191=&elinters;
-entity.9251=&blank;
-entity.9416=&circledS;
-entity.9472=&HorizontalLine;
-entity.9474=&boxv;
-entity.9484=&boxdr;
-entity.9488=&boxdl;
-entity.9492=&boxur;
-entity.9496=&boxul;
-entity.9500=&boxvr;
-entity.9508=&boxvl;
-entity.9516=&boxhd;
-entity.9524=&boxhu;
-entity.9532=&boxvh;
-entity.9552=&boxH;
-entity.9553=&boxV;
-entity.9554=&boxdR;
-entity.9555=&boxDr;
-entity.9556=&boxDR;
-entity.9557=&boxdL;
-entity.9558=&boxDl;
-entity.9559=&boxDL;
-entity.9560=&boxuR;
-entity.9561=&boxUr;
-entity.9562=&boxUR;
-entity.9563=&boxuL;
-entity.9564=&boxUl;
-entity.9565=&boxUL;
-entity.9566=&boxvR;
-entity.9567=&boxVr;
-entity.9568=&boxVR;
-entity.9569=&boxvL;
-entity.9570=&boxVl;
-entity.9571=&boxVL;
-entity.9572=&boxHd;
-entity.9573=&boxhD;
-entity.9574=&boxHD;
-entity.9575=&boxHu;
-entity.9576=&boxhU;
-entity.9577=&boxHU;
-entity.9578=&boxvH;
-entity.9579=&boxVh;
-entity.9580=&boxVH;
-entity.9600=&uhblk;
-entity.9604=&lhblk;
-entity.9608=&block;
-entity.9617=&blk14;
-entity.9618=&blk12;
-entity.9619=&blk34;
-entity.9633=&Square;
-entity.9642=&FilledVerySmallSquare;
-entity.9643=&EmptyVerySmallSquare;
-entity.9645=&rect;
-entity.9646=&marker;
-entity.9649=&fltns;
-entity.9651=&bigtriangleup;
-entity.9652=&blacktriangle;
-entity.9653=&triangle;
-entity.9656=&blacktriangleright;
-entity.9657=&triangleright;
-entity.9661=&bigtriangledown;
-entity.9662=&blacktriangledown;
-entity.9663=&triangledown;
-entity.9666=&blacktriangleleft;
-entity.9667=&triangleleft;
-entity.9674=&lozenge;
-entity.9675=&cir;
-entity.9708=&tridot;
-entity.9711=&bigcirc;
-entity.9720=&ultri;
-entity.9721=&urtri;
-entity.9722=&lltri;
-entity.9723=&EmptySmallSquare;
-entity.9724=&FilledSmallSquare;
-entity.9733=&bigstar;
-entity.9734=&star;
-entity.9742=&phone;
-entity.9792=&female;
-entity.9794=&male;
-entity.9824=&spadesuit;
-entity.9827=&clubsuit;
-entity.9829=&heartsuit;
-entity.9830=&diamondsuit;
-entity.9834=&sung;
-entity.9837=&flat;
-entity.9838=&natural;
-entity.9839=&sharp;
-entity.10003=&checkmark;
-entity.10007=&cross;
-entity.10016=&maltese;
-entity.10038=&sext;
-entity.10072=&VerticalSeparator;
-entity.10098=&lbbrk;
-entity.10099=&rbbrk;
-entity.10214=&LeftDoubleBracket;
-entity.10215=&RightDoubleBracket;
-entity.10216=&LeftAngleBracket;
-entity.10217=&RightAngleBracket;
-entity.10218=&Lang;
-entity.10219=&Rang;
-entity.10220=&loang;
-entity.10221=&roang;
-entity.10229=&LongLeftArrow;
-entity.10230=&LongRightArrow;
-entity.10231=&LongLeftRightArrow;
-entity.10232=&DoubleLongLeftArrow;
-entity.10233=&DoubleLongRightArrow;
-entity.10234=&DoubleLongLeftRightArrow;
-entity.10236=&longmapsto;
-entity.10239=&dzigrarr;
-entity.10498=&nvlArr;
-entity.10499=&nvrArr;
-entity.10500=&nvHarr;
-entity.10501=&Map;
-entity.10508=&lbarr;
-entity.10509=&bkarow;
-entity.10510=&lBarr;
-entity.10511=&dbkarow;
-entity.10512=&RBarr;
-entity.10513=&DDotrahd;
-entity.10514=&UpArrowBar;
-entity.10515=&DownArrowBar;
-entity.10518=&Rarrtl;
-entity.10521=&latail;
-entity.10522=&ratail;
-entity.10523=&lAtail;
-entity.10524=&rAtail;
-entity.10525=&larrfs;
-entity.10526=&rarrfs;
-entity.10527=&larrbfs;
-entity.10528=&rarrbfs;
-entity.10531=&nwarhk;
-entity.10532=&nearhk;
-entity.10533=&hksearow;
-entity.10534=&hkswarow;
-entity.10535=&nwnear;
-entity.10536=&nesear;
-entity.10537=&seswar;
-entity.10538=&swnwar;
-entity.10547=&rarrc;
-entity.10549=&cudarrr;
-entity.10550=&ldca;
-entity.10551=&rdca;
-entity.10552=&cudarrl;
-entity.10553=&larrpl;
-entity.10556=&curarrm;
-entity.10557=&cularrp;
-entity.10565=&rarrpl;
-entity.10568=&harrcir;
-entity.10569=&Uarrocir;
-entity.10570=&lurdshar;
-entity.10571=&ldrushar;
-entity.10574=&LeftRightVector;
-entity.10575=&RightUpDownVector;
-entity.10576=&DownLeftRightVector;
-entity.10577=&LeftUpDownVector;
-entity.10578=&LeftVectorBar;
-entity.10579=&RightVectorBar;
-entity.10580=&RightUpVectorBar;
-entity.10581=&RightDownVectorBar;
-entity.10582=&DownLeftVectorBar;
-entity.10583=&DownRightVectorBar;
-entity.10584=&LeftUpVectorBar;
-entity.10585=&LeftDownVectorBar;
-entity.10586=&LeftTeeVector;
-entity.10587=&RightTeeVector;
-entity.10588=&RightUpTeeVector;
-entity.10589=&RightDownTeeVector;
-entity.10590=&DownLeftTeeVector;
-entity.10591=&DownRightTeeVector;
-entity.10592=&LeftUpTeeVector;
-entity.10593=&LeftDownTeeVector;
-entity.10594=&lHar;
-entity.10595=&uHar;
-entity.10596=&rHar;
-entity.10597=&dHar;
-entity.10598=&luruhar;
-entity.10599=&ldrdhar;
-entity.10600=&ruluhar;
-entity.10601=&rdldhar;
-entity.10602=&lharul;
-entity.10603=&llhard;
-entity.10604=&rharul;
-entity.10605=&lrhard;
-entity.10606=&UpEquilibrium;
-entity.10607=&ReverseUpEquilibrium;
-entity.10608=&RoundImplies;
-entity.10609=&erarr;
-entity.10610=&simrarr;
-entity.10611=&larrsim;
-entity.10612=&rarrsim;
-entity.10613=&rarrap;
-entity.10614=&ltlarr;
-entity.10616=&gtrarr;
-entity.10617=&subrarr;
-entity.10619=&suplarr;
-entity.10620=&lfisht;
-entity.10621=&rfisht;
-entity.10622=&ufisht;
-entity.10623=&dfisht;
-entity.10629=&lopar;
-entity.10630=&ropar;
-entity.10635=&lbrke;
-entity.10636=&rbrke;
-entity.10637=&lbrkslu;
-entity.10638=&rbrksld;
-entity.10639=&lbrksld;
-entity.10640=&rbrkslu;
-entity.10641=&langd;
-entity.10642=&rangd;
-entity.10643=&lparlt;
-entity.10644=&rpargt;
-entity.10645=&gtlPar;
-entity.10646=&ltrPar;
-entity.10650=&vzigzag;
-entity.10652=&vangrt;
-entity.10653=&angrtvbd;
-entity.10660=&ange;
-entity.10661=&range;
-entity.10662=&dwangle;
-entity.10663=&uwangle;
-entity.10664=&angmsdaa;
-entity.10665=&angmsdab;
-entity.10666=&angmsdac;
-entity.10667=&angmsdad;
-entity.10668=&angmsdae;
-entity.10669=&angmsdaf;
-entity.10670=&angmsdag;
-entity.10671=&angmsdah;
-entity.10672=&bemptyv;
-entity.10673=&demptyv;
-entity.10674=&cemptyv;
-entity.10675=&raemptyv;
-entity.10676=&laemptyv;
-entity.10677=&ohbar;
-entity.10678=&omid;
-entity.10679=&opar;
-entity.10681=&operp;
-entity.10683=&olcross;
-entity.10684=&odsold;
-entity.10686=&olcir;
-entity.10687=&ofcir;
-entity.10688=&olt;
-entity.10689=&ogt;
-entity.10690=&cirscir;
-entity.10691=&cirE;
-entity.10692=&solb;
-entity.10693=&bsolb;
-entity.10697=&boxbox;
-entity.10701=&trisb;
-entity.10702=&rtriltri;
-entity.10703=&LeftTriangleBar;
-entity.10704=&RightTriangleBar;
-entity.10714=&race;
-entity.10716=&iinfin;
-entity.10717=&infintie;
-entity.10718=&nvinfin;
-entity.10723=&eparsl;
-entity.10724=&smeparsl;
-entity.10725=&eqvparsl;
-entity.10731=&blacklozenge;
-entity.10740=&RuleDelayed;
-entity.10742=&dsol;
-entity.10752=&bigodot;
-entity.10753=&bigoplus;
-entity.10754=&bigotimes;
-entity.10756=&biguplus;
-entity.10758=&bigsqcup;
-entity.10764=&iiiint;
-entity.10765=&fpartint;
-entity.10768=&cirfnint;
-entity.10769=&awint;
-entity.10770=&rppolint;
-entity.10771=&scpolint;
-entity.10772=&npolint;
-entity.10773=&pointint;
-entity.10774=&quatint;
-entity.10775=&intlarhk;
-entity.10786=&pluscir;
-entity.10787=&plusacir;
-entity.10788=&simplus;
-entity.10789=&plusdu;
-entity.10790=&plussim;
-entity.10791=&plustwo;
-entity.10793=&mcomma;
-entity.10794=&minusdu;
-entity.10797=&loplus;
-entity.10798=&roplus;
-entity.10799=&Cross;
-entity.10800=&timesd;
-entity.10801=&timesbar;
-entity.10803=&smashp;
-entity.10804=&lotimes;
-entity.10805=&rotimes;
-entity.10806=&otimesas;
-entity.10807=&Otimes;
-entity.10808=&odiv;
-entity.10809=&triplus;
-entity.10810=&triminus;
-entity.10811=&tritime;
-entity.10812=&intprod;
-entity.10815=&amalg;
-entity.10816=&capdot;
-entity.10818=&ncup;
-entity.10819=&ncap;
-entity.10820=&capand;
-entity.10821=&cupor;
-entity.10822=&cupcap;
-entity.10823=&capcup;
-entity.10824=&cupbrcap;
-entity.10825=&capbrcup;
-entity.10826=&cupcup;
-entity.10827=&capcap;
-entity.10828=&ccups;
-entity.10829=&ccaps;
-entity.10832=&ccupssm;
-entity.10835=&And;
-entity.10836=&Or;
-entity.10837=&andand;
-entity.10838=&oror;
-entity.10839=&orslope;
-entity.10840=&andslope;
-entity.10842=&andv;
-entity.10843=&orv;
-entity.10844=&andd;
-entity.10845=&ord;
-entity.10847=&wedbar;
-entity.10854=&sdote;
-entity.10858=&simdot;
-entity.10861=&congdot;
-entity.10862=&easter;
-entity.10863=&apacir;
-entity.10864=&apE;
-entity.10865=&eplus;
-entity.10866=&pluse;
-entity.10867=&Esim;
-entity.10868=&Colone;
-entity.10869=&Equal;
-entity.10871=&ddotseq;
-entity.10872=&equivDD;
-entity.10873=&ltcir;
-entity.10874=&gtcir;
-entity.10875=&ltquest;
-entity.10876=&gtquest;
-entity.10877=&LessSlantEqual;
-entity.10878=&GreaterSlantEqual;
-entity.10879=&lesdot;
-entity.10880=&gesdot;
-entity.10881=&lesdoto;
-entity.10882=&gesdoto;
-entity.10883=&lesdotor;
-entity.10884=&gesdotol;
-entity.10885=&lessapprox;
-entity.10886=&gtrapprox;
-entity.10887=&lneq;
-entity.10888=&gneq;
-entity.10889=&lnapprox;
-entity.10890=&gnapprox;
-entity.10891=&lesseqqgtr;
-entity.10892=&gtreqqless;
-entity.10893=&lsime;
-entity.10894=&gsime;
-entity.10895=&lsimg;
-entity.10896=&gsiml;
-entity.10897=&lgE;
-entity.10898=&glE;
-entity.10899=&lesges;
-entity.10900=&gesles;
-entity.10901=&eqslantless;
-entity.10902=&eqslantgtr;
-entity.10903=&elsdot;
-entity.10904=&egsdot;
-entity.10905=&el;
-entity.10906=&eg;
-entity.10909=&siml;
-entity.10910=&simg;
-entity.10911=&simlE;
-entity.10912=&simgE;
-entity.10913=&LessLess;
-entity.10914=&GreaterGreater;
-entity.10916=&glj;
-entity.10917=&gla;
-entity.10918=&ltcc;
-entity.10919=&gtcc;
-entity.10920=&lescc;
-entity.10921=&gescc;
-entity.10922=&smt;
-entity.10923=&lat;
-entity.10924=&smte;
-entity.10925=&late;
-entity.10926=&bumpE;
-entity.10927=&PrecedesEqual;
-entity.10928=&SucceedsEqual;
-entity.10931=&prE;
-entity.10932=&scE;
-entity.10933=&precneqq;
-entity.10934=&succneqq;
-entity.10935=&precapprox;
-entity.10936=&succapprox;
-entity.10937=&precnapprox;
-entity.10938=&succnapprox;
-entity.10939=&Pr;
-entity.10940=&Sc;
-entity.10941=&subdot;
-entity.10942=&supdot;
-entity.10943=&subplus;
-entity.10944=&supplus;
-entity.10945=&submult;
-entity.10946=&supmult;
-entity.10947=&subedot;
-entity.10948=&supedot;
-entity.10949=&subseteqq;
-entity.10950=&supseteqq;
-entity.10951=&subsim;
-entity.10952=&supsim;
-entity.10955=&subsetneqq;
-entity.10956=&supsetneqq;
-entity.10959=&csub;
-entity.10960=&csup;
-entity.10961=&csube;
-entity.10962=&csupe;
-entity.10963=&subsup;
-entity.10964=&supsub;
-entity.10965=&subsub;
-entity.10966=&supsup;
-entity.10967=&suphsub;
-entity.10968=&supdsub;
-entity.10969=&forkv;
-entity.10970=&topfork;
-entity.10971=&mlcp;
-entity.10980=&DoubleLeftTee;
-entity.10982=&Vdashl;
-entity.10983=&Barv;
-entity.10984=&vBar;
-entity.10985=&vBarv;
-entity.10987=&Vbar;
-entity.10988=&Not;
-entity.10989=&bNot;
-entity.10990=&rnmid;
-entity.10991=&cirmid;
-entity.10992=&midcir;
-entity.10993=&topcir;
-entity.10994=&nhpar;
-entity.10995=&parsim;
-entity.11005=&parsl;
-entity.64256=&fflig;
-entity.64257=&filig;
-entity.64258=&fllig;
-entity.64259=&ffilig;
-entity.64260=&ffllig;
-entity.119964=&Ascr;
-entity.119966=&Cscr;
-entity.119967=&Dscr;
-entity.119970=&Gscr;
-entity.119973=&Jscr;
-entity.119974=&Kscr;
-entity.119977=&Nscr;
-entity.119978=&Oscr;
-entity.119979=&Pscr;
-entity.119980=&Qscr;
-entity.119982=&Sscr;
-entity.119983=&Tscr;
-entity.119984=&Uscr;
-entity.119985=&Vscr;
-entity.119986=&Wscr;
-entity.119987=&Xscr;
-entity.119988=&Yscr;
-entity.119989=&Zscr;
-entity.119990=&ascr;
-entity.119991=&bscr;
-entity.119992=&cscr;
-entity.119993=&dscr;
-entity.119995=&fscr;
-entity.119997=&hscr;
-entity.119998=&iscr;
-entity.119999=&jscr;
-entity.120000=&kscr;
-entity.120001=&lscr;
-entity.120002=&mscr;
-entity.120003=&nscr;
-entity.120005=&pscr;
-entity.120006=&qscr;
-entity.120007=&rscr;
-entity.120008=&sscr;
-entity.120009=&tscr;
-entity.120010=&uscr;
-entity.120011=&vscr;
-entity.120012=&wscr;
-entity.120013=&xscr;
-entity.120014=&yscr;
-entity.120015=&zscr;
-entity.120068=&Afr;
-entity.120069=&Bfr;
-entity.120071=&Dfr;
-entity.120072=&Efr;
-entity.120073=&Ffr;
-entity.120074=&Gfr;
-entity.120077=&Jfr;
-entity.120078=&Kfr;
-entity.120079=&Lfr;
-entity.120080=&Mfr;
-entity.120081=&Nfr;
-entity.120082=&Ofr;
-entity.120083=&Pfr;
-entity.120084=&Qfr;
-entity.120086=&Sfr;
-entity.120087=&Tfr;
-entity.120088=&Ufr;
-entity.120089=&Vfr;
-entity.120090=&Wfr;
-entity.120091=&Xfr;
-entity.120092=&Yfr;
-entity.120094=&afr;
-entity.120095=&bfr;
-entity.120096=&cfr;
-entity.120097=&dfr;
-entity.120098=&efr;
-entity.120099=&ffr;
-entity.120100=&gfr;
-entity.120101=&hfr;
-entity.120102=&ifr;
-entity.120103=&jfr;
-entity.120104=&kfr;
-entity.120105=&lfr;
-entity.120106=&mfr;
-entity.120107=&nfr;
-entity.120108=&ofr;
-entity.120109=&pfr;
-entity.120110=&qfr;
-entity.120111=&rfr;
-entity.120112=&sfr;
-entity.120113=&tfr;
-entity.120114=&ufr;
-entity.120115=&vfr;
-entity.120116=&wfr;
-entity.120117=&xfr;
-entity.120118=&yfr;
-entity.120119=&zfr;
-entity.120120=&Aopf;
-entity.120121=&Bopf;
-entity.120123=&Dopf;
-entity.120124=&Eopf;
-entity.120125=&Fopf;
-entity.120126=&Gopf;
-entity.120128=&Iopf;
-entity.120129=&Jopf;
-entity.120130=&Kopf;
-entity.120131=&Lopf;
-entity.120132=&Mopf;
-entity.120134=&Oopf;
-entity.120138=&Sopf;
-entity.120139=&Topf;
-entity.120140=&Uopf;
-entity.120141=&Vopf;
-entity.120142=&Wopf;
-entity.120143=&Xopf;
-entity.120144=&Yopf;
-entity.120146=&aopf;
-entity.120147=&bopf;
-entity.120148=&copf;
-entity.120149=&dopf;
-entity.120150=&eopf;
-entity.120151=&fopf;
-entity.120152=&gopf;
-entity.120153=&hopf;
-entity.120154=&iopf;
-entity.120155=&jopf;
-entity.120156=&kopf;
-entity.120157=&lopf;
-entity.120158=&mopf;
-entity.120159=&nopf;
-entity.120160=&oopf;
-entity.120161=&popf;
-entity.120162=&qopf;
-entity.120163=&ropf;
-entity.120164=&sopf;
-entity.120165=&topf;
-entity.120166=&uopf;
-entity.120167=&vopf;
-entity.120168=&wopf;
-entity.120169=&xopf;
-entity.120170=&yopf;
-entity.120171=&zopf;
-entity.120484=&imath;
-entity.120485=&jmath;
deleted file mode 100644
--- a/intl/unicharutil/tables/moz.build
+++ /dev/null
@@ -1,12 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# 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/.
-
-RESOURCE_FILES.entityTables = [
-    'html40Latin1.properties',
-    'html40Special.properties',
-    'html40Symbols.properties',
-    'mathml20.properties',
-]
--- a/mobile/android/installer/package-manifest.in
+++ b/mobile/android/installer/package-manifest.in
@@ -482,17 +482,16 @@
 @BINPATH@/res/table-remove-column.gif
 @BINPATH@/res/table-remove-row-active.gif
 @BINPATH@/res/table-remove-row-hover.gif
 @BINPATH@/res/table-remove-row.gif
 @BINPATH@/res/grabber.gif
 @BINPATH@/res/dtd/*
 @BINPATH@/res/html/*
 @BINPATH@/res/language.properties
-@BINPATH@/res/entityTables/*
 
 #ifndef MOZ_ANDROID_EXCLUDE_FONTS
 @BINPATH@/res/fonts/*
 #else
 @BINPATH@/res/fonts/*.properties
 #endif
 
 ; svg
--- a/parser/htmlparser/moz.build
+++ b/parser/htmlparser/moz.build
@@ -33,17 +33,16 @@ EXPORTS += [
     'nsScannerString.h',
 ]
 
 UNIFIED_SOURCES += [
     'CNavDTD.cpp',
     'CParserContext.cpp',
     'nsElementTable.cpp',
     'nsExpatDriver.cpp',
-    'nsHTMLEntities.cpp',
     'nsHTMLTags.cpp',
     'nsHTMLTokenizer.cpp',
     'nsParser.cpp',
     'nsParserModule.cpp',
     'nsParserMsgUtils.cpp',
     'nsParserService.cpp',
     'nsScanner.cpp',
     'nsScannerString.cpp',
deleted file mode 100644
--- a/parser/htmlparser/nsHTMLEntities.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/* -*- 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/. */
-
-#include "mozilla/ArrayUtils.h"
-
-#include "nsHTMLEntities.h"
-
-#include "nsString.h"
-#include "nsCRT.h"
-#include "PLDHashTable.h"
-
-using namespace mozilla;
-
-struct EntityNode {
-  const char* mStr; // never owns buffer
-  int32_t       mUnicode;
-};
-
-struct EntityNodeEntry : public PLDHashEntryHdr
-{
-  const EntityNode* node;
-};
-
-static bool matchNodeUnicode(const PLDHashEntryHdr* aHdr, const void* key)
-{
-  const EntityNodeEntry* entry = static_cast<const EntityNodeEntry*>(aHdr);
-  const int32_t ucode = NS_PTR_TO_INT32(key);
-  return (entry->node->mUnicode == ucode);
-}
-
-static PLDHashNumber hashUnicodeValue(const void* key)
-{
-  // key is actually the unicode value
-  return HashGeneric(key);
-}
-
-static const PLDHashTableOps UnicodeToEntityOps = {
-  hashUnicodeValue,
-  matchNodeUnicode,
-  PLDHashTable::MoveEntryStub,
-  PLDHashTable::ClearEntryStub,
-  nullptr,
-};
-
-static PLDHashTable* gUnicodeToEntity;
-static nsrefcnt gTableRefCnt = 0;
-
-#define HTML_ENTITY(_name, _value) { #_name, _value },
-static const EntityNode gEntityArray[] = {
-#include "nsHTMLEntityList.h"
-};
-#undef HTML_ENTITY
-
-#define NS_HTML_ENTITY_COUNT ((int32_t)ArrayLength(gEntityArray))
-
-nsresult
-nsHTMLEntities::AddRefTable(void)
-{
-  if (!gTableRefCnt) {
-    gUnicodeToEntity = new PLDHashTable(&UnicodeToEntityOps,
-                                        sizeof(EntityNodeEntry),
-                                        NS_HTML_ENTITY_COUNT);
-    for (const EntityNode *node = gEntityArray,
-                 *node_end = ArrayEnd(gEntityArray);
-         node < node_end; ++node) {
-
-      // add to Unicode->Entity table
-      auto entry =
-        static_cast<EntityNodeEntry*>
-          (gUnicodeToEntity->Add(NS_INT32_TO_PTR(node->mUnicode), fallible));
-      NS_ASSERTION(entry, "Error adding an entry");
-      // Prefer earlier entries when we have duplication.
-      if (!entry->node)
-        entry->node = node;
-    }
-#ifdef DEBUG
-    gUnicodeToEntity->MarkImmutable();
-#endif
-  }
-  ++gTableRefCnt;
-  return NS_OK;
-}
-
-void
-nsHTMLEntities::ReleaseTable(void)
-{
-  if (--gTableRefCnt != 0) {
-    return;
-  }
-
-  delete gUnicodeToEntity;
-  gUnicodeToEntity = nullptr;
-}
-
-const char*
-nsHTMLEntities::UnicodeToEntity(int32_t aUnicode)
-{
-  NS_ASSERTION(gUnicodeToEntity, "no lookup table, needs addref");
-  auto entry =
-    static_cast<EntityNodeEntry*>
-               (gUnicodeToEntity->Search(NS_INT32_TO_PTR(aUnicode)));
-
-  return entry ? entry->node->mStr : nullptr;
-}
-
deleted file mode 100644
--- a/parser/htmlparser/nsHTMLEntities.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* -*- 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/. */
-#ifndef nsHTMLEntities_h___
-#define nsHTMLEntities_h___
-
-#include "nsString.h"
-
-class nsHTMLEntities {
-public:
-
-  static nsresult AddRefTable(void);
-  static void ReleaseTable(void);
-
-/**
- * Translate a unicode value into an entity string. This call
- * returns null if the entity cannot be mapped. 
- * Note that the string returned DOES NOT have the leading "&" nor 
- * the trailing ";" in it.
- */
-  static const char* UnicodeToEntity(int32_t aUnicode);
-};
-
-#endif /* nsHTMLEntities_h___ */
deleted file mode 100644
--- a/parser/htmlparser/nsHTMLEntityList.h
+++ /dev/null
@@ -1,303 +0,0 @@
-/* -*- 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/. */
-
-/******
-
-  This file contains the list of all HTML entities 
-  See nsHTMLEntities.h for access to the enum values for entities
-
-  It is designed to be used as inline input to nsHTMLEntities.cpp *only*
-  through the magic of C preprocessing.
-
-  All entries must be enclosed in the macro HTML_ENTITY which will have cruel
-  and unusual things done to it
-
-  It is recommended (but not strictly necessary) to keep all entries
-  in alphabetical order
-
-  The first argument to HTML_ENTITY is the string value of the entity
-  The second argument it HTML_ENTITY is the unicode value of the entity
-
- ******/
-
-// ISO 8859-1 entities.
-// See the HTML4.0 spec for this list in it's DTD form
-HTML_ENTITY(nbsp, 160)
-HTML_ENTITY(iexcl, 161)
-HTML_ENTITY(cent, 162)
-HTML_ENTITY(pound, 163)
-HTML_ENTITY(curren, 164)
-HTML_ENTITY(yen, 165)
-HTML_ENTITY(brvbar, 166)
-HTML_ENTITY(sect, 167)
-HTML_ENTITY(uml, 168)
-HTML_ENTITY(copy, 169)
-HTML_ENTITY(ordf, 170)
-HTML_ENTITY(laquo, 171)
-HTML_ENTITY(not, 172)
-HTML_ENTITY(shy, 173)
-HTML_ENTITY(reg, 174)
-HTML_ENTITY(macr, 175)
-HTML_ENTITY(deg, 176)
-HTML_ENTITY(plusmn, 177)
-HTML_ENTITY(sup2, 178)
-HTML_ENTITY(sup3, 179)
-HTML_ENTITY(acute, 180)
-HTML_ENTITY(micro, 181)
-HTML_ENTITY(para, 182)
-HTML_ENTITY(middot, 183)
-HTML_ENTITY(cedil, 184)
-HTML_ENTITY(sup1, 185)
-HTML_ENTITY(ordm, 186)
-HTML_ENTITY(raquo, 187)
-HTML_ENTITY(frac14, 188)
-HTML_ENTITY(frac12, 189)
-HTML_ENTITY(frac34, 190)
-HTML_ENTITY(iquest, 191)
-HTML_ENTITY(Agrave, 192)
-HTML_ENTITY(Aacute, 193)
-HTML_ENTITY(Acirc, 194)
-HTML_ENTITY(Atilde, 195)
-HTML_ENTITY(Auml, 196)
-HTML_ENTITY(Aring, 197)
-HTML_ENTITY(AElig, 198)
-HTML_ENTITY(Ccedil, 199)
-HTML_ENTITY(Egrave, 200)
-HTML_ENTITY(Eacute, 201)
-HTML_ENTITY(Ecirc, 202)
-HTML_ENTITY(Euml, 203)
-HTML_ENTITY(Igrave, 204)
-HTML_ENTITY(Iacute, 205)
-HTML_ENTITY(Icirc, 206)
-HTML_ENTITY(Iuml, 207)
-HTML_ENTITY(ETH, 208)
-HTML_ENTITY(Ntilde, 209)
-HTML_ENTITY(Ograve, 210)
-HTML_ENTITY(Oacute, 211)
-HTML_ENTITY(Ocirc, 212)
-HTML_ENTITY(Otilde, 213)
-HTML_ENTITY(Ouml, 214)
-HTML_ENTITY(times, 215)
-HTML_ENTITY(Oslash, 216)
-HTML_ENTITY(Ugrave, 217)
-HTML_ENTITY(Uacute, 218)
-HTML_ENTITY(Ucirc, 219)
-HTML_ENTITY(Uuml, 220)
-HTML_ENTITY(Yacute, 221)
-HTML_ENTITY(THORN, 222)
-HTML_ENTITY(szlig, 223)
-HTML_ENTITY(agrave, 224)
-HTML_ENTITY(aacute, 225)
-HTML_ENTITY(acirc, 226)
-HTML_ENTITY(atilde, 227)
-HTML_ENTITY(auml, 228)
-HTML_ENTITY(aring, 229)
-HTML_ENTITY(aelig, 230)
-HTML_ENTITY(ccedil, 231)
-HTML_ENTITY(egrave, 232)
-HTML_ENTITY(eacute, 233)
-HTML_ENTITY(ecirc, 234)
-HTML_ENTITY(euml, 235)
-HTML_ENTITY(igrave, 236)
-HTML_ENTITY(iacute, 237)
-HTML_ENTITY(icirc, 238)
-HTML_ENTITY(iuml, 239)
-HTML_ENTITY(eth, 240)
-HTML_ENTITY(ntilde, 241)
-HTML_ENTITY(ograve, 242)
-HTML_ENTITY(oacute, 243)
-HTML_ENTITY(ocirc, 244)
-HTML_ENTITY(otilde, 245)
-HTML_ENTITY(ouml, 246)
-HTML_ENTITY(divide, 247)
-HTML_ENTITY(oslash, 248)
-HTML_ENTITY(ugrave, 249)
-HTML_ENTITY(uacute, 250)
-HTML_ENTITY(ucirc, 251)
-HTML_ENTITY(uuml, 252)
-HTML_ENTITY(yacute, 253)
-HTML_ENTITY(thorn, 254)
-HTML_ENTITY(yuml, 255)
-
-// Symbols, mathematical symbols and Greek letters
-// See the HTML4.0 spec for this list in it's DTD form
-HTML_ENTITY(fnof, 402)
-HTML_ENTITY(Alpha, 913)
-HTML_ENTITY(Beta, 914)
-HTML_ENTITY(Gamma, 915)
-HTML_ENTITY(Delta, 916)
-HTML_ENTITY(Epsilon, 917)
-HTML_ENTITY(Zeta, 918)
-HTML_ENTITY(Eta, 919)
-HTML_ENTITY(Theta, 920)
-HTML_ENTITY(Iota, 921)
-HTML_ENTITY(Kappa, 922)
-HTML_ENTITY(Lambda, 923)
-HTML_ENTITY(Mu, 924)
-HTML_ENTITY(Nu, 925)
-HTML_ENTITY(Xi, 926)
-HTML_ENTITY(Omicron, 927)
-HTML_ENTITY(Pi, 928)
-HTML_ENTITY(Rho, 929)
-HTML_ENTITY(Sigma, 931)
-HTML_ENTITY(Tau, 932)
-HTML_ENTITY(Upsilon, 933)
-HTML_ENTITY(Phi, 934)
-HTML_ENTITY(Chi, 935)
-HTML_ENTITY(Psi, 936)
-HTML_ENTITY(Omega, 937)
-HTML_ENTITY(alpha, 945)
-HTML_ENTITY(beta, 946)
-HTML_ENTITY(gamma, 947)
-HTML_ENTITY(delta, 948)
-HTML_ENTITY(epsilon, 949)
-HTML_ENTITY(zeta, 950)
-HTML_ENTITY(eta, 951)
-HTML_ENTITY(theta, 952)
-HTML_ENTITY(iota, 953)
-HTML_ENTITY(kappa, 954)
-HTML_ENTITY(lambda, 955)
-HTML_ENTITY(mu, 956)
-HTML_ENTITY(nu, 957)
-HTML_ENTITY(xi, 958)
-HTML_ENTITY(omicron, 959)
-HTML_ENTITY(pi, 960)
-HTML_ENTITY(rho, 961)
-HTML_ENTITY(sigmaf, 962)
-HTML_ENTITY(sigma, 963)
-HTML_ENTITY(tau, 964)
-HTML_ENTITY(upsilon, 965)
-HTML_ENTITY(phi, 966)
-HTML_ENTITY(chi, 967)
-HTML_ENTITY(psi, 968)
-HTML_ENTITY(omega, 969)
-HTML_ENTITY(thetasym, 977)
-HTML_ENTITY(upsih, 978)
-HTML_ENTITY(piv, 982)
-HTML_ENTITY(bull, 8226)
-HTML_ENTITY(hellip, 8230)
-HTML_ENTITY(prime, 8242)
-HTML_ENTITY(Prime, 8243)
-HTML_ENTITY(oline, 8254)
-HTML_ENTITY(frasl, 8260)
-HTML_ENTITY(weierp, 8472)
-HTML_ENTITY(image, 8465)
-HTML_ENTITY(real, 8476)
-HTML_ENTITY(trade, 8482)
-HTML_ENTITY(alefsym, 8501)
-HTML_ENTITY(larr, 8592)
-HTML_ENTITY(uarr, 8593)
-HTML_ENTITY(rarr, 8594)
-HTML_ENTITY(darr, 8595)
-HTML_ENTITY(harr, 8596)
-HTML_ENTITY(crarr, 8629)
-HTML_ENTITY(lArr, 8656)
-HTML_ENTITY(uArr, 8657)
-HTML_ENTITY(rArr, 8658)
-HTML_ENTITY(dArr, 8659)
-HTML_ENTITY(hArr, 8660)
-HTML_ENTITY(forall, 8704)
-HTML_ENTITY(part, 8706)
-HTML_ENTITY(exist, 8707)
-HTML_ENTITY(empty, 8709)
-HTML_ENTITY(nabla, 8711)
-HTML_ENTITY(isin, 8712)
-HTML_ENTITY(notin, 8713)
-HTML_ENTITY(ni, 8715)
-HTML_ENTITY(prod, 8719)
-HTML_ENTITY(sum, 8721)
-HTML_ENTITY(minus, 8722)
-HTML_ENTITY(lowast, 8727)
-HTML_ENTITY(radic, 8730)
-HTML_ENTITY(prop, 8733)
-HTML_ENTITY(infin, 8734)
-HTML_ENTITY(ang, 8736)
-HTML_ENTITY(and, 8743)
-HTML_ENTITY(or, 8744)
-HTML_ENTITY(cap, 8745)
-HTML_ENTITY(cup, 8746)
-HTML_ENTITY(int, 8747)
-HTML_ENTITY(there4, 8756)
-HTML_ENTITY(sim, 8764)
-HTML_ENTITY(cong, 8773)
-HTML_ENTITY(asymp, 8776)
-HTML_ENTITY(ne, 8800)
-HTML_ENTITY(equiv, 8801)
-HTML_ENTITY(le, 8804)
-HTML_ENTITY(ge, 8805)
-HTML_ENTITY(sub, 8834)
-HTML_ENTITY(sup, 8835)
-HTML_ENTITY(nsub, 8836)
-HTML_ENTITY(sube, 8838)
-HTML_ENTITY(supe, 8839)
-HTML_ENTITY(oplus, 8853)
-HTML_ENTITY(otimes, 8855)
-HTML_ENTITY(perp, 8869)
-HTML_ENTITY(sdot, 8901)
-HTML_ENTITY(lceil, 8968)
-HTML_ENTITY(rceil, 8969)
-HTML_ENTITY(lfloor, 8970)
-HTML_ENTITY(rfloor, 8971)
-// Bug 603716: expansions of &lang; and &rang; have been modified in HTML5.
-// See http://www.w3.org/2003/entities/2007/htmlmathml-f.ent
-HTML_ENTITY(lang, 0x27E8)
-HTML_ENTITY(rang, 0x27E9)
-HTML_ENTITY(loz, 9674)
-HTML_ENTITY(spades, 9824)
-HTML_ENTITY(clubs, 9827)
-HTML_ENTITY(hearts, 9829)
-HTML_ENTITY(diams, 9830)
-
-// Markup-significant and internationalization characters
-// See the HTML4.0 spec for this list in it's DTD form
-HTML_ENTITY(quot, 34)
-HTML_ENTITY(amp, 38)
-HTML_ENTITY(lt, 60)
-HTML_ENTITY(gt, 62)
-HTML_ENTITY(OElig, 338)
-HTML_ENTITY(oelig, 339)
-HTML_ENTITY(Scaron, 352)
-HTML_ENTITY(scaron, 353)
-HTML_ENTITY(Yuml, 376)
-HTML_ENTITY(circ, 710)
-HTML_ENTITY(tilde, 732)
-HTML_ENTITY(ensp, 8194)
-HTML_ENTITY(emsp, 8195)
-HTML_ENTITY(thinsp, 8201)
-HTML_ENTITY(zwnj, 8204)
-HTML_ENTITY(zwj, 8205)
-HTML_ENTITY(lrm, 8206)
-HTML_ENTITY(rlm, 8207)
-HTML_ENTITY(ndash, 8211)
-HTML_ENTITY(mdash, 8212)
-HTML_ENTITY(lsquo, 8216)
-HTML_ENTITY(rsquo, 8217)
-HTML_ENTITY(sbquo, 8218)
-HTML_ENTITY(ldquo, 8220)
-HTML_ENTITY(rdquo, 8221)
-HTML_ENTITY(bdquo, 8222)
-HTML_ENTITY(dagger, 8224)
-HTML_ENTITY(Dagger, 8225)
-HTML_ENTITY(permil, 8240)
-HTML_ENTITY(lsaquo, 8249)
-HTML_ENTITY(rsaquo, 8250)
-HTML_ENTITY(euro, 8364)
-
-// Navigator entity extensions
-// This block of entities needs to be at the bottom of the list since it
-// contains duplicate Unicode codepoints.  The codepoint to entity name
-// mapping (used by Composer) must ignores them, which occurs only
-// because they are listed later.
-
-// apos is from XML
-HTML_ENTITY(apos, 39) 
-// The capitalized versions are required to handle non-standard input.
-HTML_ENTITY(AMP, 38)
-HTML_ENTITY(COPY, 169)
-HTML_ENTITY(GT, 62)
-HTML_ENTITY(LT, 60)
-HTML_ENTITY(QUOT, 34)
-HTML_ENTITY(REG, 174)
-
--- a/parser/htmlparser/nsIParserService.h
+++ b/parser/htmlparser/nsIParserService.h
@@ -78,18 +78,15 @@ class nsIParserService : public nsISuppo
    *
    * @return nsIAtom* The tag corresponding to the nsHTMLTag enum value, or
    *                  nullptr if the enum value doesn't correspond to a tag
    *                  (eHTMLTag_unknown, eHTMLTag_userdefined, eHTMLTag_text,
    *                  ...).
    */
   virtual nsIAtom *HTMLIdToAtomTag(int32_t aId) const = 0;
 
-  NS_IMETHOD HTMLConvertUnicodeToEntity(int32_t aUnicode,
-                                        nsCString& aEntity) const = 0;
-
   NS_IMETHOD IsContainer(int32_t aId, bool& aIsContainer) const = 0;
   NS_IMETHOD IsBlock(int32_t aId, bool& aIsBlock) const = 0;
 };
 
 NS_DEFINE_STATIC_IID_ACCESSOR(nsIParserService, NS_IPARSERSERVICE_IID)
 
 #endif // nsIParserService_h__
--- a/parser/htmlparser/nsParserModule.cpp
+++ b/parser/htmlparser/nsParserModule.cpp
@@ -6,17 +6,16 @@
 #include "nsIAtom.h"
 #include "nsString.h"
 #include "nspr.h"
 #include "nsCOMPtr.h"
 #include "mozilla/ModuleUtils.h"
 #include "nsParserCIID.h"
 #include "nsParser.h"
 #include "CNavDTD.h"
-#include "nsHTMLEntities.h"
 #include "nsHTMLTokenizer.h"
 //#include "nsTextTokenizer.h"
 #include "nsElementTable.h"
 #include "nsParserService.h"
 #include "nsSAXAttributes.h"
 #include "nsSAXLocator.h"
 #include "nsSAXXMLReader.h"
 
@@ -66,37 +65,31 @@ static const mozilla::Module::ContractID
 };
 
 static nsresult
 Initialize()
 {
   nsresult rv = nsHTMLTags::AddRefTable();
   NS_ENSURE_SUCCESS(rv, rv);
 
-  rv = nsHTMLEntities::AddRefTable();
-  if (NS_FAILED(rv)) {
-    nsHTMLTags::ReleaseTable();
-    return rv;
-  }
 #ifdef DEBUG
   CheckElementTable();
 #endif
 
 #ifdef DEBUG
   nsHTMLTags::TestTagTable();
 #endif
 
   return rv;
 }
 
 static void
 Shutdown()
 {
   nsHTMLTags::ReleaseTable();
-  nsHTMLEntities::ReleaseTable();
 }
 
 static mozilla::Module kParserModule = {
   mozilla::Module::kVersion,
   kParserCIDs,
   kParserContracts,
   nullptr,
   nullptr,
--- a/parser/htmlparser/nsParserService.cpp
+++ b/parser/htmlparser/nsParserService.cpp
@@ -2,17 +2,16 @@
  *
  * 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/. */
 
 #include "nsError.h"
 #include "nsIAtom.h"
 #include "nsParserService.h"
-#include "nsHTMLEntities.h"
 #include "nsElementTable.h"
 #include "nsICategoryManager.h"
 #include "nsCategoryManagerUtils.h"
 
 nsParserService::nsParserService()
 {
 }
 
@@ -48,28 +47,16 @@ nsParserService::HTMLIdToStringTag(int32
   
 nsIAtom*
 nsParserService::HTMLIdToAtomTag(int32_t aId) const
 {
   return nsHTMLTags::GetAtom((nsHTMLTag)aId);
 }
 
 NS_IMETHODIMP
-nsParserService::HTMLConvertUnicodeToEntity(int32_t aUnicode,
-                                            nsCString& aEntity) const
-{
-  const char* str = nsHTMLEntities::UnicodeToEntity(aUnicode);
-  if (str) {
-    aEntity.Assign(str);
-  }
-
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 nsParserService::IsContainer(int32_t aId, bool& aIsContainer) const
 {
   aIsContainer = nsHTMLElement::IsContainer((eHTMLTags)aId);
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
--- a/parser/htmlparser/nsParserService.h
+++ b/parser/htmlparser/nsParserService.h
@@ -42,15 +42,13 @@ public:
   int32_t HTMLCaseSensitiveAtomTagToId(nsIAtom* aAtom) const override;
 
   int32_t HTMLStringTagToId(const nsAString& aTag) const override;
 
   const char16_t *HTMLIdToStringTag(int32_t aId) const override;
   
   nsIAtom *HTMLIdToAtomTag(int32_t aId) const override;
 
-  NS_IMETHOD HTMLConvertUnicodeToEntity(int32_t aUnicode,
-                                        nsCString& aEntity) const override;
   NS_IMETHOD IsContainer(int32_t aId, bool& aIsContainer) const override;
   NS_IMETHOD IsBlock(int32_t aId, bool& aIsBlock) const override;
 };
 
 #endif
--- a/toolkit/content/browser-content.js
+++ b/toolkit/content/browser-content.js
@@ -1455,45 +1455,18 @@ var ViewSelectionSource = {
       ">": '&amp;<span class="entity">gt;</span>',
       '"': '&amp;<span class="entity">quot;</span>'
     };
 
     function charTableLookup(letter) {
       return charTable[letter];
     }
 
-    function convertEntity(letter) {
-      try {
-        var unichar = this._entityConverter
-                          .ConvertToEntity(letter, entityVersion);
-        var entity = unichar.substring(1); // extract '&'
-        return '&amp;<span class="entity">' + entity + "</span>";
-      } catch (ex) {
-        return letter;
-      }
-    }
-
-    if (!this._entityConverter) {
-      try {
-        this._entityConverter = Cc["@mozilla.org/intl/entityconverter;1"]
-                                  .createInstance(Ci.nsIEntityConverter);
-      } catch (e) { }
-    }
-
-    const entityVersion = Ci.nsIEntityConverter.entityW3C;
-
-    var str = text;
-
     // replace chars in our charTable
-    str = str.replace(/[<>&"]/g, charTableLookup);
-
-    // replace chars > 0x7f via nsIEntityConverter
-    str = str.replace(/[^\0-\u007f]/g, convertEntity);
-
-    return str;
+    return text.replace(/[<>&"]/g, charTableLookup);
   }
 };
 
 ViewSelectionSource.init();
 
 addEventListener("MozApplicationManifest", function(e) {
   let doc = e.target;
   let info = {