michael@0: /* michael@0: * Copyright (c) 2008-2014 Mozilla Foundation michael@0: * michael@0: * Permission is hereby granted, free of charge, to any person obtaining a michael@0: * copy of this software and associated documentation files (the "Software"), michael@0: * to deal in the Software without restriction, including without limitation michael@0: * the rights to use, copy, modify, merge, publish, distribute, sublicense, michael@0: * and/or sell copies of the Software, and to permit persons to whom the michael@0: * Software is furnished to do so, subject to the following conditions: michael@0: * michael@0: * The above copyright notice and this permission notice shall be included in michael@0: * all copies or substantial portions of the Software. michael@0: * michael@0: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR michael@0: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, michael@0: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL michael@0: * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER michael@0: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING michael@0: * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER michael@0: * DEALINGS IN THE SOFTWARE. michael@0: */ michael@0: michael@0: package nu.validator.htmlparser.impl; michael@0: michael@0: import java.util.Arrays; michael@0: michael@0: import nu.validator.htmlparser.annotation.Inline; michael@0: import nu.validator.htmlparser.annotation.Local; michael@0: import nu.validator.htmlparser.annotation.NoLength; michael@0: import nu.validator.htmlparser.annotation.Virtual; michael@0: import nu.validator.htmlparser.common.Interner; michael@0: michael@0: public final class ElementName michael@0: // uncomment when regenerating self michael@0: // implements Comparable michael@0: { michael@0: michael@0: /** michael@0: * The mask for extracting the dispatch group. michael@0: */ michael@0: public static final int GROUP_MASK = 127; michael@0: michael@0: /** michael@0: * Indicates that the element is not a pre-interned element. Forbidden michael@0: * on preinterned elements. michael@0: */ michael@0: public static final int CUSTOM = (1 << 30); michael@0: michael@0: /** michael@0: * Indicates that the element is in the "special" category. This bit michael@0: * should not be pre-set on MathML or SVG specials--only on HTML specials. michael@0: */ michael@0: public static final int SPECIAL = (1 << 29); michael@0: michael@0: /** michael@0: * The element is foster-parenting. This bit should be pre-set on elements michael@0: * that are foster-parenting as HTML. michael@0: */ michael@0: public static final int FOSTER_PARENTING = (1 << 28); michael@0: michael@0: /** michael@0: * The element is scoping. This bit should be pre-set on elements michael@0: * that are scoping as HTML. michael@0: */ michael@0: public static final int SCOPING = (1 << 27); michael@0: michael@0: /** michael@0: * The element is scoping as SVG. michael@0: */ michael@0: public static final int SCOPING_AS_SVG = (1 << 26); michael@0: michael@0: /** michael@0: * The element is scoping as MathML. michael@0: */ michael@0: public static final int SCOPING_AS_MATHML = (1 << 25); michael@0: michael@0: /** michael@0: * The element is an HTML integration point. michael@0: */ michael@0: public static final int HTML_INTEGRATION_POINT = (1 << 24); michael@0: michael@0: /** michael@0: * The element has an optional end tag. michael@0: */ michael@0: public static final int OPTIONAL_END_TAG = (1 << 23); michael@0: michael@0: public static final ElementName NULL_ELEMENT_NAME = new ElementName(null); michael@0: michael@0: public final @Local String name; michael@0: michael@0: public final @Local String camelCaseName; michael@0: michael@0: /** michael@0: * The lowest 7 bits are the dispatch group. The high bits are flags. michael@0: */ michael@0: public final int flags; michael@0: michael@0: @Inline public int getFlags() { michael@0: return flags; michael@0: } michael@0: michael@0: public int getGroup() { michael@0: return flags & GROUP_MASK; michael@0: } michael@0: michael@0: public boolean isCustom() { michael@0: return (flags & CUSTOM) != 0; michael@0: } michael@0: michael@0: static ElementName elementNameByBuffer(@NoLength char[] buf, int offset, int length, Interner interner) { michael@0: int hash = ElementName.bufToHash(buf, length); michael@0: int index = Arrays.binarySearch(ElementName.ELEMENT_HASHES, hash); michael@0: if (index < 0) { michael@0: return new ElementName(Portability.newLocalNameFromBuffer(buf, offset, length, interner)); michael@0: } else { michael@0: ElementName elementName = ElementName.ELEMENT_NAMES[index]; michael@0: @Local String name = elementName.name; michael@0: if (!Portability.localEqualsBuffer(name, buf, offset, length)) { michael@0: return new ElementName(Portability.newLocalNameFromBuffer(buf, michael@0: offset, length, interner)); michael@0: } michael@0: return elementName; michael@0: } michael@0: } michael@0: michael@0: /** michael@0: * This method has to return a unique integer for each well-known michael@0: * lower-cased element name. michael@0: * michael@0: * @param buf michael@0: * @param len michael@0: * @return michael@0: */ michael@0: private static int bufToHash(@NoLength char[] buf, int len) { michael@0: int hash = len; michael@0: hash <<= 5; michael@0: hash += buf[0] - 0x60; michael@0: int j = len; michael@0: for (int i = 0; i < 4 && j > 0; i++) { michael@0: j--; michael@0: hash <<= 5; michael@0: hash += buf[j] - 0x60; michael@0: } michael@0: return hash; michael@0: } michael@0: michael@0: private ElementName(@Local String name, @Local String camelCaseName, michael@0: int flags) { michael@0: this.name = name; michael@0: this.camelCaseName = camelCaseName; michael@0: this.flags = flags; michael@0: } michael@0: michael@0: protected ElementName(@Local String name) { michael@0: this.name = name; michael@0: this.camelCaseName = name; michael@0: this.flags = TreeBuilder.OTHER | CUSTOM; michael@0: } michael@0: michael@0: @Virtual void release() { michael@0: // No-op in Java. michael@0: // Implement as delete this in subclass. michael@0: // Be sure to release the local name michael@0: } michael@0: michael@0: @SuppressWarnings("unused") @Virtual private void destructor() { michael@0: } michael@0: michael@0: @Virtual public ElementName cloneElementName(Interner interner) { michael@0: return this; michael@0: } michael@0: michael@0: // START CODE ONLY USED FOR GENERATING CODE uncomment and run to regenerate michael@0: michael@0: // /** michael@0: // * @see java.lang.Object#toString() michael@0: // */ michael@0: // @Override public String toString() { michael@0: // return "(\"" + name + "\", \"" + camelCaseName + "\", " + decomposedFlags() + ")"; michael@0: // } michael@0: // michael@0: // private String decomposedFlags() { michael@0: // StringBuilder buf = new StringBuilder("TreeBuilder."); michael@0: // buf.append(treeBuilderGroupToName()); michael@0: // if ((flags & SPECIAL) != 0) { michael@0: // buf.append(" | SPECIAL"); michael@0: // } michael@0: // if ((flags & FOSTER_PARENTING) != 0) { michael@0: // buf.append(" | FOSTER_PARENTING"); michael@0: // } michael@0: // if ((flags & SCOPING) != 0) { michael@0: // buf.append(" | SCOPING"); michael@0: // } michael@0: // if ((flags & SCOPING_AS_MATHML) != 0) { michael@0: // buf.append(" | SCOPING_AS_MATHML"); michael@0: // } michael@0: // if ((flags & SCOPING_AS_SVG) != 0) { michael@0: // buf.append(" | SCOPING_AS_SVG"); michael@0: // } michael@0: // if ((flags & OPTIONAL_END_TAG) != 0) { michael@0: // buf.append(" | OPTIONAL_END_TAG"); michael@0: // } michael@0: // return buf.toString(); michael@0: // } michael@0: // michael@0: // private String constName() { michael@0: // char[] buf = new char[name.length()]; michael@0: // for (int i = 0; i < name.length(); i++) { michael@0: // char c = name.charAt(i); michael@0: // if (c == '-') { michael@0: // buf[i] = '_'; michael@0: // } else if (c >= '0' && c <= '9') { michael@0: // buf[i] = c; michael@0: // } else { michael@0: // buf[i] = (char) (c - 0x20); michael@0: // } michael@0: // } michael@0: // return new String(buf); michael@0: // } michael@0: // michael@0: // private int hash() { michael@0: // return bufToHash(name.toCharArray(), name.length()); michael@0: // } michael@0: // michael@0: // public int compareTo(ElementName other) { michael@0: // int thisHash = this.hash(); michael@0: // int otherHash = other.hash(); michael@0: // if (thisHash < otherHash) { michael@0: // return -1; michael@0: // } else if (thisHash == otherHash) { michael@0: // return 0; michael@0: // } else { michael@0: // return 1; michael@0: // } michael@0: // } michael@0: // michael@0: // private String treeBuilderGroupToName() { michael@0: // switch (getGroup()) { michael@0: // case TreeBuilder.OTHER: michael@0: // return "OTHER"; michael@0: // case TreeBuilder.A: michael@0: // return "A"; michael@0: // case TreeBuilder.BASE: michael@0: // return "BASE"; michael@0: // case TreeBuilder.BODY: michael@0: // return "BODY"; michael@0: // case TreeBuilder.BR: michael@0: // return "BR"; michael@0: // case TreeBuilder.BUTTON: michael@0: // return "BUTTON"; michael@0: // case TreeBuilder.CAPTION: michael@0: // return "CAPTION"; michael@0: // case TreeBuilder.COL: michael@0: // return "COL"; michael@0: // case TreeBuilder.COLGROUP: michael@0: // return "COLGROUP"; michael@0: // case TreeBuilder.FONT: michael@0: // return "FONT"; michael@0: // case TreeBuilder.FORM: michael@0: // return "FORM"; michael@0: // case TreeBuilder.FRAME: michael@0: // return "FRAME"; michael@0: // case TreeBuilder.FRAMESET: michael@0: // return "FRAMESET"; michael@0: // case TreeBuilder.IMAGE: michael@0: // return "IMAGE"; michael@0: // case TreeBuilder.INPUT: michael@0: // return "INPUT"; michael@0: // case TreeBuilder.ISINDEX: michael@0: // return "ISINDEX"; michael@0: // case TreeBuilder.LI: michael@0: // return "LI"; michael@0: // case TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND: michael@0: // return "LINK_OR_BASEFONT_OR_BGSOUND"; michael@0: // case TreeBuilder.MATH: michael@0: // return "MATH"; michael@0: // case TreeBuilder.META: michael@0: // return "META"; michael@0: // case TreeBuilder.SVG: michael@0: // return "SVG"; michael@0: // case TreeBuilder.HEAD: michael@0: // return "HEAD"; michael@0: // case TreeBuilder.HR: michael@0: // return "HR"; michael@0: // case TreeBuilder.HTML: michael@0: // return "HTML"; michael@0: // case TreeBuilder.KEYGEN: michael@0: // return "KEYGEN"; michael@0: // case TreeBuilder.NOBR: michael@0: // return "NOBR"; michael@0: // case TreeBuilder.NOFRAMES: michael@0: // return "NOFRAMES"; michael@0: // case TreeBuilder.NOSCRIPT: michael@0: // return "NOSCRIPT"; michael@0: // case TreeBuilder.OPTGROUP: michael@0: // return "OPTGROUP"; michael@0: // case TreeBuilder.OPTION: michael@0: // return "OPTION"; michael@0: // case TreeBuilder.P: michael@0: // return "P"; michael@0: // case TreeBuilder.PLAINTEXT: michael@0: // return "PLAINTEXT"; michael@0: // case TreeBuilder.SCRIPT: michael@0: // return "SCRIPT"; michael@0: // case TreeBuilder.SELECT: michael@0: // return "SELECT"; michael@0: // case TreeBuilder.STYLE: michael@0: // return "STYLE"; michael@0: // case TreeBuilder.TABLE: michael@0: // return "TABLE"; michael@0: // case TreeBuilder.TEXTAREA: michael@0: // return "TEXTAREA"; michael@0: // case TreeBuilder.TITLE: michael@0: // return "TITLE"; michael@0: // case TreeBuilder.TEMPLATE: michael@0: // return "TEMPLATE"; michael@0: // case TreeBuilder.TR: michael@0: // return "TR"; michael@0: // case TreeBuilder.XMP: michael@0: // return "XMP"; michael@0: // case TreeBuilder.TBODY_OR_THEAD_OR_TFOOT: michael@0: // return "TBODY_OR_THEAD_OR_TFOOT"; michael@0: // case TreeBuilder.TD_OR_TH: michael@0: // return "TD_OR_TH"; michael@0: // case TreeBuilder.DD_OR_DT: michael@0: // return "DD_OR_DT"; michael@0: // case TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6: michael@0: // return "H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6"; michael@0: // case TreeBuilder.OBJECT: michael@0: // return "OBJECT"; michael@0: // case TreeBuilder.OUTPUT_OR_LABEL: michael@0: // return "OUTPUT_OR_LABEL"; michael@0: // case TreeBuilder.MARQUEE_OR_APPLET: michael@0: // return "MARQUEE_OR_APPLET"; michael@0: // case TreeBuilder.PRE_OR_LISTING: michael@0: // return "PRE_OR_LISTING"; michael@0: // case TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U: michael@0: // return "B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U"; michael@0: // case TreeBuilder.UL_OR_OL_OR_DL: michael@0: // return "UL_OR_OL_OR_DL"; michael@0: // case TreeBuilder.IFRAME: michael@0: // return "IFRAME"; michael@0: // case TreeBuilder.NOEMBED: michael@0: // return "NOEMBED"; michael@0: // case TreeBuilder.EMBED: michael@0: // return "EMBED"; michael@0: // case TreeBuilder.IMG: michael@0: // return "IMG"; michael@0: // case TreeBuilder.AREA_OR_WBR: michael@0: // return "AREA_OR_WBR"; michael@0: // case TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU: michael@0: // return "DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU"; michael@0: // case TreeBuilder.FIELDSET: michael@0: // return "FIELDSET"; michael@0: // 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: michael@0: // 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"; michael@0: // case TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR: michael@0: // return "RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR"; michael@0: // case TreeBuilder.RT_OR_RP: michael@0: // return "RT_OR_RP"; michael@0: // case TreeBuilder.PARAM_OR_SOURCE_OR_TRACK: michael@0: // return "PARAM_OR_SOURCE_OR_TRACK"; michael@0: // case TreeBuilder.MGLYPH_OR_MALIGNMARK: michael@0: // return "MGLYPH_OR_MALIGNMARK"; michael@0: // case TreeBuilder.MI_MO_MN_MS_MTEXT: michael@0: // return "MI_MO_MN_MS_MTEXT"; michael@0: // case TreeBuilder.ANNOTATION_XML: michael@0: // return "ANNOTATION_XML"; michael@0: // case TreeBuilder.FOREIGNOBJECT_OR_DESC: michael@0: // return "FOREIGNOBJECT_OR_DESC"; michael@0: // case TreeBuilder.MENUITEM: michael@0: // return "MENUITEM"; michael@0: // } michael@0: // return null; michael@0: // } michael@0: // michael@0: // /** michael@0: // * Regenerate self michael@0: // * michael@0: // * @param args michael@0: // */ michael@0: // public static void main(String[] args) { michael@0: // Arrays.sort(ELEMENT_NAMES); michael@0: // for (int i = 1; i < ELEMENT_NAMES.length; i++) { michael@0: // if (ELEMENT_NAMES[i].hash() == ELEMENT_NAMES[i - 1].hash()) { michael@0: // System.err.println("Hash collision: " + ELEMENT_NAMES[i].name michael@0: // + ", " + ELEMENT_NAMES[i - 1].name); michael@0: // return; michael@0: // } michael@0: // } michael@0: // for (int i = 0; i < ELEMENT_NAMES.length; i++) { michael@0: // ElementName el = ELEMENT_NAMES[i]; michael@0: // System.out.println("public static final ElementName " michael@0: // + el.constName() + " = new ElementName" + el.toString() michael@0: // + ";"); michael@0: // } michael@0: // System.out.println("private final static @NoLength ElementName[] ELEMENT_NAMES = {"); michael@0: // for (int i = 0; i < ELEMENT_NAMES.length; i++) { michael@0: // ElementName el = ELEMENT_NAMES[i]; michael@0: // System.out.println(el.constName() + ","); michael@0: // } michael@0: // System.out.println("};"); michael@0: // System.out.println("private final static int[] ELEMENT_HASHES = {"); michael@0: // for (int i = 0; i < ELEMENT_NAMES.length; i++) { michael@0: // ElementName el = ELEMENT_NAMES[i]; michael@0: // System.out.println(Integer.toString(el.hash()) + ","); michael@0: // } michael@0: // System.out.println("};"); michael@0: // } michael@0: michael@0: // START GENERATED CODE michael@0: public static final ElementName A = new ElementName("a", "a", TreeBuilder.A); michael@0: 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); michael@0: public static final ElementName G = new ElementName("g", "g", TreeBuilder.OTHER); michael@0: 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); michael@0: public static final ElementName P = new ElementName("p", "p", TreeBuilder.P | SPECIAL | OPTIONAL_END_TAG); michael@0: public static final ElementName Q = new ElementName("q", "q", TreeBuilder.OTHER); michael@0: 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); michael@0: 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); michael@0: public static final ElementName BR = new ElementName("br", "br", TreeBuilder.BR | SPECIAL); michael@0: public static final ElementName CI = new ElementName("ci", "ci", TreeBuilder.OTHER); michael@0: public static final ElementName CN = new ElementName("cn", "cn", TreeBuilder.OTHER); michael@0: public static final ElementName DD = new ElementName("dd", "dd", TreeBuilder.DD_OR_DT | SPECIAL | OPTIONAL_END_TAG); michael@0: public static final ElementName DL = new ElementName("dl", "dl", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL); michael@0: public static final ElementName DT = new ElementName("dt", "dt", TreeBuilder.DD_OR_DT | SPECIAL | OPTIONAL_END_TAG); michael@0: 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); michael@0: public static final ElementName EQ = new ElementName("eq", "eq", TreeBuilder.OTHER); michael@0: public static final ElementName FN = new ElementName("fn", "fn", TreeBuilder.OTHER); michael@0: public static final ElementName H1 = new ElementName("h1", "h1", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); michael@0: public static final ElementName H2 = new ElementName("h2", "h2", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); michael@0: public static final ElementName H3 = new ElementName("h3", "h3", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); michael@0: public static final ElementName H4 = new ElementName("h4", "h4", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); michael@0: public static final ElementName H5 = new ElementName("h5", "h5", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); michael@0: public static final ElementName H6 = new ElementName("h6", "h6", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); michael@0: public static final ElementName GT = new ElementName("gt", "gt", TreeBuilder.OTHER); michael@0: public static final ElementName HR = new ElementName("hr", "hr", TreeBuilder.HR | SPECIAL); michael@0: public static final ElementName IN = new ElementName("in", "in", TreeBuilder.OTHER); michael@0: public static final ElementName LI = new ElementName("li", "li", TreeBuilder.LI | SPECIAL | OPTIONAL_END_TAG); michael@0: public static final ElementName LN = new ElementName("ln", "ln", TreeBuilder.OTHER); michael@0: public static final ElementName LT = new ElementName("lt", "lt", TreeBuilder.OTHER); michael@0: public static final ElementName MI = new ElementName("mi", "mi", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); michael@0: public static final ElementName MN = new ElementName("mn", "mn", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); michael@0: public static final ElementName MO = new ElementName("mo", "mo", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); michael@0: public static final ElementName MS = new ElementName("ms", "ms", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); michael@0: public static final ElementName OL = new ElementName("ol", "ol", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL); michael@0: public static final ElementName OR = new ElementName("or", "or", TreeBuilder.OTHER); michael@0: public static final ElementName PI = new ElementName("pi", "pi", TreeBuilder.OTHER); michael@0: public static final ElementName RP = new ElementName("rp", "rp", TreeBuilder.RT_OR_RP | OPTIONAL_END_TAG); michael@0: public static final ElementName RT = new ElementName("rt", "rt", TreeBuilder.RT_OR_RP | OPTIONAL_END_TAG); michael@0: public static final ElementName TD = new ElementName("td", "td", TreeBuilder.TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG); michael@0: public static final ElementName TH = new ElementName("th", "th", TreeBuilder.TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG); michael@0: public static final ElementName TR = new ElementName("tr", "tr", TreeBuilder.TR | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); michael@0: 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); michael@0: public static final ElementName UL = new ElementName("ul", "ul", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL); michael@0: public static final ElementName AND = new ElementName("and", "and", TreeBuilder.OTHER); michael@0: public static final ElementName ARG = new ElementName("arg", "arg", TreeBuilder.OTHER); michael@0: public static final ElementName ABS = new ElementName("abs", "abs", TreeBuilder.OTHER); michael@0: 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); michael@0: public static final ElementName BDO = new ElementName("bdo", "bdo", TreeBuilder.OTHER); michael@0: public static final ElementName CSC = new ElementName("csc", "csc", TreeBuilder.OTHER); michael@0: public static final ElementName COL = new ElementName("col", "col", TreeBuilder.COL | SPECIAL); michael@0: public static final ElementName COS = new ElementName("cos", "cos", TreeBuilder.OTHER); michael@0: public static final ElementName COT = new ElementName("cot", "cot", TreeBuilder.OTHER); michael@0: public static final ElementName DEL = new ElementName("del", "del", TreeBuilder.OTHER); michael@0: public static final ElementName DFN = new ElementName("dfn", "dfn", TreeBuilder.OTHER); michael@0: 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); michael@0: public static final ElementName DIV = new ElementName("div", "div", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); michael@0: public static final ElementName EXP = new ElementName("exp", "exp", TreeBuilder.OTHER); michael@0: public static final ElementName GCD = new ElementName("gcd", "gcd", TreeBuilder.OTHER); michael@0: public static final ElementName GEQ = new ElementName("geq", "geq", TreeBuilder.OTHER); michael@0: public static final ElementName IMG = new ElementName("img", "img", TreeBuilder.IMG | SPECIAL); michael@0: public static final ElementName INS = new ElementName("ins", "ins", TreeBuilder.OTHER); michael@0: public static final ElementName INT = new ElementName("int", "int", TreeBuilder.OTHER); michael@0: public static final ElementName KBD = new ElementName("kbd", "kbd", TreeBuilder.OTHER); michael@0: public static final ElementName LOG = new ElementName("log", "log", TreeBuilder.OTHER); michael@0: public static final ElementName LCM = new ElementName("lcm", "lcm", TreeBuilder.OTHER); michael@0: public static final ElementName LEQ = new ElementName("leq", "leq", TreeBuilder.OTHER); michael@0: public static final ElementName MTD = new ElementName("mtd", "mtd", TreeBuilder.OTHER); michael@0: public static final ElementName MIN = new ElementName("min", "min", TreeBuilder.OTHER); michael@0: public static final ElementName MAP = new ElementName("map", "map", TreeBuilder.OTHER); michael@0: public static final ElementName MTR = new ElementName("mtr", "mtr", TreeBuilder.OTHER); michael@0: public static final ElementName MAX = new ElementName("max", "max", TreeBuilder.OTHER); michael@0: public static final ElementName NEQ = new ElementName("neq", "neq", TreeBuilder.OTHER); michael@0: public static final ElementName NOT = new ElementName("not", "not", TreeBuilder.OTHER); michael@0: 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); michael@0: public static final ElementName PRE = new ElementName("pre", "pre", TreeBuilder.PRE_OR_LISTING | SPECIAL); michael@0: public static final ElementName REM = new ElementName("rem", "rem", TreeBuilder.OTHER); michael@0: public static final ElementName SUB = new ElementName("sub", "sub", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); michael@0: public static final ElementName SEC = new ElementName("sec", "sec", TreeBuilder.OTHER); michael@0: public static final ElementName SVG = new ElementName("svg", "svg", TreeBuilder.SVG); michael@0: public static final ElementName SUM = new ElementName("sum", "sum", TreeBuilder.OTHER); michael@0: public static final ElementName SIN = new ElementName("sin", "sin", TreeBuilder.OTHER); michael@0: public static final ElementName SEP = new ElementName("sep", "sep", TreeBuilder.OTHER); michael@0: public static final ElementName SUP = new ElementName("sup", "sup", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); michael@0: public static final ElementName SET = new ElementName("set", "set", TreeBuilder.OTHER); michael@0: public static final ElementName TAN = new ElementName("tan", "tan", TreeBuilder.OTHER); michael@0: public static final ElementName USE = new ElementName("use", "use", TreeBuilder.OTHER); michael@0: public static final ElementName VAR = new ElementName("var", "var", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); michael@0: public static final ElementName WBR = new ElementName("wbr", "wbr", TreeBuilder.AREA_OR_WBR | SPECIAL); michael@0: public static final ElementName XMP = new ElementName("xmp", "xmp", TreeBuilder.XMP | SPECIAL); michael@0: public static final ElementName XOR = new ElementName("xor", "xor", TreeBuilder.OTHER); michael@0: public static final ElementName AREA = new ElementName("area", "area", TreeBuilder.AREA_OR_WBR | SPECIAL); michael@0: public static final ElementName ABBR = new ElementName("abbr", "abbr", TreeBuilder.OTHER); michael@0: public static final ElementName BASE = new ElementName("base", "base", TreeBuilder.BASE | SPECIAL); michael@0: public static final ElementName BVAR = new ElementName("bvar", "bvar", TreeBuilder.OTHER); michael@0: public static final ElementName BODY = new ElementName("body", "body", TreeBuilder.BODY | SPECIAL | OPTIONAL_END_TAG); michael@0: public static final ElementName CARD = new ElementName("card", "card", TreeBuilder.OTHER); michael@0: 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); michael@0: public static final ElementName CITE = new ElementName("cite", "cite", TreeBuilder.OTHER); michael@0: public static final ElementName CSCH = new ElementName("csch", "csch", TreeBuilder.OTHER); michael@0: public static final ElementName COSH = new ElementName("cosh", "cosh", TreeBuilder.OTHER); michael@0: public static final ElementName COTH = new ElementName("coth", "coth", TreeBuilder.OTHER); michael@0: public static final ElementName CURL = new ElementName("curl", "curl", TreeBuilder.OTHER); michael@0: public static final ElementName DESC = new ElementName("desc", "desc", TreeBuilder.FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG); michael@0: public static final ElementName DIFF = new ElementName("diff", "diff", TreeBuilder.OTHER); michael@0: public static final ElementName DEFS = new ElementName("defs", "defs", TreeBuilder.OTHER); michael@0: public static final ElementName FORM = new ElementName("form", "form", TreeBuilder.FORM | SPECIAL); michael@0: public static final ElementName FONT = new ElementName("font", "font", TreeBuilder.FONT); michael@0: public static final ElementName GRAD = new ElementName("grad", "grad", TreeBuilder.OTHER); michael@0: public static final ElementName HEAD = new ElementName("head", "head", TreeBuilder.HEAD | SPECIAL | OPTIONAL_END_TAG); michael@0: public static final ElementName HTML = new ElementName("html", "html", TreeBuilder.HTML | SPECIAL | SCOPING | OPTIONAL_END_TAG); michael@0: public static final ElementName LINE = new ElementName("line", "line", TreeBuilder.OTHER); michael@0: public static final ElementName LINK = new ElementName("link", "link", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); michael@0: public static final ElementName LIST = new ElementName("list", "list", TreeBuilder.OTHER); michael@0: public static final ElementName META = new ElementName("meta", "meta", TreeBuilder.META | SPECIAL); michael@0: public static final ElementName MSUB = new ElementName("msub", "msub", TreeBuilder.OTHER); michael@0: public static final ElementName MODE = new ElementName("mode", "mode", TreeBuilder.OTHER); michael@0: public static final ElementName MATH = new ElementName("math", "math", TreeBuilder.MATH); michael@0: public static final ElementName MARK = new ElementName("mark", "mark", TreeBuilder.OTHER); michael@0: public static final ElementName MASK = new ElementName("mask", "mask", TreeBuilder.OTHER); michael@0: public static final ElementName MEAN = new ElementName("mean", "mean", TreeBuilder.OTHER); michael@0: 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); michael@0: public static final ElementName MSUP = new ElementName("msup", "msup", TreeBuilder.OTHER); michael@0: public static final ElementName MENU = new ElementName("menu", "menu", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); michael@0: public static final ElementName MROW = new ElementName("mrow", "mrow", TreeBuilder.OTHER); michael@0: public static final ElementName NONE = new ElementName("none", "none", TreeBuilder.OTHER); michael@0: public static final ElementName NOBR = new ElementName("nobr", "nobr", TreeBuilder.NOBR); michael@0: public static final ElementName NEST = new ElementName("nest", "nest", TreeBuilder.OTHER); michael@0: public static final ElementName PATH = new ElementName("path", "path", TreeBuilder.OTHER); michael@0: public static final ElementName PLUS = new ElementName("plus", "plus", TreeBuilder.OTHER); michael@0: public static final ElementName RULE = new ElementName("rule", "rule", TreeBuilder.OTHER); michael@0: public static final ElementName REAL = new ElementName("real", "real", TreeBuilder.OTHER); michael@0: public static final ElementName RELN = new ElementName("reln", "reln", TreeBuilder.OTHER); michael@0: public static final ElementName RECT = new ElementName("rect", "rect", TreeBuilder.OTHER); michael@0: public static final ElementName ROOT = new ElementName("root", "root", TreeBuilder.OTHER); michael@0: public static final ElementName RUBY = new ElementName("ruby", "ruby", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); michael@0: public static final ElementName SECH = new ElementName("sech", "sech", TreeBuilder.OTHER); michael@0: public static final ElementName SINH = new ElementName("sinh", "sinh", TreeBuilder.OTHER); michael@0: public static final ElementName SPAN = new ElementName("span", "span", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); michael@0: public static final ElementName SAMP = new ElementName("samp", "samp", TreeBuilder.OTHER); michael@0: public static final ElementName STOP = new ElementName("stop", "stop", TreeBuilder.OTHER); michael@0: public static final ElementName SDEV = new ElementName("sdev", "sdev", TreeBuilder.OTHER); michael@0: public static final ElementName TIME = new ElementName("time", "time", TreeBuilder.OTHER); michael@0: public static final ElementName TRUE = new ElementName("true", "true", TreeBuilder.OTHER); michael@0: public static final ElementName TREF = new ElementName("tref", "tref", TreeBuilder.OTHER); michael@0: public static final ElementName TANH = new ElementName("tanh", "tanh", TreeBuilder.OTHER); michael@0: public static final ElementName TEXT = new ElementName("text", "text", TreeBuilder.OTHER); michael@0: public static final ElementName VIEW = new ElementName("view", "view", TreeBuilder.OTHER); michael@0: 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); michael@0: public static final ElementName AUDIO = new ElementName("audio", "audio", TreeBuilder.OTHER); michael@0: public static final ElementName APPLY = new ElementName("apply", "apply", TreeBuilder.OTHER); michael@0: public static final ElementName EMBED = new ElementName("embed", "embed", TreeBuilder.EMBED | SPECIAL); michael@0: public static final ElementName FRAME = new ElementName("frame", "frame", TreeBuilder.FRAME | SPECIAL); michael@0: public static final ElementName FALSE = new ElementName("false", "false", TreeBuilder.OTHER); michael@0: public static final ElementName FLOOR = new ElementName("floor", "floor", TreeBuilder.OTHER); michael@0: public static final ElementName GLYPH = new ElementName("glyph", "glyph", TreeBuilder.OTHER); michael@0: public static final ElementName HKERN = new ElementName("hkern", "hkern", TreeBuilder.OTHER); michael@0: public static final ElementName IMAGE = new ElementName("image", "image", TreeBuilder.IMAGE); michael@0: public static final ElementName IDENT = new ElementName("ident", "ident", TreeBuilder.OTHER); michael@0: public static final ElementName INPUT = new ElementName("input", "input", TreeBuilder.INPUT | SPECIAL); michael@0: public static final ElementName LABEL = new ElementName("label", "label", TreeBuilder.OUTPUT_OR_LABEL); michael@0: public static final ElementName LIMIT = new ElementName("limit", "limit", TreeBuilder.OTHER); michael@0: public static final ElementName MFRAC = new ElementName("mfrac", "mfrac", TreeBuilder.OTHER); michael@0: public static final ElementName MPATH = new ElementName("mpath", "mpath", TreeBuilder.OTHER); michael@0: public static final ElementName METER = new ElementName("meter", "meter", TreeBuilder.OTHER); michael@0: public static final ElementName MOVER = new ElementName("mover", "mover", TreeBuilder.OTHER); michael@0: public static final ElementName MINUS = new ElementName("minus", "minus", TreeBuilder.OTHER); michael@0: public static final ElementName MROOT = new ElementName("mroot", "mroot", TreeBuilder.OTHER); michael@0: public static final ElementName MSQRT = new ElementName("msqrt", "msqrt", TreeBuilder.OTHER); michael@0: public static final ElementName MTEXT = new ElementName("mtext", "mtext", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); michael@0: public static final ElementName NOTIN = new ElementName("notin", "notin", TreeBuilder.OTHER); michael@0: public static final ElementName PIECE = new ElementName("piece", "piece", TreeBuilder.OTHER); michael@0: public static final ElementName PARAM = new ElementName("param", "param", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL); michael@0: public static final ElementName POWER = new ElementName("power", "power", TreeBuilder.OTHER); michael@0: public static final ElementName REALS = new ElementName("reals", "reals", TreeBuilder.OTHER); michael@0: public static final ElementName STYLE = new ElementName("style", "style", TreeBuilder.STYLE | SPECIAL); michael@0: 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); michael@0: public static final ElementName THEAD = new ElementName("thead", "thead", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); michael@0: public static final ElementName TABLE = new ElementName("table", "table", TreeBuilder.TABLE | SPECIAL | FOSTER_PARENTING | SCOPING); michael@0: public static final ElementName TITLE = new ElementName("title", "title", TreeBuilder.TITLE | SPECIAL | SCOPING_AS_SVG); michael@0: public static final ElementName TRACK = new ElementName("track", "track", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL); michael@0: public static final ElementName TSPAN = new ElementName("tspan", "tspan", TreeBuilder.OTHER); michael@0: public static final ElementName TIMES = new ElementName("times", "times", TreeBuilder.OTHER); michael@0: public static final ElementName TFOOT = new ElementName("tfoot", "tfoot", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); michael@0: public static final ElementName TBODY = new ElementName("tbody", "tbody", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); michael@0: public static final ElementName UNION = new ElementName("union", "union", TreeBuilder.OTHER); michael@0: public static final ElementName VKERN = new ElementName("vkern", "vkern", TreeBuilder.OTHER); michael@0: public static final ElementName VIDEO = new ElementName("video", "video", TreeBuilder.OTHER); michael@0: public static final ElementName ARCSEC = new ElementName("arcsec", "arcsec", TreeBuilder.OTHER); michael@0: public static final ElementName ARCCSC = new ElementName("arccsc", "arccsc", TreeBuilder.OTHER); michael@0: public static final ElementName ARCTAN = new ElementName("arctan", "arctan", TreeBuilder.OTHER); michael@0: public static final ElementName ARCSIN = new ElementName("arcsin", "arcsin", TreeBuilder.OTHER); michael@0: public static final ElementName ARCCOS = new ElementName("arccos", "arccos", TreeBuilder.OTHER); michael@0: public static final ElementName APPLET = new ElementName("applet", "applet", TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING); michael@0: public static final ElementName ARCCOT = new ElementName("arccot", "arccot", TreeBuilder.OTHER); michael@0: public static final ElementName APPROX = new ElementName("approx", "approx", TreeBuilder.OTHER); michael@0: public static final ElementName BUTTON = new ElementName("button", "button", TreeBuilder.BUTTON | SPECIAL); michael@0: public static final ElementName CIRCLE = new ElementName("circle", "circle", TreeBuilder.OTHER); michael@0: public static final ElementName CENTER = new ElementName("center", "center", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); michael@0: public static final ElementName CURSOR = new ElementName("cursor", "cursor", TreeBuilder.OTHER); michael@0: public static final ElementName CANVAS = new ElementName("canvas", "canvas", TreeBuilder.OTHER); michael@0: public static final ElementName DIVIDE = new ElementName("divide", "divide", TreeBuilder.OTHER); michael@0: public static final ElementName DEGREE = new ElementName("degree", "degree", TreeBuilder.OTHER); michael@0: public static final ElementName DOMAIN = new ElementName("domain", "domain", TreeBuilder.OTHER); michael@0: public static final ElementName EXISTS = new ElementName("exists", "exists", TreeBuilder.OTHER); michael@0: public static final ElementName FETILE = new ElementName("fetile", "feTile", TreeBuilder.OTHER); michael@0: 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); michael@0: public static final ElementName FORALL = new ElementName("forall", "forall", TreeBuilder.OTHER); michael@0: public static final ElementName FILTER = new ElementName("filter", "filter", TreeBuilder.OTHER); michael@0: 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); michael@0: 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); michael@0: 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); michael@0: public static final ElementName IFRAME = new ElementName("iframe", "iframe", TreeBuilder.IFRAME | SPECIAL); michael@0: public static final ElementName KEYGEN = new ElementName("keygen", "keygen", TreeBuilder.KEYGEN); michael@0: public static final ElementName LAMBDA = new ElementName("lambda", "lambda", TreeBuilder.OTHER); michael@0: public static final ElementName LEGEND = new ElementName("legend", "legend", TreeBuilder.OTHER); michael@0: public static final ElementName MSPACE = new ElementName("mspace", "mspace", TreeBuilder.OTHER); michael@0: public static final ElementName MTABLE = new ElementName("mtable", "mtable", TreeBuilder.OTHER); michael@0: public static final ElementName MSTYLE = new ElementName("mstyle", "mstyle", TreeBuilder.OTHER); michael@0: public static final ElementName MGLYPH = new ElementName("mglyph", "mglyph", TreeBuilder.MGLYPH_OR_MALIGNMARK); michael@0: public static final ElementName MEDIAN = new ElementName("median", "median", TreeBuilder.OTHER); michael@0: public static final ElementName MUNDER = new ElementName("munder", "munder", TreeBuilder.OTHER); michael@0: public static final ElementName MARKER = new ElementName("marker", "marker", TreeBuilder.OTHER); michael@0: public static final ElementName MERROR = new ElementName("merror", "merror", TreeBuilder.OTHER); michael@0: public static final ElementName MOMENT = new ElementName("moment", "moment", TreeBuilder.OTHER); michael@0: public static final ElementName MATRIX = new ElementName("matrix", "matrix", TreeBuilder.OTHER); michael@0: public static final ElementName OPTION = new ElementName("option", "option", TreeBuilder.OPTION | OPTIONAL_END_TAG); michael@0: public static final ElementName OBJECT = new ElementName("object", "object", TreeBuilder.OBJECT | SPECIAL | SCOPING); michael@0: public static final ElementName OUTPUT = new ElementName("output", "output", TreeBuilder.OUTPUT_OR_LABEL); michael@0: public static final ElementName PRIMES = new ElementName("primes", "primes", TreeBuilder.OTHER); michael@0: public static final ElementName SOURCE = new ElementName("source", "source", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK); michael@0: 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); michael@0: 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); michael@0: public static final ElementName SWITCH = new ElementName("switch", "switch", TreeBuilder.OTHER); michael@0: public static final ElementName SYMBOL = new ElementName("symbol", "symbol", TreeBuilder.OTHER); michael@0: public static final ElementName SELECT = new ElementName("select", "select", TreeBuilder.SELECT | SPECIAL); michael@0: public static final ElementName SUBSET = new ElementName("subset", "subset", TreeBuilder.OTHER); michael@0: public static final ElementName SCRIPT = new ElementName("script", "script", TreeBuilder.SCRIPT | SPECIAL); michael@0: public static final ElementName TBREAK = new ElementName("tbreak", "tbreak", TreeBuilder.OTHER); michael@0: public static final ElementName VECTOR = new ElementName("vector", "vector", TreeBuilder.OTHER); michael@0: 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); michael@0: public static final ElementName ANIMATE = new ElementName("animate", "animate", TreeBuilder.OTHER); michael@0: public static final ElementName ARCSECH = new ElementName("arcsech", "arcsech", TreeBuilder.OTHER); michael@0: public static final ElementName ARCCSCH = new ElementName("arccsch", "arccsch", TreeBuilder.OTHER); michael@0: public static final ElementName ARCTANH = new ElementName("arctanh", "arctanh", TreeBuilder.OTHER); michael@0: public static final ElementName ARCSINH = new ElementName("arcsinh", "arcsinh", TreeBuilder.OTHER); michael@0: public static final ElementName ARCCOSH = new ElementName("arccosh", "arccosh", TreeBuilder.OTHER); michael@0: public static final ElementName ARCCOTH = new ElementName("arccoth", "arccoth", TreeBuilder.OTHER); michael@0: public static final ElementName ACRONYM = new ElementName("acronym", "acronym", TreeBuilder.OTHER); michael@0: 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); michael@0: public static final ElementName BGSOUND = new ElementName("bgsound", "bgsound", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); michael@0: public static final ElementName COMPOSE = new ElementName("compose", "compose", TreeBuilder.OTHER); michael@0: public static final ElementName CEILING = new ElementName("ceiling", "ceiling", TreeBuilder.OTHER); michael@0: public static final ElementName CSYMBOL = new ElementName("csymbol", "csymbol", TreeBuilder.OTHER); michael@0: public static final ElementName CAPTION = new ElementName("caption", "caption", TreeBuilder.CAPTION | SPECIAL | SCOPING); michael@0: public static final ElementName DISCARD = new ElementName("discard", "discard", TreeBuilder.OTHER); michael@0: public static final ElementName DECLARE = new ElementName("declare", "declare", TreeBuilder.OTHER); michael@0: 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); michael@0: public static final ElementName ELLIPSE = new ElementName("ellipse", "ellipse", TreeBuilder.OTHER); michael@0: public static final ElementName FEFUNCA = new ElementName("fefunca", "feFuncA", TreeBuilder.OTHER); michael@0: public static final ElementName FEFUNCB = new ElementName("fefuncb", "feFuncB", TreeBuilder.OTHER); michael@0: public static final ElementName FEBLEND = new ElementName("feblend", "feBlend", TreeBuilder.OTHER); michael@0: public static final ElementName FEFLOOD = new ElementName("feflood", "feFlood", TreeBuilder.OTHER); michael@0: public static final ElementName FEIMAGE = new ElementName("feimage", "feImage", TreeBuilder.OTHER); michael@0: public static final ElementName FEMERGE = new ElementName("femerge", "feMerge", TreeBuilder.OTHER); michael@0: public static final ElementName FEFUNCG = new ElementName("fefuncg", "feFuncG", TreeBuilder.OTHER); michael@0: public static final ElementName FEFUNCR = new ElementName("fefuncr", "feFuncR", TreeBuilder.OTHER); michael@0: public static final ElementName HANDLER = new ElementName("handler", "handler", TreeBuilder.OTHER); michael@0: public static final ElementName INVERSE = new ElementName("inverse", "inverse", TreeBuilder.OTHER); michael@0: public static final ElementName IMPLIES = new ElementName("implies", "implies", TreeBuilder.OTHER); michael@0: public static final ElementName ISINDEX = new ElementName("isindex", "isindex", TreeBuilder.ISINDEX | SPECIAL); michael@0: public static final ElementName LOGBASE = new ElementName("logbase", "logbase", TreeBuilder.OTHER); michael@0: public static final ElementName LISTING = new ElementName("listing", "listing", TreeBuilder.PRE_OR_LISTING | SPECIAL); michael@0: public static final ElementName MFENCED = new ElementName("mfenced", "mfenced", TreeBuilder.OTHER); michael@0: public static final ElementName MPADDED = new ElementName("mpadded", "mpadded", TreeBuilder.OTHER); michael@0: public static final ElementName MARQUEE = new ElementName("marquee", "marquee", TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING); michael@0: public static final ElementName MACTION = new ElementName("maction", "maction", TreeBuilder.OTHER); michael@0: public static final ElementName MSUBSUP = new ElementName("msubsup", "msubsup", TreeBuilder.OTHER); michael@0: public static final ElementName NOEMBED = new ElementName("noembed", "noembed", TreeBuilder.NOEMBED | SPECIAL); michael@0: public static final ElementName POLYGON = new ElementName("polygon", "polygon", TreeBuilder.OTHER); michael@0: public static final ElementName PATTERN = new ElementName("pattern", "pattern", TreeBuilder.OTHER); michael@0: public static final ElementName PRODUCT = new ElementName("product", "product", TreeBuilder.OTHER); michael@0: public static final ElementName SETDIFF = new ElementName("setdiff", "setdiff", TreeBuilder.OTHER); michael@0: 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); michael@0: 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); michael@0: public static final ElementName TENDSTO = new ElementName("tendsto", "tendsto", TreeBuilder.OTHER); michael@0: public static final ElementName UPLIMIT = new ElementName("uplimit", "uplimit", TreeBuilder.OTHER); michael@0: public static final ElementName ALTGLYPH = new ElementName("altglyph", "altGlyph", TreeBuilder.OTHER); michael@0: public static final ElementName BASEFONT = new ElementName("basefont", "basefont", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); michael@0: public static final ElementName CLIPPATH = new ElementName("clippath", "clipPath", TreeBuilder.OTHER); michael@0: public static final ElementName CODOMAIN = new ElementName("codomain", "codomain", TreeBuilder.OTHER); michael@0: public static final ElementName COLGROUP = new ElementName("colgroup", "colgroup", TreeBuilder.COLGROUP | SPECIAL | OPTIONAL_END_TAG); michael@0: public static final ElementName EMPTYSET = new ElementName("emptyset", "emptyset", TreeBuilder.OTHER); michael@0: public static final ElementName FACTOROF = new ElementName("factorof", "factorof", TreeBuilder.OTHER); michael@0: public static final ElementName FIELDSET = new ElementName("fieldset", "fieldset", TreeBuilder.FIELDSET | SPECIAL); michael@0: public static final ElementName FRAMESET = new ElementName("frameset", "frameset", TreeBuilder.FRAMESET | SPECIAL); michael@0: public static final ElementName FEOFFSET = new ElementName("feoffset", "feOffset", TreeBuilder.OTHER); michael@0: public static final ElementName GLYPHREF = new ElementName("glyphref", "glyphRef", TreeBuilder.OTHER); michael@0: public static final ElementName INTERVAL = new ElementName("interval", "interval", TreeBuilder.OTHER); michael@0: public static final ElementName INTEGERS = new ElementName("integers", "integers", TreeBuilder.OTHER); michael@0: public static final ElementName INFINITY = new ElementName("infinity", "infinity", TreeBuilder.OTHER); michael@0: public static final ElementName LISTENER = new ElementName("listener", "listener", TreeBuilder.OTHER); michael@0: public static final ElementName LOWLIMIT = new ElementName("lowlimit", "lowlimit", TreeBuilder.OTHER); michael@0: public static final ElementName METADATA = new ElementName("metadata", "metadata", TreeBuilder.OTHER); michael@0: public static final ElementName MENCLOSE = new ElementName("menclose", "menclose", TreeBuilder.OTHER); michael@0: public static final ElementName MENUITEM = new ElementName("menuitem", "menuitem", TreeBuilder.MENUITEM); michael@0: public static final ElementName MPHANTOM = new ElementName("mphantom", "mphantom", TreeBuilder.OTHER); michael@0: public static final ElementName NOFRAMES = new ElementName("noframes", "noframes", TreeBuilder.NOFRAMES | SPECIAL); michael@0: public static final ElementName NOSCRIPT = new ElementName("noscript", "noscript", TreeBuilder.NOSCRIPT | SPECIAL); michael@0: public static final ElementName OPTGROUP = new ElementName("optgroup", "optgroup", TreeBuilder.OPTGROUP | OPTIONAL_END_TAG); michael@0: public static final ElementName POLYLINE = new ElementName("polyline", "polyline", TreeBuilder.OTHER); michael@0: public static final ElementName PREFETCH = new ElementName("prefetch", "prefetch", TreeBuilder.OTHER); michael@0: public static final ElementName PROGRESS = new ElementName("progress", "progress", TreeBuilder.OTHER); michael@0: public static final ElementName PRSUBSET = new ElementName("prsubset", "prsubset", TreeBuilder.OTHER); michael@0: public static final ElementName QUOTIENT = new ElementName("quotient", "quotient", TreeBuilder.OTHER); michael@0: public static final ElementName SELECTOR = new ElementName("selector", "selector", TreeBuilder.OTHER); michael@0: public static final ElementName TEXTAREA = new ElementName("textarea", "textarea", TreeBuilder.TEXTAREA | SPECIAL); michael@0: public static final ElementName TEMPLATE = new ElementName("template", "template", TreeBuilder.TEMPLATE | SPECIAL | SCOPING); michael@0: public static final ElementName TEXTPATH = new ElementName("textpath", "textPath", TreeBuilder.OTHER); michael@0: public static final ElementName VARIANCE = new ElementName("variance", "variance", TreeBuilder.OTHER); michael@0: public static final ElementName ANIMATION = new ElementName("animation", "animation", TreeBuilder.OTHER); michael@0: public static final ElementName CONJUGATE = new ElementName("conjugate", "conjugate", TreeBuilder.OTHER); michael@0: public static final ElementName CONDITION = new ElementName("condition", "condition", TreeBuilder.OTHER); michael@0: public static final ElementName COMPLEXES = new ElementName("complexes", "complexes", TreeBuilder.OTHER); michael@0: public static final ElementName FONT_FACE = new ElementName("font-face", "font-face", TreeBuilder.OTHER); michael@0: public static final ElementName FACTORIAL = new ElementName("factorial", "factorial", TreeBuilder.OTHER); michael@0: public static final ElementName INTERSECT = new ElementName("intersect", "intersect", TreeBuilder.OTHER); michael@0: public static final ElementName IMAGINARY = new ElementName("imaginary", "imaginary", TreeBuilder.OTHER); michael@0: public static final ElementName LAPLACIAN = new ElementName("laplacian", "laplacian", TreeBuilder.OTHER); michael@0: public static final ElementName MATRIXROW = new ElementName("matrixrow", "matrixrow", TreeBuilder.OTHER); michael@0: public static final ElementName NOTSUBSET = new ElementName("notsubset", "notsubset", TreeBuilder.OTHER); michael@0: public static final ElementName OTHERWISE = new ElementName("otherwise", "otherwise", TreeBuilder.OTHER); michael@0: public static final ElementName PIECEWISE = new ElementName("piecewise", "piecewise", TreeBuilder.OTHER); michael@0: public static final ElementName PLAINTEXT = new ElementName("plaintext", "plaintext", TreeBuilder.PLAINTEXT | SPECIAL); michael@0: public static final ElementName RATIONALS = new ElementName("rationals", "rationals", TreeBuilder.OTHER); michael@0: public static final ElementName SEMANTICS = new ElementName("semantics", "semantics", TreeBuilder.OTHER); michael@0: public static final ElementName TRANSPOSE = new ElementName("transpose", "transpose", TreeBuilder.OTHER); michael@0: public static final ElementName ANNOTATION = new ElementName("annotation", "annotation", TreeBuilder.OTHER); michael@0: public static final ElementName BLOCKQUOTE = new ElementName("blockquote", "blockquote", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); michael@0: public static final ElementName DIVERGENCE = new ElementName("divergence", "divergence", TreeBuilder.OTHER); michael@0: public static final ElementName EULERGAMMA = new ElementName("eulergamma", "eulergamma", TreeBuilder.OTHER); michael@0: public static final ElementName EQUIVALENT = new ElementName("equivalent", "equivalent", TreeBuilder.OTHER); michael@0: 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); michael@0: public static final ElementName IMAGINARYI = new ElementName("imaginaryi", "imaginaryi", TreeBuilder.OTHER); michael@0: public static final ElementName MALIGNMARK = new ElementName("malignmark", "malignmark", TreeBuilder.MGLYPH_OR_MALIGNMARK); michael@0: public static final ElementName MUNDEROVER = new ElementName("munderover", "munderover", TreeBuilder.OTHER); michael@0: public static final ElementName MLABELEDTR = new ElementName("mlabeledtr", "mlabeledtr", TreeBuilder.OTHER); michael@0: public static final ElementName NOTANUMBER = new ElementName("notanumber", "notanumber", TreeBuilder.OTHER); michael@0: public static final ElementName SOLIDCOLOR = new ElementName("solidcolor", "solidcolor", TreeBuilder.OTHER); michael@0: public static final ElementName ALTGLYPHDEF = new ElementName("altglyphdef", "altGlyphDef", TreeBuilder.OTHER); michael@0: public static final ElementName DETERMINANT = new ElementName("determinant", "determinant", TreeBuilder.OTHER); michael@0: public static final ElementName FEMERGENODE = new ElementName("femergenode", "feMergeNode", TreeBuilder.OTHER); michael@0: public static final ElementName FECOMPOSITE = new ElementName("fecomposite", "feComposite", TreeBuilder.OTHER); michael@0: public static final ElementName FESPOTLIGHT = new ElementName("fespotlight", "feSpotLight", TreeBuilder.OTHER); michael@0: public static final ElementName MALIGNGROUP = new ElementName("maligngroup", "maligngroup", TreeBuilder.OTHER); michael@0: public static final ElementName MPRESCRIPTS = new ElementName("mprescripts", "mprescripts", TreeBuilder.OTHER); michael@0: public static final ElementName MOMENTABOUT = new ElementName("momentabout", "momentabout", TreeBuilder.OTHER); michael@0: public static final ElementName NOTPRSUBSET = new ElementName("notprsubset", "notprsubset", TreeBuilder.OTHER); michael@0: public static final ElementName PARTIALDIFF = new ElementName("partialdiff", "partialdiff", TreeBuilder.OTHER); michael@0: public static final ElementName ALTGLYPHITEM = new ElementName("altglyphitem", "altGlyphItem", TreeBuilder.OTHER); michael@0: public static final ElementName ANIMATECOLOR = new ElementName("animatecolor", "animateColor", TreeBuilder.OTHER); michael@0: public static final ElementName DATATEMPLATE = new ElementName("datatemplate", "datatemplate", TreeBuilder.OTHER); michael@0: public static final ElementName EXPONENTIALE = new ElementName("exponentiale", "exponentiale", TreeBuilder.OTHER); michael@0: public static final ElementName FETURBULENCE = new ElementName("feturbulence", "feTurbulence", TreeBuilder.OTHER); michael@0: public static final ElementName FEPOINTLIGHT = new ElementName("fepointlight", "fePointLight", TreeBuilder.OTHER); michael@0: public static final ElementName FEDROPSHADOW = new ElementName("fedropshadow", "feDropShadow", TreeBuilder.OTHER); michael@0: public static final ElementName FEMORPHOLOGY = new ElementName("femorphology", "feMorphology", TreeBuilder.OTHER); michael@0: public static final ElementName OUTERPRODUCT = new ElementName("outerproduct", "outerproduct", TreeBuilder.OTHER); michael@0: public static final ElementName ANIMATEMOTION = new ElementName("animatemotion", "animateMotion", TreeBuilder.OTHER); michael@0: public static final ElementName COLOR_PROFILE = new ElementName("color-profile", "color-profile", TreeBuilder.OTHER); michael@0: public static final ElementName FONT_FACE_SRC = new ElementName("font-face-src", "font-face-src", TreeBuilder.OTHER); michael@0: public static final ElementName FONT_FACE_URI = new ElementName("font-face-uri", "font-face-uri", TreeBuilder.OTHER); michael@0: public static final ElementName FOREIGNOBJECT = new ElementName("foreignobject", "foreignObject", TreeBuilder.FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG); michael@0: public static final ElementName FECOLORMATRIX = new ElementName("fecolormatrix", "feColorMatrix", TreeBuilder.OTHER); michael@0: public static final ElementName MISSING_GLYPH = new ElementName("missing-glyph", "missing-glyph", TreeBuilder.OTHER); michael@0: public static final ElementName MMULTISCRIPTS = new ElementName("mmultiscripts", "mmultiscripts", TreeBuilder.OTHER); michael@0: public static final ElementName SCALARPRODUCT = new ElementName("scalarproduct", "scalarproduct", TreeBuilder.OTHER); michael@0: public static final ElementName VECTORPRODUCT = new ElementName("vectorproduct", "vectorproduct", TreeBuilder.OTHER); michael@0: public static final ElementName ANNOTATION_XML = new ElementName("annotation-xml", "annotation-xml", TreeBuilder.ANNOTATION_XML | SCOPING_AS_MATHML); michael@0: public static final ElementName DEFINITION_SRC = new ElementName("definition-src", "definition-src", TreeBuilder.OTHER); michael@0: public static final ElementName FONT_FACE_NAME = new ElementName("font-face-name", "font-face-name", TreeBuilder.OTHER); michael@0: public static final ElementName FEGAUSSIANBLUR = new ElementName("fegaussianblur", "feGaussianBlur", TreeBuilder.OTHER); michael@0: public static final ElementName FEDISTANTLIGHT = new ElementName("fedistantlight", "feDistantLight", TreeBuilder.OTHER); michael@0: public static final ElementName LINEARGRADIENT = new ElementName("lineargradient", "linearGradient", TreeBuilder.OTHER); michael@0: public static final ElementName NATURALNUMBERS = new ElementName("naturalnumbers", "naturalnumbers", TreeBuilder.OTHER); michael@0: public static final ElementName RADIALGRADIENT = new ElementName("radialgradient", "radialGradient", TreeBuilder.OTHER); michael@0: public static final ElementName ANIMATETRANSFORM = new ElementName("animatetransform", "animateTransform", TreeBuilder.OTHER); michael@0: public static final ElementName CARTESIANPRODUCT = new ElementName("cartesianproduct", "cartesianproduct", TreeBuilder.OTHER); michael@0: public static final ElementName FONT_FACE_FORMAT = new ElementName("font-face-format", "font-face-format", TreeBuilder.OTHER); michael@0: public static final ElementName FECONVOLVEMATRIX = new ElementName("feconvolvematrix", "feConvolveMatrix", TreeBuilder.OTHER); michael@0: public static final ElementName FEDIFFUSELIGHTING = new ElementName("fediffuselighting", "feDiffuseLighting", TreeBuilder.OTHER); michael@0: public static final ElementName FEDISPLACEMENTMAP = new ElementName("fedisplacementmap", "feDisplacementMap", TreeBuilder.OTHER); michael@0: public static final ElementName FESPECULARLIGHTING = new ElementName("fespecularlighting", "feSpecularLighting", TreeBuilder.OTHER); michael@0: public static final ElementName DOMAINOFAPPLICATION = new ElementName("domainofapplication", "domainofapplication", TreeBuilder.OTHER); michael@0: public static final ElementName FECOMPONENTTRANSFER = new ElementName("fecomponenttransfer", "feComponentTransfer", TreeBuilder.OTHER); michael@0: private final static @NoLength ElementName[] ELEMENT_NAMES = { michael@0: A, michael@0: B, michael@0: G, michael@0: I, michael@0: P, michael@0: Q, michael@0: S, michael@0: U, michael@0: BR, michael@0: CI, michael@0: CN, michael@0: DD, michael@0: DL, michael@0: DT, michael@0: EM, michael@0: EQ, michael@0: FN, michael@0: H1, michael@0: H2, michael@0: H3, michael@0: H4, michael@0: H5, michael@0: H6, michael@0: GT, michael@0: HR, michael@0: IN, michael@0: LI, michael@0: LN, michael@0: LT, michael@0: MI, michael@0: MN, michael@0: MO, michael@0: MS, michael@0: OL, michael@0: OR, michael@0: PI, michael@0: RP, michael@0: RT, michael@0: TD, michael@0: TH, michael@0: TR, michael@0: TT, michael@0: UL, michael@0: AND, michael@0: ARG, michael@0: ABS, michael@0: BIG, michael@0: BDO, michael@0: CSC, michael@0: COL, michael@0: COS, michael@0: COT, michael@0: DEL, michael@0: DFN, michael@0: DIR, michael@0: DIV, michael@0: EXP, michael@0: GCD, michael@0: GEQ, michael@0: IMG, michael@0: INS, michael@0: INT, michael@0: KBD, michael@0: LOG, michael@0: LCM, michael@0: LEQ, michael@0: MTD, michael@0: MIN, michael@0: MAP, michael@0: MTR, michael@0: MAX, michael@0: NEQ, michael@0: NOT, michael@0: NAV, michael@0: PRE, michael@0: REM, michael@0: SUB, michael@0: SEC, michael@0: SVG, michael@0: SUM, michael@0: SIN, michael@0: SEP, michael@0: SUP, michael@0: SET, michael@0: TAN, michael@0: USE, michael@0: VAR, michael@0: WBR, michael@0: XMP, michael@0: XOR, michael@0: AREA, michael@0: ABBR, michael@0: BASE, michael@0: BVAR, michael@0: BODY, michael@0: CARD, michael@0: CODE, michael@0: CITE, michael@0: CSCH, michael@0: COSH, michael@0: COTH, michael@0: CURL, michael@0: DESC, michael@0: DIFF, michael@0: DEFS, michael@0: FORM, michael@0: FONT, michael@0: GRAD, michael@0: HEAD, michael@0: HTML, michael@0: LINE, michael@0: LINK, michael@0: LIST, michael@0: META, michael@0: MSUB, michael@0: MODE, michael@0: MATH, michael@0: MARK, michael@0: MASK, michael@0: MEAN, michael@0: MAIN, michael@0: MSUP, michael@0: MENU, michael@0: MROW, michael@0: NONE, michael@0: NOBR, michael@0: NEST, michael@0: PATH, michael@0: PLUS, michael@0: RULE, michael@0: REAL, michael@0: RELN, michael@0: RECT, michael@0: ROOT, michael@0: RUBY, michael@0: SECH, michael@0: SINH, michael@0: SPAN, michael@0: SAMP, michael@0: STOP, michael@0: SDEV, michael@0: TIME, michael@0: TRUE, michael@0: TREF, michael@0: TANH, michael@0: TEXT, michael@0: VIEW, michael@0: ASIDE, michael@0: AUDIO, michael@0: APPLY, michael@0: EMBED, michael@0: FRAME, michael@0: FALSE, michael@0: FLOOR, michael@0: GLYPH, michael@0: HKERN, michael@0: IMAGE, michael@0: IDENT, michael@0: INPUT, michael@0: LABEL, michael@0: LIMIT, michael@0: MFRAC, michael@0: MPATH, michael@0: METER, michael@0: MOVER, michael@0: MINUS, michael@0: MROOT, michael@0: MSQRT, michael@0: MTEXT, michael@0: NOTIN, michael@0: PIECE, michael@0: PARAM, michael@0: POWER, michael@0: REALS, michael@0: STYLE, michael@0: SMALL, michael@0: THEAD, michael@0: TABLE, michael@0: TITLE, michael@0: TRACK, michael@0: TSPAN, michael@0: TIMES, michael@0: TFOOT, michael@0: TBODY, michael@0: UNION, michael@0: VKERN, michael@0: VIDEO, michael@0: ARCSEC, michael@0: ARCCSC, michael@0: ARCTAN, michael@0: ARCSIN, michael@0: ARCCOS, michael@0: APPLET, michael@0: ARCCOT, michael@0: APPROX, michael@0: BUTTON, michael@0: CIRCLE, michael@0: CENTER, michael@0: CURSOR, michael@0: CANVAS, michael@0: DIVIDE, michael@0: DEGREE, michael@0: DOMAIN, michael@0: EXISTS, michael@0: FETILE, michael@0: FIGURE, michael@0: FORALL, michael@0: FILTER, michael@0: FOOTER, michael@0: HGROUP, michael@0: HEADER, michael@0: IFRAME, michael@0: KEYGEN, michael@0: LAMBDA, michael@0: LEGEND, michael@0: MSPACE, michael@0: MTABLE, michael@0: MSTYLE, michael@0: MGLYPH, michael@0: MEDIAN, michael@0: MUNDER, michael@0: MARKER, michael@0: MERROR, michael@0: MOMENT, michael@0: MATRIX, michael@0: OPTION, michael@0: OBJECT, michael@0: OUTPUT, michael@0: PRIMES, michael@0: SOURCE, michael@0: STRIKE, michael@0: STRONG, michael@0: SWITCH, michael@0: SYMBOL, michael@0: SELECT, michael@0: SUBSET, michael@0: SCRIPT, michael@0: TBREAK, michael@0: VECTOR, michael@0: ARTICLE, michael@0: ANIMATE, michael@0: ARCSECH, michael@0: ARCCSCH, michael@0: ARCTANH, michael@0: ARCSINH, michael@0: ARCCOSH, michael@0: ARCCOTH, michael@0: ACRONYM, michael@0: ADDRESS, michael@0: BGSOUND, michael@0: COMPOSE, michael@0: CEILING, michael@0: CSYMBOL, michael@0: CAPTION, michael@0: DISCARD, michael@0: DECLARE, michael@0: DETAILS, michael@0: ELLIPSE, michael@0: FEFUNCA, michael@0: FEFUNCB, michael@0: FEBLEND, michael@0: FEFLOOD, michael@0: FEIMAGE, michael@0: FEMERGE, michael@0: FEFUNCG, michael@0: FEFUNCR, michael@0: HANDLER, michael@0: INVERSE, michael@0: IMPLIES, michael@0: ISINDEX, michael@0: LOGBASE, michael@0: LISTING, michael@0: MFENCED, michael@0: MPADDED, michael@0: MARQUEE, michael@0: MACTION, michael@0: MSUBSUP, michael@0: NOEMBED, michael@0: POLYGON, michael@0: PATTERN, michael@0: PRODUCT, michael@0: SETDIFF, michael@0: SECTION, michael@0: SUMMARY, michael@0: TENDSTO, michael@0: UPLIMIT, michael@0: ALTGLYPH, michael@0: BASEFONT, michael@0: CLIPPATH, michael@0: CODOMAIN, michael@0: COLGROUP, michael@0: EMPTYSET, michael@0: FACTOROF, michael@0: FIELDSET, michael@0: FRAMESET, michael@0: FEOFFSET, michael@0: GLYPHREF, michael@0: INTERVAL, michael@0: INTEGERS, michael@0: INFINITY, michael@0: LISTENER, michael@0: LOWLIMIT, michael@0: METADATA, michael@0: MENCLOSE, michael@0: MENUITEM, michael@0: MPHANTOM, michael@0: NOFRAMES, michael@0: NOSCRIPT, michael@0: OPTGROUP, michael@0: POLYLINE, michael@0: PREFETCH, michael@0: PROGRESS, michael@0: PRSUBSET, michael@0: QUOTIENT, michael@0: SELECTOR, michael@0: TEXTAREA, michael@0: TEMPLATE, michael@0: TEXTPATH, michael@0: VARIANCE, michael@0: ANIMATION, michael@0: CONJUGATE, michael@0: CONDITION, michael@0: COMPLEXES, michael@0: FONT_FACE, michael@0: FACTORIAL, michael@0: INTERSECT, michael@0: IMAGINARY, michael@0: LAPLACIAN, michael@0: MATRIXROW, michael@0: NOTSUBSET, michael@0: OTHERWISE, michael@0: PIECEWISE, michael@0: PLAINTEXT, michael@0: RATIONALS, michael@0: SEMANTICS, michael@0: TRANSPOSE, michael@0: ANNOTATION, michael@0: BLOCKQUOTE, michael@0: DIVERGENCE, michael@0: EULERGAMMA, michael@0: EQUIVALENT, michael@0: FIGCAPTION, michael@0: IMAGINARYI, michael@0: MALIGNMARK, michael@0: MUNDEROVER, michael@0: MLABELEDTR, michael@0: NOTANUMBER, michael@0: SOLIDCOLOR, michael@0: ALTGLYPHDEF, michael@0: DETERMINANT, michael@0: FEMERGENODE, michael@0: FECOMPOSITE, michael@0: FESPOTLIGHT, michael@0: MALIGNGROUP, michael@0: MPRESCRIPTS, michael@0: MOMENTABOUT, michael@0: NOTPRSUBSET, michael@0: PARTIALDIFF, michael@0: ALTGLYPHITEM, michael@0: ANIMATECOLOR, michael@0: DATATEMPLATE, michael@0: EXPONENTIALE, michael@0: FETURBULENCE, michael@0: FEPOINTLIGHT, michael@0: FEDROPSHADOW, michael@0: FEMORPHOLOGY, michael@0: OUTERPRODUCT, michael@0: ANIMATEMOTION, michael@0: COLOR_PROFILE, michael@0: FONT_FACE_SRC, michael@0: FONT_FACE_URI, michael@0: FOREIGNOBJECT, michael@0: FECOLORMATRIX, michael@0: MISSING_GLYPH, michael@0: MMULTISCRIPTS, michael@0: SCALARPRODUCT, michael@0: VECTORPRODUCT, michael@0: ANNOTATION_XML, michael@0: DEFINITION_SRC, michael@0: FONT_FACE_NAME, michael@0: FEGAUSSIANBLUR, michael@0: FEDISTANTLIGHT, michael@0: LINEARGRADIENT, michael@0: NATURALNUMBERS, michael@0: RADIALGRADIENT, michael@0: ANIMATETRANSFORM, michael@0: CARTESIANPRODUCT, michael@0: FONT_FACE_FORMAT, michael@0: FECONVOLVEMATRIX, michael@0: FEDIFFUSELIGHTING, michael@0: FEDISPLACEMENTMAP, michael@0: FESPECULARLIGHTING, michael@0: DOMAINOFAPPLICATION, michael@0: FECOMPONENTTRANSFER, michael@0: }; michael@0: private final static int[] ELEMENT_HASHES = { michael@0: 1057, michael@0: 1090, michael@0: 1255, michael@0: 1321, michael@0: 1552, michael@0: 1585, michael@0: 1651, michael@0: 1717, michael@0: 68162, michael@0: 68899, michael@0: 69059, michael@0: 69764, michael@0: 70020, michael@0: 70276, michael@0: 71077, michael@0: 71205, michael@0: 72134, michael@0: 72232, michael@0: 72264, michael@0: 72296, michael@0: 72328, michael@0: 72360, michael@0: 72392, michael@0: 73351, michael@0: 74312, michael@0: 75209, michael@0: 78124, michael@0: 78284, michael@0: 78476, michael@0: 79149, michael@0: 79309, michael@0: 79341, michael@0: 79469, michael@0: 81295, michael@0: 81487, michael@0: 82224, michael@0: 84498, michael@0: 84626, michael@0: 86164, michael@0: 86292, michael@0: 86612, michael@0: 86676, michael@0: 87445, michael@0: 3183041, michael@0: 3186241, michael@0: 3198017, michael@0: 3218722, michael@0: 3226754, michael@0: 3247715, michael@0: 3256803, michael@0: 3263971, michael@0: 3264995, michael@0: 3289252, michael@0: 3291332, michael@0: 3295524, michael@0: 3299620, michael@0: 3326725, michael@0: 3379303, michael@0: 3392679, michael@0: 3448233, michael@0: 3460553, michael@0: 3461577, michael@0: 3510347, michael@0: 3546604, michael@0: 3552364, michael@0: 3556524, michael@0: 3576461, michael@0: 3586349, michael@0: 3588141, michael@0: 3590797, michael@0: 3596333, michael@0: 3622062, michael@0: 3625454, michael@0: 3627054, michael@0: 3675728, michael@0: 3749042, michael@0: 3771059, michael@0: 3771571, michael@0: 3776211, michael@0: 3782323, michael@0: 3782963, michael@0: 3784883, michael@0: 3785395, michael@0: 3788979, michael@0: 3815476, michael@0: 3839605, michael@0: 3885110, michael@0: 3917911, michael@0: 3948984, michael@0: 3951096, michael@0: 135304769, michael@0: 135858241, michael@0: 136498210, michael@0: 136906434, michael@0: 137138658, michael@0: 137512995, michael@0: 137531875, michael@0: 137548067, michael@0: 137629283, michael@0: 137645539, michael@0: 137646563, michael@0: 137775779, michael@0: 138529956, michael@0: 138615076, michael@0: 139040932, michael@0: 140954086, michael@0: 141179366, michael@0: 141690439, michael@0: 142738600, michael@0: 143013512, michael@0: 146979116, michael@0: 147175724, michael@0: 147475756, michael@0: 147902637, michael@0: 147936877, michael@0: 148017645, michael@0: 148131885, michael@0: 148228141, michael@0: 148229165, michael@0: 148309165, michael@0: 148317229, michael@0: 148395629, michael@0: 148551853, michael@0: 148618829, michael@0: 149076462, michael@0: 149490158, michael@0: 149572782, michael@0: 151277616, michael@0: 151639440, michael@0: 153268914, michael@0: 153486514, michael@0: 153563314, michael@0: 153750706, michael@0: 153763314, michael@0: 153914034, michael@0: 154406067, michael@0: 154417459, michael@0: 154600979, michael@0: 154678323, michael@0: 154680979, michael@0: 154866835, michael@0: 155366708, michael@0: 155375188, michael@0: 155391572, michael@0: 155465780, michael@0: 155869364, michael@0: 158045494, michael@0: 168988979, michael@0: 169321621, michael@0: 169652752, michael@0: 173151309, michael@0: 174240818, michael@0: 174247297, michael@0: 174669292, michael@0: 175391532, michael@0: 176638123, michael@0: 177380397, michael@0: 177879204, michael@0: 177886734, michael@0: 180753473, michael@0: 181020073, michael@0: 181503558, michael@0: 181686320, michael@0: 181999237, michael@0: 181999311, michael@0: 182048201, michael@0: 182074866, michael@0: 182078003, michael@0: 182083764, michael@0: 182920847, michael@0: 184716457, michael@0: 184976961, michael@0: 185145071, michael@0: 187281445, michael@0: 187872052, michael@0: 188100653, michael@0: 188875944, michael@0: 188919873, michael@0: 188920457, michael@0: 189107250, michael@0: 189203987, michael@0: 189371817, michael@0: 189414886, michael@0: 189567458, michael@0: 190266670, michael@0: 191318187, michael@0: 191337609, michael@0: 202479203, michael@0: 202493027, michael@0: 202835587, michael@0: 202843747, michael@0: 203013219, michael@0: 203036048, michael@0: 203045987, michael@0: 203177552, michael@0: 203898516, michael@0: 204648562, michael@0: 205067918, michael@0: 205078130, michael@0: 205096654, michael@0: 205689142, michael@0: 205690439, michael@0: 205988909, michael@0: 207213161, michael@0: 207794484, michael@0: 207800999, michael@0: 208023602, michael@0: 208213644, michael@0: 208213647, michael@0: 210261490, michael@0: 210310273, michael@0: 210940978, michael@0: 213325049, michael@0: 213946445, michael@0: 214055079, michael@0: 215125040, michael@0: 215134273, michael@0: 215135028, michael@0: 215237420, michael@0: 215418148, michael@0: 215553166, michael@0: 215553394, michael@0: 215563858, michael@0: 215627949, michael@0: 215754324, michael@0: 217529652, michael@0: 217713834, michael@0: 217732628, michael@0: 218731945, michael@0: 221417045, michael@0: 221424946, michael@0: 221493746, michael@0: 221515401, michael@0: 221658189, michael@0: 221908140, michael@0: 221910626, michael@0: 221921586, michael@0: 222659762, michael@0: 225001091, michael@0: 236105833, michael@0: 236113965, michael@0: 236194995, michael@0: 236195427, michael@0: 236206132, michael@0: 236206387, michael@0: 236211683, michael@0: 236212707, michael@0: 236381647, michael@0: 236571826, michael@0: 237124271, michael@0: 238210544, michael@0: 238270764, michael@0: 238435405, michael@0: 238501172, michael@0: 239224867, michael@0: 239257644, michael@0: 239710497, michael@0: 240307721, michael@0: 241208789, michael@0: 241241557, michael@0: 241318060, michael@0: 241319404, michael@0: 241343533, michael@0: 241344069, michael@0: 241405397, michael@0: 241765845, michael@0: 243864964, michael@0: 244502085, michael@0: 244946220, michael@0: 245109902, michael@0: 247647266, michael@0: 247707956, michael@0: 248648814, michael@0: 248648836, michael@0: 248682161, michael@0: 248986932, michael@0: 249058914, michael@0: 249697357, michael@0: 252132601, michael@0: 252135604, michael@0: 252317348, michael@0: 255007012, michael@0: 255278388, michael@0: 255641645, michael@0: 256365156, michael@0: 257566121, michael@0: 269763372, michael@0: 271202790, michael@0: 271863856, michael@0: 272049197, michael@0: 272127474, michael@0: 274339449, michael@0: 274939471, michael@0: 275388004, michael@0: 275388005, michael@0: 275388006, michael@0: 275977800, michael@0: 278267602, michael@0: 278513831, michael@0: 278712622, michael@0: 281613765, michael@0: 281683369, michael@0: 282120228, michael@0: 282250732, michael@0: 282498697, michael@0: 282508942, michael@0: 283743649, michael@0: 283787570, michael@0: 284710386, michael@0: 285391148, michael@0: 285478533, michael@0: 285854898, michael@0: 285873762, michael@0: 286931113, michael@0: 288964227, michael@0: 289445441, michael@0: 289591340, michael@0: 289689648, michael@0: 291671489, michael@0: 303512884, michael@0: 305319975, michael@0: 305610036, michael@0: 305764101, michael@0: 308448294, michael@0: 308675890, michael@0: 312085683, michael@0: 312264750, michael@0: 315032867, michael@0: 316391000, michael@0: 317331042, michael@0: 317902135, michael@0: 318950711, michael@0: 319447220, michael@0: 321499182, michael@0: 322538804, michael@0: 323145200, michael@0: 337067316, michael@0: 337826293, michael@0: 339905989, michael@0: 340833697, michael@0: 341457068, michael@0: 342310196, michael@0: 345302593, michael@0: 349554733, michael@0: 349771471, michael@0: 349786245, michael@0: 350819405, michael@0: 356072847, michael@0: 370349192, michael@0: 373962798, michael@0: 375558638, michael@0: 375574835, michael@0: 376053993, michael@0: 383276530, michael@0: 383373833, michael@0: 383407586, michael@0: 384439906, michael@0: 386079012, michael@0: 404133513, michael@0: 404307343, michael@0: 407031852, michael@0: 408072233, michael@0: 409112005, michael@0: 409608425, michael@0: 409713793, michael@0: 409771500, michael@0: 419040932, michael@0: 437730612, michael@0: 439529766, michael@0: 442616365, michael@0: 442813037, michael@0: 443157674, michael@0: 443295316, michael@0: 450118444, michael@0: 450482697, michael@0: 456789668, michael@0: 459935396, michael@0: 471217869, michael@0: 474073645, michael@0: 476230702, michael@0: 476665218, michael@0: 476717289, michael@0: 483014825, michael@0: 485083298, michael@0: 489306281, michael@0: 538364390, michael@0: 540675748, michael@0: 543819186, michael@0: 543958612, michael@0: 576960820, michael@0: 577242548, michael@0: 610515252, michael@0: 642202932, michael@0: 644420819, michael@0: }; michael@0: }