parser/html/javasrc/ElementName.java

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /*
     2  * Copyright (c) 2008-2014 Mozilla Foundation
     3  *
     4  * Permission is hereby granted, free of charge, to any person obtaining a 
     5  * copy of this software and associated documentation files (the "Software"), 
     6  * to deal in the Software without restriction, including without limitation 
     7  * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
     8  * and/or sell copies of the Software, and to permit persons to whom the 
     9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in 
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    23 package nu.validator.htmlparser.impl;
    25 import java.util.Arrays;
    27 import nu.validator.htmlparser.annotation.Inline;
    28 import nu.validator.htmlparser.annotation.Local;
    29 import nu.validator.htmlparser.annotation.NoLength;
    30 import nu.validator.htmlparser.annotation.Virtual;
    31 import nu.validator.htmlparser.common.Interner;
    33 public final class ElementName
    34 // uncomment when regenerating self
    35 //        implements Comparable<ElementName>
    36 {
    38     /**
    39      * The mask for extracting the dispatch group.
    40      */
    41     public static final int GROUP_MASK = 127;
    43     /**
    44      * Indicates that the element is not a pre-interned element. Forbidden 
    45      * on preinterned elements.
    46      */
    47     public static final int CUSTOM = (1 << 30);
    49     /**
    50      * Indicates that the element is in the "special" category. This bit
    51      * should not be pre-set on MathML or SVG specials--only on HTML specials.
    52      */
    53     public static final int SPECIAL = (1 << 29);
    55     /**
    56      * The element is foster-parenting. This bit should be pre-set on elements
    57      * that are foster-parenting as HTML.
    58      */
    59     public static final int FOSTER_PARENTING = (1 << 28);
    61     /**
    62      * The element is scoping. This bit should be pre-set on elements
    63      * that are scoping as HTML.
    64      */
    65     public static final int SCOPING = (1 << 27);
    67     /**
    68      * The element is scoping as SVG.
    69      */
    70     public static final int SCOPING_AS_SVG = (1 << 26);
    72     /**
    73      * The element is scoping as MathML.
    74      */
    75     public static final int SCOPING_AS_MATHML = (1 << 25);
    77     /**
    78      * The element is an HTML integration point.
    79      */
    80     public static final int HTML_INTEGRATION_POINT = (1 << 24);
    82     /**
    83      * The element has an optional end tag.
    84      */
    85     public static final int OPTIONAL_END_TAG = (1 << 23);
    87     public static final ElementName NULL_ELEMENT_NAME = new ElementName(null);
    89     public final @Local String name;
    91     public final @Local String camelCaseName;
    93     /**
    94      * The lowest 7 bits are the dispatch group. The high bits are flags.
    95      */
    96     public final int flags;
    98     @Inline public int getFlags() {
    99         return flags;
   100     }
   102     public int getGroup() {
   103         return flags & GROUP_MASK;
   104     }
   106     public boolean isCustom() {
   107         return (flags & CUSTOM) != 0;
   108     }
   110     static ElementName elementNameByBuffer(@NoLength char[] buf, int offset, int length, Interner interner) {
   111         int hash = ElementName.bufToHash(buf, length);
   112         int index = Arrays.binarySearch(ElementName.ELEMENT_HASHES, hash);
   113         if (index < 0) {
   114             return new ElementName(Portability.newLocalNameFromBuffer(buf, offset, length, interner));
   115         } else {
   116             ElementName elementName = ElementName.ELEMENT_NAMES[index];
   117             @Local String name = elementName.name;
   118             if (!Portability.localEqualsBuffer(name, buf, offset, length)) {
   119                 return new ElementName(Portability.newLocalNameFromBuffer(buf,
   120                         offset, length, interner));
   121             }
   122             return elementName;
   123         }
   124     }
   126     /**
   127      * This method has to return a unique integer for each well-known
   128      * lower-cased element name.
   129      * 
   130      * @param buf
   131      * @param len
   132      * @return
   133      */
   134     private static int bufToHash(@NoLength char[] buf, int len) {
   135         int hash = len;
   136         hash <<= 5;
   137         hash += buf[0] - 0x60;
   138         int j = len;
   139         for (int i = 0; i < 4 && j > 0; i++) {
   140             j--;
   141             hash <<= 5;
   142             hash += buf[j] - 0x60;
   143         }
   144         return hash;
   145     }
   147     private ElementName(@Local String name, @Local String camelCaseName,
   148             int flags) {
   149         this.name = name;
   150         this.camelCaseName = camelCaseName;
   151         this.flags = flags;
   152     }
   154     protected ElementName(@Local String name) {
   155         this.name = name;
   156         this.camelCaseName = name;
   157         this.flags = TreeBuilder.OTHER | CUSTOM;
   158     }
   160     @Virtual void release() {
   161         // No-op in Java. 
   162         // Implement as delete this in subclass.
   163         // Be sure to release the local name
   164     }
   166     @SuppressWarnings("unused") @Virtual private void destructor() {
   167     }
   169     @Virtual public ElementName cloneElementName(Interner interner) {
   170         return this;
   171     }
   173     // START CODE ONLY USED FOR GENERATING CODE uncomment and run to regenerate
   175 //    /**
   176 //     * @see java.lang.Object#toString()
   177 //     */
   178 //    @Override public String toString() {
   179 //        return "(\"" + name + "\", \"" + camelCaseName + "\", " + decomposedFlags() + ")";
   180 //    }
   181 //
   182 //    private String decomposedFlags() {
   183 //        StringBuilder buf = new StringBuilder("TreeBuilder.");
   184 //        buf.append(treeBuilderGroupToName());
   185 //        if ((flags & SPECIAL) != 0) {
   186 //            buf.append(" | SPECIAL");
   187 //        }
   188 //        if ((flags & FOSTER_PARENTING) != 0) {
   189 //            buf.append(" | FOSTER_PARENTING");
   190 //        }
   191 //        if ((flags & SCOPING) != 0) {
   192 //            buf.append(" | SCOPING");
   193 //        }
   194 //        if ((flags & SCOPING_AS_MATHML) != 0) {
   195 //            buf.append(" | SCOPING_AS_MATHML");
   196 //        }
   197 //        if ((flags & SCOPING_AS_SVG) != 0) {
   198 //            buf.append(" | SCOPING_AS_SVG");
   199 //        }
   200 //        if ((flags & OPTIONAL_END_TAG) != 0) {
   201 //            buf.append(" | OPTIONAL_END_TAG");
   202 //        }
   203 //        return buf.toString();
   204 //    }
   205 //
   206 //    private String constName() {
   207 //        char[] buf = new char[name.length()];
   208 //        for (int i = 0; i < name.length(); i++) {
   209 //            char c = name.charAt(i);
   210 //            if (c == '-') {
   211 //                buf[i] = '_';
   212 //            } else if (c >= '0' && c <= '9') {
   213 //                buf[i] = c;
   214 //            } else {
   215 //                buf[i] = (char) (c - 0x20);
   216 //            }
   217 //        }
   218 //        return new String(buf);
   219 //    }
   220 //
   221 //    private int hash() {
   222 //        return bufToHash(name.toCharArray(), name.length());
   223 //    }
   224 //
   225 //    public int compareTo(ElementName other) {
   226 //        int thisHash = this.hash();
   227 //        int otherHash = other.hash();
   228 //        if (thisHash < otherHash) {
   229 //            return -1;
   230 //        } else if (thisHash == otherHash) {
   231 //            return 0;
   232 //        } else {
   233 //            return 1;
   234 //        }
   235 //    }
   236 //
   237 //    private String treeBuilderGroupToName() {
   238 //        switch (getGroup()) {
   239 //            case TreeBuilder.OTHER:
   240 //                return "OTHER";
   241 //            case TreeBuilder.A:
   242 //                return "A";
   243 //            case TreeBuilder.BASE:
   244 //                return "BASE";
   245 //            case TreeBuilder.BODY:
   246 //                return "BODY";
   247 //            case TreeBuilder.BR:
   248 //                return "BR";
   249 //            case TreeBuilder.BUTTON:
   250 //                return "BUTTON";
   251 //            case TreeBuilder.CAPTION:
   252 //                return "CAPTION";
   253 //            case TreeBuilder.COL:
   254 //                return "COL";
   255 //            case TreeBuilder.COLGROUP:
   256 //                return "COLGROUP";
   257 //            case TreeBuilder.FONT:
   258 //                return "FONT";
   259 //            case TreeBuilder.FORM:
   260 //                return "FORM";
   261 //            case TreeBuilder.FRAME:
   262 //                return "FRAME";
   263 //            case TreeBuilder.FRAMESET:
   264 //                return "FRAMESET";
   265 //            case TreeBuilder.IMAGE:
   266 //                return "IMAGE";
   267 //            case TreeBuilder.INPUT:
   268 //                return "INPUT";
   269 //            case TreeBuilder.ISINDEX:
   270 //                return "ISINDEX";
   271 //            case TreeBuilder.LI:
   272 //                return "LI";
   273 //            case TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND:
   274 //                return "LINK_OR_BASEFONT_OR_BGSOUND";
   275 //            case TreeBuilder.MATH:
   276 //                return "MATH";
   277 //            case TreeBuilder.META:
   278 //                return "META";
   279 //            case TreeBuilder.SVG:
   280 //                return "SVG";
   281 //            case TreeBuilder.HEAD:
   282 //                return "HEAD";
   283 //            case TreeBuilder.HR:
   284 //                return "HR";
   285 //            case TreeBuilder.HTML:
   286 //                return "HTML";
   287 //            case TreeBuilder.KEYGEN:
   288 //                return "KEYGEN";
   289 //            case TreeBuilder.NOBR:
   290 //                return "NOBR";
   291 //            case TreeBuilder.NOFRAMES:
   292 //                return "NOFRAMES";
   293 //            case TreeBuilder.NOSCRIPT:
   294 //                return "NOSCRIPT";
   295 //            case TreeBuilder.OPTGROUP:
   296 //                return "OPTGROUP";
   297 //            case TreeBuilder.OPTION:
   298 //                return "OPTION";
   299 //            case TreeBuilder.P:
   300 //                return "P";
   301 //            case TreeBuilder.PLAINTEXT:
   302 //                return "PLAINTEXT";
   303 //            case TreeBuilder.SCRIPT:
   304 //                return "SCRIPT";
   305 //            case TreeBuilder.SELECT:
   306 //                return "SELECT";
   307 //            case TreeBuilder.STYLE:
   308 //                return "STYLE";
   309 //            case TreeBuilder.TABLE:
   310 //                return "TABLE";
   311 //            case TreeBuilder.TEXTAREA:
   312 //                return "TEXTAREA";
   313 //            case TreeBuilder.TITLE:
   314 //                return "TITLE";
   315 //            case TreeBuilder.TEMPLATE:
   316 //                return "TEMPLATE";
   317 //            case TreeBuilder.TR:
   318 //                return "TR";
   319 //            case TreeBuilder.XMP:
   320 //                return "XMP";
   321 //            case TreeBuilder.TBODY_OR_THEAD_OR_TFOOT:
   322 //                return "TBODY_OR_THEAD_OR_TFOOT";
   323 //            case TreeBuilder.TD_OR_TH:
   324 //                return "TD_OR_TH";
   325 //            case TreeBuilder.DD_OR_DT:
   326 //                return "DD_OR_DT";
   327 //            case TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6:
   328 //                return "H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6";
   329 //            case TreeBuilder.OBJECT:
   330 //                return "OBJECT";
   331 //            case TreeBuilder.OUTPUT_OR_LABEL:
   332 //                return "OUTPUT_OR_LABEL";
   333 //            case TreeBuilder.MARQUEE_OR_APPLET:
   334 //                return "MARQUEE_OR_APPLET";
   335 //            case TreeBuilder.PRE_OR_LISTING:
   336 //                return "PRE_OR_LISTING";
   337 //            case TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U:
   338 //                return "B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U";
   339 //            case TreeBuilder.UL_OR_OL_OR_DL:
   340 //                return "UL_OR_OL_OR_DL";
   341 //            case TreeBuilder.IFRAME:
   342 //                return "IFRAME";
   343 //            case TreeBuilder.NOEMBED:
   344 //                return "NOEMBED";
   345 //            case TreeBuilder.EMBED:
   346 //                return "EMBED";
   347 //            case TreeBuilder.IMG:
   348 //                return "IMG";
   349 //            case TreeBuilder.AREA_OR_WBR:
   350 //                return "AREA_OR_WBR";
   351 //            case TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU:
   352 //                return "DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU";
   353 //            case TreeBuilder.FIELDSET:
   354 //                return "FIELDSET";
   355 //            case TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY:
   356 //                return "ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY";
   357 //            case TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR:
   358 //                return "RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR";
   359 //            case TreeBuilder.RT_OR_RP:
   360 //                return "RT_OR_RP";
   361 //            case TreeBuilder.PARAM_OR_SOURCE_OR_TRACK:
   362 //                return "PARAM_OR_SOURCE_OR_TRACK";
   363 //            case TreeBuilder.MGLYPH_OR_MALIGNMARK:
   364 //                return "MGLYPH_OR_MALIGNMARK";
   365 //            case TreeBuilder.MI_MO_MN_MS_MTEXT:
   366 //                return "MI_MO_MN_MS_MTEXT";
   367 //            case TreeBuilder.ANNOTATION_XML:
   368 //                return "ANNOTATION_XML";
   369 //            case TreeBuilder.FOREIGNOBJECT_OR_DESC:
   370 //                return "FOREIGNOBJECT_OR_DESC";
   371 //            case TreeBuilder.MENUITEM:
   372 //                return "MENUITEM";
   373 //        }
   374 //        return null;
   375 //    }
   376 //
   377 //    /**
   378 //     * Regenerate self
   379 //     *
   380 //     * @param args
   381 //     */
   382 //    public static void main(String[] args) {
   383 //        Arrays.sort(ELEMENT_NAMES);
   384 //        for (int i = 1; i < ELEMENT_NAMES.length; i++) {
   385 //            if (ELEMENT_NAMES[i].hash() == ELEMENT_NAMES[i - 1].hash()) {
   386 //                System.err.println("Hash collision: " + ELEMENT_NAMES[i].name
   387 //                        + ", " + ELEMENT_NAMES[i - 1].name);
   388 //                return;
   389 //            }
   390 //        }
   391 //        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
   392 //            ElementName el = ELEMENT_NAMES[i];
   393 //            System.out.println("public static final ElementName "
   394 //                    + el.constName() + " = new ElementName" + el.toString()
   395 //                    + ";");
   396 //        }
   397 //        System.out.println("private final static @NoLength ElementName[] ELEMENT_NAMES = {");
   398 //        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
   399 //            ElementName el = ELEMENT_NAMES[i];
   400 //            System.out.println(el.constName() + ",");
   401 //        }
   402 //        System.out.println("};");
   403 //        System.out.println("private final static int[] ELEMENT_HASHES = {");
   404 //        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
   405 //            ElementName el = ELEMENT_NAMES[i];
   406 //            System.out.println(Integer.toString(el.hash()) + ",");
   407 //        }
   408 //        System.out.println("};");
   409 //    }
   411     // START GENERATED CODE
   412     public static final ElementName A = new ElementName("a", "a", TreeBuilder.A);
   413     public static final ElementName B = new ElementName("b", "b", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   414     public static final ElementName G = new ElementName("g", "g", TreeBuilder.OTHER);
   415     public static final ElementName I = new ElementName("i", "i", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   416     public static final ElementName P = new ElementName("p", "p", TreeBuilder.P | SPECIAL | OPTIONAL_END_TAG);
   417     public static final ElementName Q = new ElementName("q", "q", TreeBuilder.OTHER);
   418     public static final ElementName S = new ElementName("s", "s", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   419     public static final ElementName U = new ElementName("u", "u", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   420     public static final ElementName BR = new ElementName("br", "br", TreeBuilder.BR | SPECIAL);
   421     public static final ElementName CI = new ElementName("ci", "ci", TreeBuilder.OTHER);
   422     public static final ElementName CN = new ElementName("cn", "cn", TreeBuilder.OTHER);
   423     public static final ElementName DD = new ElementName("dd", "dd", TreeBuilder.DD_OR_DT | SPECIAL | OPTIONAL_END_TAG);
   424     public static final ElementName DL = new ElementName("dl", "dl", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL);
   425     public static final ElementName DT = new ElementName("dt", "dt", TreeBuilder.DD_OR_DT | SPECIAL | OPTIONAL_END_TAG);
   426     public static final ElementName EM = new ElementName("em", "em", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   427     public static final ElementName EQ = new ElementName("eq", "eq", TreeBuilder.OTHER);
   428     public static final ElementName FN = new ElementName("fn", "fn", TreeBuilder.OTHER);
   429     public static final ElementName H1 = new ElementName("h1", "h1", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL);
   430     public static final ElementName H2 = new ElementName("h2", "h2", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL);
   431     public static final ElementName H3 = new ElementName("h3", "h3", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL);
   432     public static final ElementName H4 = new ElementName("h4", "h4", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL);
   433     public static final ElementName H5 = new ElementName("h5", "h5", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL);
   434     public static final ElementName H6 = new ElementName("h6", "h6", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL);
   435     public static final ElementName GT = new ElementName("gt", "gt", TreeBuilder.OTHER);
   436     public static final ElementName HR = new ElementName("hr", "hr", TreeBuilder.HR | SPECIAL);
   437     public static final ElementName IN = new ElementName("in", "in", TreeBuilder.OTHER);
   438     public static final ElementName LI = new ElementName("li", "li", TreeBuilder.LI | SPECIAL | OPTIONAL_END_TAG);
   439     public static final ElementName LN = new ElementName("ln", "ln", TreeBuilder.OTHER);
   440     public static final ElementName LT = new ElementName("lt", "lt", TreeBuilder.OTHER);
   441     public static final ElementName MI = new ElementName("mi", "mi", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML);
   442     public static final ElementName MN = new ElementName("mn", "mn", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML);
   443     public static final ElementName MO = new ElementName("mo", "mo", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML);
   444     public static final ElementName MS = new ElementName("ms", "ms", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML);
   445     public static final ElementName OL = new ElementName("ol", "ol", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL);
   446     public static final ElementName OR = new ElementName("or", "or", TreeBuilder.OTHER);
   447     public static final ElementName PI = new ElementName("pi", "pi", TreeBuilder.OTHER);
   448     public static final ElementName RP = new ElementName("rp", "rp", TreeBuilder.RT_OR_RP | OPTIONAL_END_TAG);
   449     public static final ElementName RT = new ElementName("rt", "rt", TreeBuilder.RT_OR_RP | OPTIONAL_END_TAG);
   450     public static final ElementName TD = new ElementName("td", "td", TreeBuilder.TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG);
   451     public static final ElementName TH = new ElementName("th", "th", TreeBuilder.TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG);
   452     public static final ElementName TR = new ElementName("tr", "tr", TreeBuilder.TR | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
   453     public static final ElementName TT = new ElementName("tt", "tt", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   454     public static final ElementName UL = new ElementName("ul", "ul", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL);
   455     public static final ElementName AND = new ElementName("and", "and", TreeBuilder.OTHER);
   456     public static final ElementName ARG = new ElementName("arg", "arg", TreeBuilder.OTHER);
   457     public static final ElementName ABS = new ElementName("abs", "abs", TreeBuilder.OTHER);
   458     public static final ElementName BIG = new ElementName("big", "big", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   459     public static final ElementName BDO = new ElementName("bdo", "bdo", TreeBuilder.OTHER);
   460     public static final ElementName CSC = new ElementName("csc", "csc", TreeBuilder.OTHER);
   461     public static final ElementName COL = new ElementName("col", "col", TreeBuilder.COL | SPECIAL);
   462     public static final ElementName COS = new ElementName("cos", "cos", TreeBuilder.OTHER);
   463     public static final ElementName COT = new ElementName("cot", "cot", TreeBuilder.OTHER);
   464     public static final ElementName DEL = new ElementName("del", "del", TreeBuilder.OTHER);
   465     public static final ElementName DFN = new ElementName("dfn", "dfn", TreeBuilder.OTHER);
   466     public static final ElementName DIR = new ElementName("dir", "dir", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   467     public static final ElementName DIV = new ElementName("div", "div", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
   468     public static final ElementName EXP = new ElementName("exp", "exp", TreeBuilder.OTHER);
   469     public static final ElementName GCD = new ElementName("gcd", "gcd", TreeBuilder.OTHER);
   470     public static final ElementName GEQ = new ElementName("geq", "geq", TreeBuilder.OTHER);
   471     public static final ElementName IMG = new ElementName("img", "img", TreeBuilder.IMG | SPECIAL);
   472     public static final ElementName INS = new ElementName("ins", "ins", TreeBuilder.OTHER);
   473     public static final ElementName INT = new ElementName("int", "int", TreeBuilder.OTHER);
   474     public static final ElementName KBD = new ElementName("kbd", "kbd", TreeBuilder.OTHER);
   475     public static final ElementName LOG = new ElementName("log", "log", TreeBuilder.OTHER);
   476     public static final ElementName LCM = new ElementName("lcm", "lcm", TreeBuilder.OTHER);
   477     public static final ElementName LEQ = new ElementName("leq", "leq", TreeBuilder.OTHER);
   478     public static final ElementName MTD = new ElementName("mtd", "mtd", TreeBuilder.OTHER);
   479     public static final ElementName MIN = new ElementName("min", "min", TreeBuilder.OTHER);
   480     public static final ElementName MAP = new ElementName("map", "map", TreeBuilder.OTHER);
   481     public static final ElementName MTR = new ElementName("mtr", "mtr", TreeBuilder.OTHER);
   482     public static final ElementName MAX = new ElementName("max", "max", TreeBuilder.OTHER);
   483     public static final ElementName NEQ = new ElementName("neq", "neq", TreeBuilder.OTHER);
   484     public static final ElementName NOT = new ElementName("not", "not", TreeBuilder.OTHER);
   485     public static final ElementName NAV = new ElementName("nav", "nav", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   486     public static final ElementName PRE = new ElementName("pre", "pre", TreeBuilder.PRE_OR_LISTING | SPECIAL);
   487     public static final ElementName REM = new ElementName("rem", "rem", TreeBuilder.OTHER);
   488     public static final ElementName SUB = new ElementName("sub", "sub", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
   489     public static final ElementName SEC = new ElementName("sec", "sec", TreeBuilder.OTHER);
   490     public static final ElementName SVG = new ElementName("svg", "svg", TreeBuilder.SVG);
   491     public static final ElementName SUM = new ElementName("sum", "sum", TreeBuilder.OTHER);
   492     public static final ElementName SIN = new ElementName("sin", "sin", TreeBuilder.OTHER);
   493     public static final ElementName SEP = new ElementName("sep", "sep", TreeBuilder.OTHER);
   494     public static final ElementName SUP = new ElementName("sup", "sup", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
   495     public static final ElementName SET = new ElementName("set", "set", TreeBuilder.OTHER);
   496     public static final ElementName TAN = new ElementName("tan", "tan", TreeBuilder.OTHER);
   497     public static final ElementName USE = new ElementName("use", "use", TreeBuilder.OTHER);
   498     public static final ElementName VAR = new ElementName("var", "var", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
   499     public static final ElementName WBR = new ElementName("wbr", "wbr", TreeBuilder.AREA_OR_WBR | SPECIAL);
   500     public static final ElementName XMP = new ElementName("xmp", "xmp", TreeBuilder.XMP | SPECIAL);
   501     public static final ElementName XOR = new ElementName("xor", "xor", TreeBuilder.OTHER);
   502     public static final ElementName AREA = new ElementName("area", "area", TreeBuilder.AREA_OR_WBR | SPECIAL);
   503     public static final ElementName ABBR = new ElementName("abbr", "abbr", TreeBuilder.OTHER);
   504     public static final ElementName BASE = new ElementName("base", "base", TreeBuilder.BASE | SPECIAL);
   505     public static final ElementName BVAR = new ElementName("bvar", "bvar", TreeBuilder.OTHER);
   506     public static final ElementName BODY = new ElementName("body", "body", TreeBuilder.BODY | SPECIAL | OPTIONAL_END_TAG);
   507     public static final ElementName CARD = new ElementName("card", "card", TreeBuilder.OTHER);
   508     public static final ElementName CODE = new ElementName("code", "code", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   509     public static final ElementName CITE = new ElementName("cite", "cite", TreeBuilder.OTHER);
   510     public static final ElementName CSCH = new ElementName("csch", "csch", TreeBuilder.OTHER);
   511     public static final ElementName COSH = new ElementName("cosh", "cosh", TreeBuilder.OTHER);
   512     public static final ElementName COTH = new ElementName("coth", "coth", TreeBuilder.OTHER);
   513     public static final ElementName CURL = new ElementName("curl", "curl", TreeBuilder.OTHER);
   514     public static final ElementName DESC = new ElementName("desc", "desc", TreeBuilder.FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG);
   515     public static final ElementName DIFF = new ElementName("diff", "diff", TreeBuilder.OTHER);
   516     public static final ElementName DEFS = new ElementName("defs", "defs", TreeBuilder.OTHER);
   517     public static final ElementName FORM = new ElementName("form", "form", TreeBuilder.FORM | SPECIAL);
   518     public static final ElementName FONT = new ElementName("font", "font", TreeBuilder.FONT);
   519     public static final ElementName GRAD = new ElementName("grad", "grad", TreeBuilder.OTHER);
   520     public static final ElementName HEAD = new ElementName("head", "head", TreeBuilder.HEAD | SPECIAL | OPTIONAL_END_TAG);
   521     public static final ElementName HTML = new ElementName("html", "html", TreeBuilder.HTML | SPECIAL | SCOPING | OPTIONAL_END_TAG);
   522     public static final ElementName LINE = new ElementName("line", "line", TreeBuilder.OTHER);
   523     public static final ElementName LINK = new ElementName("link", "link", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL);
   524     public static final ElementName LIST = new ElementName("list", "list", TreeBuilder.OTHER);
   525     public static final ElementName META = new ElementName("meta", "meta", TreeBuilder.META | SPECIAL);
   526     public static final ElementName MSUB = new ElementName("msub", "msub", TreeBuilder.OTHER);
   527     public static final ElementName MODE = new ElementName("mode", "mode", TreeBuilder.OTHER);
   528     public static final ElementName MATH = new ElementName("math", "math", TreeBuilder.MATH);
   529     public static final ElementName MARK = new ElementName("mark", "mark", TreeBuilder.OTHER);
   530     public static final ElementName MASK = new ElementName("mask", "mask", TreeBuilder.OTHER);
   531     public static final ElementName MEAN = new ElementName("mean", "mean", TreeBuilder.OTHER);
   532     public static final ElementName MAIN = new ElementName("main", "main", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   533     public static final ElementName MSUP = new ElementName("msup", "msup", TreeBuilder.OTHER);
   534     public static final ElementName MENU = new ElementName("menu", "menu", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
   535     public static final ElementName MROW = new ElementName("mrow", "mrow", TreeBuilder.OTHER);
   536     public static final ElementName NONE = new ElementName("none", "none", TreeBuilder.OTHER);
   537     public static final ElementName NOBR = new ElementName("nobr", "nobr", TreeBuilder.NOBR);
   538     public static final ElementName NEST = new ElementName("nest", "nest", TreeBuilder.OTHER);
   539     public static final ElementName PATH = new ElementName("path", "path", TreeBuilder.OTHER);
   540     public static final ElementName PLUS = new ElementName("plus", "plus", TreeBuilder.OTHER);
   541     public static final ElementName RULE = new ElementName("rule", "rule", TreeBuilder.OTHER);
   542     public static final ElementName REAL = new ElementName("real", "real", TreeBuilder.OTHER);
   543     public static final ElementName RELN = new ElementName("reln", "reln", TreeBuilder.OTHER);
   544     public static final ElementName RECT = new ElementName("rect", "rect", TreeBuilder.OTHER);
   545     public static final ElementName ROOT = new ElementName("root", "root", TreeBuilder.OTHER);
   546     public static final ElementName RUBY = new ElementName("ruby", "ruby", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
   547     public static final ElementName SECH = new ElementName("sech", "sech", TreeBuilder.OTHER);
   548     public static final ElementName SINH = new ElementName("sinh", "sinh", TreeBuilder.OTHER);
   549     public static final ElementName SPAN = new ElementName("span", "span", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
   550     public static final ElementName SAMP = new ElementName("samp", "samp", TreeBuilder.OTHER);
   551     public static final ElementName STOP = new ElementName("stop", "stop", TreeBuilder.OTHER);
   552     public static final ElementName SDEV = new ElementName("sdev", "sdev", TreeBuilder.OTHER);
   553     public static final ElementName TIME = new ElementName("time", "time", TreeBuilder.OTHER);
   554     public static final ElementName TRUE = new ElementName("true", "true", TreeBuilder.OTHER);
   555     public static final ElementName TREF = new ElementName("tref", "tref", TreeBuilder.OTHER);
   556     public static final ElementName TANH = new ElementName("tanh", "tanh", TreeBuilder.OTHER);
   557     public static final ElementName TEXT = new ElementName("text", "text", TreeBuilder.OTHER);
   558     public static final ElementName VIEW = new ElementName("view", "view", TreeBuilder.OTHER);
   559     public static final ElementName ASIDE = new ElementName("aside", "aside", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   560     public static final ElementName AUDIO = new ElementName("audio", "audio", TreeBuilder.OTHER);
   561     public static final ElementName APPLY = new ElementName("apply", "apply", TreeBuilder.OTHER);
   562     public static final ElementName EMBED = new ElementName("embed", "embed", TreeBuilder.EMBED | SPECIAL);
   563     public static final ElementName FRAME = new ElementName("frame", "frame", TreeBuilder.FRAME | SPECIAL);
   564     public static final ElementName FALSE = new ElementName("false", "false", TreeBuilder.OTHER);
   565     public static final ElementName FLOOR = new ElementName("floor", "floor", TreeBuilder.OTHER);
   566     public static final ElementName GLYPH = new ElementName("glyph", "glyph", TreeBuilder.OTHER);
   567     public static final ElementName HKERN = new ElementName("hkern", "hkern", TreeBuilder.OTHER);
   568     public static final ElementName IMAGE = new ElementName("image", "image", TreeBuilder.IMAGE);
   569     public static final ElementName IDENT = new ElementName("ident", "ident", TreeBuilder.OTHER);
   570     public static final ElementName INPUT = new ElementName("input", "input", TreeBuilder.INPUT | SPECIAL);
   571     public static final ElementName LABEL = new ElementName("label", "label", TreeBuilder.OUTPUT_OR_LABEL);
   572     public static final ElementName LIMIT = new ElementName("limit", "limit", TreeBuilder.OTHER);
   573     public static final ElementName MFRAC = new ElementName("mfrac", "mfrac", TreeBuilder.OTHER);
   574     public static final ElementName MPATH = new ElementName("mpath", "mpath", TreeBuilder.OTHER);
   575     public static final ElementName METER = new ElementName("meter", "meter", TreeBuilder.OTHER);
   576     public static final ElementName MOVER = new ElementName("mover", "mover", TreeBuilder.OTHER);
   577     public static final ElementName MINUS = new ElementName("minus", "minus", TreeBuilder.OTHER);
   578     public static final ElementName MROOT = new ElementName("mroot", "mroot", TreeBuilder.OTHER);
   579     public static final ElementName MSQRT = new ElementName("msqrt", "msqrt", TreeBuilder.OTHER);
   580     public static final ElementName MTEXT = new ElementName("mtext", "mtext", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML);
   581     public static final ElementName NOTIN = new ElementName("notin", "notin", TreeBuilder.OTHER);
   582     public static final ElementName PIECE = new ElementName("piece", "piece", TreeBuilder.OTHER);
   583     public static final ElementName PARAM = new ElementName("param", "param", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL);
   584     public static final ElementName POWER = new ElementName("power", "power", TreeBuilder.OTHER);
   585     public static final ElementName REALS = new ElementName("reals", "reals", TreeBuilder.OTHER);
   586     public static final ElementName STYLE = new ElementName("style", "style", TreeBuilder.STYLE | SPECIAL);
   587     public static final ElementName SMALL = new ElementName("small", "small", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   588     public static final ElementName THEAD = new ElementName("thead", "thead", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
   589     public static final ElementName TABLE = new ElementName("table", "table", TreeBuilder.TABLE | SPECIAL | FOSTER_PARENTING | SCOPING);
   590     public static final ElementName TITLE = new ElementName("title", "title", TreeBuilder.TITLE | SPECIAL | SCOPING_AS_SVG);
   591     public static final ElementName TRACK = new ElementName("track", "track", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL);
   592     public static final ElementName TSPAN = new ElementName("tspan", "tspan", TreeBuilder.OTHER);
   593     public static final ElementName TIMES = new ElementName("times", "times", TreeBuilder.OTHER);
   594     public static final ElementName TFOOT = new ElementName("tfoot", "tfoot", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
   595     public static final ElementName TBODY = new ElementName("tbody", "tbody", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
   596     public static final ElementName UNION = new ElementName("union", "union", TreeBuilder.OTHER);
   597     public static final ElementName VKERN = new ElementName("vkern", "vkern", TreeBuilder.OTHER);
   598     public static final ElementName VIDEO = new ElementName("video", "video", TreeBuilder.OTHER);
   599     public static final ElementName ARCSEC = new ElementName("arcsec", "arcsec", TreeBuilder.OTHER);
   600     public static final ElementName ARCCSC = new ElementName("arccsc", "arccsc", TreeBuilder.OTHER);
   601     public static final ElementName ARCTAN = new ElementName("arctan", "arctan", TreeBuilder.OTHER);
   602     public static final ElementName ARCSIN = new ElementName("arcsin", "arcsin", TreeBuilder.OTHER);
   603     public static final ElementName ARCCOS = new ElementName("arccos", "arccos", TreeBuilder.OTHER);
   604     public static final ElementName APPLET = new ElementName("applet", "applet", TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING);
   605     public static final ElementName ARCCOT = new ElementName("arccot", "arccot", TreeBuilder.OTHER);
   606     public static final ElementName APPROX = new ElementName("approx", "approx", TreeBuilder.OTHER);
   607     public static final ElementName BUTTON = new ElementName("button", "button", TreeBuilder.BUTTON | SPECIAL);
   608     public static final ElementName CIRCLE = new ElementName("circle", "circle", TreeBuilder.OTHER);
   609     public static final ElementName CENTER = new ElementName("center", "center", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
   610     public static final ElementName CURSOR = new ElementName("cursor", "cursor", TreeBuilder.OTHER);
   611     public static final ElementName CANVAS = new ElementName("canvas", "canvas", TreeBuilder.OTHER);
   612     public static final ElementName DIVIDE = new ElementName("divide", "divide", TreeBuilder.OTHER);
   613     public static final ElementName DEGREE = new ElementName("degree", "degree", TreeBuilder.OTHER);
   614     public static final ElementName DOMAIN = new ElementName("domain", "domain", TreeBuilder.OTHER);
   615     public static final ElementName EXISTS = new ElementName("exists", "exists", TreeBuilder.OTHER);
   616     public static final ElementName FETILE = new ElementName("fetile", "feTile", TreeBuilder.OTHER);
   617     public static final ElementName FIGURE = new ElementName("figure", "figure", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   618     public static final ElementName FORALL = new ElementName("forall", "forall", TreeBuilder.OTHER);
   619     public static final ElementName FILTER = new ElementName("filter", "filter", TreeBuilder.OTHER);
   620     public static final ElementName FOOTER = new ElementName("footer", "footer", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   621     public static final ElementName HGROUP = new ElementName("hgroup", "hgroup", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   622     public static final ElementName HEADER = new ElementName("header", "header", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   623     public static final ElementName IFRAME = new ElementName("iframe", "iframe", TreeBuilder.IFRAME | SPECIAL);
   624     public static final ElementName KEYGEN = new ElementName("keygen", "keygen", TreeBuilder.KEYGEN);
   625     public static final ElementName LAMBDA = new ElementName("lambda", "lambda", TreeBuilder.OTHER);
   626     public static final ElementName LEGEND = new ElementName("legend", "legend", TreeBuilder.OTHER);
   627     public static final ElementName MSPACE = new ElementName("mspace", "mspace", TreeBuilder.OTHER);
   628     public static final ElementName MTABLE = new ElementName("mtable", "mtable", TreeBuilder.OTHER);
   629     public static final ElementName MSTYLE = new ElementName("mstyle", "mstyle", TreeBuilder.OTHER);
   630     public static final ElementName MGLYPH = new ElementName("mglyph", "mglyph", TreeBuilder.MGLYPH_OR_MALIGNMARK);
   631     public static final ElementName MEDIAN = new ElementName("median", "median", TreeBuilder.OTHER);
   632     public static final ElementName MUNDER = new ElementName("munder", "munder", TreeBuilder.OTHER);
   633     public static final ElementName MARKER = new ElementName("marker", "marker", TreeBuilder.OTHER);
   634     public static final ElementName MERROR = new ElementName("merror", "merror", TreeBuilder.OTHER);
   635     public static final ElementName MOMENT = new ElementName("moment", "moment", TreeBuilder.OTHER);
   636     public static final ElementName MATRIX = new ElementName("matrix", "matrix", TreeBuilder.OTHER);
   637     public static final ElementName OPTION = new ElementName("option", "option", TreeBuilder.OPTION | OPTIONAL_END_TAG);
   638     public static final ElementName OBJECT = new ElementName("object", "object", TreeBuilder.OBJECT | SPECIAL | SCOPING);
   639     public static final ElementName OUTPUT = new ElementName("output", "output", TreeBuilder.OUTPUT_OR_LABEL);
   640     public static final ElementName PRIMES = new ElementName("primes", "primes", TreeBuilder.OTHER);
   641     public static final ElementName SOURCE = new ElementName("source", "source", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK);
   642     public static final ElementName STRIKE = new ElementName("strike", "strike", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   643     public static final ElementName STRONG = new ElementName("strong", "strong", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   644     public static final ElementName SWITCH = new ElementName("switch", "switch", TreeBuilder.OTHER);
   645     public static final ElementName SYMBOL = new ElementName("symbol", "symbol", TreeBuilder.OTHER);
   646     public static final ElementName SELECT = new ElementName("select", "select", TreeBuilder.SELECT | SPECIAL);
   647     public static final ElementName SUBSET = new ElementName("subset", "subset", TreeBuilder.OTHER);
   648     public static final ElementName SCRIPT = new ElementName("script", "script", TreeBuilder.SCRIPT | SPECIAL);
   649     public static final ElementName TBREAK = new ElementName("tbreak", "tbreak", TreeBuilder.OTHER);
   650     public static final ElementName VECTOR = new ElementName("vector", "vector", TreeBuilder.OTHER);
   651     public static final ElementName ARTICLE = new ElementName("article", "article", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   652     public static final ElementName ANIMATE = new ElementName("animate", "animate", TreeBuilder.OTHER);
   653     public static final ElementName ARCSECH = new ElementName("arcsech", "arcsech", TreeBuilder.OTHER);
   654     public static final ElementName ARCCSCH = new ElementName("arccsch", "arccsch", TreeBuilder.OTHER);
   655     public static final ElementName ARCTANH = new ElementName("arctanh", "arctanh", TreeBuilder.OTHER);
   656     public static final ElementName ARCSINH = new ElementName("arcsinh", "arcsinh", TreeBuilder.OTHER);
   657     public static final ElementName ARCCOSH = new ElementName("arccosh", "arccosh", TreeBuilder.OTHER);
   658     public static final ElementName ARCCOTH = new ElementName("arccoth", "arccoth", TreeBuilder.OTHER);
   659     public static final ElementName ACRONYM = new ElementName("acronym", "acronym", TreeBuilder.OTHER);
   660     public static final ElementName ADDRESS = new ElementName("address", "address", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   661     public static final ElementName BGSOUND = new ElementName("bgsound", "bgsound", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL);
   662     public static final ElementName COMPOSE = new ElementName("compose", "compose", TreeBuilder.OTHER);
   663     public static final ElementName CEILING = new ElementName("ceiling", "ceiling", TreeBuilder.OTHER);
   664     public static final ElementName CSYMBOL = new ElementName("csymbol", "csymbol", TreeBuilder.OTHER);
   665     public static final ElementName CAPTION = new ElementName("caption", "caption", TreeBuilder.CAPTION | SPECIAL | SCOPING);
   666     public static final ElementName DISCARD = new ElementName("discard", "discard", TreeBuilder.OTHER);
   667     public static final ElementName DECLARE = new ElementName("declare", "declare", TreeBuilder.OTHER);
   668     public static final ElementName DETAILS = new ElementName("details", "details", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   669     public static final ElementName ELLIPSE = new ElementName("ellipse", "ellipse", TreeBuilder.OTHER);
   670     public static final ElementName FEFUNCA = new ElementName("fefunca", "feFuncA", TreeBuilder.OTHER);
   671     public static final ElementName FEFUNCB = new ElementName("fefuncb", "feFuncB", TreeBuilder.OTHER);
   672     public static final ElementName FEBLEND = new ElementName("feblend", "feBlend", TreeBuilder.OTHER);
   673     public static final ElementName FEFLOOD = new ElementName("feflood", "feFlood", TreeBuilder.OTHER);
   674     public static final ElementName FEIMAGE = new ElementName("feimage", "feImage", TreeBuilder.OTHER);
   675     public static final ElementName FEMERGE = new ElementName("femerge", "feMerge", TreeBuilder.OTHER);
   676     public static final ElementName FEFUNCG = new ElementName("fefuncg", "feFuncG", TreeBuilder.OTHER);
   677     public static final ElementName FEFUNCR = new ElementName("fefuncr", "feFuncR", TreeBuilder.OTHER);
   678     public static final ElementName HANDLER = new ElementName("handler", "handler", TreeBuilder.OTHER);
   679     public static final ElementName INVERSE = new ElementName("inverse", "inverse", TreeBuilder.OTHER);
   680     public static final ElementName IMPLIES = new ElementName("implies", "implies", TreeBuilder.OTHER);
   681     public static final ElementName ISINDEX = new ElementName("isindex", "isindex", TreeBuilder.ISINDEX | SPECIAL);
   682     public static final ElementName LOGBASE = new ElementName("logbase", "logbase", TreeBuilder.OTHER);
   683     public static final ElementName LISTING = new ElementName("listing", "listing", TreeBuilder.PRE_OR_LISTING | SPECIAL);
   684     public static final ElementName MFENCED = new ElementName("mfenced", "mfenced", TreeBuilder.OTHER);
   685     public static final ElementName MPADDED = new ElementName("mpadded", "mpadded", TreeBuilder.OTHER);
   686     public static final ElementName MARQUEE = new ElementName("marquee", "marquee", TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING);
   687     public static final ElementName MACTION = new ElementName("maction", "maction", TreeBuilder.OTHER);
   688     public static final ElementName MSUBSUP = new ElementName("msubsup", "msubsup", TreeBuilder.OTHER);
   689     public static final ElementName NOEMBED = new ElementName("noembed", "noembed", TreeBuilder.NOEMBED | SPECIAL);
   690     public static final ElementName POLYGON = new ElementName("polygon", "polygon", TreeBuilder.OTHER);
   691     public static final ElementName PATTERN = new ElementName("pattern", "pattern", TreeBuilder.OTHER);
   692     public static final ElementName PRODUCT = new ElementName("product", "product", TreeBuilder.OTHER);
   693     public static final ElementName SETDIFF = new ElementName("setdiff", "setdiff", TreeBuilder.OTHER);
   694     public static final ElementName SECTION = new ElementName("section", "section", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   695     public static final ElementName SUMMARY = new ElementName("summary", "summary", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   696     public static final ElementName TENDSTO = new ElementName("tendsto", "tendsto", TreeBuilder.OTHER);
   697     public static final ElementName UPLIMIT = new ElementName("uplimit", "uplimit", TreeBuilder.OTHER);
   698     public static final ElementName ALTGLYPH = new ElementName("altglyph", "altGlyph", TreeBuilder.OTHER);
   699     public static final ElementName BASEFONT = new ElementName("basefont", "basefont", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL);
   700     public static final ElementName CLIPPATH = new ElementName("clippath", "clipPath", TreeBuilder.OTHER);
   701     public static final ElementName CODOMAIN = new ElementName("codomain", "codomain", TreeBuilder.OTHER);
   702     public static final ElementName COLGROUP = new ElementName("colgroup", "colgroup", TreeBuilder.COLGROUP | SPECIAL | OPTIONAL_END_TAG);
   703     public static final ElementName EMPTYSET = new ElementName("emptyset", "emptyset", TreeBuilder.OTHER);
   704     public static final ElementName FACTOROF = new ElementName("factorof", "factorof", TreeBuilder.OTHER);
   705     public static final ElementName FIELDSET = new ElementName("fieldset", "fieldset", TreeBuilder.FIELDSET | SPECIAL);
   706     public static final ElementName FRAMESET = new ElementName("frameset", "frameset", TreeBuilder.FRAMESET | SPECIAL);
   707     public static final ElementName FEOFFSET = new ElementName("feoffset", "feOffset", TreeBuilder.OTHER);
   708     public static final ElementName GLYPHREF = new ElementName("glyphref", "glyphRef", TreeBuilder.OTHER);
   709     public static final ElementName INTERVAL = new ElementName("interval", "interval", TreeBuilder.OTHER);
   710     public static final ElementName INTEGERS = new ElementName("integers", "integers", TreeBuilder.OTHER);
   711     public static final ElementName INFINITY = new ElementName("infinity", "infinity", TreeBuilder.OTHER);
   712     public static final ElementName LISTENER = new ElementName("listener", "listener", TreeBuilder.OTHER);
   713     public static final ElementName LOWLIMIT = new ElementName("lowlimit", "lowlimit", TreeBuilder.OTHER);
   714     public static final ElementName METADATA = new ElementName("metadata", "metadata", TreeBuilder.OTHER);
   715     public static final ElementName MENCLOSE = new ElementName("menclose", "menclose", TreeBuilder.OTHER);
   716     public static final ElementName MENUITEM = new ElementName("menuitem", "menuitem", TreeBuilder.MENUITEM);
   717     public static final ElementName MPHANTOM = new ElementName("mphantom", "mphantom", TreeBuilder.OTHER);
   718     public static final ElementName NOFRAMES = new ElementName("noframes", "noframes", TreeBuilder.NOFRAMES | SPECIAL);
   719     public static final ElementName NOSCRIPT = new ElementName("noscript", "noscript", TreeBuilder.NOSCRIPT | SPECIAL);
   720     public static final ElementName OPTGROUP = new ElementName("optgroup", "optgroup", TreeBuilder.OPTGROUP | OPTIONAL_END_TAG);
   721     public static final ElementName POLYLINE = new ElementName("polyline", "polyline", TreeBuilder.OTHER);
   722     public static final ElementName PREFETCH = new ElementName("prefetch", "prefetch", TreeBuilder.OTHER);
   723     public static final ElementName PROGRESS = new ElementName("progress", "progress", TreeBuilder.OTHER);
   724     public static final ElementName PRSUBSET = new ElementName("prsubset", "prsubset", TreeBuilder.OTHER);
   725     public static final ElementName QUOTIENT = new ElementName("quotient", "quotient", TreeBuilder.OTHER);
   726     public static final ElementName SELECTOR = new ElementName("selector", "selector", TreeBuilder.OTHER);
   727     public static final ElementName TEXTAREA = new ElementName("textarea", "textarea", TreeBuilder.TEXTAREA | SPECIAL);
   728     public static final ElementName TEMPLATE = new ElementName("template", "template", TreeBuilder.TEMPLATE | SPECIAL | SCOPING);
   729     public static final ElementName TEXTPATH = new ElementName("textpath", "textPath", TreeBuilder.OTHER);
   730     public static final ElementName VARIANCE = new ElementName("variance", "variance", TreeBuilder.OTHER);
   731     public static final ElementName ANIMATION = new ElementName("animation", "animation", TreeBuilder.OTHER);
   732     public static final ElementName CONJUGATE = new ElementName("conjugate", "conjugate", TreeBuilder.OTHER);
   733     public static final ElementName CONDITION = new ElementName("condition", "condition", TreeBuilder.OTHER);
   734     public static final ElementName COMPLEXES = new ElementName("complexes", "complexes", TreeBuilder.OTHER);
   735     public static final ElementName FONT_FACE = new ElementName("font-face", "font-face", TreeBuilder.OTHER);
   736     public static final ElementName FACTORIAL = new ElementName("factorial", "factorial", TreeBuilder.OTHER);
   737     public static final ElementName INTERSECT = new ElementName("intersect", "intersect", TreeBuilder.OTHER);
   738     public static final ElementName IMAGINARY = new ElementName("imaginary", "imaginary", TreeBuilder.OTHER);
   739     public static final ElementName LAPLACIAN = new ElementName("laplacian", "laplacian", TreeBuilder.OTHER);
   740     public static final ElementName MATRIXROW = new ElementName("matrixrow", "matrixrow", TreeBuilder.OTHER);
   741     public static final ElementName NOTSUBSET = new ElementName("notsubset", "notsubset", TreeBuilder.OTHER);
   742     public static final ElementName OTHERWISE = new ElementName("otherwise", "otherwise", TreeBuilder.OTHER);
   743     public static final ElementName PIECEWISE = new ElementName("piecewise", "piecewise", TreeBuilder.OTHER);
   744     public static final ElementName PLAINTEXT = new ElementName("plaintext", "plaintext", TreeBuilder.PLAINTEXT | SPECIAL);
   745     public static final ElementName RATIONALS = new ElementName("rationals", "rationals", TreeBuilder.OTHER);
   746     public static final ElementName SEMANTICS = new ElementName("semantics", "semantics", TreeBuilder.OTHER);
   747     public static final ElementName TRANSPOSE = new ElementName("transpose", "transpose", TreeBuilder.OTHER);
   748     public static final ElementName ANNOTATION = new ElementName("annotation", "annotation", TreeBuilder.OTHER);
   749     public static final ElementName BLOCKQUOTE = new ElementName("blockquote", "blockquote", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
   750     public static final ElementName DIVERGENCE = new ElementName("divergence", "divergence", TreeBuilder.OTHER);
   751     public static final ElementName EULERGAMMA = new ElementName("eulergamma", "eulergamma", TreeBuilder.OTHER);
   752     public static final ElementName EQUIVALENT = new ElementName("equivalent", "equivalent", TreeBuilder.OTHER);
   753     public static final ElementName FIGCAPTION = new ElementName("figcaption", "figcaption", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
   754     public static final ElementName IMAGINARYI = new ElementName("imaginaryi", "imaginaryi", TreeBuilder.OTHER);
   755     public static final ElementName MALIGNMARK = new ElementName("malignmark", "malignmark", TreeBuilder.MGLYPH_OR_MALIGNMARK);
   756     public static final ElementName MUNDEROVER = new ElementName("munderover", "munderover", TreeBuilder.OTHER);
   757     public static final ElementName MLABELEDTR = new ElementName("mlabeledtr", "mlabeledtr", TreeBuilder.OTHER);
   758     public static final ElementName NOTANUMBER = new ElementName("notanumber", "notanumber", TreeBuilder.OTHER);
   759     public static final ElementName SOLIDCOLOR = new ElementName("solidcolor", "solidcolor", TreeBuilder.OTHER);
   760     public static final ElementName ALTGLYPHDEF = new ElementName("altglyphdef", "altGlyphDef", TreeBuilder.OTHER);
   761     public static final ElementName DETERMINANT = new ElementName("determinant", "determinant", TreeBuilder.OTHER);
   762     public static final ElementName FEMERGENODE = new ElementName("femergenode", "feMergeNode", TreeBuilder.OTHER);
   763     public static final ElementName FECOMPOSITE = new ElementName("fecomposite", "feComposite", TreeBuilder.OTHER);
   764     public static final ElementName FESPOTLIGHT = new ElementName("fespotlight", "feSpotLight", TreeBuilder.OTHER);
   765     public static final ElementName MALIGNGROUP = new ElementName("maligngroup", "maligngroup", TreeBuilder.OTHER);
   766     public static final ElementName MPRESCRIPTS = new ElementName("mprescripts", "mprescripts", TreeBuilder.OTHER);
   767     public static final ElementName MOMENTABOUT = new ElementName("momentabout", "momentabout", TreeBuilder.OTHER);
   768     public static final ElementName NOTPRSUBSET = new ElementName("notprsubset", "notprsubset", TreeBuilder.OTHER);
   769     public static final ElementName PARTIALDIFF = new ElementName("partialdiff", "partialdiff", TreeBuilder.OTHER);
   770     public static final ElementName ALTGLYPHITEM = new ElementName("altglyphitem", "altGlyphItem", TreeBuilder.OTHER);
   771     public static final ElementName ANIMATECOLOR = new ElementName("animatecolor", "animateColor", TreeBuilder.OTHER);
   772     public static final ElementName DATATEMPLATE = new ElementName("datatemplate", "datatemplate", TreeBuilder.OTHER);
   773     public static final ElementName EXPONENTIALE = new ElementName("exponentiale", "exponentiale", TreeBuilder.OTHER);
   774     public static final ElementName FETURBULENCE = new ElementName("feturbulence", "feTurbulence", TreeBuilder.OTHER);
   775     public static final ElementName FEPOINTLIGHT = new ElementName("fepointlight", "fePointLight", TreeBuilder.OTHER);
   776     public static final ElementName FEDROPSHADOW = new ElementName("fedropshadow", "feDropShadow", TreeBuilder.OTHER);
   777     public static final ElementName FEMORPHOLOGY = new ElementName("femorphology", "feMorphology", TreeBuilder.OTHER);
   778     public static final ElementName OUTERPRODUCT = new ElementName("outerproduct", "outerproduct", TreeBuilder.OTHER);
   779     public static final ElementName ANIMATEMOTION = new ElementName("animatemotion", "animateMotion", TreeBuilder.OTHER);
   780     public static final ElementName COLOR_PROFILE = new ElementName("color-profile", "color-profile", TreeBuilder.OTHER);
   781     public static final ElementName FONT_FACE_SRC = new ElementName("font-face-src", "font-face-src", TreeBuilder.OTHER);
   782     public static final ElementName FONT_FACE_URI = new ElementName("font-face-uri", "font-face-uri", TreeBuilder.OTHER);
   783     public static final ElementName FOREIGNOBJECT = new ElementName("foreignobject", "foreignObject", TreeBuilder.FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG);
   784     public static final ElementName FECOLORMATRIX = new ElementName("fecolormatrix", "feColorMatrix", TreeBuilder.OTHER);
   785     public static final ElementName MISSING_GLYPH = new ElementName("missing-glyph", "missing-glyph", TreeBuilder.OTHER);
   786     public static final ElementName MMULTISCRIPTS = new ElementName("mmultiscripts", "mmultiscripts", TreeBuilder.OTHER);
   787     public static final ElementName SCALARPRODUCT = new ElementName("scalarproduct", "scalarproduct", TreeBuilder.OTHER);
   788     public static final ElementName VECTORPRODUCT = new ElementName("vectorproduct", "vectorproduct", TreeBuilder.OTHER);
   789     public static final ElementName ANNOTATION_XML = new ElementName("annotation-xml", "annotation-xml", TreeBuilder.ANNOTATION_XML | SCOPING_AS_MATHML);
   790     public static final ElementName DEFINITION_SRC = new ElementName("definition-src", "definition-src", TreeBuilder.OTHER);
   791     public static final ElementName FONT_FACE_NAME = new ElementName("font-face-name", "font-face-name", TreeBuilder.OTHER);
   792     public static final ElementName FEGAUSSIANBLUR = new ElementName("fegaussianblur", "feGaussianBlur", TreeBuilder.OTHER);
   793     public static final ElementName FEDISTANTLIGHT = new ElementName("fedistantlight", "feDistantLight", TreeBuilder.OTHER);
   794     public static final ElementName LINEARGRADIENT = new ElementName("lineargradient", "linearGradient", TreeBuilder.OTHER);
   795     public static final ElementName NATURALNUMBERS = new ElementName("naturalnumbers", "naturalnumbers", TreeBuilder.OTHER);
   796     public static final ElementName RADIALGRADIENT = new ElementName("radialgradient", "radialGradient", TreeBuilder.OTHER);
   797     public static final ElementName ANIMATETRANSFORM = new ElementName("animatetransform", "animateTransform", TreeBuilder.OTHER);
   798     public static final ElementName CARTESIANPRODUCT = new ElementName("cartesianproduct", "cartesianproduct", TreeBuilder.OTHER);
   799     public static final ElementName FONT_FACE_FORMAT = new ElementName("font-face-format", "font-face-format", TreeBuilder.OTHER);
   800     public static final ElementName FECONVOLVEMATRIX = new ElementName("feconvolvematrix", "feConvolveMatrix", TreeBuilder.OTHER);
   801     public static final ElementName FEDIFFUSELIGHTING = new ElementName("fediffuselighting", "feDiffuseLighting", TreeBuilder.OTHER);
   802     public static final ElementName FEDISPLACEMENTMAP = new ElementName("fedisplacementmap", "feDisplacementMap", TreeBuilder.OTHER);
   803     public static final ElementName FESPECULARLIGHTING = new ElementName("fespecularlighting", "feSpecularLighting", TreeBuilder.OTHER);
   804     public static final ElementName DOMAINOFAPPLICATION = new ElementName("domainofapplication", "domainofapplication", TreeBuilder.OTHER);
   805     public static final ElementName FECOMPONENTTRANSFER = new ElementName("fecomponenttransfer", "feComponentTransfer", TreeBuilder.OTHER);
   806     private final static @NoLength ElementName[] ELEMENT_NAMES = {
   807     A,
   808     B,
   809     G,
   810     I,
   811     P,
   812     Q,
   813     S,
   814     U,
   815     BR,
   816     CI,
   817     CN,
   818     DD,
   819     DL,
   820     DT,
   821     EM,
   822     EQ,
   823     FN,
   824     H1,
   825     H2,
   826     H3,
   827     H4,
   828     H5,
   829     H6,
   830     GT,
   831     HR,
   832     IN,
   833     LI,
   834     LN,
   835     LT,
   836     MI,
   837     MN,
   838     MO,
   839     MS,
   840     OL,
   841     OR,
   842     PI,
   843     RP,
   844     RT,
   845     TD,
   846     TH,
   847     TR,
   848     TT,
   849     UL,
   850     AND,
   851     ARG,
   852     ABS,
   853     BIG,
   854     BDO,
   855     CSC,
   856     COL,
   857     COS,
   858     COT,
   859     DEL,
   860     DFN,
   861     DIR,
   862     DIV,
   863     EXP,
   864     GCD,
   865     GEQ,
   866     IMG,
   867     INS,
   868     INT,
   869     KBD,
   870     LOG,
   871     LCM,
   872     LEQ,
   873     MTD,
   874     MIN,
   875     MAP,
   876     MTR,
   877     MAX,
   878     NEQ,
   879     NOT,
   880     NAV,
   881     PRE,
   882     REM,
   883     SUB,
   884     SEC,
   885     SVG,
   886     SUM,
   887     SIN,
   888     SEP,
   889     SUP,
   890     SET,
   891     TAN,
   892     USE,
   893     VAR,
   894     WBR,
   895     XMP,
   896     XOR,
   897     AREA,
   898     ABBR,
   899     BASE,
   900     BVAR,
   901     BODY,
   902     CARD,
   903     CODE,
   904     CITE,
   905     CSCH,
   906     COSH,
   907     COTH,
   908     CURL,
   909     DESC,
   910     DIFF,
   911     DEFS,
   912     FORM,
   913     FONT,
   914     GRAD,
   915     HEAD,
   916     HTML,
   917     LINE,
   918     LINK,
   919     LIST,
   920     META,
   921     MSUB,
   922     MODE,
   923     MATH,
   924     MARK,
   925     MASK,
   926     MEAN,
   927     MAIN,
   928     MSUP,
   929     MENU,
   930     MROW,
   931     NONE,
   932     NOBR,
   933     NEST,
   934     PATH,
   935     PLUS,
   936     RULE,
   937     REAL,
   938     RELN,
   939     RECT,
   940     ROOT,
   941     RUBY,
   942     SECH,
   943     SINH,
   944     SPAN,
   945     SAMP,
   946     STOP,
   947     SDEV,
   948     TIME,
   949     TRUE,
   950     TREF,
   951     TANH,
   952     TEXT,
   953     VIEW,
   954     ASIDE,
   955     AUDIO,
   956     APPLY,
   957     EMBED,
   958     FRAME,
   959     FALSE,
   960     FLOOR,
   961     GLYPH,
   962     HKERN,
   963     IMAGE,
   964     IDENT,
   965     INPUT,
   966     LABEL,
   967     LIMIT,
   968     MFRAC,
   969     MPATH,
   970     METER,
   971     MOVER,
   972     MINUS,
   973     MROOT,
   974     MSQRT,
   975     MTEXT,
   976     NOTIN,
   977     PIECE,
   978     PARAM,
   979     POWER,
   980     REALS,
   981     STYLE,
   982     SMALL,
   983     THEAD,
   984     TABLE,
   985     TITLE,
   986     TRACK,
   987     TSPAN,
   988     TIMES,
   989     TFOOT,
   990     TBODY,
   991     UNION,
   992     VKERN,
   993     VIDEO,
   994     ARCSEC,
   995     ARCCSC,
   996     ARCTAN,
   997     ARCSIN,
   998     ARCCOS,
   999     APPLET,
  1000     ARCCOT,
  1001     APPROX,
  1002     BUTTON,
  1003     CIRCLE,
  1004     CENTER,
  1005     CURSOR,
  1006     CANVAS,
  1007     DIVIDE,
  1008     DEGREE,
  1009     DOMAIN,
  1010     EXISTS,
  1011     FETILE,
  1012     FIGURE,
  1013     FORALL,
  1014     FILTER,
  1015     FOOTER,
  1016     HGROUP,
  1017     HEADER,
  1018     IFRAME,
  1019     KEYGEN,
  1020     LAMBDA,
  1021     LEGEND,
  1022     MSPACE,
  1023     MTABLE,
  1024     MSTYLE,
  1025     MGLYPH,
  1026     MEDIAN,
  1027     MUNDER,
  1028     MARKER,
  1029     MERROR,
  1030     MOMENT,
  1031     MATRIX,
  1032     OPTION,
  1033     OBJECT,
  1034     OUTPUT,
  1035     PRIMES,
  1036     SOURCE,
  1037     STRIKE,
  1038     STRONG,
  1039     SWITCH,
  1040     SYMBOL,
  1041     SELECT,
  1042     SUBSET,
  1043     SCRIPT,
  1044     TBREAK,
  1045     VECTOR,
  1046     ARTICLE,
  1047     ANIMATE,
  1048     ARCSECH,
  1049     ARCCSCH,
  1050     ARCTANH,
  1051     ARCSINH,
  1052     ARCCOSH,
  1053     ARCCOTH,
  1054     ACRONYM,
  1055     ADDRESS,
  1056     BGSOUND,
  1057     COMPOSE,
  1058     CEILING,
  1059     CSYMBOL,
  1060     CAPTION,
  1061     DISCARD,
  1062     DECLARE,
  1063     DETAILS,
  1064     ELLIPSE,
  1065     FEFUNCA,
  1066     FEFUNCB,
  1067     FEBLEND,
  1068     FEFLOOD,
  1069     FEIMAGE,
  1070     FEMERGE,
  1071     FEFUNCG,
  1072     FEFUNCR,
  1073     HANDLER,
  1074     INVERSE,
  1075     IMPLIES,
  1076     ISINDEX,
  1077     LOGBASE,
  1078     LISTING,
  1079     MFENCED,
  1080     MPADDED,
  1081     MARQUEE,
  1082     MACTION,
  1083     MSUBSUP,
  1084     NOEMBED,
  1085     POLYGON,
  1086     PATTERN,
  1087     PRODUCT,
  1088     SETDIFF,
  1089     SECTION,
  1090     SUMMARY,
  1091     TENDSTO,
  1092     UPLIMIT,
  1093     ALTGLYPH,
  1094     BASEFONT,
  1095     CLIPPATH,
  1096     CODOMAIN,
  1097     COLGROUP,
  1098     EMPTYSET,
  1099     FACTOROF,
  1100     FIELDSET,
  1101     FRAMESET,
  1102     FEOFFSET,
  1103     GLYPHREF,
  1104     INTERVAL,
  1105     INTEGERS,
  1106     INFINITY,
  1107     LISTENER,
  1108     LOWLIMIT,
  1109     METADATA,
  1110     MENCLOSE,
  1111     MENUITEM,
  1112     MPHANTOM,
  1113     NOFRAMES,
  1114     NOSCRIPT,
  1115     OPTGROUP,
  1116     POLYLINE,
  1117     PREFETCH,
  1118     PROGRESS,
  1119     PRSUBSET,
  1120     QUOTIENT,
  1121     SELECTOR,
  1122     TEXTAREA,
  1123     TEMPLATE,
  1124     TEXTPATH,
  1125     VARIANCE,
  1126     ANIMATION,
  1127     CONJUGATE,
  1128     CONDITION,
  1129     COMPLEXES,
  1130     FONT_FACE,
  1131     FACTORIAL,
  1132     INTERSECT,
  1133     IMAGINARY,
  1134     LAPLACIAN,
  1135     MATRIXROW,
  1136     NOTSUBSET,
  1137     OTHERWISE,
  1138     PIECEWISE,
  1139     PLAINTEXT,
  1140     RATIONALS,
  1141     SEMANTICS,
  1142     TRANSPOSE,
  1143     ANNOTATION,
  1144     BLOCKQUOTE,
  1145     DIVERGENCE,
  1146     EULERGAMMA,
  1147     EQUIVALENT,
  1148     FIGCAPTION,
  1149     IMAGINARYI,
  1150     MALIGNMARK,
  1151     MUNDEROVER,
  1152     MLABELEDTR,
  1153     NOTANUMBER,
  1154     SOLIDCOLOR,
  1155     ALTGLYPHDEF,
  1156     DETERMINANT,
  1157     FEMERGENODE,
  1158     FECOMPOSITE,
  1159     FESPOTLIGHT,
  1160     MALIGNGROUP,
  1161     MPRESCRIPTS,
  1162     MOMENTABOUT,
  1163     NOTPRSUBSET,
  1164     PARTIALDIFF,
  1165     ALTGLYPHITEM,
  1166     ANIMATECOLOR,
  1167     DATATEMPLATE,
  1168     EXPONENTIALE,
  1169     FETURBULENCE,
  1170     FEPOINTLIGHT,
  1171     FEDROPSHADOW,
  1172     FEMORPHOLOGY,
  1173     OUTERPRODUCT,
  1174     ANIMATEMOTION,
  1175     COLOR_PROFILE,
  1176     FONT_FACE_SRC,
  1177     FONT_FACE_URI,
  1178     FOREIGNOBJECT,
  1179     FECOLORMATRIX,
  1180     MISSING_GLYPH,
  1181     MMULTISCRIPTS,
  1182     SCALARPRODUCT,
  1183     VECTORPRODUCT,
  1184     ANNOTATION_XML,
  1185     DEFINITION_SRC,
  1186     FONT_FACE_NAME,
  1187     FEGAUSSIANBLUR,
  1188     FEDISTANTLIGHT,
  1189     LINEARGRADIENT,
  1190     NATURALNUMBERS,
  1191     RADIALGRADIENT,
  1192     ANIMATETRANSFORM,
  1193     CARTESIANPRODUCT,
  1194     FONT_FACE_FORMAT,
  1195     FECONVOLVEMATRIX,
  1196     FEDIFFUSELIGHTING,
  1197     FEDISPLACEMENTMAP,
  1198     FESPECULARLIGHTING,
  1199     DOMAINOFAPPLICATION,
  1200     FECOMPONENTTRANSFER,
  1201     };
  1202     private final static int[] ELEMENT_HASHES = {
  1203     1057,
  1204     1090,
  1205     1255,
  1206     1321,
  1207     1552,
  1208     1585,
  1209     1651,
  1210     1717,
  1211     68162,
  1212     68899,
  1213     69059,
  1214     69764,
  1215     70020,
  1216     70276,
  1217     71077,
  1218     71205,
  1219     72134,
  1220     72232,
  1221     72264,
  1222     72296,
  1223     72328,
  1224     72360,
  1225     72392,
  1226     73351,
  1227     74312,
  1228     75209,
  1229     78124,
  1230     78284,
  1231     78476,
  1232     79149,
  1233     79309,
  1234     79341,
  1235     79469,
  1236     81295,
  1237     81487,
  1238     82224,
  1239     84498,
  1240     84626,
  1241     86164,
  1242     86292,
  1243     86612,
  1244     86676,
  1245     87445,
  1246     3183041,
  1247     3186241,
  1248     3198017,
  1249     3218722,
  1250     3226754,
  1251     3247715,
  1252     3256803,
  1253     3263971,
  1254     3264995,
  1255     3289252,
  1256     3291332,
  1257     3295524,
  1258     3299620,
  1259     3326725,
  1260     3379303,
  1261     3392679,
  1262     3448233,
  1263     3460553,
  1264     3461577,
  1265     3510347,
  1266     3546604,
  1267     3552364,
  1268     3556524,
  1269     3576461,
  1270     3586349,
  1271     3588141,
  1272     3590797,
  1273     3596333,
  1274     3622062,
  1275     3625454,
  1276     3627054,
  1277     3675728,
  1278     3749042,
  1279     3771059,
  1280     3771571,
  1281     3776211,
  1282     3782323,
  1283     3782963,
  1284     3784883,
  1285     3785395,
  1286     3788979,
  1287     3815476,
  1288     3839605,
  1289     3885110,
  1290     3917911,
  1291     3948984,
  1292     3951096,
  1293     135304769,
  1294     135858241,
  1295     136498210,
  1296     136906434,
  1297     137138658,
  1298     137512995,
  1299     137531875,
  1300     137548067,
  1301     137629283,
  1302     137645539,
  1303     137646563,
  1304     137775779,
  1305     138529956,
  1306     138615076,
  1307     139040932,
  1308     140954086,
  1309     141179366,
  1310     141690439,
  1311     142738600,
  1312     143013512,
  1313     146979116,
  1314     147175724,
  1315     147475756,
  1316     147902637,
  1317     147936877,
  1318     148017645,
  1319     148131885,
  1320     148228141,
  1321     148229165,
  1322     148309165,
  1323     148317229,
  1324     148395629,
  1325     148551853,
  1326     148618829,
  1327     149076462,
  1328     149490158,
  1329     149572782,
  1330     151277616,
  1331     151639440,
  1332     153268914,
  1333     153486514,
  1334     153563314,
  1335     153750706,
  1336     153763314,
  1337     153914034,
  1338     154406067,
  1339     154417459,
  1340     154600979,
  1341     154678323,
  1342     154680979,
  1343     154866835,
  1344     155366708,
  1345     155375188,
  1346     155391572,
  1347     155465780,
  1348     155869364,
  1349     158045494,
  1350     168988979,
  1351     169321621,
  1352     169652752,
  1353     173151309,
  1354     174240818,
  1355     174247297,
  1356     174669292,
  1357     175391532,
  1358     176638123,
  1359     177380397,
  1360     177879204,
  1361     177886734,
  1362     180753473,
  1363     181020073,
  1364     181503558,
  1365     181686320,
  1366     181999237,
  1367     181999311,
  1368     182048201,
  1369     182074866,
  1370     182078003,
  1371     182083764,
  1372     182920847,
  1373     184716457,
  1374     184976961,
  1375     185145071,
  1376     187281445,
  1377     187872052,
  1378     188100653,
  1379     188875944,
  1380     188919873,
  1381     188920457,
  1382     189107250,
  1383     189203987,
  1384     189371817,
  1385     189414886,
  1386     189567458,
  1387     190266670,
  1388     191318187,
  1389     191337609,
  1390     202479203,
  1391     202493027,
  1392     202835587,
  1393     202843747,
  1394     203013219,
  1395     203036048,
  1396     203045987,
  1397     203177552,
  1398     203898516,
  1399     204648562,
  1400     205067918,
  1401     205078130,
  1402     205096654,
  1403     205689142,
  1404     205690439,
  1405     205988909,
  1406     207213161,
  1407     207794484,
  1408     207800999,
  1409     208023602,
  1410     208213644,
  1411     208213647,
  1412     210261490,
  1413     210310273,
  1414     210940978,
  1415     213325049,
  1416     213946445,
  1417     214055079,
  1418     215125040,
  1419     215134273,
  1420     215135028,
  1421     215237420,
  1422     215418148,
  1423     215553166,
  1424     215553394,
  1425     215563858,
  1426     215627949,
  1427     215754324,
  1428     217529652,
  1429     217713834,
  1430     217732628,
  1431     218731945,
  1432     221417045,
  1433     221424946,
  1434     221493746,
  1435     221515401,
  1436     221658189,
  1437     221908140,
  1438     221910626,
  1439     221921586,
  1440     222659762,
  1441     225001091,
  1442     236105833,
  1443     236113965,
  1444     236194995,
  1445     236195427,
  1446     236206132,
  1447     236206387,
  1448     236211683,
  1449     236212707,
  1450     236381647,
  1451     236571826,
  1452     237124271,
  1453     238210544,
  1454     238270764,
  1455     238435405,
  1456     238501172,
  1457     239224867,
  1458     239257644,
  1459     239710497,
  1460     240307721,
  1461     241208789,
  1462     241241557,
  1463     241318060,
  1464     241319404,
  1465     241343533,
  1466     241344069,
  1467     241405397,
  1468     241765845,
  1469     243864964,
  1470     244502085,
  1471     244946220,
  1472     245109902,
  1473     247647266,
  1474     247707956,
  1475     248648814,
  1476     248648836,
  1477     248682161,
  1478     248986932,
  1479     249058914,
  1480     249697357,
  1481     252132601,
  1482     252135604,
  1483     252317348,
  1484     255007012,
  1485     255278388,
  1486     255641645,
  1487     256365156,
  1488     257566121,
  1489     269763372,
  1490     271202790,
  1491     271863856,
  1492     272049197,
  1493     272127474,
  1494     274339449,
  1495     274939471,
  1496     275388004,
  1497     275388005,
  1498     275388006,
  1499     275977800,
  1500     278267602,
  1501     278513831,
  1502     278712622,
  1503     281613765,
  1504     281683369,
  1505     282120228,
  1506     282250732,
  1507     282498697,
  1508     282508942,
  1509     283743649,
  1510     283787570,
  1511     284710386,
  1512     285391148,
  1513     285478533,
  1514     285854898,
  1515     285873762,
  1516     286931113,
  1517     288964227,
  1518     289445441,
  1519     289591340,
  1520     289689648,
  1521     291671489,
  1522     303512884,
  1523     305319975,
  1524     305610036,
  1525     305764101,
  1526     308448294,
  1527     308675890,
  1528     312085683,
  1529     312264750,
  1530     315032867,
  1531     316391000,
  1532     317331042,
  1533     317902135,
  1534     318950711,
  1535     319447220,
  1536     321499182,
  1537     322538804,
  1538     323145200,
  1539     337067316,
  1540     337826293,
  1541     339905989,
  1542     340833697,
  1543     341457068,
  1544     342310196,
  1545     345302593,
  1546     349554733,
  1547     349771471,
  1548     349786245,
  1549     350819405,
  1550     356072847,
  1551     370349192,
  1552     373962798,
  1553     375558638,
  1554     375574835,
  1555     376053993,
  1556     383276530,
  1557     383373833,
  1558     383407586,
  1559     384439906,
  1560     386079012,
  1561     404133513,
  1562     404307343,
  1563     407031852,
  1564     408072233,
  1565     409112005,
  1566     409608425,
  1567     409713793,
  1568     409771500,
  1569     419040932,
  1570     437730612,
  1571     439529766,
  1572     442616365,
  1573     442813037,
  1574     443157674,
  1575     443295316,
  1576     450118444,
  1577     450482697,
  1578     456789668,
  1579     459935396,
  1580     471217869,
  1581     474073645,
  1582     476230702,
  1583     476665218,
  1584     476717289,
  1585     483014825,
  1586     485083298,
  1587     489306281,
  1588     538364390,
  1589     540675748,
  1590     543819186,
  1591     543958612,
  1592     576960820,
  1593     577242548,
  1594     610515252,
  1595     642202932,
  1596     644420819,
  1597     };

mercurial