about summary refs log tree commit diff stats
path: root/WWW/Library
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>1999-03-18 03:40:20 -0500
committerThomas E. Dickey <dickey@invisible-island.net>1999-03-18 03:40:20 -0500
commit79de405977ac0d7820576b353dde07ce09cedba9 (patch)
treed9c4fe55a871bb65fc0e1448764604b47083100e /WWW/Library
parent2d9e91f9543486865c65bf1b2837b2a7a1e3d1b9 (diff)
downloadlynx-snapshots-79de405977ac0d7820576b353dde07ce09cedba9.tar.gz
snapshot of project "lynx", label v2-8-2dev_20
Diffstat (limited to 'WWW/Library')
-rw-r--r--WWW/Library/Implementation/HTAABrow.h31
-rw-r--r--WWW/Library/Implementation/HTAAFile.h6
-rw-r--r--WWW/Library/Implementation/HTAAProt.h27
-rw-r--r--WWW/Library/Implementation/HTAAServ.c10
-rw-r--r--WWW/Library/Implementation/HTAAServ.h7
-rw-r--r--WWW/Library/Implementation/HTAAUtil.h14
-rw-r--r--WWW/Library/Implementation/HTACL.h6
-rw-r--r--WWW/Library/Implementation/HTAccess.c23
-rw-r--r--WWW/Library/Implementation/HTAccess.h7
-rw-r--r--WWW/Library/Implementation/HTAnchor.c21
-rw-r--r--WWW/Library/Implementation/HTAnchor.h36
-rw-r--r--WWW/Library/Implementation/HTAssoc.h11
-rw-r--r--WWW/Library/Implementation/HTAtom.h5
-rw-r--r--WWW/Library/Implementation/HTAuth.h5
-rw-r--r--WWW/Library/Implementation/HTBTree.h23
-rw-r--r--WWW/Library/Implementation/HTChunk.h10
-rw-r--r--WWW/Library/Implementation/HTFTP.c2
-rw-r--r--WWW/Library/Implementation/HTFWriter.c54
-rw-r--r--WWW/Library/Implementation/HTFWriter.h8
-rw-r--r--WWW/Library/Implementation/HTFinger.c5
-rw-r--r--WWW/Library/Implementation/HTFormat.c1
-rw-r--r--WWW/Library/Implementation/HTFormat.h5
-rw-r--r--WWW/Library/Implementation/HTGroup.c16
-rw-r--r--WWW/Library/Implementation/HTGroup.h7
-rw-r--r--WWW/Library/Implementation/HTHistory.h12
-rw-r--r--WWW/Library/Implementation/HTLex.h8
-rw-r--r--WWW/Library/Implementation/HTList.h13
-rw-r--r--WWW/Library/Implementation/HTMLDTD.c18
-rw-r--r--WWW/Library/Implementation/HTMLDTD.h6
-rw-r--r--WWW/Library/Implementation/HTMLGen.c216
-rw-r--r--WWW/Library/Implementation/HTNews.c4
-rw-r--r--WWW/Library/Implementation/HTPasswd.h7
-rw-r--r--WWW/Library/Implementation/HTPlain.c2
-rw-r--r--WWW/Library/Implementation/HTRules.h4
-rw-r--r--WWW/Library/Implementation/HTStyle.c10
-rw-r--r--WWW/Library/Implementation/HTStyle.h17
-rw-r--r--WWW/Library/Implementation/HTTCP.c6
-rw-r--r--WWW/Library/Implementation/HTTCP.h7
-rw-r--r--WWW/Library/Implementation/HTTP.c6
-rw-r--r--WWW/Library/Implementation/HTUtils.h5
-rw-r--r--WWW/Library/Implementation/HText.h30
-rw-r--r--WWW/Library/Implementation/SGML.c28
-rw-r--r--WWW/Library/Implementation/SGML.h23
-rw-r--r--WWW/Library/Implementation/entities.h1092
-rw-r--r--WWW/Library/djgpp/makefile2
-rw-r--r--WWW/Library/djgpp/makefile.sla2
-rw-r--r--WWW/Library/unix/makefile.in2
47 files changed, 388 insertions, 1472 deletions
diff --git a/WWW/Library/Implementation/HTAABrow.h b/WWW/Library/Implementation/HTAABrow.h
index 5a195a91..b19b2e6a 100644
--- a/WWW/Library/Implementation/HTAABrow.h
+++ b/WWW/Library/Implementation/HTAABrow.h
@@ -1,31 +1,31 @@
 /*                          BROWSER SIDE ACCESS AUTHORIZATION MODULE
-                                             
+
    This module is the browser side interface to Access Authorization (AA) package.  It
    contains code only for browser.
-   
+
    Important to know about memory allocation:
-   
+
    Routines in this module use dynamic allocation, but free automatically all the memory
    reserved by them.
-   
+
    Therefore the caller never has to (and never should) free() any object returned by
    these functions.
-   
+
    Therefore also all the strings returned by this package are only valid until the next
    call to the same function is made.  This approach is selected, because of the nature of
    access authorization: no string returned by the package needs to be valid longer than
    until the next call.
-   
+
    This also makes it easy to plug the AA package in: you don't have to ponder whether to
    free()something here or is it done somewhere else (because it is always done somewhere
    else).
-   
+
    The strings that the package needs to store are copied so the original strings given as
    parameters to AA functions may be freed or modified with no side effects.
-   
+
    Also note:The AA package does not free() anything else than what it has itself
    allocated.
-   
+
  */
 
 #ifndef HTAABROW_H
@@ -33,11 +33,6 @@
 
 #include <HTAAUtil.h>           /* Common parts of AA */
 
-#ifdef SHORT_NAMES
-#define HTAAcoAu        HTAA_composeAuth
-#define HTAAsRWA        HTAA_shouldRetryWithAuth
-#endif /*SHORT_NAMES*/
-
 /*
 
 Routines for Browser Side Recording of AA Info
@@ -45,15 +40,15 @@ Routines for Browser Side Recording of AA Info
    Most of the browser-side AA is done by the following two functions (which are called
    from file HTTP.c so the browsers using libwww only need to be linked with the new
    library and not be changed at all):
-   
+
       HTAA_composeAuth() composes the Authorization: line contents, if the AA package
       thinks that the given document is protected. Otherwise this function returns NULL.
       This function also calls the functions HTPrompt(),HTPromptPassword() and HTConfirm()
       to get the username, password and some confirmation from the user.
-      
+
       HTAA_shouldRetryWithAuth() determines whether to retry the request with AA or with a
       new AA (in case username or password was misspelled).
-      
+
  */
 
 /* PUBLIC                                               HTAA_composeAuth()
@@ -128,7 +123,7 @@ Enabling Gateway httpds to Forward Authorization
    must be called before the next request is handled to make sure that authorization
    string isn't cached in daemon so that other people can access private files using
    somebody else's previous authorization information.
-   
+
  */
 
 extern void HTAAForwardAuth_set PARAMS((
diff --git a/WWW/Library/Implementation/HTAAFile.h b/WWW/Library/Implementation/HTAAFile.h
index 05082f42..32e81664 100644
--- a/WWW/Library/Implementation/HTAAFile.h
+++ b/WWW/Library/Implementation/HTAAFile.h
@@ -17,12 +17,6 @@
 
 #include <HTList.h>             /* HTList */
 
-#ifdef SHORT_NAMES
-#define HTAAFnRe        HTAAFile_nextRec
-#define HTAAFrFi        HTAAFile_readField
-#define HTAAFrLi        HTAAFile_readList
-#endif /*SHORT_NAMES*/
-
 
 /* Used field separators */
 
diff --git a/WWW/Library/Implementation/HTAAProt.h b/WWW/Library/Implementation/HTAAProt.h
index f26ba7bc..ad3af096 100644
--- a/WWW/Library/Implementation/HTAAProt.h
+++ b/WWW/Library/Implementation/HTAAProt.h
@@ -1,5 +1,5 @@
 /*                                   PROTECTION SETUP FILE
-                                             
+
  */
 
 #ifndef HTAAPROT_H
@@ -8,15 +8,6 @@
 #include <HTGroup.h>
 #include <HTAssoc.h>
 
-#ifdef SHORT_NAMES
-#define HTAA_getUid			HTAAgUid        
-#define HTAA_getGid			HTAAgGid        
-#define HTAA_setDefaultProtection	HTAAgDPr        
-#define HTAA_setCurrentProtection	HTAAsCPr        
-#define HTAA_getCurrentProtection	HTAAgCPr        
-#define HTAA_getDefaultProtection	HTAAgDPr        
-#define HTAA_clearProtections		HTAAclPr        
-#endif /*SHORT_NAMES*/
 /*
 
 Server's Representation of Document (Tree) Protections
@@ -38,15 +29,15 @@ typedef struct {
 Callbacks for rule system
 
    The following three functioncs are called by the rule system:
-   
+
       HTAA_clearProtections() when starting to translate a filename
-      
+
       HTAA_setDefaultProtection() when "defprot" rule is matched
-      
+
       HTAA_setCurrentProtection() when "protect" rule is matched
-      
+
    Protection setup files are cached by these functions.
-   
+
  */
 
 /* PUBLIC                                       HTAA_setDefaultProtection()
@@ -116,11 +107,11 @@ Getting Protection Settings
 
       HTAA_getCurrentProtection() returns the current protection mode (if there was a
       "protect" rule). NULL, if no "protect" rule has been matched.
-      
+
       HTAA_getDefaultProtection() sets the current protection mode to what it was set to
       by "defprot" rule and also returns it (therefore after this call also
       HTAA_getCurrentProtection() returns the same structure.
-      
+
  */
 
 /* PUBLIC                                       HTAA_getCurrentProtection()
@@ -193,7 +184,7 @@ extern int HTAA_getGid NOPARAMS;
 /*
 
    For VMS:
-   
+
  */
 
 #ifdef VMS
diff --git a/WWW/Library/Implementation/HTAAServ.c b/WWW/Library/Implementation/HTAAServ.c
index b9a5be73..c8c26300 100644
--- a/WWW/Library/Implementation/HTAAServ.c
+++ b/WWW/Library/Implementation/HTAAServ.c
@@ -425,6 +425,8 @@ PUBLIC int HTAA_checkAuthorization ARGS4(CONST char *,	url,
 	HTAAFailReason = HTAA_DOTDOT;
     }
     else {
+
+#ifndef NO_RULES
 	pathname = HTTranslate(local_copy); /* Translate rules even if */
 					    /* a /htbin call to set up */
 					    /* protections.	       */
@@ -437,6 +439,8 @@ PUBLIC int HTAA_checkAuthorization ARGS4(CONST char *,	url,
 		    *end = '\0';
 		FREE(pathname);
 		pathname=(char*)malloc(strlen(HTBinDir)+strlen(local_copy)+1);
+		if (pathname == NULL)
+		    outofmem(__FILE__, "HTAA_checkAuthorization");
 		strcpy(pathname, HTBinDir);
 		strcat(pathname, local_copy+6);
 	    }
@@ -447,6 +451,8 @@ PUBLIC int HTAA_checkAuthorization ARGS4(CONST char *,	url,
 	    HTAAFailReason = HTAA_BY_RULE;
 	}
 	else if (HTAAFailReason != HTAA_HTBIN) {
+#endif /* NO_RULES */
+
 	    /* pathname != NULL */
 	    char *acc_method = HTParse(pathname, "", PARSE_ACCESS);
 	    if (!*acc_method || 0 == strcmp(acc_method,"file")) { /*Local file, do AA*/
@@ -464,7 +470,11 @@ PUBLIC int HTAA_checkAuthorization ARGS4(CONST char *,	url,
 			    "Gatewaying -- skipping authorization check",
 			    acc_method);
 	    }
+
+#ifndef NO_RULES
 	} /* pathname */
+#endif /* NO_RULES */
+
     }
     FREE(local_copy);
 
diff --git a/WWW/Library/Implementation/HTAAServ.h b/WWW/Library/Implementation/HTAAServ.h
index c2612dfb..2beb6f9a 100644
--- a/WWW/Library/Implementation/HTAAServ.h
+++ b/WWW/Library/Implementation/HTAAServ.h
@@ -36,13 +36,6 @@
 #include <HTAuth.h>             /* Authentication       */
 
 
-#ifdef SHORT_NAMES
-#define HTAA_statusMessage	HTAAstMs
-#define HTAA_checkAuthorization	HTAAchAu
-#define HTAA_composeAuthHeaders	HTAAcoAH
-#define HTAA_startLogging	HTAAsLog
-#endif /*SHORT_NAMES*/
-
 extern time_t theTime;
 
 /*
diff --git a/WWW/Library/Implementation/HTAAUtil.h b/WWW/Library/Implementation/HTAAUtil.h
index eab920e0..f4ec2eee 100644
--- a/WWW/Library/Implementation/HTAAUtil.h
+++ b/WWW/Library/Implementation/HTAAUtil.h
@@ -32,20 +32,6 @@
 
 #include <HTList.h>
 
-#ifdef SHORT_NAMES
-#define HTAAScheme_enum			HTAASenu
-#define HTAAScheme_name			HTAASnam
-#define HTAAMethod_enum			HTAAMenu
-#define HTAAMethod_name			HTAAMnam
-#define HTAAMethod_inList		HTAAMinL
-#define HTAA_templateMatch		HTAAteMa
-#define HTAA_makeProtectionTemplate	HTAAmaPT
-#define HTAA_parseArgList		HTAApALi
-#define HTAA_setupReader		HTAAsuRe
-#define HTAA_getUnfoldedLine		HTAAgUfL
-#endif /*SHORT_NAMES*/
-
-
 /*
 
 Default filenames
diff --git a/WWW/Library/Implementation/HTACL.h b/WWW/Library/Implementation/HTACL.h
index 9aa0a68e..1a7147f8 100644
--- a/WWW/Library/Implementation/HTACL.h
+++ b/WWW/Library/Implementation/HTACL.h
@@ -8,12 +8,6 @@
 #include <HTAAUtil.h>
 #include <HTGroup.h>
 
-#ifdef SHORT_NAMES
-#define HTAA_openAcl		HTAAoACL
-#define HTAA_closeAcl		HTAAcACL
-#define HTAA_getAclEntry	HTAAgAEn
-#endif /* SHORT_NAMES */
-
 /*
 
 Opening Access Control List File
diff --git a/WWW/Library/Implementation/HTAccess.c b/WWW/Library/Implementation/HTAccess.c
index 77517472..060e5acb 100644
--- a/WWW/Library/Implementation/HTAccess.c
+++ b/WWW/Library/Implementation/HTAccess.c
@@ -55,12 +55,10 @@
 
 #include <HTList.h>
 #include <HText.h>	/* See bugs above */
-#include <HTAlert.h>
 #include <HTCJK.h>
 #include <UCMap.h>
 #include <GridText.h>
 
-#include <GridText.h>
 #include <LYGlobalDefs.h>
 #include <LYexit.h>
 #include <LYUtils.h>
@@ -134,6 +132,7 @@ extern GLOBALREF (HTProtocol, HTTn3270);
 extern GLOBALREF (HTProtocol, HTRlogin);
 #ifndef DECNET
 extern GLOBALREF (HTProtocol, HTFTP);
+#ifndef DISABLE_NEWS
 extern GLOBALREF (HTProtocol, HTNews);
 extern GLOBALREF (HTProtocol, HTNNTP);
 extern GLOBALREF (HTProtocol, HTNewsPost);
@@ -141,11 +140,14 @@ extern GLOBALREF (HTProtocol, HTNewsReply);
 extern GLOBALREF (HTProtocol, HTSNews);
 extern GLOBALREF (HTProtocol, HTSNewsPost);
 extern GLOBALREF (HTProtocol, HTSNewsReply);
+#endif /* not DISABLE_NEWS */
 #ifndef DISABLE_GOPHER
 extern GLOBALREF (HTProtocol, HTGopher);
 extern GLOBALREF (HTProtocol, HTCSO);
 #endif /* not DISABLE_GOPHER */
+#ifndef DISABLE_FINGER
 extern GLOBALREF (HTProtocol, HTFinger);
+#endif /* not DISABLE_FINGER */
 #ifdef DIRECT_WAIS
 extern GLOBALREF (HTProtocol, HTWAIS);
 #endif /* DIRECT_WAIS */
@@ -153,12 +155,17 @@ extern GLOBALREF (HTProtocol, HTWAIS);
 #else
 GLOBALREF HTProtocol HTTP, HTTPS, HTFile, HTTelnet, HTTn3270, HTRlogin;
 #ifndef DECNET
-GLOBALREF HTProtocol HTFTP, HTNews, HTNNTP, HTNewsPost, HTNewsReply;
+GLOBALREF HTProtocol HTFTP;
+#ifndef DISABLE_NEWS
+GLOBALREF HTProtocol HTNews, HTNNTP, HTNewsPost, HTNewsReply;
 GLOBALREF HTProtocol HTSNews, HTSNewsPost, HTSNewsReply;
+#endif /* not DISABLE_NEWS */
 #ifndef DISABLE_GOPHER
 GLOBALREF HTProtocol HTGopher, HTCSO;
 #endif /* not DISABLE_GOPHER */
+#ifndef DISABLE_FINGER
 GLOBALREF HTProtocol HTFinger;
+#endif /* not DISABLE_FINGER */
 #ifdef DIRECT_WAIS
 GLOBALREF  HTProtocol HTWAIS;
 #endif /* DIRECT_WAIS */
@@ -174,6 +181,7 @@ PRIVATE void HTAccessInit NOARGS			/* Call me once */
     HTRegisterProtocol(&HTTn3270);
     HTRegisterProtocol(&HTRlogin);
 #ifndef DECNET
+#ifndef DISABLE_NEWS
     HTRegisterProtocol(&HTFTP);
     HTRegisterProtocol(&HTNews);
     HTRegisterProtocol(&HTNNTP);
@@ -182,11 +190,14 @@ PRIVATE void HTAccessInit NOARGS			/* Call me once */
     HTRegisterProtocol(&HTSNews);
     HTRegisterProtocol(&HTSNewsPost);
     HTRegisterProtocol(&HTSNewsReply);
+#endif /* not DISABLE_NEWS */
 #ifndef DISABLE_GOPHER
     HTRegisterProtocol(&HTGopher);
     HTRegisterProtocol(&HTCSO);
 #endif /* not DISABLE_GOPHER */
+#ifndef DISABLE_FINGER
     HTRegisterProtocol(&HTFinger);
+#endif /* not DISABLE_FINGER */
 #ifdef DIRECT_WAIS
     HTRegisterProtocol(&HTWAIS);
 #endif /* DIRECT_WAIS */
@@ -277,8 +288,11 @@ PUBLIC BOOL override_proxy ARGS1(
 	    if	    (!strcmp(acc_method, "http"))	port = 80;
 	    else if (!strcmp(acc_method, "https"))	port = 443;
 	    else if (!strcmp(acc_method, "ftp"))	port = 21;
+#ifndef DISABLE_GOPHER
 	    else if (!strcmp(acc_method, "gopher"))	port = 70;
+#endif
 	    else if (!strcmp(acc_method, "cso"))	port = 105;
+#ifndef DISABLE_NEWS
 	    else if (!strcmp(acc_method, "news"))	port = 119;
 	    else if (!strcmp(acc_method, "nntp"))	port = 119;
 	    else if (!strcmp(acc_method, "newspost"))	port = 119;
@@ -286,8 +300,11 @@ PUBLIC BOOL override_proxy ARGS1(
 	    else if (!strcmp(acc_method, "snews"))	port = 563;
 	    else if (!strcmp(acc_method, "snewspost"))	port = 563;
 	    else if (!strcmp(acc_method, "snewsreply")) port = 563;
+#endif
 	    else if (!strcmp(acc_method, "wais"))	port = 210;
+#ifndef DISABLE_FINGER
 	    else if (!strcmp(acc_method, "finger"))	port = 79;
+#endif
 	    FREE(acc_method);
 	}
     }
diff --git a/WWW/Library/Implementation/HTAccess.h b/WWW/Library/Implementation/HTAccess.h
index 3dc91793..12de49c7 100644
--- a/WWW/Library/Implementation/HTAccess.h
+++ b/WWW/Library/Implementation/HTAccess.h
@@ -18,13 +18,6 @@ extern char * use_this_url_instead;
 #include <HTAnchor.h>
 #include <HTFormat.h>
 
-#ifdef SHORT_NAMES
-#define HTClientHost            HTClHost
-#define HTSearchAbsolute        HTSeAbso
-#define HTOutputStream          HTOuStre
-#define HTOutputFormat          HTOuForm
-#endif
-
 /*      Return codes from load routines:
 **
 **      These codes may be returned by the protocol modules,
diff --git a/WWW/Library/Implementation/HTAnchor.c b/WWW/Library/Implementation/HTAnchor.c
index 9be41d00..9bfd8ccf 100644
--- a/WWW/Library/Implementation/HTAnchor.c
+++ b/WWW/Library/Implementation/HTAnchor.c
@@ -372,6 +372,8 @@ PUBLIC HTAnchor * HTAnchor_findAddress ARGS1(
 	hash = HASH_FUNCTION(newdoc->address);
 	if (!adult_table) {
 	    adult_table = (HTList **)calloc(HASH_SIZE, sizeof(HTList *));
+	    if (!adult_table)
+		outofmem(__FILE__, "HTAnchor_findAddress");
 	    atexit(free_adult_table);
 	}
 	if (!adult_table[hash])
@@ -785,16 +787,6 @@ PUBLIC HyperDoc * HTAnchor_document ARGS1(
 }
 
 
-/*  We don't want code to change an address after anchor creation... yet ?
-PUBLIC void HTAnchor_setAddress ARGS2(
-	HTAnchor *,	me,
-	char *, 	addr)
-{
-    if (me)
-	StrAllocCopy (me->parent->address, addr);
-}
-*/
-
 PUBLIC char * HTAnchor_address ARGS1(
 	HTAnchor *,	me)
 {
@@ -805,8 +797,13 @@ PUBLIC char * HTAnchor_address ARGS1(
 	    !((HTChildAnchor *)me)->tag) {  /* it's an adult or no tag */
 	    StrAllocCopy(addr, me->parent->address);
 	} else {  /* it's a named child */
-	    HTSprintf0(&addr, "%s#%s",
-			      me->parent->address, ((HTChildAnchor *)me)->tag);
+	    addr = malloc(2 +
+			  strlen(me->parent->address) +
+			  strlen(((HTChildAnchor *)me)->tag));
+	    if (addr == NULL)
+		outofmem(__FILE__, "HTAnchor_address");
+	    sprintf(addr, "%s#%s",
+			   me->parent->address, ((HTChildAnchor *)me)->tag);
 	}
     }
     return(addr);
diff --git a/WWW/Library/Implementation/HTAnchor.h b/WWW/Library/Implementation/HTAnchor.h
index eb2633bc..8b72f8ff 100644
--- a/WWW/Library/Implementation/HTAnchor.h
+++ b/WWW/Library/Implementation/HTAnchor.h
@@ -18,36 +18,6 @@
 #include <HTAtom.h>
 #include <UCDefs.h>
 
-#ifdef SHORT_NAMES
-#define HTAnchor_findChild			HTAnFiCh
-#define HTAnchor_findChildAndLink		HTAnFiLi
-#define HTAnchor_findAddress			HTAnFiAd
-#define HTAnchor_delete 			HTAnDele
-#define HTAnchor_makeLastChild			HTAnMaLa
-#define HTAnchor_parent 			HTAnPare
-#define HTAnchor_setDocument			HTAnSeDo
-#define HTAnchor_document			HTAnDocu
-#define HTAnchor_setFormat			HTAnSeFo
-#define HTAnchor_format 			HTAnForm
-#define HTAnchor_setIndex			HTAnSeIn
-#define HTAnchor_setPrompt			HTAnSePr
-#define HTAnchor_isIndex			HTAnIsIn
-#define HTAnchor_address			HTAnAddr
-#define HTAnchor_hasChildren			HTAnHaCh
-#define HTAnchor_title				HTAnTitl
-#define HTAnchor_setTitle			HTAnSeTi
-#define HTAnchor_appendTitle			HTAnApTi
-#define HTAnchor_link				HTAnLink
-#define HTAnchor_followMainLink 		HTAnFoMa
-#define HTAnchor_followTypedLink		HTAnFoTy
-#define HTAnchor_makeMainLink			HTAnMaMa
-#define HTAnchor_setProtocol			HTAnSePr
-#define HTAnchor_protocol			HTAnProt
-#define HTAnchor_physical			HTAnPhys
-#define HTAnchor_setPhysical			HTAnSePh
-#define HTAnchor_methods			HtAnMeth
-#endif /* SHORT_NAMES */
-
 /*			Main definition of anchor
 **			=========================
 */
@@ -226,12 +196,6 @@ extern void HTAnchor_setDocument PARAMS((
 extern HyperDoc * HTAnchor_document PARAMS((
 	HTParentAnchor *	me));
 
-/* We don't want code to change an address after anchor creation... yet ?
-extern void HTAnchor_setAddress PARAMS((
-	HTAnchor *		me,
-	char *			addr));
-*/
-
 /*	Returns the full URI of the anchor, child or parent
 **	as a malloc'd string to be freed by the caller.
 */
diff --git a/WWW/Library/Implementation/HTAssoc.h b/WWW/Library/Implementation/HTAssoc.h
index 54db9487..b08486dd 100644
--- a/WWW/Library/Implementation/HTAssoc.h
+++ b/WWW/Library/Implementation/HTAssoc.h
@@ -1,7 +1,7 @@
 /*                       ASSOCIATION LIST FOR STORING NAME-VALUE PAIRS
-                                             
+
    Lookups from association list are not case-sensitive.
-   
+
  */
 
 #ifndef HTASSOC_H
@@ -9,13 +9,6 @@
 
 #include <HTList.h>
 
-#ifdef SHORT_NAMES
-#define HTAL_new        HTAssocList_new
-#define HTAL_del        HTAssocList_delete
-#define HTAL_add        HTAssocList_add
-#define HTAL_lup        HTAssocList_lookup
-#endif /*SHORT_NAMES*/
-
 typedef HTList HTAssocList;
 
 typedef struct {
diff --git a/WWW/Library/Implementation/HTAtom.h b/WWW/Library/Implementation/HTAtom.h
index fda46b86..e948767d 100644
--- a/WWW/Library/Implementation/HTAtom.h
+++ b/WWW/Library/Implementation/HTAtom.h
@@ -23,11 +23,6 @@
 
 #include <HTList.h>
 
-#ifdef SHORT_NAMES
-#define HTAt_for        HTAtom_for
-#define HTAt_tMa        HTAtom_templateMatches
-#endif /*SHORT_NAMES*/
-
 typedef struct _HTAtom HTAtom;
 struct _HTAtom {
         HTAtom *        next;
diff --git a/WWW/Library/Implementation/HTAuth.h b/WWW/Library/Implementation/HTAuth.h
index a99081ce..6d49240d 100644
--- a/WWW/Library/Implementation/HTAuth.h
+++ b/WWW/Library/Implementation/HTAuth.h
@@ -12,11 +12,6 @@
 #include <HTAAProt.h>
 
 
-#ifdef SHORT_NAMES
-#define HTAA_authenticate	HTAAauth
-#endif /* SHORT_NAMES */
-
-
 /*
 ** Server's representation of a user (fields in authentication string)
 */
diff --git a/WWW/Library/Implementation/HTBTree.h b/WWW/Library/Implementation/HTBTree.h
index 6facd048..7cf5ea84 100644
--- a/WWW/Library/Implementation/HTBTree.h
+++ b/WWW/Library/Implementation/HTBTree.h
@@ -1,28 +1,19 @@
 /*                  /Net/dxcern/userd/timbl/hypertext/WWW/Library/Implementation/HTBTree.html
                          BALANCED BINARY TREE FOR SORTING THINGS
-                                             
+
    Tree creation, traversal and freeing.  User-supplied comparison routine.
-   
+
    Author: Arthur Secret, CERN. Public domain.  Please mail bugs and changes to
    www-request@info.cern.ch
-   
+
    part of libWWW
-   
+
  */
 #ifndef HTBTREE_H
 #define HTBTREE_H 1
 
 #include <HTUtils.h>
 
-#ifdef SHORT_NAMES
-#define HTBTree_new             HTBTNew
-#define HTBTree_free            HTBTFree
-#define HTBTreeAndObject_free   HTBTAOFr
-#define HTBTree_add             HTBTAdd
-#define HTBTree_next            HTBTNext
-/* #define      HTBTree_object          HTBTObje already a macro */
-#endif
-
 
 /*
 
@@ -95,12 +86,12 @@ Find user object for element
 Find next element in depth-first order
 
   ON ENTRY,
-  
+
   ele                    if NULL, start with leftmost element. if != 0 give next object to
                          the right.
-                         
+
   returns                Pointer to element ot NULL if none left.
-                         
+
  */
 extern HTBTElement * HTBTree_next PARAMS((HTBTree* tree, HTBTElement * ele));
 
diff --git a/WWW/Library/Implementation/HTChunk.h b/WWW/Library/Implementation/HTChunk.h
index 6818acec..20a5af17 100644
--- a/WWW/Library/Implementation/HTChunk.h
+++ b/WWW/Library/Implementation/HTChunk.h
@@ -21,16 +21,6 @@ typedef struct {
 } HTChunk;
 
 
-#ifdef SHORT_NAMES
-#define HTChunkClear		HTChClea
-#define HTChunkPutc		HTChPutc
-#define HTChunkPuts		HTChPuts
-#define HTChunkCreate		HTChCrea
-#define HTChunkTerminate	HTChTerm
-#define HTChunkEnsure		HtChEnsu
-#endif
-
-
 /*
  *
  * Create new chunk
diff --git a/WWW/Library/Implementation/HTFTP.c b/WWW/Library/Implementation/HTFTP.c
index 923d7a0e..b8b1c4c2 100644
--- a/WWW/Library/Implementation/HTFTP.c
+++ b/WWW/Library/Implementation/HTFTP.c
@@ -1891,6 +1891,8 @@ PRIVATE EntryInfo * parse_dir_entry ARGS2(
     char *cp;
 
     entry_info = (EntryInfo *)malloc(sizeof(EntryInfo));
+    if (entry_info == NULL)
+	outofmem(__FILE__, "parse_dir_entry");
     entry_info->filename = NULL;
     entry_info->type = NULL;
     entry_info->date = NULL;
diff --git a/WWW/Library/Implementation/HTFWriter.c b/WWW/Library/Implementation/HTFWriter.c
index d6176af8..943e1a22 100644
--- a/WWW/Library/Implementation/HTFWriter.c
+++ b/WWW/Library/Implementation/HTFWriter.c
@@ -25,7 +25,7 @@
 
 struct _HTStream {
 	CONST HTStreamClass *	isa;
-	
+
 	FILE *			fp;
 	char * 			end_command;
 	char * 			remove_command;
@@ -57,13 +57,13 @@ PRIVATE void HTBlackHole_abort ARGS2(HTStream *, me, HTError, e)
 **	-----------------
 */
 PRIVATE CONST HTStreamClass HTBlackHoleClass =
-{		
+{
 	"BlackHole",
 	HTBlackHole_free,
 	HTBlackHole_abort,
 	HTBlackHole_put_character, 	HTBlackHole_put_string,
 	HTBlackHole_write
-}; 
+};
 
 PRIVATE HTStream HTBlackHoleInstance =
 {
@@ -116,7 +116,7 @@ PRIVATE void HTFWriter_put_string ARGS2(HTStream *, me, CONST char*, s)
 */
 PRIVATE void HTFWriter_write ARGS3(HTStream *, me, CONST char*, s, int, l)
 {
-    fwrite(s, 1, l, me->fp); 
+    fwrite(s, 1, l, me->fp);
 }
 
 
@@ -169,13 +169,13 @@ PRIVATE void HTFWriter_abort ARGS2(HTStream *, me, HTError, e)
 **	-----------------------
 */
 PRIVATE CONST HTStreamClass HTFWriter = /* As opposed to print etc */
-{		
+{
 	"FileWriter",
 	HTFWriter_free,
 	HTFWriter_abort,
 	HTFWriter_put_character, 	HTFWriter_put_string,
 	HTFWriter_write
-}; 
+};
 
 
 /*	Subclass-specific Methods
@@ -185,12 +185,12 @@ PRIVATE CONST HTStreamClass HTFWriter = /* As opposed to print etc */
 PUBLIC HTStream* HTFWriter_new ARGS1(FILE *, fp)
 {
     HTStream* me;
-    
+
     if (!fp) return NULL;
 
     me = (HTStream*)malloc(sizeof(*me));
     if (me == NULL) outofmem(__FILE__, "HTML_new");
-    me->isa = &HTFWriter;       
+    me->isa = &HTFWriter;
 
     me->fp = fp;
     me->end_command = NULL;
@@ -234,26 +234,28 @@ PUBLIC HTStream* HTSaveAndExecute ARGS3(
 {
     char *fnam;
     CONST char * suffix;
-    
+
     HTStream* me;
-    
+
     if (HTClientHost) {
         HTAlert(CANNOT_SAVE_REMOTE);
 	return HTBlackHole();
     }
-    
+
     me = (HTStream*)malloc(sizeof(*me));
     if (me == NULL) outofmem(__FILE__, "Save and execute");
-    me->isa = &HTFWriter;  
-    
+    me->isa = &HTFWriter;
+
     /* Save the file under a suitably suffixed name */
-    
+
     suffix = HTFileSuffix(pres->rep, anchor->content_encoding);
 
     fnam = (char *)malloc (L_tmpnam + 16 + strlen(suffix));
+    if (fnam == NULL)
+	outofmem(__FILE__, "HTSaveAndExecute");
     tmpnam (fnam);
     if (suffix) strcat(fnam, suffix);
-    
+
     me->fp = fopen (fnam, "w");
     if (!me->fp) {
 	HTAlert(CANNOT_OPEN_TEMP);
@@ -270,7 +272,7 @@ PUBLIC HTStream* HTSaveAndExecute ARGS3(
     me->remove_command = NULL;	/* If needed, put into end_command */
 #ifdef NOPE
 /*	Make command to delete file
-*/ 
+*/
     me->remove_command = 0;
     HTSprintf0(&(me->remove_command), REMOVE_COMMAND, fnam);
 #endif
@@ -301,34 +303,36 @@ PUBLIC HTStream* HTSaveLocally ARGS3(
     char *fnam;
     char *answer;
     CONST char * suffix;
-    
+
     HTStream* me;
-    
+
     if (HTClientHost) {
         HTAlert(CANNOT_SAVE_REMOTE);
 	return HTBlackHole();
     }
-    
+
     me = (HTStream*)malloc(sizeof(*me));
     if (me == NULL) outofmem(__FILE__, "SaveLocally");
-    me->isa = &HTFWriter;  
+    me->isa = &HTFWriter;
     me->end_command = NULL;
     me->remove_command = NULL;	/* If needed, put into end_command */
     me->announce = YES;
-    
+
     /* Save the file under a suitably suffixed name */
-    
+
     suffix = HTFileSuffix(pres->rep, anchor->content_encoding);
 
     fnam = (char *)malloc (L_tmpnam + 16 + strlen(suffix));
+    if (fnam == NULL)
+	outofmem(__FILE__, "HTSaveLocally");
     tmpnam (fnam);
     if (suffix) strcat(fnam, suffix);
-    
+
     /*	Save Panel */
     answer = HTPrompt(GIVE_FILENAME, fnam);
-    
+
     FREE(fnam);
-    
+
     me->fp = fopen (answer, "w");
     if (!me->fp) {
 	HTAlert(CANNOT_OPEN_OUTPUT);
diff --git a/WWW/Library/Implementation/HTFWriter.h b/WWW/Library/Implementation/HTFWriter.h
index 089ad0fb..b4e79cbc 100644
--- a/WWW/Library/Implementation/HTFWriter.h
+++ b/WWW/Library/Implementation/HTFWriter.h
@@ -1,9 +1,9 @@
 /*                                                                     File Writer for libwww
                                       C FILE WRITER
-                                             
+
    It is useful to have both FWriter and Writer for environments in which fdopen() doesn't
    exist for example.
-   
+
  */
 #ifndef HTFWRITE_H
 #define HTFWRITE_H
@@ -11,10 +11,6 @@
 #include <HTStream.h>
 #include <HTFormat.h>
 
-#ifdef SHORT_NAMES
-#define HTFWriter_new   HTFWnew
-#endif
-
 extern HTStream * HTFWriter_new PARAMS((FILE * fp));
 
 extern HTStream * HTSaveAndExecute PARAMS((
diff --git a/WWW/Library/Implementation/HTFinger.c b/WWW/Library/Implementation/HTFinger.c
index 4d1aeeca..36a7b89c 100644
--- a/WWW/Library/Implementation/HTFinger.c
+++ b/WWW/Library/Implementation/HTFinger.c
@@ -26,6 +26,9 @@
 */
 
 #include <HTUtils.h>
+
+#ifndef DISABLE_FINGER
+
 #include <HTAlert.h>
 #include <HTML.h>
 #include <HTParse.h>
@@ -416,3 +419,5 @@ GLOBALDEF (HTProtocol, HTFinger, _HTFINGER_C_1_INIT);
 #else
 GLOBALDEF PUBLIC HTProtocol HTFinger = { "finger", HTLoadFinger, NULL };
 #endif /* GLOBALDEF_IS_MACRO */
+
+#endif /* not DISABLE_FINGER */
diff --git a/WWW/Library/Implementation/HTFormat.c b/WWW/Library/Implementation/HTFormat.c
index 33c6e344..23b16db5 100644
--- a/WWW/Library/Implementation/HTFormat.c
+++ b/WWW/Library/Implementation/HTFormat.c
@@ -41,7 +41,6 @@ PUBLIC long int HTMaxBytes  = 0;	/* No effective limit */
 #include <HTFWriter.h>
 #include <HTPlain.h>
 #include <SGML.h>
-#include <HTML.h>
 #include <HTMLGen.h>
 
 #include <LYexit.h>
diff --git a/WWW/Library/Implementation/HTFormat.h b/WWW/Library/Implementation/HTFormat.h
index f4b3caf5..95302a1d 100644
--- a/WWW/Library/Implementation/HTFormat.h
+++ b/WWW/Library/Implementation/HTFormat.h
@@ -18,11 +18,6 @@ Preamble
 #include <HTAtom.h>
 #include <HTList.h>
 
-#ifdef SHORT_NAMES
-#define HTOutputSource HTOuSour
-#define HTOutputBinary HTOuBina
-#endif
-
 /*
 
 The HTFormat type
diff --git a/WWW/Library/Implementation/HTGroup.c b/WWW/Library/Implementation/HTGroup.c
index 09340b30..490699d3 100644
--- a/WWW/Library/Implementation/HTGroup.c
+++ b/WWW/Library/Implementation/HTGroup.c
@@ -108,6 +108,8 @@ PRIVATE AddressDefList *parse_address_part ARGS1(FILE *, fp)
 
     for(;;) {
 	Ref *ref = (Ref*)calloc(1, sizeof(Ref));
+	if (ref == NULL)
+	    outofmem(__FILE__, "parse_address_part");
 	ref->name = NULL;
 	ref->translation = NULL;
 	StrAllocCopy(ref->name, HTlex_buffer);
@@ -162,6 +164,8 @@ PRIVATE UserDefList *parse_user_part ARGS1(FILE *, fp)
 
     for (;;) {
 	Ref *ref = (Ref*)calloc(1, sizeof(Ref));
+	if (ref == NULL)
+	    outofmem(__FILE__, "parse_user_part");
 	ref->name = NULL;
 	ref->translation = NULL;
 	StrAllocCopy(ref->name, HTlex_buffer);
@@ -220,7 +224,7 @@ PRIVATE Item *parse_item ARGS1(FILE *, fp)
 	}
 	else {
 	    if (user_def_list) {
-	        HTList_delete(user_def_list);	/* @@@@ */
+		HTList_delete(user_def_list);	/* @@@@ */
 		user_def_list = NULL;
 	    }
 	    syntax_error(fp, "Expected address part (single address or list)",
@@ -235,6 +239,8 @@ PRIVATE Item *parse_item ARGS1(FILE *, fp)
 	return NULL;
     }
     item = (Item*)calloc(1, sizeof(Item));
+    if (item == NULL)
+	outofmem(__FILE__, "parse_item");
     item->user_def_list = user_def_list;
     item->address_def_list = address_def_list;
     return item;
@@ -282,6 +288,8 @@ PUBLIC GroupDef *HTAA_parseGroupDef ARGS1(FILE *, fp)
 	return NULL;
     }
     group_def = (GroupDef*)calloc(1, sizeof(GroupDef));
+    if (group_def == NULL)
+	outofmem(__FILE__, "HTAA_parseGroupDef");
     group_def->group_name = NULL;
     group_def->item_list = item_list;
 
@@ -341,8 +349,8 @@ PRIVATE GroupDef *find_group_def ARGS2(GroupDefList *,	group_list,
 	while (NULL != (group_def = (GroupDef*)HTList_nextObject(cur))) {
 	    if (!strcmp(group_name, group_def->group_name)) {
 		return group_def;
-            }
-        }
+	    }
+	}
     }
     return NULL;
 }
@@ -661,7 +669,7 @@ PUBLIC GroupDefList *HTAA_readGroupFile ARGS1(CONST char *, filename)
     } /* cache exists */
 
     CTRACE(tfp, "HTAA_readGroupFile: reading group file `%s'\n",
-	        filename);
+		filename);
 
     if (!(fp = fopen(filename, "r"))) {
 	CTRACE(tfp, "%s '%s'\n",
diff --git a/WWW/Library/Implementation/HTGroup.h b/WWW/Library/Implementation/HTGroup.h
index 80f7dacf..e78ac593 100644
--- a/WWW/Library/Implementation/HTGroup.h
+++ b/WWW/Library/Implementation/HTGroup.h
@@ -7,13 +7,6 @@
 
 #include <HTList.h>
 
-#ifdef SHORT_NAMES
-#define HTAA_parseGroupDef		HTAApGrD
-#define HTAA_resolveGroupReferences	HTAArGrR
-#define HTAA_printGroupDef		HTAApGrD
-#define GroupDef_delete			HTAAGD_d
-#define HTAA_userAndInetInGroup		HTAAuIIG
-#endif /* SHORT_NAMES */
 
 typedef HTList GroupDefList;
 typedef HTList ItemList;
diff --git a/WWW/Library/Implementation/HTHistory.h b/WWW/Library/Implementation/HTHistory.h
index 38d08e0e..a86be500 100644
--- a/WWW/Library/Implementation/HTHistory.h
+++ b/WWW/Library/Implementation/HTHistory.h
@@ -5,18 +5,6 @@
 
 #include <HTAnchor.h>
 
-#ifdef SHORT_NAMES
-#define HTHistory_record                HTHiReco
-#define HTHistory_backtrack             HTHiBack
-#define HTHistory_canBacktrack          HTHiCaBa
-#define HTHistory_moveBy                HTHiMoBy
-#define HTHistory_canMoveBy             HTHiCaMo
-#define HTHistory_read                  HTHiRead
-#define HTHistory_recall                HTHiReca
-#define HTHistory_count                 HTHiCoun
-#define HTHistory_leavingFrom           HTHiLeFr
-#endif
-
 /*                              Navigation
 **                              ==========
 */
diff --git a/WWW/Library/Implementation/HTLex.h b/WWW/Library/Implementation/HTLex.h
index 205d6b19..6997b8f7 100644
--- a/WWW/Library/Implementation/HTLex.h
+++ b/WWW/Library/Implementation/HTLex.h
@@ -1,5 +1,5 @@
 /*                         LEXICAL ANALYSOR (MAINLY FOR CONFIG FILES)
-                                             
+
  */
 
 #ifndef HTLEX_H
@@ -7,10 +7,6 @@
 
 #include <HTUtils.h>
 
-#ifdef SHORT_NAMES
-#define lex_verb        lex_verbose
-#endif /*SHORT_NAMES*/
-
 typedef enum {
     LEX_NONE,		/* Internally used      */
     LEX_EOF,		/* End of file          */
@@ -32,7 +28,7 @@ extern int HTlex_line;		/* Line number in source file   */
 Get Next Lexical Item
 
    If returns LEX_ALPH_STR or LEX_TMPL_STR the string is in global buffer lex_buffer.
-   
+
  */
 
 PUBLIC LexItem lex PARAMS((FILE * fp));
diff --git a/WWW/Library/Implementation/HTList.h b/WWW/Library/Implementation/HTList.h
index 653e87a5..a66253fd 100644
--- a/WWW/Library/Implementation/HTList.h
+++ b/WWW/Library/Implementation/HTList.h
@@ -16,19 +16,6 @@ struct _HTList {
 	HTList *	next;
 };
 
-#ifdef SHORT_NAMES
-#define HTList_new                      HTLiNew
-#define HTList_delete                   HTLiDele
-#define HTList_addObject                HTLiAdOb
-#define HTList_removeObject             HTLiReOb
-#define HTList_removeObjectAt           HTLiReAt
-#define HTList_removeLastObject         HTLiReLa
-#define HTList_removeFirstObject        HTLiReFi
-#define HTList_count                    HTLiCoun
-#define HTList_indexOf                  HTLiInOf
-#define HTList_objectAt                 HTLiObAt
-#endif /* SHORT_NAMES */
-
 
 /*	Fast macro to traverse a list.  Call it first with copy of the list
 **	header.  It returns the first object and increments the passed list
diff --git a/WWW/Library/Implementation/HTMLDTD.c b/WWW/Library/Implementation/HTMLDTD.c
index 205f2e0c..f71ab852 100644
--- a/WWW/Library/Implementation/HTMLDTD.c
+++ b/WWW/Library/Implementation/HTMLDTD.c
@@ -9,12 +9,19 @@
 #include <HTMLDTD.h>
 #include <LYLeaks.h>
 
+/*
+ *     Character entities like &nbsp now excluded from our DTD tables,
+ *     they are mapped to Unicode and handled by chartrans code directly
+ *     the similar way the numeric entities like &#123 does.
+ *     See  src/chrtrans/entities.h  for real mapping.
+ */
+
 /*	Entity Names
 **	------------
 **
 **	This table must be matched exactly with ALL the translation tables
-**		(this is an obsolete translation mechanism,
-**		currently replaced with unicode chartrans in most cases...)
+**		(this is an obsolete translation mechanism, probably unused,
+**		currently replaced with Unicode chartrans in most cases...)
 */
 static CONST char* entities[] = {
   "AElig",	/* capital AE diphthong (ligature) */
@@ -131,9 +138,6 @@ static CONST char* entities[] = {
   "yuml",	/* small y, dieresis or umlaut mark */
 };
 
-#define HTML_ENTITIES 112
-
-#include <entities.h>
 
 /*		Attribute Lists
 **		---------------
@@ -1591,10 +1595,8 @@ static HTTag tags[HTML_ELEMENTS];
 PUBLIC CONST SGML_dtd HTML_dtd = {
 	tags,
 	HTML_ELEMENTS,
-	entities,
+	entities, /* probably unused */
 	sizeof(entities)/sizeof(entities[0]),
-	unicode_entities,
-	sizeof(unicode_entities)/sizeof(unicode_entities[0])
 };
 
 /* This function fills the "tags" part of the HTML_dtd structure with
diff --git a/WWW/Library/Implementation/HTMLDTD.h b/WWW/Library/Implementation/HTMLDTD.h
index f9e157ac..59e8012b 100644
--- a/WWW/Library/Implementation/HTMLDTD.h
+++ b/WWW/Library/Implementation/HTMLDTD.h
@@ -20,9 +20,9 @@
 #ifndef HT_NON_BREAK_SPACE
 #define HT_NON_BREAK_SPACE	((char)1)	/* For now */
 #endif /* !HT_NON_BREAK_SPACE */
-#ifndef HT_EM_SPACE
-#define HT_EM_SPACE		((char)2)	/* For now */
-#endif /* !HT_EM_SPACE */
+#ifndef HT_EN_SPACE
+#define HT_EN_SPACE		((char)2)	/* For now */
+#endif /* !HT_EN_SPACE */
 #ifndef LY_SOFT_HYPHEN
 #define LY_SOFT_HYPHEN		((char)7)
 #endif /* !LY_SOFT_HYPHEN */
diff --git a/WWW/Library/Implementation/HTMLGen.c b/WWW/Library/Implementation/HTMLGen.c
index 9e5ac447..a5269eba 100644
--- a/WWW/Library/Implementation/HTMLGen.c
+++ b/WWW/Library/Implementation/HTMLGen.c
@@ -26,12 +26,29 @@
 #include <SGML.h>
 #include <HTFormat.h>
 
+#ifdef USE_COLOR_STYLE
+#include <LYCharUtils.h>
+#include <AttrList.h>
+#include <LYHash.h>
+#include <LYStyle.h>
+#endif
+
 #include <LYLeaks.h>
 
+extern BOOLEAN LYPreparsedSource;	/* Show source as preparsed?	*/
+
 #define PUTC(c) (*me->targetClass.put_character)(me->target, c)
 /* #define PUTS(s) (*me->targetClass.put_string)(me->target, s) */
 #define PUTB(s,l) (*me->targetClass.put_block)(me->target, s, l)
 
+#ifdef USE_COLOR_STYLE
+PUBLIC char class_string[TEMPSTRINGSIZE];
+
+static char *Style_className = NULL;
+static char myHash[128];
+static int hcode;
+#endif
+
 /*		HTML Object
 **		-----------
 */
@@ -56,6 +73,9 @@ struct _HTStructured {
 	BOOL				preformatted;
 	BOOL				escape_specials;
 	BOOL				in_attrval;
+#ifdef USE_COLOR_STYLE
+	HText *				text;
+#endif
 };
 
 /*	Flush Buffer
@@ -83,6 +103,46 @@ PRIVATE void HTMLGen_flush ARGS1(
     me->delete_line_break_char[0] = NO;
 }
 
+#ifdef USE_COLOR_STYLE
+/*
+ *  We need to flush our buffer each time before we effect a color style
+ *  change, this also relies on the subsequent stage not doing any
+ *  buffering - this is currently true, in cases where it matters the
+ *  target stream should be the HTPlain converter.
+ *  The flushing currently prevents reasonable line breaking in lines
+ *  with tags.  Since color styles help visual scanning of displayed
+ *  source lines, and long lines are wrapped in GridText anyway, this
+ *  is probably acceptable (or even A Good Thing - more to see in one
+ *  screenful).
+ *  The pointer to the HText structure is initialized here before
+ *  we effect the first style change.  Getting it from the global
+ *  HTMainText variable isn't very clean, since it relies on the fact
+ *  that HText_new() has already been called for the current stream
+ *  stack's document by the time we start processing the first element;
+ *  we rely on HTMLGenerator's callers (HTMLParsedPresent in particular)
+ *  to guarantee this when it matters.  Normally the target stream will
+ *  have been setup by HTPlainPresent, which does what we need in this
+ *  respect.  (A check whether we have the right output stream could be
+ *  done by checking that targetClass.name is "PlainPresenter" or similar.)
+ *
+ *  All special color style handling is only done if LYPreparsedSource
+ *  is set.  We could always do it for displaying source generated by
+ *  an internal gateway, but this makes the rule more simple for the
+ *  user: color styles are applied to html source only with the
+ *  -preparsed flag. - kw
+ */
+PRIVATE void do_cstyle_flush ARGS1(
+	HTStructured *, 	me)
+{
+    if (!me->text && LYPreparsedSource) {
+	me->text = HTMainText;
+    }
+    if (me->text) {
+	HTMLGen_flush(me);
+    }
+}
+#endif /* COLOR_STYLE */
+
 /*	Weighted optional line break
 **
 **	We keep track of all the breaks for when we chop the line
@@ -121,7 +181,7 @@ PRIVATE void HTMLGen_put_character ARGS2(
 	char,			c)
 {
     if (me->escape_specials && (unsigned char)c < 32) {
-	if (c == HT_NON_BREAK_SPACE || c == HT_EM_SPACE ||
+	if (c == HT_NON_BREAK_SPACE || c == HT_EN_SPACE ||
 	    c == LY_SOFT_HYPHEN) { /* recursion... */
 	    HTMLGen_put_character(me, '&');
 	    HTMLGen_put_character(me, '#');
@@ -131,11 +191,11 @@ PRIVATE void HTMLGen_put_character ARGS2(
 		HTMLGen_put_character(me, 'A');
 		HTMLGen_put_character(me, '0');
 		break;
-	    case HT_EM_SPACE: /* &#x2003; */
+	    case HT_EN_SPACE: /* &#x2002; */
 		HTMLGen_put_character(me, '2');
 		HTMLGen_put_character(me, '0');
 		HTMLGen_put_character(me, '0');
-		HTMLGen_put_character(me, '3');
+		HTMLGen_put_character(me, '2');
 		break;
 	    case LY_SOFT_HYPHEN: /* &#xAD; */
 		HTMLGen_put_character(me, 'A');
@@ -266,6 +326,59 @@ PRIVATE void HTMLGen_start_element ARGS6(
     BOOL was_preformatted = me->preformatted;
     HTTag * tag = &HTML_dtd.tags[element_number];
 
+#if defined(USE_COLOR_STYLE)
+    char *title = NULL;
+    char *title_tmp = NULL;
+
+    if (LYPreparsedSource) {
+	/*
+	 *  Same logic as in HTML_start_element, copied from there. - kw
+	 */
+	HTSprintf (&Style_className, ";%s", HTML_dtd.tags[element_number].name);
+	strcpy (myHash, HTML_dtd.tags[element_number].name);
+	if (class_string[0])
+	{
+	    HTSprintf (&Style_className, ".%s", class_string);
+	    strcat (myHash, ".");
+	    strcat (myHash, class_string);
+	}
+	class_string[0] = '\0';
+	strtolower(myHash);
+	hcode = hash_code(myHash);
+	strtolower(Style_className);
+
+	if (TRACE)
+	{
+	    fprintf(tfp, "CSSTRIM:%s -> %d", myHash, hcode);
+	    if (hashStyles[hcode].code!=hcode)
+	    {
+		char *rp=strrchr(myHash, '.');
+		fprintf(tfp, " (undefined) %s\n", myHash);
+		if (rp)
+		{
+		    int hcd;
+		    *rp='\0'; /* trim the class */
+		    hcd = hash_code(myHash);
+		    fprintf(tfp, "CSS:%s -> %d", myHash, hcd);
+		    if (hashStyles[hcd].code!=hcd)
+			fprintf(tfp, " (undefined) %s\n", myHash);
+		    else
+			fprintf(tfp, " ca=%d\n", hashStyles[hcd].color);
+		}
+	    }
+	    else
+		fprintf(tfp, " ca=%d\n", hashStyles[hcode].color);
+	}
+
+	if (displayStyles[element_number + STARTAT].color > -2) /* actually set */
+	{
+	    CTRACE(tfp, "CSSTRIM: start_element: top <%s>\n",
+		   HTML_dtd.tags[element_number].name);
+	    do_cstyle_flush(me);
+	    HText_characterStyle(me->text, hcode, 1);
+	}
+    }
+#endif /* USE_COLOR_STYLE */
     me->preformatted = YES;	/* free text within tags */
     HTMLGen_put_character(me, '<');
     HTMLGen_put_string(me, tag->name);
@@ -276,6 +389,36 @@ PRIVATE void HTMLGen_start_element ARGS6(
 		had_attr = YES;
 		HTMLGen_put_character(me, ' ');
 		allow_break(me, 11, YES);
+#ifdef USE_COLOR_STYLE
+		/*
+		 *  Try to mimic HTML_start_element's special handling
+		 *  for HTML_LINK.  If applicable, color the displayed
+		 *  attribute / value pairs differently. - kw
+		 */
+		if (LYPreparsedSource &&
+		    element_number == HTML_LINK && !title &&
+		    present[HTML_LINK_CLASS] &&
+		    value && *value[HTML_LINK_CLASS]!='\0' &&
+		    !present[HTML_LINK_REV] &&
+		    (present[HTML_LINK_REL] || present[HTML_LINK_HREF])) {
+		    if (present[HTML_LINK_TITLE] && *value[HTML_LINK_TITLE]) {
+			StrAllocCopy(title, value[HTML_LINK_TITLE]);
+			LYTrimHead(title);
+			LYTrimTail(title);
+		    }
+		    if ((!title || *title=='\0') && present[HTML_LINK_REL]) {
+			StrAllocCopy(title, value[HTML_LINK_REL]);
+		    }
+		    if (title && *title) {
+			HTSprintf0(&title_tmp, "link.%s.%s",
+				   value[HTML_LINK_CLASS], title);
+			CTRACE(tfp, "CSSTRIM:link=%s\n", title_tmp);
+
+			do_cstyle_flush(me);
+			HText_characterStyle(me->text, hash_code(title_tmp), 1);
+		    }
+		}
+#endif
 		HTMLGen_put_string(me, tag->attributes[i].name);
 		if (value[i]) {
 		    me->preformatted = was_preformatted;
@@ -305,6 +448,19 @@ PRIVATE void HTMLGen_start_element ARGS6(
 		}
 	    }
 	}
+#ifdef USE_COLOR_STYLE
+	if (had_attr && LYPreparsedSource && element_number == HTML_LINK) {
+	    /*
+	     *  Clean up after special HTML_LINK handling - kw
+	     */
+	    if (title && *title) {
+		do_cstyle_flush(me);
+		HText_characterStyle(me->text, hash_code(title_tmp), 0);
+		FREE(title_tmp);
+	    }
+	    FREE(title);
+	}
+#endif
 	if (had_attr)
 	    allow_break(me, 12, NO);
     }
@@ -324,6 +480,29 @@ PRIVATE void HTMLGen_start_element ARGS6(
 	else
 	    allow_break(me, 2, NO);
     }
+
+#if defined(USE_COLOR_STYLE)
+    /*
+     *  Same logic as in HTML_start_element, copied from there. - kw
+     */
+
+/* end really empty tags straight away */
+#define REALLY_EMPTY(e) ((HTML_dtd.tags[e].contents == SGML_EMPTY) && \
+			 !(HTML_dtd.tags[e].flags & Tgf_nreie))
+
+    if (LYPreparsedSource && REALLY_EMPTY(element_number))
+    {
+	CTRACE(tfp, "STYLE:begin_element:ending EMPTY element style\n");
+	do_cstyle_flush(me);
+#if !defined(USE_HASH)
+	HText_characterStyle(me->text, element_number+STARTAT, STACK_OFF);
+#else
+	HText_characterStyle(me->text, hcode, STACK_OFF);
+#endif /* USE_HASH */
+	TrimColorClass(HTML_dtd.tags[element_number].name,
+		       Style_className, &hcode);
+    }
+#endif /* USE_COLOR_STYLE */
 }
 
 /*		End Element
@@ -358,6 +537,24 @@ PRIVATE void HTMLGen_end_element ARGS3(
     if (element_number == HTML_PRE) {
 	me->preformatted = NO;
     }
+#ifdef USE_COLOR_STYLE
+    /*
+     *  Same logic as in HTML_end_element, copied from there. - kw
+     */
+    TrimColorClass(HTML_dtd.tags[element_number].name,
+		   Style_className, &hcode);
+
+    if (LYPreparsedSource && !REALLY_EMPTY(element_number))
+    {
+	CTRACE(tfp, "STYLE:end_element: ending non-EMPTY style\n");
+	do_cstyle_flush(me);
+#if !defined(USE_HASH)
+	HText_characterStyle(me->text, element_number+STARTAT, STACK_OFF);
+#else
+	HText_characterStyle(me->text, hcode, STACK_OFF);
+#endif /* USE_HASH */
+    }
+#endif /* USE_COLOR_STYLE */
 }
 
 /*		Expanding entities
@@ -388,6 +585,9 @@ PRIVATE void HTMLGen_free ARGS1(
     (*me->targetClass.put_character)(me->target, '\n');
     HTMLGen_flush(me);
     (*me->targetClass._free)(me->target);	/* ripple through */
+#ifdef USE_COLOR_STYLE
+    FREE(Style_className);
+#endif
     FREE(me);
 }
 
@@ -403,6 +603,9 @@ PRIVATE void HTMLGen_abort ARGS2(
 	HTError,		e GCC_UNUSED)
 {
     HTMLGen_free(me);
+#ifdef USE_COLOR_STYLE
+    FREE(Style_className);
+#endif
 }
 
 PRIVATE void PlainToHTML_abort ARGS2(
@@ -431,7 +634,6 @@ PRIVATE CONST HTStructuredClass HTMLGeneration = /* As opposed to print etc */
 extern int LYcols;			/* LYCurses.h, set in LYMain.c	*/
 extern BOOL dump_output_immediately;	/* TRUE if no interactive user	*/
 extern int dump_output_width;		/* -width instead of 80 	*/
-extern BOOLEAN LYPreparsedSource;	/* Show source as preparsed?	*/
 
 PUBLIC HTStructured * HTMLGenerator ARGS1(
 	HTStream *,		output)
@@ -482,6 +684,12 @@ PUBLIC HTStructured * HTMLGenerator ARGS1(
      */
     me->escape_specials = LYPreparsedSource;
 
+#ifdef USE_COLOR_STYLE
+    me->text = NULL;	/* Will be initialized when first needed. - kw */
+    FREE(Style_className);
+    class_string[0] = '\0';
+#endif /* COLOR_STYLE */
+
     return me;
 }
 
diff --git a/WWW/Library/Implementation/HTNews.c b/WWW/Library/Implementation/HTNews.c
index 8669db3e..9f817043 100644
--- a/WWW/Library/Implementation/HTNews.c
+++ b/WWW/Library/Implementation/HTNews.c
@@ -8,6 +8,8 @@
 
 #include <HTUtils.h>		/* Coding convention macros */
 
+#ifndef DISABLE_NEWS
+
 /* Implements:
 */
 #include <HTNews.h>
@@ -2820,3 +2822,5 @@ GLOBALDEF PUBLIC HTProtocol HTSNews = { "snews", HTLoadNews, NULL };
 GLOBALDEF PUBLIC HTProtocol HTSNewsPost = { "snewspost", HTLoadNews, NULL };
 GLOBALDEF PUBLIC HTProtocol HTSNewsReply = { "snewsreply", HTLoadNews, NULL };
 #endif /* GLOBALDEF_IS_MACRO */
+
+#endif /* not DISABLE_NEWS */
diff --git a/WWW/Library/Implementation/HTPasswd.h b/WWW/Library/Implementation/HTPasswd.h
index f02dbc9f..49468723 100644
--- a/WWW/Library/Implementation/HTPasswd.h
+++ b/WWW/Library/Implementation/HTPasswd.h
@@ -7,13 +7,6 @@
 
 #include <HTList.h>
 
-#ifdef SHORT_NAMES
-#define HTAA_encryptPasswd	HTAAenPw
-#define HTAA_passwdMatch	HTAApwMa
-#define HTAAFile_readPasswdRec	HTAAFrPR
-#define HTAA_checkPasswd	HTAAchPw
-#endif /* SHORT_NAMES */
-
 /*
 
 User Authentication
diff --git a/WWW/Library/Implementation/HTPlain.c b/WWW/Library/Implementation/HTPlain.c
index 91973126..fd9f3f8b 100644
--- a/WWW/Library/Implementation/HTPlain.c
+++ b/WWW/Library/Implementation/HTPlain.c
@@ -424,7 +424,7 @@ PRIVATE void HTPlain_write ARGS3(HTStream *, me, CONST char*, s, int, l)
 
 	/*
 	**  If CJK mode is on, we'll assume the document matches
-	**  the user's selected character set, and if not, the
+	**  the user's display character set, and if not, the
 	**  user should toggle off raw/CJK mode to reload. - FM
 	*/
 	if (HTCJK != NOCJK) {
diff --git a/WWW/Library/Implementation/HTRules.h b/WWW/Library/Implementation/HTRules.h
index 14862b23..06d2ea7a 100644
--- a/WWW/Library/Implementation/HTRules.h
+++ b/WWW/Library/Implementation/HTRules.h
@@ -31,10 +31,6 @@ typedef enum _HTRuleOp {
 
 #ifndef NO_RULES
 
-#ifdef SHORT_NAMES
-#define HTSearchScript	HTSearSc
-#endif /*SHORT_NAMES*/
-
 /*
 
 Server Side Script Execution
diff --git a/WWW/Library/Implementation/HTStyle.c b/WWW/Library/Implementation/HTStyle.c
index e4066057..c5cabf78 100644
--- a/WWW/Library/Implementation/HTStyle.c
+++ b/WWW/Library/Implementation/HTStyle.c
@@ -19,9 +19,9 @@
 PUBLIC HTStyle* HTStyleNew NOARGS
 {
     HTStyle * self = (HTStyle *)malloc(sizeof(*self));
+    if (self == NULL)
+	outofmem(__FILE__, "HTStyleNew");
     memset((void *)self, 0, sizeof(*self));
-    self->font = (HTFont) 0;
-    self->color = 0;
     return self;
 }
 
@@ -72,6 +72,8 @@ HTStyle * HTStyleRead (HTStyle * style, HTStream * stream)
     if (gotpara) {
 	if (!style->paragraph) {
 	    style->paragraph = malloc(sizeof(*(style->paragraph)));
+	    if (!style->paragraph)
+		outofmem(__FILE__, "HTStyleRead");
 	    style->paragraph->tabs = 0;
 	}
 	p = style->paragraph;
@@ -86,6 +88,8 @@ HTStyle * HTStyleRead (HTStyle * style, HTStream * stream)
 	    &p->numTabs);
 	FREE(p->tabs);
 	p->tabs = malloc(p->numTabs * sizeof(p->tabs[0]));
+	if (!p->tabs)
+	    outofmem(__FILE__, "HTStyleRead");
 	for (tab=0; tab < p->numTabs; tab++) {
 	    NXScanf(stream, "%hd%f",
 		    &p->tabs[tab].kind,
@@ -284,6 +288,8 @@ HTStyleSheet * HTStyleSheetRemoveStyle ARGS2
 HTStyleSheet * HTStyleSheetNew NOARGS
 {
     HTStyleSheet * self = (HTStyleSheet *)malloc(sizeof(*self));
+    if (self == NULL)
+	outofmem(__FILE__, "HTStyleSheetNew");
 
     memset((void*)self, 0, sizeof(*self));	/* ANSI */
 /* Harbison c ref man says (char*)self
diff --git a/WWW/Library/Implementation/HTStyle.h b/WWW/Library/Implementation/HTStyle.h
index 3075a2c1..0cc15895 100644
--- a/WWW/Library/Implementation/HTStyle.h
+++ b/WWW/Library/Implementation/HTStyle.h
@@ -36,23 +36,6 @@ Overriding this module
 
 typedef long int HTFont;        /* Dummy definition instead */
 
-#ifdef SHORT_NAMES
-#define HTStyleNew                      HTStNew
-#define HTStyleFree                     HTStFree
-#define HTStyleRead                     HTStRead
-#define HTStyleWrite                    HTStWrite
-#define HTStyleSheetNew                 HTStShNe
-#define HTStyleSheetFree                HTStShFr
-#define HTStyleNamed                    HTStName
-#define HTStyleForParagraph             HTStFoPa
-#define HTStyleMatching                 HTStMatc
-#define HTStyleForRun                   HTStFoRu
-#define HTStyleSheetAddStyle            HTStShAd
-#define HTStyleSheetRemoveStyle         HTStShRm
-#define HTStyleSheetRead                HTStShRe
-#define HTStyleSheetWrite               HTStShWr
-#endif
-
 #ifdef NeXT_suppressed
 #include <appkit/appkit.h>
 typedef NXCoord HTCoord;
diff --git a/WWW/Library/Implementation/HTTCP.c b/WWW/Library/Implementation/HTTCP.c
index f34e0fbf..53cabd0e 100644
--- a/WWW/Library/Implementation/HTTCP.c
+++ b/WWW/Library/Implementation/HTTCP.c
@@ -55,12 +55,6 @@ PUBLIC int BSDselect PARAMS((
 
 #include <LYLeaks.h>
 
-#ifdef SHORT_NAMES
-#define HTInetStatus		HTInStat
-#define HTInetString		HTInStri
-#define HTParseInet		HTPaInet
-#endif /* SHORT_NAMES */
-
 #ifndef FD_SETSIZE
 #if defined(UCX) || defined(SOCKETSHR_TCP) || defined(CMU_TCP)
 #define FD_SETSIZE 32
diff --git a/WWW/Library/Implementation/HTTCP.h b/WWW/Library/Implementation/HTTCP.h
index 0c7e8e61..e532cbb8 100644
--- a/WWW/Library/Implementation/HTTCP.h
+++ b/WWW/Library/Implementation/HTTCP.h
@@ -9,13 +9,6 @@
 
 #include <HTUtils.h>
 
-#ifdef SHORT_NAMES
-#define HTInetStatus            HTInStat
-#define HTInetString            HTInStri
-#define HTParseInet             HTPaInet
-#endif
-
-
 /*      Produce a string for an internet address
 **      ---------------------------------------
 **
diff --git a/WWW/Library/Implementation/HTTP.c b/WWW/Library/Implementation/HTTP.c
index 37bb2052..a6129b5e 100644
--- a/WWW/Library/Implementation/HTTP.c
+++ b/WWW/Library/Implementation/HTTP.c
@@ -650,6 +650,8 @@ try_again:
     int buffer_length = INIT_LINE_SIZE;
 
     line_buffer = (char *)calloc(1, (buffer_length * sizeof(char)));
+    if (line_buffer == NULL)
+	outofmem(__FILE__, "HTLoadHTTP");
 
     HTReadProgress (bytes_already_read = 0, 0);
     do {/* Loop to read in the first line */
@@ -660,6 +662,8 @@ try_again:
 	    buffer_length = buffer_length + buffer_length;
 	    line_buffer =
 	      (char *)realloc(line_buffer, (buffer_length * sizeof(char)));
+	    if (line_buffer == NULL)
+		outofmem(__FILE__, "HTLoadHTTP");
 	}
 	CTRACE (tfp, "HTTP: Trying to read %d\n",
 		     buffer_length - length - 1);
@@ -729,6 +733,8 @@ try_again:
 	if (line_buffer) {
 	    FREE(line_kept_clean);
 	    line_kept_clean = (char *)malloc(buffer_length * sizeof(char));
+	    if (line_kept_clean == NULL)
+		outofmem(__FILE__, "HTLoadHTTP");
 	    memcpy(line_kept_clean, line_buffer, buffer_length);
 	}
 
diff --git a/WWW/Library/Implementation/HTUtils.h b/WWW/Library/Implementation/HTUtils.h
index 70c2813d..8ce4285f 100644
--- a/WWW/Library/Implementation/HTUtils.h
+++ b/WWW/Library/Implementation/HTUtils.h
@@ -115,11 +115,6 @@
 
 #endif
 
-
-#ifdef SHORT_NAMES
-#define WWW_TraceFlag HTTrFlag
-#endif
-
 /*
 
 Debug message control.
diff --git a/WWW/Library/Implementation/HText.h b/WWW/Library/Implementation/HText.h
index 2d1f1ed3..7258a343 100644
--- a/WWW/Library/Implementation/HText.h
+++ b/WWW/Library/Implementation/HText.h
@@ -17,36 +17,6 @@
 #include <HTStream.h>
 #include <SGML.h>
 
-#ifdef SHORT_NAMES
-#define HTMainText                      HTMaText
-#define HTMainAnchor                    HtMaAnch
-#define HText_new                       HTHTNew
-#define HText_new2                      HTHTNew2
-#define HText_free                      HTHTFree
-#define HText_beginAppend               HTHTBeAp
-#define HText_endAppend                 HTHTEnAp
-#define HText_setStyle                  HTHTSeSt
-#define HText_appendCharacter           HTHTApCh
-#define HText_appendImage               HTHTApIm
-#define HText_appendText                HTHTApTe
-#define HText_appendParagraph           HTHTApPa
-#define HText_beginAnchor               HTHTBeAn
-#define HText_endAnchor                 HTHTEnAn
-#define HText_dump                      HTHTDump
-#define HText_nodeAnchor                HTHTNoAn
-#define HText_select                    HTHTSele
-#define HText_selectAnchor              HTHTSeAn
-#define HText_applyStyle                HTHTApSt
-#define HText_updateStyle               HTHTUpSt
-#define HText_selectionStyle            HTHTStyl
-#define HText_replaceSel                HTHTRepl
-#define HText_applyToSimilar            HTHTApTo
-#define HText_selectUnstyled            HTHTSeUn
-#define HText_unlinkSelection           HTHTUnSe
-#define HText_linkSelTo                 HTHTLiSe
-#define HText_referenceSelected         HTHTRefS
-#endif
-
 #ifndef THINK_C
 #ifndef HyperText               /* Objective C version defined HyperText */
 typedef struct _HText HText;    /* Normal Library */
diff --git a/WWW/Library/Implementation/SGML.c b/WWW/Library/Implementation/SGML.c
index 41292c9b..01385a16 100644
--- a/WWW/Library/Implementation/SGML.c
+++ b/WWW/Library/Implementation/SGML.c
@@ -342,27 +342,26 @@ PRIVATE BOOL put_special_unicodes ARGS2(
 	**  Use Lynx special character for shy.
 	*/
 	PUTC(LY_SOFT_HYPHEN);
-    } else if (code == 8194 || code == 8195 || code == 8201) {
+    } else if (code == 8194 || code == 8201) {
 	/*
-	**  Use Lynx special character for ensp, emsp or thinsp.
+	**  Use Lynx special character for ensp or thinsp.
 	**
 	**  Originally, Lynx use space '32' as word delimiter and omits this
 	**  space at end of line if word is wrapped to the next line.  There
 	**  are several other spaces in the Unicode repertoire and we should
 	**  teach Lynx to understand them, not only as regular characters but
 	**  in the context of line wrapping.  Unfortunately, if we use
-	**  HT_EM_SPACE we override the chartrans tables for those spaces
-	**  (e.g., emsp= double space) with a single '32' for all (but do line
-	**  wrapping more fancy).  So we probably need HT_EN_SPACE etc...
+	**  HT_EN_SPACE we override the chartrans tables for those spaces
+	**  with a single '32' for all (but do line wrapping more fancy).
+	**  Assume emsp as two ensp (below).
 	*/
-	PUTC(HT_EM_SPACE);
-#ifdef NOTUSED_FOTEMODS
-    } else if (code == 8211 || code == 8212) {
+	PUTC(HT_EN_SPACE);
+    } else if (code == 8195) {
 	/*
-	**  Use ASCII hyphen for ndash/endash or mdash/emdash.
+	**  Use Lynx special character for emsp.
 	*/
-	PUTC('-');
-#endif
+	PUTC(HT_EN_SPACE);
+	PUTC(HT_EN_SPACE);
     } else {
 	/*
 	**  Return NO if nothing done.
@@ -704,7 +703,7 @@ PRIVATE void end_element ARGS2(
 	}
 
 	if (stackpos == 0 && old_tag->contents != SGML_EMPTY) {
-	    CTRACE(tfp, "SGML: Still open %s, no open %s for </%s>\n",
+	    CTRACE(tfp, "SGML: Still open %s, ***no open %s for </%s>\n",
 			context->element_stack ?
 			context->element_stack->tag->name : "none",
 			old_tag->name,
@@ -844,7 +843,7 @@ PRIVATE void start_element ARGS1(
 	    for (; i< new_tag->number_of_attributes && !has_attributes; i++)
 		has_attributes = context->present[i];
 	    if (!has_attributes) {
-		CTRACE(tfp, "SGML: Still open %s, converting invalid <%s> to </%s>\n",
+		CTRACE(tfp, "SGML: Still open %s, ***converting invalid <%s> to </%s>\n",
 			    context->element_stack->tag->name,
 			    new_tag->name,
 			    new_tag->name);
@@ -1609,10 +1608,11 @@ top1:
 	    **	If Mismatch: recover string.
 	    */
 	    PUTC('<');
-	    for (i = 0; i < string->size; i++)	/* recover */
+	    for (i = 0; i < string->size-1; i++)  /* recover, except last c */
 	       PUTC(string->data[i]);
 	    string->size = 0;
 	    context->state = S_text;
+	    goto top1;		/* to recover last c */
 	}
 	break;
 
diff --git a/WWW/Library/Implementation/SGML.h b/WWW/Library/Implementation/SGML.h
index 71bf90bb..3e4575bd 100644
--- a/WWW/Library/Implementation/SGML.h
+++ b/WWW/Library/Implementation/SGML.h
@@ -2,17 +2,14 @@
                                SGML AND STRUCTURED STREAMS
 
    The SGML parser is a state machine.  It is called for every character
-
    of the input stream.  The DTD data structure contains pointers
-
    to functions which are called to implement the actual effect of the
-
    text read. When these functions are called, the attribute structures pointed to by the
    DTD are valid, and the function is passed a pointer to the current tag structure, and an
    "element stack" which represents the state of nesting within SGML elements.
 
-   The following aspects are from Dan Connolly's suggestions:  Binary search, Structured
-   object scheme basically, SGML content enum type.
+   The following aspects are from Dan Connolly's suggestions:  Binary search,
+   Structured object scheme basically, SGML content enum type.
 
    (c) Copyright CERN 1991 - See Copyright.html
 
@@ -130,23 +127,13 @@ struct _tag{
 **  Not the whole DTD, but all this parser uses of it.
 */
 typedef struct {
-    char* name;
-    long code;
-} UC_entity_info;
-
-typedef struct {
     HTTag *             tags;           /* Must be in strcmp order by name */
     int                 number_of_tags;
     CONST char **       entity_names;   /* Must be in strcmp order by name */
     size_t              number_of_entities;
-    CONST UC_entity_info * unicode_entity_info; /* strcmp order by name */
-    size_t              number_of_unicode_entities;
-			/*
-			**  All calls to unicode_entities table should be done
-			**  through HTMLGetEntityUCValue (LYCharSets.c) only.
-			**  unicode_entities table now holds *all*
-			**  old-style entities too.
-			*/
+				/*  "entity_names" table probably unused,
+				**  see comments in HTMLDTD.c near the top
+				*/
 } SGML_dtd;
 
 
diff --git a/WWW/Library/Implementation/entities.h b/WWW/Library/Implementation/entities.h
deleted file mode 100644
index a43aed6e..00000000
--- a/WWW/Library/Implementation/entities.h
+++ /dev/null
@@ -1,1092 +0,0 @@
-/*	Entity Names to Unicode table
-**	-----------------------------
-**
-*
-*	Whole entities[] thing (and much more) now present
-*	in this kind of structure.  The structured streams to which
-*	the SGML modules sends its output could then easily have access
-*	to both entity names and unicode values for each (special)
-*	character.  Probably the whole translation to display characters
-*	should be done at that later stage (e.g., in HTML.c).
-*	What's missing is a way for the later stage to return info
-*	to SGML whether the entity could be displayed or not.
-*	(like between SGML_character() and handle_entity() via FoundEntity.)
-*	Well, trying to do that now.
-*	Why keep two structures for entities?  Backward compatibility..
-*/
-
-#ifndef ENTITIES_H
-#define ENTITIES_H 1
-
-#include <HTUtils.h>
-#include <SGML.h>
-
-/* UC_entity_info structure is defined in SGML.h.
-   This has to be sorted alphabetically (case-sensitive),
-   bear this in mind when you add some more entities..  */
-
-/*
-
-This table available from ftp://ftp.unicode.org/
-original comment follows:
-
-
-# Author: John Cowan <cowan@ccil.org>
-# Date: 25 July 1997
-#
-# The following table maps SGML character entities from various
-# public sets (namely, ISOamsa, ISOamsb, ISOamsc, ISOamsn, ISOamso,
-# ISOamsr, ISObox, ISOcyr1, ISOcyr2, ISOdia, ISOgrk1, ISOgrk2,
-# ISOgrk3, ISOgrk4, ISOlat1, ISOlat2, ISOnum, ISOpub, ISOtech,
-# HTMLspecial, HTMLsymbol) to corresponding Unicode characters.
-#
-# The table has four tab-separated columns:
-#	Column 1: SGML character entity name
-#	Column 2: SGML public entity set
-#	Column 3: Unicode 2.0 character code
-#	Column 4: Unicode 2.0 character name (UPPER CASE)
-# Entries which don't have Unicode equivalents have "0x????"
-# in Column 3 and a lower case description (from the public entity
-# set DTD) in Column 4.  The mapping is not reversible, because many
-# distinctions are unified away in Unicode, particularly between
-# mathematical symbols.
-#
-# The table is sorted case-blind by SGML character entity name.
-#
-# The contents of this table are drawn from various sources, and
-# are in the public domain.
-#
-########################
-
-   We just sort it and move column 2 away (line too long, sorry;
-   look at sgml.html in test/ directory for details).
-   Also we add a few (obsolete) synonyms:
-   "brkbar"  for "brvbar" 0x00A6
-   "emdash"  for "mdash" 0x2014
-   "endash"  for "ndash" 0x2013
-   "hibar"  for "macr" 0x00AF
-   for exact compatibility with entities[] and previous bevavior.
-   BTW, lots of synonyms found in this table, we shouldn't worry about...
-*/
-
-static CONST UC_entity_info unicode_entities[] = {
-  {"AElig",	0x00C6},  /* LATIN CAPITAL LETTER AE			   */
-  {"Aacgr",	0x0386},  /* GREEK CAPITAL LETTER ALPHA WITH TONOS	   */
-  {"Aacute",	0x00C1},  /* LATIN CAPITAL LETTER A WITH ACUTE		   */
-  {"Abreve",	0x0102},  /* LATIN CAPITAL LETTER A WITH BREVE		   */
-  {"Acirc",	0x00C2},  /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX	   */
-  {"Acy",	0x0410},  /* CYRILLIC CAPITAL LETTER A			   */
-  {"Agr",	0x0391},  /* GREEK CAPITAL LETTER ALPHA 		   */
-  {"Agrave",	0x00C0},  /* LATIN CAPITAL LETTER A WITH GRAVE		   */
-  {"Alpha",	0x0391},  /* GREEK CAPITAL LETTER ALPHA 		   */
-  {"Amacr",	0x0100},  /* LATIN CAPITAL LETTER A WITH MACRON 	   */
-  {"Aogon",	0x0104},  /* LATIN CAPITAL LETTER A WITH OGONEK 	   */
-  {"Aring",	0x00C5},  /* LATIN CAPITAL LETTER A WITH RING ABOVE	   */
-  {"Atilde",	0x00C3},  /* LATIN CAPITAL LETTER A WITH TILDE		   */
-  {"Auml",	0x00C4},  /* LATIN CAPITAL LETTER A WITH DIAERESIS	   */
-  {"Barwed",	0x2306},  /* PERSPECTIVE				   */
-  {"Bcy",	0x0411},  /* CYRILLIC CAPITAL LETTER BE 		   */
-  {"Beta",	0x0392},  /* GREEK CAPITAL LETTER BETA			   */
-  {"Bgr",	0x0392},  /* GREEK CAPITAL LETTER BETA			   */
-  {"CHcy",	0x0427},  /* CYRILLIC CAPITAL LETTER CHE		   */
-  {"Cacute",	0x0106},  /* LATIN CAPITAL LETTER C WITH ACUTE		   */
-  {"Cap",	0x22D2},  /* DOUBLE INTERSECTION			   */
-  {"Ccaron",	0x010C},  /* LATIN CAPITAL LETTER C WITH CARON		   */
-  {"Ccedil",	0x00C7},  /* LATIN CAPITAL LETTER C WITH CEDILLA	   */
-  {"Ccirc",	0x0108},  /* LATIN CAPITAL LETTER C WITH CIRCUMFLEX	   */
-  {"Cdot",	0x010A},  /* LATIN CAPITAL LETTER C WITH DOT ABOVE	   */
-  {"Chi",	0x03A7},  /* GREEK CAPITAL LETTER CHI			   */
-  {"Cup",	0x22D3},  /* DOUBLE UNION				   */
-  {"DJcy",	0x0402},  /* CYRILLIC CAPITAL LETTER DJE		   */
-  {"DScy",	0x0405},  /* CYRILLIC CAPITAL LETTER DZE		   */
-  {"DZcy",	0x040F},  /* CYRILLIC CAPITAL LETTER DZHE		   */
-  {"Dagger",	0x2021},  /* DOUBLE DAGGER				   */
-  {"Dcaron",	0x010E},  /* LATIN CAPITAL LETTER D WITH CARON		   */
-  {"Dcy",	0x0414},  /* CYRILLIC CAPITAL LETTER DE 		   */
-  {"Delta",	0x0394},  /* GREEK CAPITAL LETTER DELTA 		   */
-  {"Dgr",	0x0394},  /* GREEK CAPITAL LETTER DELTA 		   */
-  {"Dot",	0x00A8},  /* DIAERESIS					   */
-  {"DotDot",	0x20DC},  /* COMBINING FOUR DOTS ABOVE			   */
-  {"Dstrok",	0x0110},  /* LATIN CAPITAL LETTER D WITH STROKE 	   */
-  {"EEacgr",	0x0389},  /* GREEK CAPITAL LETTER ETA WITH TONOS	   */
-  {"EEgr",	0x0397},  /* GREEK CAPITAL LETTER ETA			   */
-  {"ENG",	0x014A},  /* LATIN CAPITAL LETTER ENG			   */
-  {"ETH",	0x00D0},  /* LATIN CAPITAL LETTER ETH			   */
-  {"Eacgr",	0x0388},  /* GREEK CAPITAL LETTER EPSILON WITH TONOS	   */
-  {"Eacute",	0x00C9},  /* LATIN CAPITAL LETTER E WITH ACUTE		   */
-  {"Ecaron",	0x011A},  /* LATIN CAPITAL LETTER E WITH CARON		   */
-  {"Ecirc",	0x00CA},  /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX	   */
-  {"Ecy",	0x042D},  /* CYRILLIC CAPITAL LETTER E			   */
-  {"Edot",	0x0116},  /* LATIN CAPITAL LETTER E WITH DOT ABOVE	   */
-  {"Egr",	0x0395},  /* GREEK CAPITAL LETTER EPSILON		   */
-  {"Egrave",	0x00C8},  /* LATIN CAPITAL LETTER E WITH GRAVE		   */
-  {"Emacr",	0x0112},  /* LATIN CAPITAL LETTER E WITH MACRON 	   */
-  {"Eogon",	0x0118},  /* LATIN CAPITAL LETTER E WITH OGONEK 	   */
-  {"Epsilon",	0x0395},  /* GREEK CAPITAL LETTER EPSILON		   */
-  {"Eta",	0x0397},  /* GREEK CAPITAL LETTER ETA			   */
-  {"Euml",	0x00CB},  /* LATIN CAPITAL LETTER E WITH DIAERESIS	   */
-  {"Fcy",	0x0424},  /* CYRILLIC CAPITAL LETTER EF 		   */
-  {"GJcy",	0x0403},  /* CYRILLIC CAPITAL LETTER GJE		   */
-  {"Gamma",	0x0393},  /* GREEK CAPITAL LETTER GAMMA 		   */
-  {"Gbreve",	0x011E},  /* LATIN CAPITAL LETTER G WITH BREVE		   */
-  {"Gcedil",	0x0122},  /* LATIN CAPITAL LETTER G WITH CEDILLA	   */
-  {"Gcirc",	0x011C},  /* LATIN CAPITAL LETTER G WITH CIRCUMFLEX	   */
-  {"Gcy",	0x0413},  /* CYRILLIC CAPITAL LETTER GHE		   */
-  {"Gdot",	0x0120},  /* LATIN CAPITAL LETTER G WITH DOT ABOVE	   */
-  {"Gg",	0x22D9},  /* VERY MUCH GREATER-THAN			   */
-  {"Ggr",	0x0393},  /* GREEK CAPITAL LETTER GAMMA 		   */
-  {"Gt",	0x226B},  /* MUCH GREATER-THAN				   */
-  {"HARDcy",	0x042A},  /* CYRILLIC CAPITAL LETTER HARD SIGN		   */
-  {"Hcirc",	0x0124},  /* LATIN CAPITAL LETTER H WITH CIRCUMFLEX	   */
-  {"Hstrok",	0x0126},  /* LATIN CAPITAL LETTER H WITH STROKE 	   */
-  {"IEcy",	0x0415},  /* CYRILLIC CAPITAL LETTER IE 		   */
-  {"IJlig",	0x0132},  /* LATIN CAPITAL LIGATURE IJ			   */
-  {"IOcy",	0x0401},  /* CYRILLIC CAPITAL LETTER IO 		   */
-  {"Iacgr",	0x038A},  /* GREEK CAPITAL LETTER IOTA WITH TONOS	   */
-  {"Iacute",	0x00CD},  /* LATIN CAPITAL LETTER I WITH ACUTE		   */
-  {"Icirc",	0x00CE},  /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX	   */
-  {"Icy",	0x0418},  /* CYRILLIC CAPITAL LETTER I			   */
-  {"Idigr",	0x03AA},  /* GREEK CAPITAL LETTER IOTA WITH DIALYTIKA	   */
-  {"Idot",	0x0130},  /* LATIN CAPITAL LETTER I WITH DOT ABOVE	   */
-  {"Igr",	0x0399},  /* GREEK CAPITAL LETTER IOTA			   */
-  {"Igrave",	0x00CC},  /* LATIN CAPITAL LETTER I WITH GRAVE		   */
-  {"Imacr",	0x012A},  /* LATIN CAPITAL LETTER I WITH MACRON 	   */
-  {"Iogon",	0x012E},  /* LATIN CAPITAL LETTER I WITH OGONEK 	   */
-  {"Iota",	0x0399},  /* GREEK CAPITAL LETTER IOTA			   */
-  {"Itilde",	0x0128},  /* LATIN CAPITAL LETTER I WITH TILDE		   */
-  {"Iukcy",	0x0406},  /* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN*/
-  {"Iuml",	0x00CF},  /* LATIN CAPITAL LETTER I WITH DIAERESIS	   */
-  {"Jcirc",	0x0134},  /* LATIN CAPITAL LETTER J WITH CIRCUMFLEX	   */
-  {"Jcy",	0x0419},  /* CYRILLIC CAPITAL LETTER SHORT I		   */
-  {"Jsercy",	0x0408},  /* CYRILLIC CAPITAL LETTER JE 		   */
-  {"Jukcy",	0x0404},  /* CYRILLIC CAPITAL LETTER UKRAINIAN IE	   */
-  {"KHcy",	0x0425},  /* CYRILLIC CAPITAL LETTER HA 		   */
-  {"KHgr",	0x03A7},  /* GREEK CAPITAL LETTER CHI			   */
-  {"KJcy",	0x040C},  /* CYRILLIC CAPITAL LETTER KJE		   */
-  {"Kappa",	0x039A},  /* GREEK CAPITAL LETTER KAPPA 		   */
-  {"Kcedil",	0x0136},  /* LATIN CAPITAL LETTER K WITH CEDILLA	   */
-  {"Kcy",	0x041A},  /* CYRILLIC CAPITAL LETTER KA 		   */
-  {"Kgr",	0x039A},  /* GREEK CAPITAL LETTER KAPPA 		   */
-  {"LJcy",	0x0409},  /* CYRILLIC CAPITAL LETTER LJE		   */
-  {"Lacute",	0x0139},  /* LATIN CAPITAL LETTER L WITH ACUTE		   */
-  {"Lambda",	0x039B},  /* GREEK CAPITAL LETTER LAMDA 		   */
-  {"Larr",	0x219E},  /* LEFTWARDS TWO HEADED ARROW 		   */
-  {"Lcaron",	0x013D},  /* LATIN CAPITAL LETTER L WITH CARON		   */
-  {"Lcedil",	0x013B},  /* LATIN CAPITAL LETTER L WITH CEDILLA	   */
-  {"Lcy",	0x041B},  /* CYRILLIC CAPITAL LETTER EL 		   */
-  {"Lgr",	0x039B},  /* GREEK CAPITAL LETTER LAMDA 		   */
-  {"Ll",	0x22D8},  /* VERY MUCH LESS-THAN			   */
-  {"Lmidot",	0x013F},  /* LATIN CAPITAL LETTER L WITH MIDDLE DOT	   */
-  {"Lstrok",	0x0141},  /* LATIN CAPITAL LETTER L WITH STROKE 	   */
-  {"Lt",	0x226A},  /* MUCH LESS-THAN				   */
-  {"Mcy",	0x041C},  /* CYRILLIC CAPITAL LETTER EM 		   */
-  {"Mgr",	0x039C},  /* GREEK CAPITAL LETTER MU			   */
-  {"Mu",	0x039C},  /* GREEK CAPITAL LETTER MU			   */
-  {"NJcy",	0x040A},  /* CYRILLIC CAPITAL LETTER NJE		   */
-  {"Nacute",	0x0143},  /* LATIN CAPITAL LETTER N WITH ACUTE		   */
-  {"Ncaron",	0x0147},  /* LATIN CAPITAL LETTER N WITH CARON		   */
-  {"Ncedil",	0x0145},  /* LATIN CAPITAL LETTER N WITH CEDILLA	   */
-  {"Ncy",	0x041D},  /* CYRILLIC CAPITAL LETTER EN 		   */
-  {"Ngr",	0x039D},  /* GREEK CAPITAL LETTER NU			   */
-  {"Ntilde",	0x00D1},  /* LATIN CAPITAL LETTER N WITH TILDE		   */
-  {"Nu",	0x039D},  /* GREEK CAPITAL LETTER NU			   */
-  {"OElig",	0x0152},  /* LATIN CAPITAL LIGATURE OE			   */
-  {"OHacgr",	0x038F},  /* GREEK CAPITAL LETTER OMEGA WITH TONOS	   */
-  {"OHgr",	0x03A9},  /* GREEK CAPITAL LETTER OMEGA 		   */
-  {"Oacgr",	0x038C},  /* GREEK CAPITAL LETTER OMICRON WITH TONOS	   */
-  {"Oacute",	0x00D3},  /* LATIN CAPITAL LETTER O WITH ACUTE		   */
-  {"Ocirc",	0x00D4},  /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX	   */
-  {"Ocy",	0x041E},  /* CYRILLIC CAPITAL LETTER O			   */
-  {"Odblac",	0x0150},  /* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE	   */
-  {"Ogr",	0x039F},  /* GREEK CAPITAL LETTER OMICRON		   */
-  {"Ograve",	0x00D2},  /* LATIN CAPITAL LETTER O WITH GRAVE		   */
-  {"Omacr",	0x014C},  /* LATIN CAPITAL LETTER O WITH MACRON 	   */
-  {"Omega",	0x03A9},  /* GREEK CAPITAL LETTER OMEGA 		   */
-  {"Omicron",	0x039F},  /* GREEK CAPITAL LETTER OMICRON		   */
-  {"Oslash",	0x00D8},  /* LATIN CAPITAL LETTER O WITH STROKE 	   */
-  {"Otilde",	0x00D5},  /* LATIN CAPITAL LETTER O WITH TILDE		   */
-  {"Ouml",	0x00D6},  /* LATIN CAPITAL LETTER O WITH DIAERESIS	   */
-  {"PHgr",	0x03A6},  /* GREEK CAPITAL LETTER PHI			   */
-  {"PSgr",	0x03A8},  /* GREEK CAPITAL LETTER PSI			   */
-  {"Pcy",	0x041F},  /* CYRILLIC CAPITAL LETTER PE 		   */
-  {"Pgr",	0x03A0},  /* GREEK CAPITAL LETTER PI			   */
-  {"Phi",	0x03A6},  /* GREEK CAPITAL LETTER PHI			   */
-  {"Pi",	0x03A0},  /* GREEK CAPITAL LETTER PI			   */
-  {"Prime",	0x2033},  /* DOUBLE PRIME				   */
-  {"Psi",	0x03A8},  /* GREEK CAPITAL LETTER PSI			   */
-  {"Racute",	0x0154},  /* LATIN CAPITAL LETTER R WITH ACUTE		   */
-  {"Rarr",	0x21A0},  /* RIGHTWARDS TWO HEADED ARROW		   */
-  {"Rcaron",	0x0158},  /* LATIN CAPITAL LETTER R WITH CARON		   */
-  {"Rcedil",	0x0156},  /* LATIN CAPITAL LETTER R WITH CEDILLA	   */
-  {"Rcy",	0x0420},  /* CYRILLIC CAPITAL LETTER ER 		   */
-  {"Rgr",	0x03A1},  /* GREEK CAPITAL LETTER RHO			   */
-  {"Rho",	0x03A1},  /* GREEK CAPITAL LETTER RHO			   */
-  {"SHCHcy",	0x0429},  /* CYRILLIC CAPITAL LETTER SHCHA		   */
-  {"SHcy",	0x0428},  /* CYRILLIC CAPITAL LETTER SHA		   */
-  {"SOFTcy",	0x042C},  /* CYRILLIC CAPITAL LETTER SOFT SIGN		   */
-  {"Sacute",	0x015A},  /* LATIN CAPITAL LETTER S WITH ACUTE		   */
-  {"Scaron",	0x0160},  /* LATIN CAPITAL LETTER S WITH CARON		   */
-  {"Scedil",	0x015E},  /* LATIN CAPITAL LETTER S WITH CEDILLA	   */
-  {"Scirc",	0x015C},  /* LATIN CAPITAL LETTER S WITH CIRCUMFLEX	   */
-  {"Scy",	0x0421},  /* CYRILLIC CAPITAL LETTER ES 		   */
-  {"Sgr",	0x03A3},  /* GREEK CAPITAL LETTER SIGMA 		   */
-  {"Sigma",	0x03A3},  /* GREEK CAPITAL LETTER SIGMA 		   */
-  {"Sub",	0x22D0},  /* DOUBLE SUBSET				   */
-  {"Sup",	0x22D1},  /* DOUBLE SUPERSET				   */
-  {"THORN",	0x00DE},  /* LATIN CAPITAL LETTER THORN 		   */
-  {"THgr",	0x0398},  /* GREEK CAPITAL LETTER THETA 		   */
-  {"TSHcy",	0x040B},  /* CYRILLIC CAPITAL LETTER TSHE		   */
-  {"TScy",	0x0426},  /* CYRILLIC CAPITAL LETTER TSE		   */
-  {"Tau",	0x03A4},  /* GREEK CAPITAL LETTER TAU			   */
-  {"Tcaron",	0x0164},  /* LATIN CAPITAL LETTER T WITH CARON		   */
-  {"Tcedil",	0x0162},  /* LATIN CAPITAL LETTER T WITH CEDILLA	   */
-  {"Tcy",	0x0422},  /* CYRILLIC CAPITAL LETTER TE 		   */
-  {"Tgr",	0x03A4},  /* GREEK CAPITAL LETTER TAU			   */
-  {"Theta",	0x0398},  /* GREEK CAPITAL LETTER THETA 		   */
-  {"Tstrok",	0x0166},  /* LATIN CAPITAL LETTER T WITH STROKE 	   */
-  {"Uacgr",	0x038E},  /* GREEK CAPITAL LETTER UPSILON WITH TONOS	   */
-  {"Uacute",	0x00DA},  /* LATIN CAPITAL LETTER U WITH ACUTE		   */
-  {"Ubrcy",	0x040E},  /* CYRILLIC CAPITAL LETTER SHORT U		   */
-  {"Ubreve",	0x016C},  /* LATIN CAPITAL LETTER U WITH BREVE		   */
-  {"Ucirc",	0x00DB},  /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX	   */
-  {"Ucy",	0x0423},  /* CYRILLIC CAPITAL LETTER U			   */
-  {"Udblac",	0x0170},  /* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE	   */
-  {"Udigr",	0x03AB},  /* GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA   */
-  {"Ugr",	0x03A5},  /* GREEK CAPITAL LETTER UPSILON		   */
-  {"Ugrave",	0x00D9},  /* LATIN CAPITAL LETTER U WITH GRAVE		   */
-  {"Umacr",	0x016A},  /* LATIN CAPITAL LETTER U WITH MACRON 	   */
-  {"Uogon",	0x0172},  /* LATIN CAPITAL LETTER U WITH OGONEK 	   */
-  {"Upsi",	0x03A5},  /* GREEK CAPITAL LETTER UPSILON		   */
-  {"Upsilon",	0x03A5},  /* GREEK CAPITAL LETTER UPSILON		   */
-  {"Uring",	0x016E},  /* LATIN CAPITAL LETTER U WITH RING ABOVE	   */
-  {"Utilde",	0x0168},  /* LATIN CAPITAL LETTER U WITH TILDE		   */
-  {"Uuml",	0x00DC},  /* LATIN CAPITAL LETTER U WITH DIAERESIS	   */
-  {"Vcy",	0x0412},  /* CYRILLIC CAPITAL LETTER VE 		   */
-  {"Vdash",	0x22A9},  /* FORCES					   */
-  {"Verbar",	0x2016},  /* DOUBLE VERTICAL LINE			   */
-  {"Vvdash",	0x22AA},  /* TRIPLE VERTICAL BAR RIGHT TURNSTILE	   */
-  {"Wcirc",	0x0174},  /* LATIN CAPITAL LETTER W WITH CIRCUMFLEX	   */
-  {"Xgr",	0x039E},  /* GREEK CAPITAL LETTER XI			   */
-  {"Xi",	0x039E},  /* GREEK CAPITAL LETTER XI			   */
-  {"YAcy",	0x042F},  /* CYRILLIC CAPITAL LETTER YA 		   */
-  {"YIcy",	0x0407},  /* CYRILLIC CAPITAL LETTER YI 		   */
-  {"YUcy",	0x042E},  /* CYRILLIC CAPITAL LETTER YU 		   */
-  {"Yacute",	0x00DD},  /* LATIN CAPITAL LETTER Y WITH ACUTE		   */
-  {"Ycirc",	0x0176},  /* LATIN CAPITAL LETTER Y WITH CIRCUMFLEX	   */
-  {"Ycy",	0x042B},  /* CYRILLIC CAPITAL LETTER YERU		   */
-  {"Yuml",	0x0178},  /* LATIN CAPITAL LETTER Y WITH DIAERESIS	   */
-  {"ZHcy",	0x0416},  /* CYRILLIC CAPITAL LETTER ZHE		   */
-  {"Zacute",	0x0179},  /* LATIN CAPITAL LETTER Z WITH ACUTE		   */
-  {"Zcaron",	0x017D},  /* LATIN CAPITAL LETTER Z WITH CARON		   */
-  {"Zcy",	0x0417},  /* CYRILLIC CAPITAL LETTER ZE 		   */
-  {"Zdot",	0x017B},  /* LATIN CAPITAL LETTER Z WITH DOT ABOVE	   */
-  {"Zeta",	0x0396},  /* GREEK CAPITAL LETTER ZETA			   */
-  {"Zgr",	0x0396},  /* GREEK CAPITAL LETTER ZETA			   */
-  {"aacgr",	0x03AC},  /* GREEK SMALL LETTER ALPHA WITH TONOS	   */
-  {"aacute",	0x00E1},  /* LATIN SMALL LETTER A WITH ACUTE		   */
-  {"abreve",	0x0103},  /* LATIN SMALL LETTER A WITH BREVE		   */
-  {"acirc",	0x00E2},  /* LATIN SMALL LETTER A WITH CIRCUMFLEX	   */
-  {"acute",	0x00B4},  /* ACUTE ACCENT				   */
-  {"acy",	0x0430},  /* CYRILLIC SMALL LETTER A			   */
-  {"aelig",	0x00E6},  /* LATIN SMALL LETTER AE			   */
-  {"agr",	0x03B1},  /* GREEK SMALL LETTER ALPHA			   */
-  {"agrave",	0x00E0},  /* LATIN SMALL LETTER A WITH GRAVE		   */
-  {"alefsym",	0x2135},  /* ALEF SYMBOL				   */
-  {"aleph",	0x2135},  /* ALEF SYMBOL				   */
-  {"alpha",	0x03B1},  /* GREEK SMALL LETTER ALPHA			   */
-  {"amacr",	0x0101},  /* LATIN SMALL LETTER A WITH MACRON		   */
-  {"amalg",	0x2210},  /* N-ARY COPRODUCT				   */
-  {"amp",	0x0026},  /* AMPERSAND					   */
-  {"and",	0x2227},  /* LOGICAL AND				   */
-  {"ang",	0x2220},  /* ANGLE					   */
-  {"ang90",	0x221F},  /* RIGHT ANGLE				   */
-  {"angmsd",	0x2221},  /* MEASURED ANGLE				   */
-  {"angsph",	0x2222},  /* SPHERICAL ANGLE				   */
-  {"angst",	0x212B},  /* ANGSTROM SIGN				   */
-  {"aogon",	0x0105},  /* LATIN SMALL LETTER A WITH OGONEK		   */
-  {"ap",	0x2248},  /* ALMOST EQUAL TO				   */
-  {"ape",	0x224A},  /* ALMOST EQUAL OR EQUAL TO			   */
-  {"apos",	0x02BC},  /* MODIFIER LETTER APOSTROPHE 		   */
-  {"aring",	0x00E5},  /* LATIN SMALL LETTER A WITH RING ABOVE	   */
-  {"ast",	0x002A},  /* ASTERISK					   */
-  {"asymp",	0x2248},  /* ALMOST EQUAL TO				   */
-  {"atilde",	0x00E3},  /* LATIN SMALL LETTER A WITH TILDE		   */
-  {"auml",	0x00E4},  /* LATIN SMALL LETTER A WITH DIAERESIS	   */
-  {"b.Delta",	0x0394},  /* GREEK CAPITAL LETTER DELTA 		   */
-  {"b.Gamma",	0x0393},  /* GREEK CAPITAL LETTER GAMMA 		   */
-  {"b.Lambda",	0x039B},  /* GREEK CAPITAL LETTER LAMDA 		   */
-  {"b.Omega",	0x03A9},  /* GREEK CAPITAL LETTER OMEGA 		   */
-  {"b.Phi",	0x03A6},  /* GREEK CAPITAL LETTER PHI			   */
-  {"b.Pi",	0x03A0},  /* GREEK CAPITAL LETTER PI			   */
-  {"b.Psi",	0x03A8},  /* GREEK CAPITAL LETTER PSI			   */
-  {"b.Sigma",	0x03A3},  /* GREEK CAPITAL LETTER SIGMA 		   */
-  {"b.Theta",	0x0398},  /* GREEK CAPITAL LETTER THETA 		   */
-  {"b.Upsi",	0x03A5},  /* GREEK CAPITAL LETTER UPSILON		   */
-  {"b.Xi",	0x039E},  /* GREEK CAPITAL LETTER XI			   */
-  {"b.alpha",	0x03B1},  /* GREEK SMALL LETTER ALPHA			   */
-  {"b.beta",	0x03B2},  /* GREEK SMALL LETTER BETA			   */
-  {"b.chi",	0x03C7},  /* GREEK SMALL LETTER CHI			   */
-  {"b.delta",	0x03B3},  /* GREEK SMALL LETTER GAMMA			   */
-  {"b.epsi",	0x03B5},  /* GREEK SMALL LETTER EPSILON 		   */
-  {"b.epsis",	0x03B5},  /* GREEK SMALL LETTER EPSILON 		   */
-  {"b.epsiv",	0x03B5},  /* GREEK SMALL LETTER EPSILON 		   */
-  {"b.eta",	0x03B7},  /* GREEK SMALL LETTER ETA			   */
-  {"b.gamma",	0x03B3},  /* GREEK SMALL LETTER GAMMA			   */
-  {"b.gammad",	0x03DC},  /* GREEK LETTER DIGAMMA			   */
-  {"b.iota",	0x03B9},  /* GREEK SMALL LETTER IOTA			   */
-  {"b.kappa",	0x03BA},  /* GREEK SMALL LETTER KAPPA			   */
-  {"b.kappav",	0x03F0},  /* GREEK KAPPA SYMBOL 			   */
-  {"b.lambda",	0x03BB},  /* GREEK SMALL LETTER LAMDA			   */
-  {"b.mu",	0x03BC},  /* GREEK SMALL LETTER MU			   */
-  {"b.nu",	0x03BD},  /* GREEK SMALL LETTER NU			   */
-  {"b.omega",	0x03CE},  /* GREEK SMALL LETTER OMEGA WITH TONOS	   */
-  {"b.phis",	0x03C6},  /* GREEK SMALL LETTER PHI			   */
-  {"b.phiv",	0x03D5},  /* GREEK PHI SYMBOL				   */
-  {"b.pi",	0x03C0},  /* GREEK SMALL LETTER PI			   */
-  {"b.piv",	0x03D6},  /* GREEK PI SYMBOL				   */
-  {"b.psi",	0x03C8},  /* GREEK SMALL LETTER PSI			   */
-  {"b.rho",	0x03C1},  /* GREEK SMALL LETTER RHO			   */
-  {"b.rhov",	0x03F1},  /* GREEK RHO SYMBOL				   */
-  {"b.sigma",	0x03C3},  /* GREEK SMALL LETTER SIGMA			   */
-  {"b.sigmav",	0x03C2},  /* GREEK SMALL LETTER FINAL SIGMA		   */
-  {"b.tau",	0x03C4},  /* GREEK SMALL LETTER TAU			   */
-  {"b.thetas",	0x03B8},  /* GREEK SMALL LETTER THETA			   */
-  {"b.thetav",	0x03D1},  /* GREEK THETA SYMBOL 			   */
-  {"b.upsi",	0x03C5},  /* GREEK SMALL LETTER UPSILON 		   */
-  {"b.xi",	0x03BE},  /* GREEK SMALL LETTER XI			   */
-  {"b.zeta",	0x03B6},  /* GREEK SMALL LETTER ZETA			   */
-  {"barwed",	0x22BC},  /* NAND					   */
-  {"bcong",	0x224C},  /* ALL EQUAL TO				   */
-  {"bcy",	0x0431},  /* CYRILLIC SMALL LETTER BE			   */
-  {"bdquo",	0x201E},  /* DOUBLE LOW-9 QUOTATION MARK		   */
-  {"becaus",	0x2235},  /* BECAUSE					   */
-  {"bepsi",	0x220D},  /* SMALL CONTAINS AS MEMBER			   */
-  {"bernou",	0x212C},  /* SCRIPT CAPITAL B				   */
-  {"beta",	0x03B2},  /* GREEK SMALL LETTER BETA			   */
-  {"beth",	0x2136},  /* BET SYMBOL 				   */
-  {"bgr",	0x03B2},  /* GREEK SMALL LETTER BETA			   */
-  {"blank",	0x2423},  /* OPEN BOX					   */
-  {"blk12",	0x2592},  /* MEDIUM SHADE				   */
-  {"blk14",	0x2591},  /* LIGHT SHADE				   */
-  {"blk34",	0x2593},  /* DARK SHADE 				   */
-  {"block",	0x2588},  /* FULL BLOCK 				   */
-  {"bottom",	0x22A5},  /* UP TACK					   */
-  {"bowtie",	0x22C8},  /* BOWTIE					   */
-  {"boxDL",	0x2557},  /* BOX DRAWINGS DOUBLE DOWN AND LEFT		   */
-  {"boxDR",	0x2554},  /* BOX DRAWINGS DOUBLE DOWN AND RIGHT 	   */
-  {"boxDl",	0x2556},  /* BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE	   */
-  {"boxDr",	0x2553},  /* BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE	   */
-  {"boxH",	0x2550},  /* BOX DRAWINGS DOUBLE HORIZONTAL		   */
-  {"boxHD",	0x2566},  /* BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL	   */
-  {"boxHU",	0x2569},  /* BOX DRAWINGS DOUBLE UP AND HORIZONTAL	   */
-  {"boxHd",	0x2564},  /* BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE*/
-  {"boxHu",	0x2567},  /* BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE  */
-  {"boxUL",	0x255D},  /* BOX DRAWINGS DOUBLE UP AND LEFT		   */
-  {"boxUR",	0x255A},  /* BOX DRAWINGS DOUBLE UP AND RIGHT		   */
-  {"boxUl",	0x255C},  /* BOX DRAWINGS UP DOUBLE AND LEFT SINGLE	   */
-  {"boxUr",	0x2559},  /* BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE	   */
-  {"boxV",	0x2551},  /* BOX DRAWINGS DOUBLE VERTICAL		   */
-  {"boxVH",	0x256C},  /* BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL   */
-  {"boxVL",	0x2563},  /* BOX DRAWINGS DOUBLE VERTICAL AND LEFT	   */
-  {"boxVR",	0x2560},  /* BOX DRAWINGS DOUBLE VERTICAL AND RIGHT	   */
-  {"boxVh",	0x256B},  /* BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SI*/
-  {"boxVl",	0x2562},  /* BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE  */
-  {"boxVr",	0x255F},  /* BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE */
-  {"boxdL",	0x2555},  /* BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE	   */
-  {"boxdR",	0x2552},  /* BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE	   */
-  {"boxdl",	0x2510},  /* BOX DRAWINGS LIGHT DOWN AND LEFT		   */
-  {"boxdr",	0x250C},  /* BOX DRAWINGS LIGHT DOWN AND RIGHT		   */
-  {"boxh",	0x2500},  /* BOX DRAWINGS LIGHT HORIZONTAL		   */
-  {"boxhD",	0x2565},  /* BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE*/
-  {"boxhU",	0x2568},  /* BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE  */
-  {"boxhd",	0x252C},  /* BOX DRAWINGS LIGHT DOWN AND HORIZONTAL	   */
-  {"boxhu",	0x2534},  /* BOX DRAWINGS LIGHT UP AND HORIZONTAL	   */
-  {"boxuL",	0x255B},  /* BOX DRAWINGS UP SINGLE AND LEFT DOUBLE	   */
-  {"boxuR",	0x2558},  /* BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE	   */
-  {"boxul",	0x2518},  /* BOX DRAWINGS LIGHT UP AND LEFT		   */
-  {"boxur",	0x2514},  /* BOX DRAWINGS LIGHT UP AND RIGHT		   */
-  {"boxv",	0x2502},  /* BOX DRAWINGS LIGHT VERTICAL		   */
-  {"boxvH",	0x256A},  /* BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DO*/
-  {"boxvL",	0x2561},  /* BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE  */
-  {"boxvR",	0x255E},  /* BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE */
-  {"boxvh",	0x253C},  /* BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL    */
-  {"boxvl",	0x2524},  /* BOX DRAWINGS LIGHT VERTICAL AND LEFT	   */
-  {"boxvr",	0x251C},  /* BOX DRAWINGS LIGHT VERTICAL AND RIGHT	   */
-  {"bprime",	0x2035},  /* REVERSED PRIME				   */
-  {"breve",	0x02D8},  /* BREVE					   */
-  {"brkbar",	0x00A6},  /* obsolete synonym for "brvbar" 0x00A6	   */
-  {"brvbar",	0x00A6},  /* BROKEN BAR 				   */
-  {"bsim",	0x223D},  /* REVERSED TILDE				   */
-  {"bsime",	0x22CD},  /* REVERSED TILDE EQUALS			   */
-  {"bsol",	0x005C},  /* REVERSE SOLIDUS				   */
-  {"bull",	0x2022},  /* BULLET					   */
-  {"bump",	0x224E},  /* GEOMETRICALLY EQUIVALENT TO		   */
-  {"bumpe",	0x224F},  /* DIFFERENCE BETWEEN 			   */
-  {"cacute",	0x0107},  /* LATIN SMALL LETTER C WITH ACUTE		   */
-  {"cap",	0x2229},  /* INTERSECTION				   */
-  {"caret",	0x2041},  /* CARET INSERTION POINT			   */
-  {"caron",	0x02C7},  /* CARON					   */
-  {"ccaron",	0x010D},  /* LATIN SMALL LETTER C WITH CARON		   */
-  {"ccedil",	0x00E7},  /* LATIN SMALL LETTER C WITH CEDILLA		   */
-  {"ccirc",	0x0109},  /* LATIN SMALL LETTER C WITH CIRCUMFLEX	   */
-  {"cdot",	0x010B},  /* LATIN SMALL LETTER C WITH DOT ABOVE	   */
-  {"cedil",	0x00B8},  /* CEDILLA					   */
-  {"cent",	0x00A2},  /* CENT SIGN					   */
-  {"chcy",	0x0447},  /* CYRILLIC SMALL LETTER CHE			   */
-  {"check",	0x2713},  /* CHECK MARK 				   */
-  {"chi",	0x03C7},  /* GREEK SMALL LETTER CHI			   */
-  {"cir",	0x25CB},  /* WHITE CIRCLE				   */
-  {"circ",	0x02C6},  /* MODIFIER LETTER CIRCUMFLEX ACCENT		   */
-  {"cire",	0x2257},  /* RING EQUAL TO				   */
-  {"clubs",	0x2663},  /* BLACK CLUB SUIT				   */
-  {"colon",	0x003A},  /* COLON					   */
-  {"colone",	0x2254},  /* COLON EQUALS				   */
-  {"comma",	0x002C},  /* COMMA					   */
-  {"commat",	0x0040},  /* COMMERCIAL AT				   */
-  {"comp",	0x2201},  /* COMPLEMENT 				   */
-  {"compfn",	0x2218},  /* RING OPERATOR				   */
-  {"cong",	0x2245},  /* APPROXIMATELY EQUAL TO			   */
-  {"conint",	0x222E},  /* CONTOUR INTEGRAL				   */
-  {"coprod",	0x2210},  /* N-ARY COPRODUCT				   */
-  {"copy",	0x00A9},  /* COPYRIGHT SIGN				   */
-  {"copysr",	0x2117},  /* SOUND RECORDING COPYRIGHT			   */
-  {"crarr",	0x21B5},  /* DOWNWARDS ARROW WITH CORNER LEFTWARDS	   */
-  {"cross",	0x2717},  /* BALLOT X					   */
-  {"cuepr",	0x22DE},  /* EQUAL TO OR PRECEDES			   */
-  {"cuesc",	0x22DF},  /* EQUAL TO OR SUCCEEDS			   */
-  {"cularr",	0x21B6},  /* ANTICLOCKWISE TOP SEMICIRCLE ARROW 	   */
-  {"cup",	0x222A},  /* UNION					   */
-  {"cupre",	0x227C},  /* PRECEDES OR EQUAL TO			   */
-  {"curarr",	0x21B7},  /* CLOCKWISE TOP SEMICIRCLE ARROW		   */
-  {"curren",	0x00A4},  /* CURRENCY SIGN				   */
-  {"cuvee",	0x22CE},  /* CURLY LOGICAL OR				   */
-  {"cuwed",	0x22CF},  /* CURLY LOGICAL AND				   */
-  {"dArr",	0x21D3},  /* DOWNWARDS DOUBLE ARROW			   */
-  {"dagger",	0x2020},  /* DAGGER					   */
-  {"daleth",	0x2138},  /* DALET SYMBOL				   */
-  {"darr",	0x2193},  /* DOWNWARDS ARROW				   */
-  {"darr2",	0x21CA},  /* DOWNWARDS PAIRED ARROWS			   */
-  {"dash",	0x2010},  /* HYPHEN					   */
-  {"dashv",	0x22A3},  /* LEFT TACK					   */
-  {"dblac",	0x02DD},  /* DOUBLE ACUTE ACCENT			   */
-  {"dcaron",	0x010F},  /* LATIN SMALL LETTER D WITH CARON		   */
-  {"dcy",	0x0434},  /* CYRILLIC SMALL LETTER DE			   */
-  {"deg",	0x00B0},  /* DEGREE SIGN				   */
-  {"delta",	0x03B4},  /* GREEK SMALL LETTER DELTA			   */
-  {"dgr",	0x03B4},  /* GREEK SMALL LETTER DELTA			   */
-  {"dharl",	0x21C3},  /* DOWNWARDS HARPOON WITH BARB LEFTWARDS	   */
-  {"dharr",	0x21C2},  /* DOWNWARDS HARPOON WITH BARB RIGHTWARDS	   */
-  {"diam",	0x22C4},  /* DIAMOND OPERATOR				   */
-  {"diams",	0x2666},  /* BLACK DIAMOND SUIT 			   */
-  {"die",	0x00A8},  /* DIAERESIS					   */
-  {"divide",	0x00F7},  /* DIVISION SIGN				   */
-  {"divonx",	0x22C7},  /* DIVISION TIMES				   */
-  {"djcy",	0x0452},  /* CYRILLIC SMALL LETTER DJE			   */
-  {"dlarr",	0x2199},  /* SOUTH WEST ARROW				   */
-  {"dlcorn",	0x231E},  /* BOTTOM LEFT CORNER 			   */
-  {"dlcrop",	0x230D},  /* BOTTOM LEFT CROP				   */
-  {"dollar",	0x0024},  /* DOLLAR SIGN				   */
-  {"dot",	0x02D9},  /* DOT ABOVE					   */
-  {"drarr",	0x2198},  /* SOUTH EAST ARROW				   */
-  {"drcorn",	0x231F},  /* BOTTOM RIGHT CORNER			   */
-  {"drcrop",	0x230C},  /* BOTTOM RIGHT CROP				   */
-  {"dscy",	0x0455},  /* CYRILLIC SMALL LETTER DZE			   */
-  {"dstrok",	0x0111},  /* LATIN SMALL LETTER D WITH STROKE		   */
-  {"dtri",	0x25BF},  /* WHITE DOWN-POINTING SMALL TRIANGLE 	   */
-  {"dtrif",	0x25BE},  /* BLACK DOWN-POINTING SMALL TRIANGLE 	   */
-  {"dzcy",	0x045F},  /* CYRILLIC SMALL LETTER DZHE 		   */
-  {"eDot",	0x2251},  /* GEOMETRICALLY EQUAL TO			   */
-  {"eacgr",	0x03AD},  /* GREEK SMALL LETTER EPSILON WITH TONOS	   */
-  {"eacute",	0x00E9},  /* LATIN SMALL LETTER E WITH ACUTE		   */
-  {"ecaron",	0x011B},  /* LATIN SMALL LETTER E WITH CARON		   */
-  {"ecir",	0x2256},  /* RING IN EQUAL TO				   */
-  {"ecirc",	0x00EA},  /* LATIN SMALL LETTER E WITH CIRCUMFLEX	   */
-  {"ecolon",	0x2255},  /* EQUALS COLON				   */
-  {"ecy",	0x044D},  /* CYRILLIC SMALL LETTER E			   */
-  {"edot",	0x0117},  /* LATIN SMALL LETTER E WITH DOT ABOVE	   */
-  {"eeacgr",	0x03AE},  /* GREEK SMALL LETTER ETA WITH TONOS		   */
-  {"eegr",	0x03B7},  /* GREEK SMALL LETTER ETA			   */
-  {"efDot",	0x2252},  /* APPROXIMATELY EQUAL TO OR THE IMAGE OF	   */
-  {"egr",	0x03B5},  /* GREEK SMALL LETTER EPSILON 		   */
-  {"egrave",	0x00E8},  /* LATIN SMALL LETTER E WITH GRAVE		   */
-  {"egs",	0x22DD},  /* EQUAL TO OR GREATER-THAN			   */
-  {"ell",	0x2113},  /* SCRIPT SMALL L				   */
-  {"els",	0x22DC},  /* EQUAL TO OR LESS-THAN			   */
-  {"emacr",	0x0113},  /* LATIN SMALL LETTER E WITH MACRON		   */
-  {"emdash",	0x2014},  /* obsolete synonym for "mdash" 0x2014	   */
-  {"empty",	0x2205},  /* EMPTY SET					   */
-  {"emsp",	0x2003},  /* EM SPACE					   */
-  {"emsp13",	0x2004},  /* THREE-PER-EM SPACE 			   */
-  {"emsp14",	0x2005},  /* FOUR-PER-EM SPACE				   */
-  {"endash",	0x2013},  /* obsolete synonym for "ndash" 0x2013	   */
-  {"eng",	0x014B},  /* LATIN SMALL LETTER ENG			   */
-  {"ensp",	0x2002},  /* EN SPACE					   */
-  {"eogon",	0x0119},  /* LATIN SMALL LETTER E WITH OGONEK		   */
-  {"epsi",	0x03B5},  /* GREEK SMALL LETTER EPSILON 		   */
-  {"epsilon",	0x03B5},  /* GREEK SMALL LETTER EPSILON 		   */
-  {"epsis",	0x220A},  /* SMALL ELEMENT OF				   */
-  {"equals",	0x003D},  /* EQUALS SIGN				   */
-  {"equiv",	0x2261},  /* IDENTICAL TO				   */
-  {"erDot",	0x2253},  /* IMAGE OF OR APPROXIMATELY EQUAL TO 	   */
-  {"esdot",	0x2250},  /* APPROACHES THE LIMIT			   */
-  {"eta",	0x03B7},  /* GREEK SMALL LETTER ETA			   */
-  {"eth",	0x00F0},  /* LATIN SMALL LETTER ETH			   */
-  {"euml",	0x00EB},  /* LATIN SMALL LETTER E WITH DIAERESIS	   */
-  {"excl",	0x0021},  /* EXCLAMATION MARK				   */
-  {"exist",	0x2203},  /* THERE EXISTS				   */
-  {"fcy",	0x0444},  /* CYRILLIC SMALL LETTER EF			   */
-  {"female",	0x2640},  /* FEMALE SIGN				   */
-  {"ffilig",	0xFB03},  /* LATIN SMALL LIGATURE FFI			   */
-  {"fflig",	0xFB00},  /* LATIN SMALL LIGATURE FF			   */
-  {"ffllig",	0xFB04},  /* LATIN SMALL LIGATURE FFL			   */
-  {"filig",	0xFB01},  /* LATIN SMALL LIGATURE FI			   */
-  {"flat",	0x266D},  /* MUSIC FLAT SIGN				   */
-  {"fllig",	0xFB02},  /* LATIN SMALL LIGATURE FL			   */
-  {"fnof",	0x0192},  /* LATIN SMALL LETTER F WITH HOOK		   */
-  {"forall",	0x2200},  /* FOR ALL					   */
-  {"fork",	0x22D4},  /* PITCHFORK					   */
-  {"frac12",	0x00BD},  /* VULGAR FRACTION ONE HALF			   */
-  {"frac13",	0x2153},  /* VULGAR FRACTION ONE THIRD			   */
-  {"frac14",	0x00BC},  /* VULGAR FRACTION ONE QUARTER		   */
-  {"frac15",	0x2155},  /* VULGAR FRACTION ONE FIFTH			   */
-  {"frac16",	0x2159},  /* VULGAR FRACTION ONE SIXTH			   */
-  {"frac18",	0x215B},  /* VULGAR FRACTION ONE EIGHTH 		   */
-  {"frac23",	0x2154},  /* VULGAR FRACTION TWO THIRDS 		   */
-  {"frac25",	0x2156},  /* VULGAR FRACTION TWO FIFTHS 		   */
-  {"frac34",	0x00BE},  /* VULGAR FRACTION THREE QUARTERS		   */
-  {"frac35",	0x2157},  /* VULGAR FRACTION THREE FIFTHS		   */
-  {"frac38",	0x215C},  /* VULGAR FRACTION THREE EIGHTHS		   */
-  {"frac45",	0x2158},  /* VULGAR FRACTION FOUR FIFTHS		   */
-  {"frac56",	0x215A},  /* VULGAR FRACTION FIVE SIXTHS		   */
-  {"frac58",	0x215D},  /* VULGAR FRACTION FIVE EIGHTHS		   */
-  {"frac78",	0x215E},  /* VULGAR FRACTION SEVEN EIGHTHS		   */
-  {"frasl",	0x2044},  /* FRACTION SLASH				   */
-  {"frown",	0x2322},  /* FROWN					   */
-  {"gE",	0x2267},  /* GREATER-THAN OVER EQUAL TO 		   */
-  {"gacute",	0x01F5},  /* LATIN SMALL LETTER G WITH ACUTE		   */
-  {"gamma",	0x03B3},  /* GREEK SMALL LETTER GAMMA			   */
-  {"gammad",	0x03DC},  /* GREEK LETTER DIGAMMA			   */
-  {"gbreve",	0x011F},  /* LATIN SMALL LETTER G WITH BREVE		   */
-  {"gcedil",	0x0123},  /* LATIN SMALL LETTER G WITH CEDILLA		   */
-  {"gcirc",	0x011D},  /* LATIN SMALL LETTER G WITH CIRCUMFLEX	   */
-  {"gcy",	0x0433},  /* CYRILLIC SMALL LETTER GHE			   */
-  {"gdot",	0x0121},  /* LATIN SMALL LETTER G WITH DOT ABOVE	   */
-  {"ge",	0x2265},  /* GREATER-THAN OR EQUAL TO			   */
-  {"gel",	0x22DB},  /* GREATER-THAN EQUAL TO OR LESS-THAN 	   */
-  {"ges",	0x2265},  /* GREATER-THAN OR EQUAL TO			   */
-  {"ggr",	0x03B3},  /* GREEK SMALL LETTER GAMMA			   */
-  {"gimel",	0x2137},  /* GIMEL SYMBOL				   */
-  {"gjcy",	0x0453},  /* CYRILLIC SMALL LETTER GJE			   */
-  {"gl",	0x2277},  /* GREATER-THAN OR LESS-THAN			   */
-  {"gnE",	0x2269},  /* GREATER-THAN BUT NOT EQUAL TO		   */
-  {"gne",	0x2269},  /* GREATER-THAN BUT NOT EQUAL TO		   */
-  {"gnsim",	0x22E7},  /* GREATER-THAN BUT NOT EQUIVALENT TO 	   */
-  {"grave",	0x0060},  /* GRAVE ACCENT				   */
-  {"gsdot",	0x22D7},  /* GREATER-THAN WITH DOT			   */
-  {"gsim",	0x2273},  /* GREATER-THAN OR EQUIVALENT TO		   */
-  {"gt",	0x003E},  /* GREATER-THAN SIGN				   */
-  {"gvnE",	0x2269},  /* GREATER-THAN BUT NOT EQUAL TO		   */
-  {"hArr",	0x21D4},  /* LEFT RIGHT DOUBLE ARROW			   */
-  {"hairsp",	0x200A},  /* HAIR SPACE 				   */
-  {"half",	0x00BD},  /* VULGAR FRACTION ONE HALF			   */
-  {"hamilt",	0x210B},  /* SCRIPT CAPITAL H				   */
-  {"hardcy",	0x044A},  /* CYRILLIC SMALL LETTER HARD SIGN		   */
-  {"harr",	0x2194},  /* LEFT RIGHT ARROW				   */
-  {"harrw",	0x21AD},  /* LEFT RIGHT WAVE ARROW			   */
-  {"hcirc",	0x0125},  /* LATIN SMALL LETTER H WITH CIRCUMFLEX	   */
-  {"hearts",	0x2665},  /* BLACK HEART SUIT				   */
-  {"hellip",	0x2026},  /* HORIZONTAL ELLIPSIS			   */
-  {"hibar",	0x00AF},  /* obsolete synonym for "macr" 0x00AF 	   */
-  {"horbar",	0x2015},  /* HORIZONTAL BAR				   */
-  {"hstrok",	0x0127},  /* LATIN SMALL LETTER H WITH STROKE		   */
-  {"hybull",	0x2043},  /* HYPHEN BULLET				   */
-  {"hyphen",	0x002D},  /* HYPHEN-MINUS				   */
-  {"iacgr",	0x03AF},  /* GREEK SMALL LETTER IOTA WITH TONOS 	   */
-  {"iacute",	0x00ED},  /* LATIN SMALL LETTER I WITH ACUTE		   */
-  {"icirc",	0x00EE},  /* LATIN SMALL LETTER I WITH CIRCUMFLEX	   */
-  {"icy",	0x0438},  /* CYRILLIC SMALL LETTER I			   */
-  {"idiagr",	0x0390},  /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TON*/
-  {"idigr",	0x03CA},  /* GREEK SMALL LETTER IOTA WITH DIALYTIKA	   */
-  {"iecy",	0x0435},  /* CYRILLIC SMALL LETTER IE			   */
-  {"iexcl",	0x00A1},  /* INVERTED EXCLAMATION MARK			   */
-  {"iff",	0x21D4},  /* LEFT RIGHT DOUBLE ARROW			   */
-  {"igr",	0x03B9},  /* GREEK SMALL LETTER IOTA			   */
-  {"igrave",	0x00EC},  /* LATIN SMALL LETTER I WITH GRAVE		   */
-  {"ijlig",	0x0133},  /* LATIN SMALL LIGATURE IJ			   */
-  {"imacr",	0x012B},  /* LATIN SMALL LETTER I WITH MACRON		   */
-  {"image",	0x2111},  /* BLACK-LETTER CAPITAL I			   */
-  {"incare",	0x2105},  /* CARE OF					   */
-  {"infin",	0x221E},  /* INFINITY					   */
-  {"inodot",	0x0131},  /* LATIN SMALL LETTER DOTLESS I		   */
-  {"int",	0x222B},  /* INTEGRAL					   */
-  {"intcal",	0x22BA},  /* INTERCALATE				   */
-  {"iocy",	0x0451},  /* CYRILLIC SMALL LETTER IO			   */
-  {"iogon",	0x012F},  /* LATIN SMALL LETTER I WITH OGONEK		   */
-  {"iota",	0x03B9},  /* GREEK SMALL LETTER IOTA			   */
-  {"iquest",	0x00BF},  /* INVERTED QUESTION MARK			   */
-  {"isin",	0x2208},  /* ELEMENT OF 				   */
-  {"itilde",	0x0129},  /* LATIN SMALL LETTER I WITH TILDE		   */
-  {"iukcy",	0x0456},  /* CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I*/
-  {"iuml",	0x00EF},  /* LATIN SMALL LETTER I WITH DIAERESIS	   */
-  {"jcirc",	0x0135},  /* LATIN SMALL LETTER J WITH CIRCUMFLEX	   */
-  {"jcy",	0x0439},  /* CYRILLIC SMALL LETTER SHORT I		   */
-  {"jsercy",	0x0458},  /* CYRILLIC SMALL LETTER JE			   */
-  {"jukcy",	0x0454},  /* CYRILLIC SMALL LETTER UKRAINIAN IE 	   */
-  {"kappa",	0x03BA},  /* GREEK SMALL LETTER KAPPA			   */
-  {"kappav",	0x03F0},  /* GREEK KAPPA SYMBOL 			   */
-  {"kcedil",	0x0137},  /* LATIN SMALL LETTER K WITH CEDILLA		   */
-  {"kcy",	0x043A},  /* CYRILLIC SMALL LETTER KA			   */
-  {"kgr",	0x03BA},  /* GREEK SMALL LETTER KAPPA			   */
-  {"kgreen",	0x0138},  /* LATIN SMALL LETTER KRA			   */
-  {"khcy",	0x0445},  /* CYRILLIC SMALL LETTER HA			   */
-  {"khgr",	0x03C7},  /* GREEK SMALL LETTER CHI			   */
-  {"kjcy",	0x045C},  /* CYRILLIC SMALL LETTER KJE			   */
-  {"lAarr",	0x21DA},  /* LEFTWARDS TRIPLE ARROW			   */
-  {"lArr",	0x21D0},  /* LEFTWARDS DOUBLE ARROW			   */
-  {"lE",	0x2266},  /* LESS-THAN OVER EQUAL TO			   */
-  {"lacute",	0x013A},  /* LATIN SMALL LETTER L WITH ACUTE		   */
-  {"lagran",	0x2112},  /* SCRIPT CAPITAL L				   */
-  {"lambda",	0x03BB},  /* GREEK SMALL LETTER LAMDA			   */
-  {"lang",	0x2329},  /* LEFT-POINTING ANGLE BRACKET		   */
-  {"laquo",	0x00AB},  /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK	   */
-  {"larr",	0x2190},  /* LEFTWARDS ARROW				   */
-  {"larr2",	0x21C7},  /* LEFTWARDS PAIRED ARROWS			   */
-  {"larrhk",	0x21A9},  /* LEFTWARDS ARROW WITH HOOK			   */
-  {"larrlp",	0x21AB},  /* LEFTWARDS ARROW WITH LOOP			   */
-  {"larrtl",	0x21A2},  /* LEFTWARDS ARROW WITH TAIL			   */
-  {"lcaron",	0x013E},  /* LATIN SMALL LETTER L WITH CARON		   */
-  {"lcedil",	0x013C},  /* LATIN SMALL LETTER L WITH CEDILLA		   */
-  {"lceil",	0x2308},  /* LEFT CEILING				   */
-  {"lcub",	0x007B},  /* LEFT CURLY BRACKET 			   */
-  {"lcy",	0x043B},  /* CYRILLIC SMALL LETTER EL			   */
-  {"ldot",	0x22D6},  /* LESS-THAN WITH DOT 			   */
-  {"ldquo",	0x201C},  /* LEFT DOUBLE QUOTATION MARK 		   */
-  {"ldquor",	0x201E},  /* DOUBLE LOW-9 QUOTATION MARK		   */
-  {"le",	0x2264},  /* LESS-THAN OR EQUAL TO			   */
-  {"leg",	0x22DA},  /* LESS-THAN EQUAL TO OR GREATER-THAN 	   */
-  {"les",	0x2264},  /* LESS-THAN OR EQUAL TO			   */
-  {"lfloor",	0x230A},  /* LEFT FLOOR 				   */
-  {"lg",	0x2276},  /* LESS-THAN OR GREATER-THAN			   */
-  {"lgr",	0x03BB},  /* GREEK SMALL LETTER LAMDA			   */
-  {"lhard",	0x21BD},  /* LEFTWARDS HARPOON WITH BARB DOWNWARDS	   */
-  {"lharu",	0x21BC},  /* LEFTWARDS HARPOON WITH BARB UPWARDS	   */
-  {"lhblk",	0x2584},  /* LOWER HALF BLOCK				   */
-  {"ljcy",	0x0459},  /* CYRILLIC SMALL LETTER LJE			   */
-  {"lmidot",	0x0140},  /* LATIN SMALL LETTER L WITH MIDDLE DOT	   */
-  {"lnE",	0x2268},  /* LESS-THAN BUT NOT EQUAL TO 		   */
-  {"lne",	0x2268},  /* LESS-THAN BUT NOT EQUAL TO 		   */
-  {"lnsim",	0x22E6},  /* LESS-THAN BUT NOT EQUIVALENT TO		   */
-  {"lowast",	0x2217},  /* ASTERISK OPERATOR				   */
-  {"lowbar",	0x005F},  /* LOW LINE					   */
-  {"loz",	0x25CA},  /* LOZENGE					   */
-  {"loz",	0x2727},  /* WHITE FOUR POINTED STAR			   */
-  {"lozf",	0x2726},  /* BLACK FOUR POINTED STAR			   */
-  {"lpar",	0x0028},  /* LEFT PARENTHESIS				   */
-  {"lrarr2",	0x21C6},  /* LEFTWARDS ARROW OVER RIGHTWARDS ARROW	   */
-  {"lrhar2",	0x21CB},  /* LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON	   */
-  {"lrm",	0x200E},  /* LEFT-TO-RIGHT MARK 			   */
-  {"lsaquo",	0x2039},  /* SINGLE LEFT-POINTING ANGLE QUOTATION MARK	   */
-  {"lsh",	0x21B0},  /* UPWARDS ARROW WITH TIP LEFTWARDS		   */
-  {"lsim",	0x2272},  /* LESS-THAN OR EQUIVALENT TO 		   */
-  {"lsqb",	0x005B},  /* LEFT SQUARE BRACKET			   */
-  {"lsquo",	0x2018},  /* LEFT SINGLE QUOTATION MARK 		   */
-  {"lsquor",	0x201A},  /* SINGLE LOW-9 QUOTATION MARK		   */
-  {"lstrok",	0x0142},  /* LATIN SMALL LETTER L WITH STROKE		   */
-  {"lt",	0x003C},  /* LESS-THAN SIGN				   */
-  {"lthree",	0x22CB},  /* LEFT SEMIDIRECT PRODUCT			   */
-  {"ltimes",	0x22C9},  /* LEFT NORMAL FACTOR SEMIDIRECT PRODUCT	   */
-  {"ltri",	0x25C3},  /* WHITE LEFT-POINTING SMALL TRIANGLE 	   */
-  {"ltrie",	0x22B4},  /* NORMAL SUBGROUP OF OR EQUAL TO		   */
-  {"ltrif",	0x25C2},  /* BLACK LEFT-POINTING SMALL TRIANGLE 	   */
-  {"lvnE",	0x2268},  /* LESS-THAN BUT NOT EQUAL TO 		   */
-  {"macr",	0x00AF},  /* MACRON					   */
-  {"male",	0x2642},  /* MALE SIGN					   */
-  {"malt",	0x2720},  /* MALTESE CROSS				   */
-  {"map",	0x21A6},  /* RIGHTWARDS ARROW FROM BAR			   */
-  {"marker",	0x25AE},  /* BLACK VERTICAL RECTANGLE			   */
-  {"mcy",	0x043C},  /* CYRILLIC SMALL LETTER EM			   */
-  {"mdash",	0x2014},  /* EM DASH					   */
-  {"mgr",	0x03BC},  /* GREEK SMALL LETTER MU			   */
-  {"micro",	0x00B5},  /* MICRO SIGN 				   */
-  {"mid",	0x2223},  /* DIVIDES					   */
-  {"middot",	0x00B7},  /* MIDDLE DOT 				   */
-  {"minus",	0x2212},  /* MINUS SIGN 				   */
-  {"minusb",	0x229F},  /* SQUARED MINUS				   */
-  {"mldr",	0x2026},  /* HORIZONTAL ELLIPSIS			   */
-  {"mnplus",	0x2213},  /* MINUS-OR-PLUS SIGN 			   */
-  {"models",	0x22A7},  /* MODELS					   */
-  {"mu",	0x03BC},  /* GREEK SMALL LETTER MU			   */
-  {"mumap",	0x22B8},  /* MULTIMAP					   */
-  {"nVDash",	0x22AF},  /* NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNS*/
-  {"nVdash",	0x22AE},  /* DOES NOT FORCE				   */
-  {"nabla",	0x2207},  /* NABLA					   */
-  {"nacute",	0x0144},  /* LATIN SMALL LETTER N WITH ACUTE		   */
-  {"nap",	0x2249},  /* NOT ALMOST EQUAL TO			   */
-  {"napos",	0x0149},  /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE   */
-  {"natur",	0x266E},  /* MUSIC NATURAL SIGN 			   */
-  {"nbsp",	0x00A0},  /* NO-BREAK SPACE				   */
-  {"ncaron",	0x0148},  /* LATIN SMALL LETTER N WITH CARON		   */
-  {"ncedil",	0x0146},  /* LATIN SMALL LETTER N WITH CEDILLA		   */
-  {"ncong",	0x2247},  /* NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO   */
-  {"ncy",	0x043D},  /* CYRILLIC SMALL LETTER EN			   */
-  {"ndash",	0x2013},  /* EN DASH					   */
-  {"ne",	0x2260},  /* NOT EQUAL TO				   */
-  {"nearr",	0x2197},  /* NORTH EAST ARROW				   */
-  {"nequiv",	0x2262},  /* NOT IDENTICAL TO				   */
-  {"nexist",	0x2204},  /* THERE DOES NOT EXIST			   */
-  {"nge",	0x2271},  /* NEITHER GREATER-THAN NOR EQUAL TO		   */
-  {"nges",	0x2271},  /* NEITHER GREATER-THAN NOR EQUAL TO		   */
-  {"ngr",	0x03BD},  /* GREEK SMALL LETTER NU			   */
-  {"ngt",	0x226F},  /* NOT GREATER-THAN				   */
-  {"nhArr",	0x21CE},  /* LEFT RIGHT DOUBLE ARROW WITH STROKE	   */
-  {"nharr",	0x21AE},  /* LEFT RIGHT ARROW WITH STROKE		   */
-  {"ni",	0x220B},  /* CONTAINS AS MEMBER 			   */
-  {"njcy",	0x045A},  /* CYRILLIC SMALL LETTER NJE			   */
-  {"nlArr",	0x21CD},  /* LEFTWARDS DOUBLE ARROW WITH STROKE 	   */
-  {"nlarr",	0x219A},  /* LEFTWARDS ARROW WITH STROKE		   */
-  {"nldr",	0x2025},  /* TWO DOT LEADER				   */
-  {"nle",	0x2270},  /* NEITHER LESS-THAN NOR EQUAL TO		   */
-  {"nles",	0x2270},  /* NEITHER LESS-THAN NOR EQUAL TO		   */
-  {"nlt",	0x226E},  /* NOT LESS-THAN				   */
-  {"nltri",	0x22EA},  /* NOT NORMAL SUBGROUP OF			   */
-  {"nltrie",	0x22EC},  /* NOT NORMAL SUBGROUP OF OR EQUAL TO 	   */
-  {"nmid",	0x2224},  /* DOES NOT DIVIDE				   */
-  {"not",	0x00AC},  /* NOT SIGN					   */
-  {"notin",	0x2209},  /* NOT AN ELEMENT OF				   */
-  {"npar",	0x2226},  /* NOT PARALLEL TO				   */
-  {"npr",	0x2280},  /* DOES NOT PRECEDE				   */
-  {"npre",	0x22E0},  /* DOES NOT PRECEDE OR EQUAL			   */
-  {"nrArr",	0x21CF},  /* RIGHTWARDS DOUBLE ARROW WITH STROKE	   */
-  {"nrarr",	0x219B},  /* RIGHTWARDS ARROW WITH STROKE		   */
-  {"nrtri",	0x22EB},  /* DOES NOT CONTAIN AS NORMAL SUBGROUP	   */
-  {"nrtrie",	0x22ED},  /* DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL  */
-  {"nsc",	0x2281},  /* DOES NOT SUCCEED				   */
-  {"nsce",	0x22E1},  /* DOES NOT SUCCEED OR EQUAL			   */
-  {"nsim",	0x2241},  /* NOT TILDE					   */
-  {"nsime",	0x2244},  /* NOT ASYMPTOTICALLY EQUAL TO		   */
-  {"nspar",	0x2226},  /* NOT PARALLEL TO				   */
-  {"nsub",	0x2284},  /* NOT A SUBSET OF				   */
-  {"nsubE",	0x2288},  /* NEITHER A SUBSET OF NOR EQUAL TO		   */
-  {"nsube",	0x2288},  /* NEITHER A SUBSET OF NOR EQUAL TO		   */
-  {"nsup",	0x2285},  /* NOT A SUPERSET OF				   */
-  {"nsupE",	0x2289},  /* NEITHER A SUPERSET OF NOR EQUAL TO 	   */
-  {"nsupe",	0x2289},  /* NEITHER A SUPERSET OF NOR EQUAL TO 	   */
-  {"ntilde",	0x00F1},  /* LATIN SMALL LETTER N WITH TILDE		   */
-  {"nu",	0x03BD},  /* GREEK SMALL LETTER NU			   */
-  {"num",	0x0023},  /* NUMBER SIGN				   */
-  {"numero",	0x2116},  /* NUMERO SIGN				   */
-  {"numsp",	0x2007},  /* FIGURE SPACE				   */
-  {"nvDash",	0x22AD},  /* NOT TRUE					   */
-  {"nvdash",	0x22AC},  /* DOES NOT PROVE				   */
-  {"nwarr",	0x2196},  /* NORTH WEST ARROW				   */
-  {"oS",	0x24C8},  /* CIRCLED LATIN CAPITAL LETTER S		   */
-  {"oacgr",	0x03CC},  /* GREEK SMALL LETTER OMICRON WITH TONOS	   */
-  {"oacute",	0x00F3},  /* LATIN SMALL LETTER O WITH ACUTE		   */
-  {"oast",	0x229B},  /* CIRCLED ASTERISK OPERATOR			   */
-  {"ocir",	0x229A},  /* CIRCLED RING OPERATOR			   */
-  {"ocirc",	0x00F4},  /* LATIN SMALL LETTER O WITH CIRCUMFLEX	   */
-  {"ocy",	0x043E},  /* CYRILLIC SMALL LETTER O			   */
-  {"odash",	0x229D},  /* CIRCLED DASH				   */
-  {"odblac",	0x0151},  /* LATIN SMALL LETTER O WITH DOUBLE ACUTE	   */
-  {"odot",	0x2299},  /* CIRCLED DOT OPERATOR			   */
-  {"oelig",	0x0153},  /* LATIN SMALL LIGATURE OE			   */
-  {"ogon",	0x02DB},  /* OGONEK					   */
-  {"ogr",	0x03BF},  /* GREEK SMALL LETTER OMICRON 		   */
-  {"ograve",	0x00F2},  /* LATIN SMALL LETTER O WITH GRAVE		   */
-  {"ohacgr",	0x03CE},  /* GREEK SMALL LETTER OMEGA WITH TONOS	   */
-  {"ohgr",	0x03C9},  /* GREEK SMALL LETTER OMEGA			   */
-  {"ohm",	0x2126},  /* OHM SIGN					   */
-  {"olarr",	0x21BA},  /* ANTICLOCKWISE OPEN CIRCLE ARROW		   */
-  {"oline",	0x203E},  /* OVERLINE					   */
-  {"omacr",	0x014D},  /* LATIN SMALL LETTER O WITH MACRON		   */
-  {"omega",	0x03C9},  /* GREEK SMALL LETTER OMEGA			   */
-  {"omicron",	0x03BF},  /* GREEK SMALL LETTER OMICRON 		   */
-  {"ominus",	0x2296},  /* CIRCLED MINUS				   */
-  {"oplus",	0x2295},  /* CIRCLED PLUS				   */
-  {"or",	0x2228},  /* LOGICAL OR 				   */
-  {"orarr",	0x21BB},  /* CLOCKWISE OPEN CIRCLE ARROW		   */
-  {"order",	0x2134},  /* SCRIPT SMALL O				   */
-  {"ordf",	0x00AA},  /* FEMININE ORDINAL INDICATOR 		   */
-  {"ordm",	0x00BA},  /* MASCULINE ORDINAL INDICATOR		   */
-  {"oslash",	0x00F8},  /* LATIN SMALL LETTER O WITH STROKE		   */
-  {"osol",	0x2298},  /* CIRCLED DIVISION SLASH			   */
-  {"otilde",	0x00F5},  /* LATIN SMALL LETTER O WITH TILDE		   */
-  {"otimes",	0x2297},  /* CIRCLED TIMES				   */
-  {"ouml",	0x00F6},  /* LATIN SMALL LETTER O WITH DIAERESIS	   */
-  {"par",	0x2225},  /* PARALLEL TO				   */
-  {"para",	0x00B6},  /* PILCROW SIGN				   */
-  {"part",	0x2202},  /* PARTIAL DIFFERENTIAL			   */
-  {"pcy",	0x043F},  /* CYRILLIC SMALL LETTER PE			   */
-  {"percnt",	0x0025},  /* PERCENT SIGN				   */
-  {"period",	0x002E},  /* FULL STOP					   */
-  {"permil",	0x2030},  /* PER MILLE SIGN				   */
-  {"perp",	0x22A5},  /* UP TACK					   */
-  {"pgr",	0x03C0},  /* GREEK SMALL LETTER PI			   */
-  {"phgr",	0x03C6},  /* GREEK SMALL LETTER PHI			   */
-  {"phi",	0x03C6},  /* GREEK SMALL LETTER PHI			   */
-  {"phis",	0x03C6},  /* GREEK SMALL LETTER PHI			   */
-  {"phiv",	0x03D5},  /* GREEK PHI SYMBOL				   */
-  {"phmmat",	0x2133},  /* SCRIPT CAPITAL M				   */
-  {"phone",	0x260E},  /* BLACK TELEPHONE				   */
-  {"pi",	0x03C0},  /* GREEK SMALL LETTER PI			   */
-  {"piv",	0x03D6},  /* GREEK PI SYMBOL				   */
-  {"planck",	0x210F},  /* PLANCK CONSTANT OVER TWO PI		   */
-  {"plus",	0x002B},  /* PLUS SIGN					   */
-  {"plusb",	0x229E},  /* SQUARED PLUS				   */
-  {"plusdo",	0x2214},  /* DOT PLUS					   */
-  {"plusmn",	0x00B1},  /* PLUS-MINUS SIGN				   */
-  {"pound",	0x00A3},  /* POUND SIGN 				   */
-  {"pr",	0x227A},  /* PRECEDES					   */
-  {"pre",	0x227C},  /* PRECEDES OR EQUAL TO			   */
-  {"prime",	0x2032},  /* PRIME					   */
-  {"prnsim",	0x22E8},  /* PRECEDES BUT NOT EQUIVALENT TO		   */
-  {"prod",	0x220F},  /* N-ARY PRODUCT				   */
-  {"prop",	0x221D},  /* PROPORTIONAL TO				   */
-  {"prsim",	0x227E},  /* PRECEDES OR EQUIVALENT TO			   */
-  {"psgr",	0x03C8},  /* GREEK SMALL LETTER PSI			   */
-  {"psi",	0x03C8},  /* GREEK SMALL LETTER PSI			   */
-  {"puncsp",	0x2008},  /* PUNCTUATION SPACE				   */
-  {"quest",	0x003F},  /* QUESTION MARK				   */
-  {"quot",	0x0022},  /* QUOTATION MARK				   */
-  {"rAarr",	0x21DB},  /* RIGHTWARDS TRIPLE ARROW			   */
-  {"rArr",	0x21D2},  /* RIGHTWARDS DOUBLE ARROW			   */
-  {"racute",	0x0155},  /* LATIN SMALL LETTER R WITH ACUTE		   */
-  {"radic",	0x221A},  /* SQUARE ROOT				   */
-  {"rang",	0x232A},  /* RIGHT-POINTING ANGLE BRACKET		   */
-  {"raquo",	0x00BB},  /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK    */
-  {"rarr",	0x2192},  /* RIGHTWARDS ARROW				   */
-  {"rarr2",	0x21C9},  /* RIGHTWARDS PAIRED ARROWS			   */
-  {"rarrhk",	0x21AA},  /* RIGHTWARDS ARROW WITH HOOK 		   */
-  {"rarrlp",	0x21AC},  /* RIGHTWARDS ARROW WITH LOOP 		   */
-  {"rarrtl",	0x21A3},  /* RIGHTWARDS ARROW WITH TAIL 		   */
-  {"rarrw",	0x219D},  /* RIGHTWARDS WAVE ARROW			   */
-  {"rcaron",	0x0159},  /* LATIN SMALL LETTER R WITH CARON		   */
-  {"rcedil",	0x0157},  /* LATIN SMALL LETTER R WITH CEDILLA		   */
-  {"rceil",	0x2309},  /* RIGHT CEILING				   */
-  {"rcub",	0x007D},  /* RIGHT CURLY BRACKET			   */
-  {"rcy",	0x0440},  /* CYRILLIC SMALL LETTER ER			   */
-  {"rdquo",	0x201D},  /* RIGHT DOUBLE QUOTATION MARK		   */
-  {"rdquor",	0x201C},  /* LEFT DOUBLE QUOTATION MARK 		   */
-  {"real",	0x211C},  /* BLACK-LETTER CAPITAL R			   */
-  {"rect",	0x25AD},  /* WHITE RECTANGLE				   */
-  {"reg",	0x00AE},  /* REGISTERED SIGN				   */
-  {"rfloor",	0x230B},  /* RIGHT FLOOR				   */
-  {"rgr",	0x03C1},  /* GREEK SMALL LETTER RHO			   */
-  {"rhard",	0x21C1},  /* RIGHTWARDS HARPOON WITH BARB DOWNWARDS	   */
-  {"rharu",	0x21C0},  /* RIGHTWARDS HARPOON WITH BARB UPWARDS	   */
-  {"rho",	0x03C1},  /* GREEK SMALL LETTER RHO			   */
-  {"rhov",	0x03F1},  /* GREEK RHO SYMBOL				   */
-  {"ring",	0x02DA},  /* RING ABOVE 				   */
-  {"rlarr2",	0x21C4},  /* RIGHTWARDS ARROW OVER LEFTWARDS ARROW	   */
-  {"rlhar2",	0x21CC},  /* RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON	   */
-  {"rlm",	0x200F},  /* RIGHT-TO-LEFT MARK 			   */
-  {"rpar",	0x0029},  /* RIGHT PARENTHESIS				   */
-  {"rsaquo",	0x203A},  /* SINGLE RIGHT-POINTING ANGLE QUOTATION MARK    */
-  {"rsh",	0x21B1},  /* UPWARDS ARROW WITH TIP RIGHTWARDS		   */
-  {"rsqb",	0x005D},  /* RIGHT SQUARE BRACKET			   */
-  {"rsquo",	0x2019},  /* RIGHT SINGLE QUOTATION MARK		   */
-  {"rsquor",	0x2018},  /* LEFT SINGLE QUOTATION MARK 		   */
-  {"rthree",	0x22CC},  /* RIGHT SEMIDIRECT PRODUCT			   */
-  {"rtimes",	0x22CA},  /* RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT	   */
-  {"rtri",	0x25B9},  /* WHITE RIGHT-POINTING SMALL TRIANGLE	   */
-  {"rtrie",	0x22B5},  /* CONTAINS AS NORMAL SUBGROUP OR EQUAL TO	   */
-  {"rtrif",	0x25B8},  /* BLACK RIGHT-POINTING SMALL TRIANGLE	   */
-  {"rx",	0x211E},  /* PRESCRIPTION TAKE				   */
-  {"sacute",	0x015B},  /* LATIN SMALL LETTER S WITH ACUTE		   */
-  {"samalg",	0x2210},  /* N-ARY COPRODUCT				   */
-  {"sbquo",	0x201A},  /* SINGLE LOW-9 QUOTATION MARK		   */
-  {"sbsol",	0x005C},  /* REVERSE SOLIDUS				   */
-  {"sc",	0x227B},  /* SUCCEEDS					   */
-  {"scaron",	0x0161},  /* LATIN SMALL LETTER S WITH CARON		   */
-  {"sccue",	0x227D},  /* SUCCEEDS OR EQUAL TO			   */
-  {"sce",	0x227D},  /* SUCCEEDS OR EQUAL TO			   */
-  {"scedil",	0x015F},  /* LATIN SMALL LETTER S WITH CEDILLA		   */
-  {"scirc",	0x015D},  /* LATIN SMALL LETTER S WITH CIRCUMFLEX	   */
-  {"scnsim",	0x22E9},  /* SUCCEEDS BUT NOT EQUIVALENT TO		   */
-  {"scsim",	0x227F},  /* SUCCEEDS OR EQUIVALENT TO			   */
-  {"scy",	0x0441},  /* CYRILLIC SMALL LETTER ES			   */
-  {"sdot",	0x22C5},  /* DOT OPERATOR				   */
-  {"sdotb",	0x22A1},  /* SQUARED DOT OPERATOR			   */
-  {"sect",	0x00A7},  /* SECTION SIGN				   */
-  {"semi",	0x003B},  /* SEMICOLON					   */
-  {"setmn",	0x2216},  /* SET MINUS					   */
-  {"sext",	0x2736},  /* SIX POINTED BLACK STAR			   */
-  {"sfgr",	0x03C2},  /* GREEK SMALL LETTER FINAL SIGMA		   */
-  {"sfrown",	0x2322},  /* FROWN					   */
-  {"sgr",	0x03C3},  /* GREEK SMALL LETTER SIGMA			   */
-  {"sharp",	0x266F},  /* MUSIC SHARP SIGN				   */
-  {"shchcy",	0x0449},  /* CYRILLIC SMALL LETTER SHCHA		   */
-  {"shcy",	0x0448},  /* CYRILLIC SMALL LETTER SHA			   */
-  {"shy",	0x00AD},  /* SOFT HYPHEN				   */
-  {"sigma",	0x03C3},  /* GREEK SMALL LETTER SIGMA			   */
-  {"sigmaf",	0x03C2},  /* GREEK SMALL LETTER FINAL SIGMA		   */
-  {"sigmav",	0x03C2},  /* GREEK SMALL LETTER FINAL SIGMA		   */
-  {"sim",	0x223C},  /* TILDE OPERATOR				   */
-  {"sime",	0x2243},  /* ASYMPTOTICALLY EQUAL TO			   */
-  {"smile",	0x2323},  /* SMILE					   */
-  {"softcy",	0x044C},  /* CYRILLIC SMALL LETTER SOFT SIGN		   */
-  {"sol",	0x002F},  /* SOLIDUS					   */
-  {"spades",	0x2660},  /* BLACK SPADE SUIT				   */
-  {"spar",	0x2225},  /* PARALLEL TO				   */
-  {"sqcap",	0x2293},  /* SQUARE CAP 				   */
-  {"sqcup",	0x2294},  /* SQUARE CUP 				   */
-  {"sqsub",	0x228F},  /* SQUARE IMAGE OF				   */
-  {"sqsube",	0x2291},  /* SQUARE IMAGE OF OR EQUAL TO		   */
-  {"sqsup",	0x2290},  /* SQUARE ORIGINAL OF 			   */
-  {"sqsupe",	0x2292},  /* SQUARE ORIGINAL OF OR EQUAL TO		   */
-  {"squ",	0x25A1},  /* WHITE SQUARE				   */
-  {"square",	0x25A1},  /* WHITE SQUARE				   */
-  {"squf",	0x25AA},  /* BLACK SMALL SQUARE 			   */
-  {"ssetmn",	0x2216},  /* SET MINUS					   */
-  {"ssmile",	0x2323},  /* SMILE					   */
-  {"sstarf",	0x22C6},  /* STAR OPERATOR				   */
-  {"star",	0x2606},  /* WHITE STAR 				   */
-  {"starf",	0x2605},  /* BLACK STAR 				   */
-  {"sub",	0x2282},  /* SUBSET OF					   */
-  {"subE",	0x2286},  /* SUBSET OF OR EQUAL TO			   */
-  {"sube",	0x2286},  /* SUBSET OF OR EQUAL TO			   */
-  {"subnE",	0x228A},  /* SUBSET OF WITH NOT EQUAL TO		   */
-  {"subne",	0x228A},  /* SUBSET OF WITH NOT EQUAL TO		   */
-  {"sum",	0x2211},  /* N-ARY SUMMATION				   */
-  {"sung",	0x266A},  /* EIGHTH NOTE				   */
-  {"sup",	0x2283},  /* SUPERSET OF				   */
-  {"sup1",	0x00B9},  /* SUPERSCRIPT ONE				   */
-  {"sup2",	0x00B2},  /* SUPERSCRIPT TWO				   */
-  {"sup3",	0x00B3},  /* SUPERSCRIPT THREE				   */
-  {"supE",	0x2287},  /* SUPERSET OF OR EQUAL TO			   */
-  {"supe",	0x2287},  /* SUPERSET OF OR EQUAL TO			   */
-  {"supnE",	0x228B},  /* SUPERSET OF WITH NOT EQUAL TO		   */
-  {"supne",	0x228B},  /* SUPERSET OF WITH NOT EQUAL TO		   */
-  {"szlig",	0x00DF},  /* LATIN SMALL LETTER SHARP S 		   */
-  {"target",	0x2316},  /* POSITION INDICATOR 			   */
-  {"tau",	0x03C4},  /* GREEK SMALL LETTER TAU			   */
-  {"tcaron",	0x0165},  /* LATIN SMALL LETTER T WITH CARON		   */
-  {"tcedil",	0x0163},  /* LATIN SMALL LETTER T WITH CEDILLA		   */
-  {"tcy",	0x0442},  /* CYRILLIC SMALL LETTER TE			   */
-  {"tdot",	0x20DB},  /* COMBINING THREE DOTS ABOVE 		   */
-  {"telrec",	0x2315},  /* TELEPHONE RECORDER 			   */
-  {"tgr",	0x03C4},  /* GREEK SMALL LETTER TAU			   */
-  {"there4",	0x2234},  /* THEREFORE					   */
-  {"theta",	0x03B8},  /* GREEK SMALL LETTER THETA			   */
-  {"thetas",	0x03B8},  /* GREEK SMALL LETTER THETA			   */
-  {"thetasym",	0x03D1},  /* GREEK THETA SYMBOL 			   */
-  {"thetav",	0x03D1},  /* GREEK THETA SYMBOL 			   */
-  {"thgr",	0x03B8},  /* GREEK SMALL LETTER THETA			   */
-  {"thinsp",	0x2009},  /* THIN SPACE 				   */
-  {"thkap",	0x2248},  /* ALMOST EQUAL TO				   */
-  {"thksim",	0x223C},  /* TILDE OPERATOR				   */
-  {"thorn",	0x00FE},  /* LATIN SMALL LETTER THORN			   */
-  {"tilde",	0x02DC},  /* SMALL TILDE				   */
-  {"times",	0x00D7},  /* MULTIPLICATION SIGN			   */
-  {"timesb",	0x22A0},  /* SQUARED TIMES				   */
-  {"top",	0x22A4},  /* DOWN TACK					   */
-  {"tprime",	0x2034},  /* TRIPLE PRIME				   */
-  {"trade",	0x2122},  /* TRADE MARK SIGN				   */
-  {"trie",	0x225C},  /* DELTA EQUAL TO				   */
-  {"tscy",	0x0446},  /* CYRILLIC SMALL LETTER TSE			   */
-  {"tshcy",	0x045B},  /* CYRILLIC SMALL LETTER TSHE 		   */
-  {"tstrok",	0x0167},  /* LATIN SMALL LETTER T WITH STROKE		   */
-  {"twixt",	0x226C},  /* BETWEEN					   */
-  {"uArr",	0x21D1},  /* UPWARDS DOUBLE ARROW			   */
-  {"uacgr",	0x03CD},  /* GREEK SMALL LETTER UPSILON WITH TONOS	   */
-  {"uacute",	0x00FA},  /* LATIN SMALL LETTER U WITH ACUTE		   */
-  {"uarr",	0x2191},  /* UPWARDS ARROW				   */
-  {"uarr2",	0x21C8},  /* UPWARDS PAIRED ARROWS			   */
-  {"ubrcy",	0x045E},  /* CYRILLIC SMALL LETTER SHORT U		   */
-  {"ubreve",	0x016D},  /* LATIN SMALL LETTER U WITH BREVE		   */
-  {"ucirc",	0x00FB},  /* LATIN SMALL LETTER U WITH CIRCUMFLEX	   */
-  {"ucy",	0x0443},  /* CYRILLIC SMALL LETTER U			   */
-  {"udblac",	0x0171},  /* LATIN SMALL LETTER U WITH DOUBLE ACUTE	   */
-  {"udiagr",	0x03B0},  /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND */
-  {"udigr",	0x03CB},  /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA	   */
-  {"ugr",	0x03C5},  /* GREEK SMALL LETTER UPSILON 		   */
-  {"ugrave",	0x00F9},  /* LATIN SMALL LETTER U WITH GRAVE		   */
-  {"uharl",	0x21BF},  /* UPWARDS HARPOON WITH BARB LEFTWARDS	   */
-  {"uharr",	0x21BE},  /* UPWARDS HARPOON WITH BARB RIGHTWARDS	   */
-  {"uhblk",	0x2580},  /* UPPER HALF BLOCK				   */
-  {"ulcorn",	0x231C},  /* TOP LEFT CORNER				   */
-  {"ulcrop",	0x230F},  /* TOP LEFT CROP				   */
-  {"umacr",	0x016B},  /* LATIN SMALL LETTER U WITH MACRON		   */
-  {"uml",	0x00A8},  /* DIAERESIS					   */
-  {"uogon",	0x0173},  /* LATIN SMALL LETTER U WITH OGONEK		   */
-  {"uplus",	0x228E},  /* MULTISET UNION				   */
-  {"upsi",	0x03C5},  /* GREEK SMALL LETTER UPSILON 		   */
-  {"upsih",	0x03D2},  /* GREEK UPSILON WITH HOOK SYMBOL		   */
-  {"upsilon",	0x03C5},  /* GREEK SMALL LETTER UPSILON 		   */
-  {"urcorn",	0x231D},  /* TOP RIGHT CORNER				   */
-  {"urcrop",	0x230E},  /* TOP RIGHT CROP				   */
-  {"uring",	0x016F},  /* LATIN SMALL LETTER U WITH RING ABOVE	   */
-  {"utilde",	0x0169},  /* LATIN SMALL LETTER U WITH TILDE		   */
-  {"utri",	0x25B5},  /* WHITE UP-POINTING SMALL TRIANGLE		   */
-  {"utrif",	0x25B4},  /* BLACK UP-POINTING SMALL TRIANGLE		   */
-  {"uuml",	0x00FC},  /* LATIN SMALL LETTER U WITH DIAERESIS	   */
-  {"vArr",	0x21D5},  /* UP DOWN DOUBLE ARROW			   */
-  {"vDash",	0x22A8},  /* TRUE					   */
-  {"varr",	0x2195},  /* UP DOWN ARROW				   */
-  {"vcy",	0x0432},  /* CYRILLIC SMALL LETTER VE			   */
-  {"vdash",	0x22A2},  /* RIGHT TACK 				   */
-  {"veebar",	0x22BB},  /* XOR					   */
-  {"vellip",	0x22EE},  /* VERTICAL ELLIPSIS				   */
-  {"verbar",	0x007C},  /* VERTICAL LINE				   */
-  {"vltri",	0x22B2},  /* NORMAL SUBGROUP OF 			   */
-  {"vprime",	0x2032},  /* PRIME					   */
-  {"vprop",	0x221D},  /* PROPORTIONAL TO				   */
-  {"vrtri",	0x22B3},  /* CONTAINS AS NORMAL SUBGROUP		   */
-  {"vsubnE",	0x228A},  /* SUBSET OF WITH NOT EQUAL TO		   */
-  {"vsubne",	0x228A},  /* SUBSET OF WITH NOT EQUAL TO		   */
-  {"vsupnE",	0x228B},  /* SUPERSET OF WITH NOT EQUAL TO		   */
-  {"vsupne",	0x228B},  /* SUPERSET OF WITH NOT EQUAL TO		   */
-  {"wcirc",	0x0175},  /* LATIN SMALL LETTER W WITH CIRCUMFLEX	   */
-  {"wedgeq",	0x2259},  /* ESTIMATES					   */
-  {"weierp",	0x2118},  /* SCRIPT CAPITAL P				   */
-  {"wreath",	0x2240},  /* WREATH PRODUCT				   */
-  {"xcirc",	0x25CB},  /* WHITE CIRCLE				   */
-  {"xdtri",	0x25BD},  /* WHITE DOWN-POINTING TRIANGLE		   */
-  {"xgr",	0x03BE},  /* GREEK SMALL LETTER XI			   */
-  {"xhArr",	0x2194},  /* LEFT RIGHT ARROW				   */
-  {"xharr",	0x2194},  /* LEFT RIGHT ARROW				   */
-  {"xi",	0x03BE},  /* GREEK SMALL LETTER XI			   */
-  {"xlArr",	0x21D0},  /* LEFTWARDS DOUBLE ARROW			   */
-  {"xrArr",	0x21D2},  /* RIGHTWARDS DOUBLE ARROW			   */
-  {"xutri",	0x25B3},  /* WHITE UP-POINTING TRIANGLE 		   */
-  {"yacute",	0x00FD},  /* LATIN SMALL LETTER Y WITH ACUTE		   */
-  {"yacy",	0x044F},  /* CYRILLIC SMALL LETTER YA			   */
-  {"ycirc",	0x0177},  /* LATIN SMALL LETTER Y WITH CIRCUMFLEX	   */
-  {"ycy",	0x044B},  /* CYRILLIC SMALL LETTER YERU 		   */
-  {"yen",	0x00A5},  /* YEN SIGN					   */
-  {"yicy",	0x0457},  /* CYRILLIC SMALL LETTER YI			   */
-  {"yucy",	0x044E},  /* CYRILLIC SMALL LETTER YU			   */
-  {"yuml",	0x00FF},  /* LATIN SMALL LETTER Y WITH DIAERESIS	   */
-  {"zacute",	0x017A},  /* LATIN SMALL LETTER Z WITH ACUTE		   */
-  {"zcaron",	0x017E},  /* LATIN SMALL LETTER Z WITH CARON		   */
-  {"zcy",	0x0437},  /* CYRILLIC SMALL LETTER ZE			   */
-  {"zdot",	0x017C},  /* LATIN SMALL LETTER Z WITH DOT ABOVE	   */
-  {"zeta",	0x03B6},  /* GREEK SMALL LETTER ZETA			   */
-  {"zgr",	0x03B6},  /* GREEK SMALL LETTER ZETA			   */
-  {"zhcy",	0x0436},  /* CYRILLIC SMALL LETTER ZHE			   */
-  {"zwj",	0x200D},  /* ZERO WIDTH JOINER				   */
-  {"zwnj",	0x200C},  /* ZERO WIDTH NON-JOINER			   */
-/* {"epsiv",	0x????},  variant epsilon			 # ISOgrk3 */
-/* {"fjlig",	0x????},  fj ligature				 # ISOpub  */
-/* {"gEl",	0x????},  greater-than, double equals, less-than # ISOamsr */
-/* {"gap",	0x????},  greater-than, approximately equal to	 # ISOamsr */
-/* {"gnap",	0x????},  greater-than, not approximately equal t# ISOamsn */
-/* {"jnodot",	0x????},  latin small letter dotless j		 # ISOamso */
-/* {"lEg",	0x????},  less-than, double equals, greater-than # ISOamsr */
-/* {"lap",	0x????},  less-than, approximately equal to	 # ISOamsr */
-/* {"lnap",	0x????},  less-than, not approximately equal to  # ISOamsn */
-/* {"lpargt",	0x????},  left parenthesis, greater-than	 # ISOamsc */
-/* {"ngE",	0x????},  not greater-than, double equals	 # ISOamsn */
-/* {"nlE",	0x????},  not less-than, double equals		 # ISOamsn */
-/* {"nsmid",	0x????},  nshortmid				 # ISOamsn */
-/* {"prap",	0x????},  precedes, approximately equal to	 # ISOamsr */
-/* {"prnE",	0x????},  precedes, not double equal		 # ISOamsn */
-/* {"prnap",	0x????},  precedes, not approximately equal to	 # ISOamsn */
-/* {"rpargt",	0x????},  right parenthesis, greater-than	 # ISOamsc */
-/* {"scap",	0x????},  succeeds, approximately equal to	 # ISOamsr */
-/* {"scnE",	0x????},  succeeds, not double equals		 # ISOamsn */
-/* {"scnap",	0x????},  succeeds, not approximately equal to	 # ISOamsn */
-/* {"smid",	0x????},  shortmid				 # ISOamsr */
-};
-
-#endif /* ENTITIES_H */
diff --git a/WWW/Library/djgpp/makefile b/WWW/Library/djgpp/makefile
index b89f9295..55c856d0 100644
--- a/WWW/Library/djgpp/makefile
+++ b/WWW/Library/djgpp/makefile
@@ -7,7 +7,7 @@ WWW_MACH = djgpp
 # The ASIS repository's name for the machine we are on
 #ASIS_MACH = hardware/os
 
-CFLAGS = -O3 -DUSE_ZLIB -DDOSPATH -DNOUSERS -DDEBUG -DDISP_PARTIAL \
+CFLAGS = -O3 -DUSE_ZLIB -DDOSPATH -DNOUSERS -DDISP_PARTIAL \
 -I../Implementation \
 -I../../../djgpp/tcplib/include \
 -I../../../djgpp/tcplib/include/tcp \
diff --git a/WWW/Library/djgpp/makefile.sla b/WWW/Library/djgpp/makefile.sla
index 875ce37d..fad64b1d 100644
--- a/WWW/Library/djgpp/makefile.sla
+++ b/WWW/Library/djgpp/makefile.sla
@@ -7,7 +7,7 @@ WWW_MACH = djgpp
 # The ASIS repository's name for the machine we are on
 #ASIS_MACH = hardware/os
 
-CFLAGS = -O3 -DUSE_SLANG -DUSE_ZLIB -DDOSPATH -DNOUSERS -DDEBUG -DDISP_PARTIAL \
+CFLAGS = -O3 -DUSE_SLANG -DUSE_ZLIB -DDOSPATH -DNOUSERS -DDISP_PARTIAL \
 -I../Implementation \
 -I../../../djgpp/tcplib/include \
 -I../../../djgpp/tcplib/include/tcp \
diff --git a/WWW/Library/unix/makefile.in b/WWW/Library/unix/makefile.in
index 0a7ded68..66ac843b 100644
--- a/WWW/Library/unix/makefile.in
+++ b/WWW/Library/unix/makefile.in
@@ -66,7 +66,7 @@ lint:
 
 .c.i:
 @RULE_CC@
-	@ECHO_CC@$(CPP) -C $(CPPOPTS) $*.c >$@
+	@ECHO_CC@$(CPP) -C $(CPPOPTS) $(srcdir)/$*.c >$@
 
 depend :
 	makedepend -fmakefile -- $(CFLAGS) -- $(CFILES)