Merging in part of Scripts support, the one without envjs, as the rest is broken because of bugs in nashorn
authorJaroslav Tulach <jtulach@netbeans.org>
Thu, 05 Jun 2014 22:13:56 +0200
changeset 701fd7cd8b195d4
parent 675 fad65c387592
parent 700 055a0f3766f5
child 702 e6f275887b20
Merging in part of Scripts support, the one without envjs, as the rest is broken because of bugs in nashorn
     1.1 --- a/boot-script/pom.xml	Wed Jun 04 06:36:44 2014 +0200
     1.2 +++ b/boot-script/pom.xml	Thu Jun 05 22:13:56 2014 +0200
     1.3 @@ -19,11 +19,37 @@
     1.4            <plugin>
     1.5                <groupId>org.apache.felix</groupId>
     1.6                <artifactId>maven-bundle-plugin</artifactId>
     1.7 +              <version>2.4.0</version>
     1.8 +              <extensions>true</extensions>
     1.9 +              <configuration>
    1.10 +                  <instructions>
    1.11 +                      <Export-Package>${publicPackages}</Export-Package>
    1.12 +                      <Bundle-SymbolicName>net.java.html.boot.script</Bundle-SymbolicName>
    1.13 +                  </instructions>
    1.14 +              </configuration>
    1.15            </plugin>
    1.16 +          <plugin>
    1.17 +              <groupId>org.netbeans.html</groupId>
    1.18 +              <artifactId>html4j-maven-plugin</artifactId>
    1.19 +          </plugin>
    1.20 +         <plugin>
    1.21 +            <groupId>org.apache.maven.plugins</groupId>
    1.22 +            <artifactId>maven-compiler-plugin</artifactId>
    1.23 +            <version>2.3.2</version>
    1.24 +            <configuration>
    1.25 +               <source>1.7</source>
    1.26 +               <target>1.7</target>
    1.27 +            </configuration>
    1.28 +         </plugin>
    1.29        </plugins>
    1.30      </build>
    1.31      <dependencies>
    1.32          <dependency>
    1.33 +            <groupId>org.netbeans.api</groupId>
    1.34 +            <artifactId>org-openide-util-lookup</artifactId>
    1.35 +            <scope>provided</scope>
    1.36 +        </dependency>
    1.37 +        <dependency>
    1.38              <groupId>org.netbeans.html</groupId>
    1.39              <artifactId>net.java.html.boot</artifactId>
    1.40              <version>${project.version}</version>
    1.41 @@ -35,16 +61,49 @@
    1.42              <scope>test</scope>
    1.43          </dependency>
    1.44          <dependency>
    1.45 -            <groupId>org.webjars</groupId>
    1.46 -            <artifactId>envjs</artifactId>
    1.47 -            <version>1.2</version>
    1.48 -            <scope>test</scope>
    1.49 -        </dependency>
    1.50 -        <dependency>
    1.51              <groupId>${project.groupId}</groupId>
    1.52              <artifactId>net.java.html.json.tck</artifactId>
    1.53              <version>${project.version}</version>
    1.54              <scope>test</scope>
    1.55          </dependency>
    1.56 +        <dependency>
    1.57 +            <groupId>org.glassfish.grizzly</groupId>
    1.58 +            <artifactId>grizzly-http-server</artifactId>
    1.59 +            <version>${grizzly.version}</version>
    1.60 +            <scope>test</scope>
    1.61 +        </dependency>
    1.62 +        <dependency>
    1.63 +            <groupId>org.glassfish.grizzly</groupId>
    1.64 +            <artifactId>grizzly-websockets-server</artifactId>
    1.65 +            <version>${grizzly.version}</version>
    1.66 +            <scope>test</scope>
    1.67 +            <type>jar</type>
    1.68 +        </dependency>
    1.69 +        <dependency>
    1.70 +            <groupId>org.glassfish.grizzly</groupId>
    1.71 +            <artifactId>grizzly-http-servlet</artifactId>
    1.72 +            <version>${grizzly.version}</version>
    1.73 +            <scope>test</scope>
    1.74 +        </dependency>    
    1.75 +        <dependency>
    1.76 +            <groupId>javax.servlet</groupId>
    1.77 +            <artifactId>javax.servlet-api</artifactId>
    1.78 +            <scope>test</scope>
    1.79 +            <version>3.1.0</version>
    1.80 +        </dependency>
    1.81 +        <dependency>
    1.82 +            <groupId>org.netbeans.html</groupId>
    1.83 +            <artifactId>ko4j</artifactId>
    1.84 +            <version>${project.version}</version>
    1.85 +            <scope>test</scope>
    1.86 +            <type>jar</type>
    1.87 +        </dependency>
    1.88 +        <dependency>
    1.89 +            <groupId>${project.groupId}</groupId>
    1.90 +            <artifactId>ko-ws-tyrus</artifactId>
    1.91 +            <version>${project.version}</version>
    1.92 +            <scope>test</scope>
    1.93 +            <type>jar</type>
    1.94 +        </dependency>
    1.95      </dependencies>
    1.96  </project>
    1.97 \ No newline at end of file
     2.1 --- a/boot-script/src/main/java/net/java/html/boot/script/ScriptPresenter.java	Wed Jun 04 06:36:44 2014 +0200
     2.2 +++ b/boot-script/src/main/java/net/java/html/boot/script/ScriptPresenter.java	Thu Jun 05 22:13:56 2014 +0200
     2.3 @@ -42,11 +42,13 @@
     2.4   */
     2.5  package net.java.html.boot.script;
     2.6  
     2.7 +import java.io.Closeable;
     2.8 +import java.io.IOException;
     2.9  import java.io.Reader;
    2.10  import java.net.URL;
    2.11  import java.util.ArrayList;
    2.12 -import java.util.Arrays;
    2.13  import java.util.List;
    2.14 +import java.util.concurrent.Executor;
    2.15  import java.util.logging.Level;
    2.16  import java.util.logging.Logger;
    2.17  import javax.script.Invocable;
    2.18 @@ -63,15 +65,19 @@
    2.19   * <p>
    2.20   * One can load in browser simulation for example from 
    2.21   * <a href="http://www.envjs.com/">env.js</a>. The best way to achieve so,
    2.22 - * is to add dependency on XXX
    2.23 + * is to wait until JDK-8046013 gets fixed....
    2.24   * 
    2.25   *
    2.26   * @author Jaroslav Tulach
    2.27   */
    2.28 -public final class ScriptPresenter implements Presenter, Fn.FromJavaScript, Fn.ToJavaScript {
    2.29 +final class ScriptPresenter 
    2.30 +implements Presenter, Fn.FromJavaScript, Fn.ToJavaScript, Executor {
    2.31 +    private static final Logger LOG = Logger.getLogger(ScriptPresenter.class.getName());
    2.32      private final ScriptEngine eng;
    2.33 +    private final Executor exc;
    2.34  
    2.35 -    public ScriptPresenter() {
    2.36 +    public ScriptPresenter(Executor exc) {
    2.37 +        this.exc = exc;
    2.38          try {
    2.39              eng = new ScriptEngineManager().getEngineByName("javascript");
    2.40              eng.eval("function alert(msg) { Packages.java.lang.System.out.println(msg); };");
    2.41 @@ -109,7 +115,11 @@
    2.42  
    2.43      @Override
    2.44      public void displayPage(URL page, Runnable onPageLoad) {
    2.45 -        // not really displaying anything
    2.46 +        try {
    2.47 +            eng.eval("if (typeof window !== 'undefined') window.location = '" + page + "'");
    2.48 +        } catch (ScriptException ex) {
    2.49 +            LOG.log(Level.SEVERE, "Cannot load " + page, ex);
    2.50 +        }
    2.51          if (onPageLoad != null) {
    2.52              onPageLoad.run();
    2.53          }
    2.54 @@ -200,6 +210,30 @@
    2.55          }
    2.56      }
    2.57  
    2.58 +    @Override
    2.59 +    public void execute(final Runnable command) {
    2.60 +        if (Fn.activePresenter() == this) {
    2.61 +            command.run();
    2.62 +            return;
    2.63 +        }
    2.64 +        
    2.65 +        class Wrap implements Runnable {
    2.66 +            public void run() {
    2.67 +                try (Closeable c = Fn.activate(ScriptPresenter.this)) {
    2.68 +                    command.run();
    2.69 +                } catch (IOException ex) {
    2.70 +                    throw new IllegalStateException(ex);
    2.71 +                }
    2.72 +            }
    2.73 +        }
    2.74 +        final Runnable wrap = new Wrap();
    2.75 +        if (exc == null) {
    2.76 +            wrap.run();
    2.77 +        } else {
    2.78 +            exc.execute(wrap);
    2.79 +        }
    2.80 +    }
    2.81 +
    2.82      private class FnImpl extends Fn {
    2.83  
    2.84          private final Object fn;
    2.85 @@ -215,7 +249,7 @@
    2.86          }
    2.87  
    2.88              final Object invokeImpl(Object thiz, boolean arrayChecks, Object... args) throws Exception {
    2.89 -                List<Object> all = new ArrayList<Object>(args.length + 1);
    2.90 +                List<Object> all = new ArrayList<>(args.length + 1);
    2.91                  all.add(thiz == null ? fn : thiz);
    2.92                  for (int i = 0; i < args.length; i++) {
    2.93                      if (arrayChecks) {
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/boot-script/src/main/java/net/java/html/boot/script/Scripts.java	Thu Jun 05 22:13:56 2014 +0200
     3.3 @@ -0,0 +1,102 @@
     3.4 +/**
     3.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     3.6 + *
     3.7 + * Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
     3.8 + *
     3.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
    3.10 + * Other names may be trademarks of their respective owners.
    3.11 + *
    3.12 + * The contents of this file are subject to the terms of either the GNU
    3.13 + * General Public License Version 2 only ("GPL") or the Common
    3.14 + * Development and Distribution License("CDDL") (collectively, the
    3.15 + * "License"). You may not use this file except in compliance with the
    3.16 + * License. You can obtain a copy of the License at
    3.17 + * http://www.netbeans.org/cddl-gplv2.html
    3.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
    3.19 + * specific language governing permissions and limitations under the
    3.20 + * License.  When distributing the software, include this License Header
    3.21 + * Notice in each file and include the License file at
    3.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
    3.23 + * particular file as subject to the "Classpath" exception as provided
    3.24 + * by Oracle in the GPL Version 2 section of the License file that
    3.25 + * accompanied this code. If applicable, add the following below the
    3.26 + * License Header, with the fields enclosed by brackets [] replaced by
    3.27 + * your own identifying information:
    3.28 + * "Portions Copyrighted [year] [name of copyright owner]"
    3.29 + *
    3.30 + * Contributor(s):
    3.31 + *
    3.32 + * The Original Software is NetBeans. The Initial Developer of the Original
    3.33 + * Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
    3.34 + *
    3.35 + * If you wish your version of this file to be governed by only the CDDL
    3.36 + * or only the GPL Version 2, indicate your decision by adding
    3.37 + * "[Contributor] elects to include this software in this distribution
    3.38 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
    3.39 + * single choice of license, a recipient has the option to distribute
    3.40 + * your version of this file under either the CDDL, the GPL Version 2 or
    3.41 + * to extend the choice of license to its licensees as provided above.
    3.42 + * However, if you add GPL Version 2 code and therefore, elected the GPL
    3.43 + * Version 2 license, then the option applies only if the new code is
    3.44 + * made subject to such option by the copyright holder.
    3.45 + */
    3.46 +package net.java.html.boot.script;
    3.47 +
    3.48 +import java.util.concurrent.Executor;
    3.49 +import javax.script.ScriptEngine;
    3.50 +import net.java.html.boot.BrowserBuilder;
    3.51 +import net.java.html.js.JavaScriptBody;
    3.52 +import org.apidesign.html.boot.spi.Fn.Presenter;
    3.53 +
    3.54 +/** Implementations of {@link Presenter}s that delegate
    3.55 + * to Java {@link ScriptEngine scripting} API. Initialize your presenter
    3.56 + * like this:
    3.57 + * 
    3.58 + * <pre>
    3.59 + * 
    3.60 + * {@link Runnable} <em>run</em> = ...; // your own init code
    3.61 + * {@link Presenter Fn.Presenter} <em>p</em> = Scripts.{@link Scripts#createPresenter()};
    3.62 + * BrowserBuilder.{@link BrowserBuilder#newBrowser(java.lang.Object...) newBrowser(<em>p</em>)}.
    3.63 + *      {@link BrowserBuilder#loadFinished(java.lang.Runnable) loadFinished(run)}.
    3.64 + *      {@link BrowserBuilder#showAndWait()};
    3.65 + * </pre>
    3.66 + * 
    3.67 + * and your runnable can make extensive use of {@link JavaScriptBody} directly or
    3.68 + * indirectly via APIs using {@link JavaScriptBody such annotation} themselves.
    3.69 + * 
    3.70 + * @author Jaroslav Tulach
    3.71 + */
    3.72 +public final class Scripts {
    3.73 +    private Scripts() {
    3.74 +    }
    3.75 +    
    3.76 +    /** Simple implementation of {@link Presenter} that delegates
    3.77 +     * to Java {@link ScriptEngine scripting} API. The presenter runs headless
    3.78 +     * without appropriate simulation of browser APIs. Its primary usefulness
    3.79 +     * is inside testing environments. The presenter implements {@link Executor}
    3.80 +     * interface, but invokes all runnables passed to {@link Executor#execute(java.lang.Runnable)}
    3.81 +     * immediately.
    3.82 +     * 
    3.83 +     * @return new instance of a presenter that is using its own
    3.84 +     *   {@link ScriptEngine} for <code>text/javascript</code> mimetype
    3.85 +     */
    3.86 +    public static Presenter createPresenter() {
    3.87 +        return new ScriptPresenter(null);
    3.88 +    }
    3.89 +
    3.90 +    /** Implementation of {@link Presenter} that delegates
    3.91 +     * to Java {@link ScriptEngine scripting} API and can control execution
    3.92 +     * thread. The presenter runs headless
    3.93 +     * without appropriate simulation of browser APIs. Its primary usefulness
    3.94 +     * is inside testing environments. The presenter implements {@link Executor}
    3.95 +     * interface, and passes all runnables from {@link Executor#execute(java.lang.Runnable)}
    3.96 +     * to here in provided <code>exc</code> instance.
    3.97 +     * 
    3.98 +     * @param exc the executor to re-schedule all asynchronous requests to
    3.99 +     * @return new instance of a presenter that is using its own
   3.100 +     *   {@link ScriptEngine} for <code>text/javascript</code> mimetype
   3.101 +     */
   3.102 +    public static Presenter createPresenter(Executor exc) {
   3.103 +        return new ScriptPresenter(exc);
   3.104 +    }
   3.105 +}
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/boot-script/src/main/java/net/java/html/boot/script/package.html	Thu Jun 05 22:13:56 2014 +0200
     4.3 @@ -0,0 +1,51 @@
     4.4 +<!--
     4.5 +
     4.6 +    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     4.7 +
     4.8 +    Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
     4.9 +
    4.10 +    Oracle and Java are registered trademarks of Oracle and/or its affiliates.
    4.11 +    Other names may be trademarks of their respective owners.
    4.12 +
    4.13 +    The contents of this file are subject to the terms of either the GNU
    4.14 +    General Public License Version 2 only ("GPL") or the Common
    4.15 +    Development and Distribution License("CDDL") (collectively, the
    4.16 +    "License"). You may not use this file except in compliance with the
    4.17 +    License. You can obtain a copy of the License at
    4.18 +    http://www.netbeans.org/cddl-gplv2.html
    4.19 +    or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
    4.20 +    specific language governing permissions and limitations under the
    4.21 +    License.  When distributing the software, include this License Header
    4.22 +    Notice in each file and include the License file at
    4.23 +    nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
    4.24 +    particular file as subject to the "Classpath" exception as provided
    4.25 +    by Oracle in the GPL Version 2 section of the License file that
    4.26 +    accompanied this code. If applicable, add the following below the
    4.27 +    License Header, with the fields enclosed by brackets [] replaced by
    4.28 +    your own identifying information:
    4.29 +    "Portions Copyrighted [year] [name of copyright owner]"
    4.30 +
    4.31 +    Contributor(s):
    4.32 +
    4.33 +    The Original Software is NetBeans. The Initial Developer of the Original
    4.34 +    Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
    4.35 +
    4.36 +    If you wish your version of this file to be governed by only the CDDL
    4.37 +    or only the GPL Version 2, indicate your decision by adding
    4.38 +    "[Contributor] elects to include this software in this distribution
    4.39 +    under the [CDDL or GPL Version 2] license." If you do not indicate a
    4.40 +    single choice of license, a recipient has the option to distribute
    4.41 +    your version of this file under either the CDDL, the GPL Version 2 or
    4.42 +    to extend the choice of license to its licensees as provided above.
    4.43 +    However, if you add GPL Version 2 code and therefore, elected the GPL
    4.44 +    Version 2 license, then the option applies only if the new code is
    4.45 +    made subject to such option by the copyright holder.
    4.46 +
    4.47 +-->
    4.48 +<body>
    4.49 +    <p>
    4.50 +        {@link net.java.html.boot.script.Scripts Factories} headless
    4.51 +        {@link net.java.html.boot.BrowserBuilder browser environment}
    4.52 +        useful for testing.
    4.53 +    </p>
    4.54 +</body>
     5.1 --- a/boot-script/src/test/java/net/java/html/boot/script/Jsr223JavaScriptTest.java	Wed Jun 04 06:36:44 2014 +0200
     5.2 +++ b/boot-script/src/test/java/net/java/html/boot/script/Jsr223JavaScriptTest.java	Thu Jun 05 22:13:56 2014 +0200
     5.3 @@ -65,7 +65,7 @@
     5.4      }
     5.5  
     5.6      @Factory public static Object[] compatibilityTests() throws Exception {
     5.7 -        final BrowserBuilder bb = BrowserBuilder.newBrowser(new ScriptPresenter()).
     5.8 +        final BrowserBuilder bb = BrowserBuilder.newBrowser(new ScriptPresenter(SingleCase.JS)).
     5.9              loadClass(Jsr223JavaScriptTest.class).
    5.10              loadPage("empty.html").
    5.11              invoke("initialized");
     6.1 --- a/boot-script/src/test/java/net/java/html/boot/script/SingleCase.java	Wed Jun 04 06:36:44 2014 +0200
     6.2 +++ b/boot-script/src/test/java/net/java/html/boot/script/SingleCase.java	Thu Jun 05 22:13:56 2014 +0200
     6.3 @@ -59,7 +59,7 @@
     6.4   * @author Jaroslav Tulach <jtulach@netbeans.org>
     6.5   */
     6.6  public final class SingleCase implements ITest, IHookable, Runnable {
     6.7 -    private static final Executor JS = Executors.newSingleThreadExecutor();
     6.8 +    static final Executor JS = Executors.newSingleThreadExecutor();
     6.9      private final Fn.Presenter p;
    6.10      private final Method m;
    6.11      private Object result;
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/boot-script/src/test/java/net/java/html/boot/script/ko4j/DynamicHTTP.java	Thu Jun 05 22:13:56 2014 +0200
     7.3 @@ -0,0 +1,259 @@
     7.4 +/**
     7.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     7.6 + *
     7.7 + * Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
     7.8 + *
     7.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
    7.10 + * Other names may be trademarks of their respective owners.
    7.11 + *
    7.12 + * The contents of this file are subject to the terms of either the GNU
    7.13 + * General Public License Version 2 only ("GPL") or the Common
    7.14 + * Development and Distribution License("CDDL") (collectively, the
    7.15 + * "License"). You may not use this file except in compliance with the
    7.16 + * License. You can obtain a copy of the License at
    7.17 + * http://www.netbeans.org/cddl-gplv2.html
    7.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
    7.19 + * specific language governing permissions and limitations under the
    7.20 + * License.  When distributing the software, include this License Header
    7.21 + * Notice in each file and include the License file at
    7.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
    7.23 + * particular file as subject to the "Classpath" exception as provided
    7.24 + * by Oracle in the GPL Version 2 section of the License file that
    7.25 + * accompanied this code. If applicable, add the following below the
    7.26 + * License Header, with the fields enclosed by brackets [] replaced by
    7.27 + * your own identifying information:
    7.28 + * "Portions Copyrighted [year] [name of copyright owner]"
    7.29 + *
    7.30 + * Contributor(s):
    7.31 + *
    7.32 + * The Original Software is NetBeans. The Initial Developer of the Original
    7.33 + * Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
    7.34 + *
    7.35 + * If you wish your version of this file to be governed by only the CDDL
    7.36 + * or only the GPL Version 2, indicate your decision by adding
    7.37 + * "[Contributor] elects to include this software in this distribution
    7.38 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
    7.39 + * single choice of license, a recipient has the option to distribute
    7.40 + * your version of this file under either the CDDL, the GPL Version 2 or
    7.41 + * to extend the choice of license to its licensees as provided above.
    7.42 + * However, if you add GPL Version 2 code and therefore, elected the GPL
    7.43 + * Version 2 license, then the option applies only if the new code is
    7.44 + * made subject to such option by the copyright holder.
    7.45 + */
    7.46 +package net.java.html.boot.script.ko4j;
    7.47 +
    7.48 +import java.io.ByteArrayInputStream;
    7.49 +import java.io.ByteArrayOutputStream;
    7.50 +import java.io.IOException;
    7.51 +import java.io.InputStream;
    7.52 +import java.io.OutputStream;
    7.53 +import java.io.Reader;
    7.54 +import java.net.URI;
    7.55 +import java.net.URISyntaxException;
    7.56 +import java.util.ArrayList;
    7.57 +import java.util.List;
    7.58 +import java.util.logging.Level;
    7.59 +import java.util.logging.Logger;
    7.60 +import org.glassfish.grizzly.PortRange;
    7.61 +import org.glassfish.grizzly.http.server.HttpHandler;
    7.62 +import org.glassfish.grizzly.http.server.HttpServer;
    7.63 +import org.glassfish.grizzly.http.server.NetworkListener;
    7.64 +import org.glassfish.grizzly.http.server.Request;
    7.65 +import org.glassfish.grizzly.http.server.Response;
    7.66 +import org.glassfish.grizzly.http.server.ServerConfiguration;
    7.67 +import org.glassfish.grizzly.websockets.WebSocket;
    7.68 +import org.glassfish.grizzly.websockets.WebSocketAddOn;
    7.69 +import org.glassfish.grizzly.websockets.WebSocketApplication;
    7.70 +import org.glassfish.grizzly.websockets.WebSocketEngine;
    7.71 +
    7.72 +/**
    7.73 + *
    7.74 + * @author Jaroslav Tulach <jtulach@netbeans.org>
    7.75 + */
    7.76 +final class DynamicHTTP extends HttpHandler {
    7.77 +    private static final Logger LOG = Logger.getLogger(DynamicHTTP.class.getName());
    7.78 +    private static int resourcesCount;
    7.79 +    private static List<Resource> resources;
    7.80 +    private static ServerConfiguration conf;
    7.81 +    private static HttpServer server;
    7.82 +    
    7.83 +    private DynamicHTTP() {
    7.84 +    }
    7.85 +    
    7.86 +    static URI initServer() throws Exception {
    7.87 +        server = HttpServer.createSimpleServer(null, new PortRange(8080, 65535));
    7.88 +        final WebSocketAddOn addon = new WebSocketAddOn();
    7.89 +        for (NetworkListener listener : server.getListeners()) {
    7.90 +            listener.registerAddOn(addon);
    7.91 +        }        
    7.92 +        resources = new ArrayList<Resource>();
    7.93 +
    7.94 +        conf = server.getServerConfiguration();
    7.95 +        final DynamicHTTP dh = new DynamicHTTP();
    7.96 +
    7.97 +        conf.addHttpHandler(dh, "/");
    7.98 +        
    7.99 +        server.start();
   7.100 +
   7.101 +        return pageURL("http", server, "/test.html");
   7.102 +    }
   7.103 +    
   7.104 +    @Override
   7.105 +    public void service(Request request, Response response) throws Exception {
   7.106 +        if ("/test.html".equals(request.getRequestURI())) {
   7.107 +            response.setContentType("text/html");
   7.108 +            final InputStream is = DynamicHTTP.class.getResourceAsStream("test.html");
   7.109 +            copyStream(is, response.getOutputStream(), null);
   7.110 +            return;
   7.111 +        }
   7.112 +        if ("/dynamic".equals(request.getRequestURI())) {
   7.113 +            String mimeType = request.getParameter("mimeType");
   7.114 +            List<String> params = new ArrayList<String>();
   7.115 +            boolean webSocket = false;
   7.116 +            for (int i = 0;; i++) {
   7.117 +                String p = request.getParameter("param" + i);
   7.118 +                if (p == null) {
   7.119 +                    break;
   7.120 +                }
   7.121 +                if ("protocol:ws".equals(p)) {
   7.122 +                    webSocket = true;
   7.123 +                    continue;
   7.124 +                }
   7.125 +                params.add(p);
   7.126 +            }
   7.127 +            final String cnt = request.getParameter("content");
   7.128 +            String mangle = cnt.replace("%20", " ").replace("%0A", "\n");
   7.129 +            ByteArrayInputStream is = new ByteArrayInputStream(mangle.getBytes("UTF-8"));
   7.130 +            URI url;
   7.131 +            final Resource res = new Resource(is, mimeType, "/dynamic/res" + ++resourcesCount, params.toArray(new String[params.size()]));
   7.132 +            if (webSocket) {
   7.133 +                url = registerWebSocket(res);
   7.134 +            } else {
   7.135 +                url = registerResource(res);
   7.136 +            }
   7.137 +            response.getWriter().write(url.toString());
   7.138 +            response.getWriter().write("\n");
   7.139 +            return;
   7.140 +        }
   7.141 +
   7.142 +        for (Resource r : resources) {
   7.143 +            if (r.httpPath.equals(request.getRequestURI())) {
   7.144 +                response.setContentType(r.httpType);
   7.145 +                r.httpContent.reset();
   7.146 +                String[] params = null;
   7.147 +                if (r.parameters.length != 0) {
   7.148 +                    params = new String[r.parameters.length];
   7.149 +                    for (int i = 0; i < r.parameters.length; i++) {
   7.150 +                        params[i] = request.getParameter(r.parameters[i]);
   7.151 +                        if (params[i] == null) {
   7.152 +                            if ("http.method".equals(r.parameters[i])) {
   7.153 +                                params[i] = request.getMethod().toString();
   7.154 +                            } else if ("http.requestBody".equals(r.parameters[i])) {
   7.155 +                                Reader rdr = request.getReader();
   7.156 +                                StringBuilder sb = new StringBuilder();
   7.157 +                                for (;;) {
   7.158 +                                    int ch = rdr.read();
   7.159 +                                    if (ch == -1) {
   7.160 +                                        break;
   7.161 +                                    }
   7.162 +                                    sb.append((char) ch);
   7.163 +                                }
   7.164 +                                params[i] = sb.toString();
   7.165 +                            }
   7.166 +                        }
   7.167 +                        if (params[i] == null) {
   7.168 +                            params[i] = "null";
   7.169 +                        }
   7.170 +                    }
   7.171 +                }
   7.172 +
   7.173 +                copyStream(r.httpContent, response.getOutputStream(), null, params);
   7.174 +            }
   7.175 +        }
   7.176 +    }
   7.177 +    
   7.178 +    private URI registerWebSocket(Resource r) {
   7.179 +        WebSocketEngine.getEngine().register("", r.httpPath, new WS(r));
   7.180 +        return pageURL("ws", server, r.httpPath);
   7.181 +    }
   7.182 +
   7.183 +    private URI registerResource(Resource r) {
   7.184 +        if (!resources.contains(r)) {
   7.185 +            resources.add(r);
   7.186 +            conf.addHttpHandler(this, r.httpPath);
   7.187 +        }
   7.188 +        return pageURL("http", server, r.httpPath);
   7.189 +    }
   7.190 +    
   7.191 +    private static URI pageURL(String proto, HttpServer server, final String page) {
   7.192 +        NetworkListener listener = server.getListeners().iterator().next();
   7.193 +        int port = listener.getPort();
   7.194 +        try {
   7.195 +            return new URI(proto + "://localhost:" + port + page);
   7.196 +        } catch (URISyntaxException ex) {
   7.197 +            throw new IllegalStateException(ex);
   7.198 +        }
   7.199 +    }
   7.200 +    
   7.201 +    static final class Resource {
   7.202 +
   7.203 +        final InputStream httpContent;
   7.204 +        final String httpType;
   7.205 +        final String httpPath;
   7.206 +        final String[] parameters;
   7.207 +
   7.208 +        Resource(InputStream httpContent, String httpType, String httpPath,
   7.209 +            String[] parameters) {
   7.210 +            httpContent.mark(Integer.MAX_VALUE);
   7.211 +            this.httpContent = httpContent;
   7.212 +            this.httpType = httpType;
   7.213 +            this.httpPath = httpPath;
   7.214 +            this.parameters = parameters;
   7.215 +        }
   7.216 +    }
   7.217 +
   7.218 +    static void copyStream(InputStream is, OutputStream os, String baseURL, String... params) throws IOException {
   7.219 +        for (;;) {
   7.220 +            int ch = is.read();
   7.221 +            if (ch == -1) {
   7.222 +                break;
   7.223 +            }
   7.224 +            if (ch == '$' && params.length > 0) {
   7.225 +                int cnt = is.read() - '0';
   7.226 +                if (baseURL != null && cnt == 'U' - '0') {
   7.227 +                    os.write(baseURL.getBytes("UTF-8"));
   7.228 +                } else {
   7.229 +                    if (cnt >= 0 && cnt < params.length) {
   7.230 +                        os.write(params[cnt].getBytes("UTF-8"));
   7.231 +                    } else {
   7.232 +                        os.write('$');
   7.233 +                        os.write(cnt + '0');
   7.234 +                    }
   7.235 +                }
   7.236 +            } else {
   7.237 +                os.write(ch);
   7.238 +            }
   7.239 +        }
   7.240 +    }
   7.241 +    
   7.242 +    private static class WS extends WebSocketApplication {
   7.243 +        private final Resource r;
   7.244 +
   7.245 +        private WS(Resource r) {
   7.246 +            this.r = r;
   7.247 +        }
   7.248 +
   7.249 +        @Override
   7.250 +        public void onMessage(WebSocket socket, String text) {
   7.251 +            try {
   7.252 +                r.httpContent.reset();
   7.253 +                ByteArrayOutputStream out = new ByteArrayOutputStream();
   7.254 +                copyStream(r.httpContent, out, null, text);
   7.255 +                String s = new String(out.toByteArray(), "UTF-8");
   7.256 +                socket.send(s);
   7.257 +            } catch (IOException ex) {
   7.258 +                LOG.log(Level.WARNING, "Error processing message " + text, ex);
   7.259 +            }
   7.260 +        }
   7.261 +    }
   7.262 +}
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/boot-script/src/test/java/net/java/html/boot/script/ko4j/KOCase.java	Thu Jun 05 22:13:56 2014 +0200
     8.3 @@ -0,0 +1,133 @@
     8.4 +/**
     8.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     8.6 + *
     8.7 + * Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
     8.8 + *
     8.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
    8.10 + * Other names may be trademarks of their respective owners.
    8.11 + *
    8.12 + * The contents of this file are subject to the terms of either the GNU
    8.13 + * General Public License Version 2 only ("GPL") or the Common
    8.14 + * Development and Distribution License("CDDL") (collectively, the
    8.15 + * "License"). You may not use this file except in compliance with the
    8.16 + * License. You can obtain a copy of the License at
    8.17 + * http://www.netbeans.org/cddl-gplv2.html
    8.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
    8.19 + * specific language governing permissions and limitations under the
    8.20 + * License.  When distributing the software, include this License Header
    8.21 + * Notice in each file and include the License file at
    8.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
    8.23 + * particular file as subject to the "Classpath" exception as provided
    8.24 + * by Oracle in the GPL Version 2 section of the License file that
    8.25 + * accompanied this code. If applicable, add the following below the
    8.26 + * License Header, with the fields enclosed by brackets [] replaced by
    8.27 + * your own identifying information:
    8.28 + * "Portions Copyrighted [year] [name of copyright owner]"
    8.29 + *
    8.30 + * Contributor(s):
    8.31 + *
    8.32 + * The Original Software is NetBeans. The Initial Developer of the Original
    8.33 + * Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
    8.34 + *
    8.35 + * If you wish your version of this file to be governed by only the CDDL
    8.36 + * or only the GPL Version 2, indicate your decision by adding
    8.37 + * "[Contributor] elects to include this software in this distribution
    8.38 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
    8.39 + * single choice of license, a recipient has the option to distribute
    8.40 + * your version of this file under either the CDDL, the GPL Version 2 or
    8.41 + * to extend the choice of license to its licensees as provided above.
    8.42 + * However, if you add GPL Version 2 code and therefore, elected the GPL
    8.43 + * Version 2 license, then the option applies only if the new code is
    8.44 + * made subject to such option by the copyright holder.
    8.45 + */
    8.46 +package net.java.html.boot.script.ko4j;
    8.47 +
    8.48 +import java.io.Closeable;
    8.49 +import java.io.IOException;
    8.50 +import java.lang.reflect.InvocationTargetException;
    8.51 +import java.lang.reflect.Method;
    8.52 +import java.util.concurrent.Executor;
    8.53 +import java.util.concurrent.Executors;
    8.54 +import org.apidesign.html.boot.spi.Fn;
    8.55 +import org.testng.ITest;
    8.56 +import org.testng.SkipException;
    8.57 +import org.testng.annotations.Test;
    8.58 +
    8.59 +/**
    8.60 + *
    8.61 + * @author Jaroslav Tulach <jtulach@netbeans.org>
    8.62 + */
    8.63 +public final class KOCase implements ITest, Runnable {
    8.64 +    static final Executor JS = Executors.newSingleThreadExecutor();
    8.65 +    private final Fn.Presenter p;
    8.66 +    private final Method m;
    8.67 +    private final String skipMsg;
    8.68 +    private Object result;
    8.69 +    private Object inst;
    8.70 +    private int count;
    8.71 +
    8.72 +    KOCase(Fn.Presenter p, Method m, String skipMsg) {
    8.73 +        this.p = p;
    8.74 +        this.m = m;
    8.75 +        this.skipMsg = skipMsg;
    8.76 +    }
    8.77 +
    8.78 +    @Override
    8.79 +    public String getTestName() {
    8.80 +        return m.getName();
    8.81 +    }
    8.82 +
    8.83 +    @Test
    8.84 +    public synchronized void executeTest() throws Exception {
    8.85 +        if (skipMsg != null) {
    8.86 +            throw new SkipException(skipMsg);
    8.87 +        }
    8.88 +        if (result == null) {
    8.89 +            JS.execute(this);
    8.90 +            wait();
    8.91 +        }
    8.92 +        if (result instanceof Exception) {
    8.93 +            throw (Exception)result;
    8.94 +        }
    8.95 +        if (result instanceof Error) {
    8.96 +            throw (Error)result;
    8.97 +        }
    8.98 +    }
    8.99 +
   8.100 +    @Override
   8.101 +    public synchronized void run() {
   8.102 +        boolean notify = true;
   8.103 +        Closeable a = Fn.activate(p);
   8.104 +        try {
   8.105 +            if (inst == null) {
   8.106 +                inst = m.getDeclaringClass().newInstance();
   8.107 +            }
   8.108 +            result = m.invoke(inst);
   8.109 +            if (result == null) {
   8.110 +                result = this;
   8.111 +            }
   8.112 +        } catch (InvocationTargetException ex) {
   8.113 +            Throwable r = ex.getTargetException();
   8.114 +            if (r instanceof InterruptedException) {
   8.115 +                if (count++ < 10000) {
   8.116 +                    notify = false;
   8.117 +                    JS.execute(this);
   8.118 +                    return;
   8.119 +                }
   8.120 +            }
   8.121 +            result = r;
   8.122 +        } catch (Exception ex) {
   8.123 +            result = ex;
   8.124 +        } finally {
   8.125 +            if (notify) {
   8.126 +                notifyAll();
   8.127 +            }
   8.128 +            try {
   8.129 +                a.close();
   8.130 +            } catch (IOException ex) {
   8.131 +                throw new IllegalStateException(ex);
   8.132 +            }
   8.133 +        }
   8.134 +    }
   8.135 +    
   8.136 +}
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/boot-script/src/test/java/net/java/html/boot/script/ko4j/KnockoutEnvJSTest.java	Thu Jun 05 22:13:56 2014 +0200
     9.3 @@ -0,0 +1,252 @@
     9.4 +/**
     9.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     9.6 + *
     9.7 + * Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
     9.8 + *
     9.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
    9.10 + * Other names may be trademarks of their respective owners.
    9.11 + *
    9.12 + * The contents of this file are subject to the terms of either the GNU
    9.13 + * General Public License Version 2 only ("GPL") or the Common
    9.14 + * Development and Distribution License("CDDL") (collectively, the
    9.15 + * "License"). You may not use this file except in compliance with the
    9.16 + * License. You can obtain a copy of the License at
    9.17 + * http://www.netbeans.org/cddl-gplv2.html
    9.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
    9.19 + * specific language governing permissions and limitations under the
    9.20 + * License.  When distributing the software, include this License Header
    9.21 + * Notice in each file and include the License file at
    9.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
    9.23 + * particular file as subject to the "Classpath" exception as provided
    9.24 + * by Oracle in the GPL Version 2 section of the License file that
    9.25 + * accompanied this code. If applicable, add the following below the
    9.26 + * License Header, with the fields enclosed by brackets [] replaced by
    9.27 + * your own identifying information:
    9.28 + * "Portions Copyrighted [year] [name of copyright owner]"
    9.29 + *
    9.30 + * Contributor(s):
    9.31 + *
    9.32 + * The Original Software is NetBeans. The Initial Developer of the Original
    9.33 + * Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
    9.34 + *
    9.35 + * If you wish your version of this file to be governed by only the CDDL
    9.36 + * or only the GPL Version 2, indicate your decision by adding
    9.37 + * "[Contributor] elects to include this software in this distribution
    9.38 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
    9.39 + * single choice of license, a recipient has the option to distribute
    9.40 + * your version of this file under either the CDDL, the GPL Version 2 or
    9.41 + * to extend the choice of license to its licensees as provided above.
    9.42 + * However, if you add GPL Version 2 code and therefore, elected the GPL
    9.43 + * Version 2 license, then the option applies only if the new code is
    9.44 + * made subject to such option by the copyright holder.
    9.45 + */
    9.46 +package net.java.html.boot.script.ko4j;
    9.47 +
    9.48 +import java.io.BufferedReader;
    9.49 +import java.io.IOException;
    9.50 +import java.io.InputStream;
    9.51 +import java.io.InputStreamReader;
    9.52 +import java.lang.annotation.Annotation;
    9.53 +import java.lang.reflect.Method;
    9.54 +import java.net.URI;
    9.55 +import java.net.URISyntaxException;
    9.56 +import java.net.URL;
    9.57 +import java.net.URLConnection;
    9.58 +import java.util.ArrayList;
    9.59 +import java.util.List;
    9.60 +import java.util.Map;
    9.61 +import java.util.concurrent.Executor;
    9.62 +import java.util.concurrent.Executors;
    9.63 +import net.java.html.BrwsrCtx;
    9.64 +import net.java.html.boot.BrowserBuilder;
    9.65 +import net.java.html.boot.script.Scripts;
    9.66 +import net.java.html.js.JavaScriptBody;
    9.67 +import org.apidesign.html.boot.spi.Fn;
    9.68 +import org.apidesign.html.context.spi.Contexts;
    9.69 +import org.apidesign.html.json.spi.Technology;
    9.70 +import org.apidesign.html.json.spi.Transfer;
    9.71 +import org.apidesign.html.json.tck.KOTest;
    9.72 +import org.apidesign.html.json.tck.KnockoutTCK;
    9.73 +import org.netbeans.html.ko4j.KO4J;
    9.74 +import org.netbeans.html.wstyrus.TyrusContext;
    9.75 +import org.openide.util.lookup.ServiceProvider;
    9.76 +import org.testng.Assert;
    9.77 +import static org.testng.Assert.*;
    9.78 +import org.testng.annotations.Factory;
    9.79 +
    9.80 +/**
    9.81 + *
    9.82 + * @author Jaroslav Tulach <jtulach@netbeans.org>
    9.83 + */
    9.84 +@ServiceProvider(service = KnockoutTCK.class)
    9.85 +public final class KnockoutEnvJSTest extends KnockoutTCK {
    9.86 +    private static Class<?> browserClass;
    9.87 +    private static Fn.Presenter browserContext;
    9.88 +    private static URI baseUri;
    9.89 +    
    9.90 +    public KnockoutEnvJSTest() {
    9.91 +    }
    9.92 +    
    9.93 +    @Factory public static Object[] compatibilityTests() throws Exception {
    9.94 +        try {
    9.95 +            Class.forName("java.lang.FunctionalInterface");
    9.96 +        } catch (ClassNotFoundException ex) {
    9.97 +            // only runs on JDK8
    9.98 +            return new Object[0];
    9.99 +        }
   9.100 +        
   9.101 +        
   9.102 +        Class[] arr = testClasses();
   9.103 +        for (int i = 0; i < arr.length; i++) {
   9.104 +            assertEquals(
   9.105 +                arr[i].getClassLoader(),
   9.106 +                KnockoutEnvJSTest.class.getClassLoader(),
   9.107 +                "All classes loaded by the same classloader"
   9.108 +            );
   9.109 +        }
   9.110 +        
   9.111 +        baseUri = DynamicHTTP.initServer();
   9.112 +        
   9.113 +        final Fn.Presenter p = Scripts.createPresenter(KOCase.JS);
   9.114 +        InputStream is = KnockoutEnvJSTest.class.getResourceAsStream("env.nashorn.1.2-debug.js");
   9.115 +        p.loadScript(new InputStreamReader(is));
   9.116 +        is.close();
   9.117 +
   9.118 +        final BrowserBuilder bb = BrowserBuilder.newBrowser(p).
   9.119 +            loadClass(KnockoutEnvJSTest.class).
   9.120 +            loadPage(baseUri.toString()).
   9.121 +            invoke("initialized");
   9.122 +        
   9.123 +        Executors.newSingleThreadExecutor().submit(new Runnable() {
   9.124 +            @Override
   9.125 +            public void run() {
   9.126 +                bb.showAndWait();
   9.127 +            }
   9.128 +        });
   9.129 +        
   9.130 +        ClassLoader l = getClassLoader();
   9.131 +        List<Object> res = new ArrayList<Object>();
   9.132 +        for (int i = 0; i < arr.length; i++) {
   9.133 +            Class<?> c = Class.forName(arr[i].getName(), true, l);
   9.134 +            seekKOTests(c, res);
   9.135 +        }
   9.136 +        return res.toArray();
   9.137 +    }
   9.138 +
   9.139 +    private static void seekKOTests(Class<?> c, List<Object> res) throws SecurityException, ClassNotFoundException {
   9.140 +        Class<? extends Annotation> koTest =
   9.141 +            c.getClassLoader().loadClass(KOTest.class.getName()).
   9.142 +            asSubclass(Annotation.class);
   9.143 +        for (Method m : c.getMethods()) {
   9.144 +            if (m.getAnnotation(koTest) != null) {
   9.145 +                res.add(new KOCase(browserContext, m, skipMsg(m.getName())));
   9.146 +            }
   9.147 +        }
   9.148 +    }
   9.149 +    
   9.150 +    private static String skipMsg(String methodName) {
   9.151 +        if (!"1.8.0_05-b13".equals(System.getProperty("java.runtime.version"))) { // NOI18N
   9.152 +            // we know that 1.8.0_05 is broken, 
   9.153 +            // let's not speculate about anything else
   9.154 +            return null;
   9.155 +        }
   9.156 +        switch (methodName) {
   9.157 +            case "paintTheGridOnClick":
   9.158 +            case "displayContentOfArrayOfPeople":
   9.159 +            case "connectUsingWebSocket":
   9.160 +                return "Does not work on JDK8b132, due to JDK-8046013";
   9.161 +        }
   9.162 +        return null;
   9.163 +    }
   9.164 +
   9.165 +    static synchronized ClassLoader getClassLoader() throws InterruptedException {
   9.166 +        while (browserClass == null) {
   9.167 +            KnockoutEnvJSTest.class.wait();
   9.168 +        }
   9.169 +        return browserClass.getClassLoader();
   9.170 +    }
   9.171 +    
   9.172 +    public static synchronized void initialized(Class<?> browserCls) throws Exception {
   9.173 +        browserClass = browserCls;
   9.174 +        browserContext = Fn.activePresenter();
   9.175 +        KnockoutEnvJSTest.class.notifyAll();
   9.176 +    }
   9.177 +    
   9.178 +    public static void initialized() throws Exception {
   9.179 +        Assert.assertSame(
   9.180 +            KnockoutEnvJSTest.class.getClassLoader(),
   9.181 +            ClassLoader.getSystemClassLoader(),
   9.182 +            "No special classloaders"
   9.183 +        );
   9.184 +        KnockoutEnvJSTest.initialized(KnockoutEnvJSTest.class);
   9.185 +        browserContext = Fn.activePresenter();
   9.186 +    }
   9.187 +    
   9.188 +    @Override
   9.189 +    public BrwsrCtx createContext() {
   9.190 +        KO4J fx = new KO4J(browserContext);
   9.191 +        TyrusContext tc = new TyrusContext();
   9.192 +        Contexts.Builder cb = Contexts.newBuilder().
   9.193 +            register(Technology.class, fx.knockout(), 10).
   9.194 +            register(Transfer.class, tc, 10);
   9.195 +        cb.register(Fn.Presenter.class, browserContext, 10);
   9.196 +        cb.register(Executor.class, (Executor)browserContext, 10);
   9.197 +        BrwsrCtx ctx = cb.build();
   9.198 +        return ctx;
   9.199 +    }
   9.200 +
   9.201 +    @Override
   9.202 +    public Object createJSON(Map<String, Object> values) {
   9.203 +        Object json = createJSON();
   9.204 +        for (Map.Entry<String, Object> entry : values.entrySet()) {
   9.205 +            setProperty(json, entry.getKey(), entry.getValue());
   9.206 +        }
   9.207 +        return json;
   9.208 +    }
   9.209 +    
   9.210 +    @JavaScriptBody(args = {}, body = "return new Object();")
   9.211 +    private static native Object createJSON();
   9.212 +    @JavaScriptBody(args = { "json", "key", "value" }, body = "json[key] = value;")
   9.213 +    private static native void setProperty(Object json, String key, Object value);
   9.214 +
   9.215 +    @Override
   9.216 +    @JavaScriptBody(args = { "s", "args" }, body = "\n"
   9.217 +        + "var f = new Function(s);\n"
   9.218 +        + "return f.apply(null, args);\n"
   9.219 +    )
   9.220 +    public native Object executeScript(String script, Object[] arguments);
   9.221 +
   9.222 +    private static String findBaseURL() {
   9.223 +        return baseUri.toString();
   9.224 +    }
   9.225 +    
   9.226 +    @Override
   9.227 +    public URI prepareURL(String content, String mimeType, String[] parameters) {
   9.228 +        try {
   9.229 +            final URL baseURL = new URL(findBaseURL());
   9.230 +            StringBuilder sb = new StringBuilder();
   9.231 +            sb.append("/dynamic?mimeType=").append(mimeType);
   9.232 +            for (int i = 0; i < parameters.length; i++) {
   9.233 +                sb.append("&param" + i).append("=").append(parameters[i]);
   9.234 +            }
   9.235 +            String mangle = content.replace("\n", "%0a")
   9.236 +                .replace("\"", "\\\"").replace(" ", "%20");
   9.237 +            sb.append("&content=").append(mangle);
   9.238 +
   9.239 +            URL query = new URL(baseURL, sb.toString());
   9.240 +            URLConnection c = query.openConnection();
   9.241 +            BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
   9.242 +            URI connectTo = new URI(br.readLine());
   9.243 +            return connectTo;
   9.244 +        } catch (IOException ex) {
   9.245 +            throw new IllegalStateException(ex);
   9.246 +        } catch (URISyntaxException ex) {
   9.247 +            throw new IllegalStateException(ex);
   9.248 +        }
   9.249 +    }
   9.250 +
   9.251 +    @Override
   9.252 +    public boolean canFailWebSocketTest() {
   9.253 +        return true;
   9.254 +    }
   9.255 +}
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/boot-script/src/test/resources/net/java/html/boot/script/ko4j/env.nashorn.1.2-debug.js	Thu Jun 05 22:13:56 2014 +0200
    10.3 @@ -0,0 +1,23982 @@
    10.4 +/*
    10.5 + * Envjs core-env.1.2.13
    10.6 + * Pure JavaScript Browser Environment
    10.7 + * By John Resig <http://ejohn.org/> and the Envjs Team
    10.8 + * Copyright 2008-2010 John Resig, under the MIT License
    10.9 + */
   10.10 +
   10.11 +load("nashorn:mozilla_compat.js");
   10.12 +
   10.13 +var Envjs = function(){
   10.14 +    var i,
   10.15 +        name,
   10.16 +        override = function(){
   10.17 +            for(i=0;i<arguments.length;i++){
   10.18 +                for ( name in arguments[i] ) {
   10.19 +                    var g = arguments[i].__lookupGetter__(name),
   10.20 +                        s = arguments[i].__lookupSetter__(name);
   10.21 +                    if ( g || s ) {
   10.22 +                        if ( g ) { Envjs.__defineGetter__(name, g); }
   10.23 +                        if ( s ) { Envjs.__defineSetter__(name, s); }
   10.24 +                    } else {
   10.25 +                        Envjs[name] = arguments[i][name];
   10.26 +                    }
   10.27 +                }
   10.28 +            }
   10.29 +        };
   10.30 +    if(arguments.length === 1 && typeof(arguments[0]) == 'string'){
   10.31 +        window.location = arguments[0];
   10.32 +    }else if (arguments.length === 1 && typeof(arguments[0]) == "object"){
   10.33 +        override(arguments[0]);
   10.34 +    }else if(arguments.length === 2 && typeof(arguments[0]) == 'string'){
   10.35 +        override(arguments[1]);
   10.36 +        window.location = arguments[0];
   10.37 +    }
   10.38 +    return;
   10.39 +},
   10.40 +__this__ = this;
   10.41 +
   10.42 +//eg "Mozilla"
   10.43 +Envjs.appCodeName  = "Envjs";
   10.44 +
   10.45 +//eg "Gecko/20070309 Firefox/2.0.0.3"
   10.46 +Envjs.appName      = "Resig/20070309 PilotFish/1.2.13";
   10.47 +
   10.48 +Envjs.version = "1.6";//?
   10.49 +Envjs.revision = '';
   10.50 +/*
   10.51 + * Envjs core-env.1.2.13 
   10.52 + * Pure JavaScript Browser Environment
   10.53 + * By John Resig <http://ejohn.org/> and the Envjs Team
   10.54 + * Copyright 2008-2010 John Resig, under the MIT License
   10.55 + */
   10.56 +
   10.57 +//CLOSURE_START
   10.58 +(function(){
   10.59 +
   10.60 +
   10.61 +
   10.62 +
   10.63 +
   10.64 +/**
   10.65 + * @author john resig
   10.66 + */
   10.67 +// Helper method for extending one object with another.
   10.68 +function __extend__(a,b) {
   10.69 +    for ( var i in b ) {
   10.70 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
   10.71 +        if ( g || s ) {
   10.72 +            if ( g ) { a.__defineGetter__(i, g); }
   10.73 +            if ( s ) { a.__defineSetter__(i, s); }
   10.74 +        } else {
   10.75 +            a[i] = b[i];
   10.76 +        }
   10.77 +    } return a;
   10.78 +}
   10.79 +
   10.80 +/**
   10.81 + * Writes message to system out
   10.82 + * @param {String} message
   10.83 + */
   10.84 +Envjs.log = function(message){};
   10.85 +
   10.86 +/**
   10.87 + * Constants providing enumerated levels for logging in modules
   10.88 + */
   10.89 +Envjs.DEBUG = 1;
   10.90 +Envjs.INFO = 2;
   10.91 +Envjs.WARN = 3;
   10.92 +Envjs.ERROR = 3;
   10.93 +Envjs.NONE = 3;
   10.94 +
   10.95 +/**
   10.96 + * Writes error info out to console
   10.97 + * @param {Error} e
   10.98 + */
   10.99 +Envjs.lineSource = function(e){};
  10.100 +
  10.101 +    
  10.102 +/**
  10.103 + * TODO: used in ./event/eventtarget.js
  10.104 + * @param {Object} event
  10.105 + */
  10.106 +Envjs.defaultEventBehaviors = {};
  10.107 +
  10.108 +
  10.109 +/**
  10.110 + * describes which script src values will trigger Envjs to load
  10.111 + * the script like a browser would
  10.112 + */
  10.113 +Envjs.scriptTypes = {
  10.114 +    "text/javascript"   :false,
  10.115 +    "text/envjs"        :true
  10.116 +};
  10.117 +
  10.118 +/**
  10.119 + * will be called when loading a script throws an error
  10.120 + * @param {Object} script
  10.121 + * @param {Object} e
  10.122 + */
  10.123 +Envjs.onScriptLoadError = function(script, e){
  10.124 +    console.log('error loading script %s %s', script, e);
  10.125 +};
  10.126 +
  10.127 +
  10.128 +/**
  10.129 + * load and execute script tag text content
  10.130 + * @param {Object} script
  10.131 + */
  10.132 +Envjs.loadInlineScript = function(script){
  10.133 +    var tmpFile;
  10.134 +    tmpFile = Envjs.writeToTempFile(script.text, 'js') ;
  10.135 +    load(tmpFile);
  10.136 +};
  10.137 +
  10.138 +/**
  10.139 + * Should evaluate script in some context
  10.140 + * @param {Object} context
  10.141 + * @param {Object} source
  10.142 + * @param {Object} name
  10.143 + */
  10.144 +Envjs.eval = function(context, source, name){};
  10.145 +
  10.146 +
  10.147 +/**
  10.148 + * Executes a script tag
  10.149 + * @param {Object} script
  10.150 + * @param {Object} parser
  10.151 + */
  10.152 +Envjs.loadLocalScript = function(script){
  10.153 +    //console.log("loading script %s", script);
  10.154 +    var types,
  10.155 +    src,
  10.156 +    i,
  10.157 +    base,
  10.158 +    filename,
  10.159 +    xhr;
  10.160 +
  10.161 +    if(script.type){
  10.162 +        types = script.type.split(";");
  10.163 +        for(i=0;i<types.length;i++){
  10.164 +            if(Envjs.scriptTypes[types[i]]){
  10.165 +                //ok this script type is allowed
  10.166 +                break;
  10.167 +            }
  10.168 +            if(i+1 == types.length){
  10.169 +                //console.log('wont load script type %s', script.type);
  10.170 +                return false;
  10.171 +            }
  10.172 +        }
  10.173 +    }
  10.174 +
  10.175 +    try{
  10.176 +        //console.log('handling inline scripts');
  10.177 +        if(!script.src.length){
  10.178 +            Envjs.loadInlineScript(script);
  10.179 +            return true;
  10.180 +        }
  10.181 +    }catch(e){
  10.182 +        //Envjs.error("Error loading script.", e);
  10.183 +        Envjs.onScriptLoadError(script, e);
  10.184 +        return false;
  10.185 +    }
  10.186 +
  10.187 +
  10.188 +    //console.log("loading allowed external script %s", script.src);
  10.189 +
  10.190 +    //lets you register a function to execute
  10.191 +    //before the script is loaded
  10.192 +    if(Envjs.beforeScriptLoad){
  10.193 +        for(src in Envjs.beforeScriptLoad){
  10.194 +            if(script.src.match(src)){
  10.195 +                Envjs.beforeScriptLoad[src](script);
  10.196 +            }
  10.197 +        }
  10.198 +    }
  10.199 +    base = "" + script.ownerDocument.location;
  10.200 +    //filename = Envjs.uri(script.src.match(/([^\?#]*)/)[1], base );
  10.201 +    //console.log('loading script from base %s', base);
  10.202 +    filename = Envjs.uri(script.src, base);
  10.203 +    try {
  10.204 +        xhr = new XMLHttpRequest();
  10.205 +        xhr.open("GET", filename, false/*syncronous*/);
  10.206 +        //console.log("loading external script %s", filename);
  10.207 +        xhr.onreadystatechange = function(){
  10.208 +            //console.log("readyState %s", xhr.readyState);
  10.209 +            if(xhr.readyState === 4){
  10.210 +                Envjs.eval(
  10.211 +                    script.ownerDocument.ownerWindow,
  10.212 +                    xhr.responseText,
  10.213 +                    filename
  10.214 +                );
  10.215 +            }
  10.216 +        };
  10.217 +        xhr.send(null, false);
  10.218 +    } catch(e) {
  10.219 +        console.log("could not load script %s \n %s", filename, e );
  10.220 +        Envjs.onScriptLoadError(script, e);
  10.221 +        return false;
  10.222 +    }
  10.223 +    //lets you register a function to execute
  10.224 +    //after the script is loaded
  10.225 +    if(Envjs.afterScriptLoad){
  10.226 +        for(src in Envjs.afterScriptLoad){
  10.227 +            if(script.src.match(src)){
  10.228 +                Envjs.afterScriptLoad[src](script);
  10.229 +            }
  10.230 +        }
  10.231 +    }
  10.232 +    return true;
  10.233 +};
  10.234 +
  10.235 +
  10.236 +/**
  10.237 + * An 'image' was requested by the document.
  10.238 + *
  10.239 + * - During inital parse of a <link>
  10.240 + * - Via an innerHTML parse of a <link>
  10.241 + * - A modificiation of the 'src' attribute of an Image/HTMLImageElement
  10.242 + *
  10.243 + * NOTE: this is optional API.  If this doesn't exist then the default
  10.244 + * 'loaded' event occurs.
  10.245 + *
  10.246 + * @param node {Object} the <img> node
  10.247 + * @param node the src value
  10.248 + * @return 'true' to indicate the 'load' succeed, false otherwise
  10.249 + */
  10.250 +Envjs.loadImage = function(node, src) {
  10.251 +    return true;
  10.252 +};
  10.253 +
  10.254 +
  10.255 +/**
  10.256 + * A 'link'  was requested by the document.  Typically this occurs when:
  10.257 + * - During inital parse of a <link>
  10.258 + * - Via an innerHTML parse of a <link>
  10.259 + * - A modificiation of the 'href' attribute on a <link> node in the tree
  10.260 + *
  10.261 + * @param node {Object} is the link node in question
  10.262 + * @param href {String} is the href.
  10.263 + *
  10.264 + * Return 'true' to indicate that the 'load' was successful, or false
  10.265 + * otherwise.  The appropriate event is then triggered.
  10.266 + *
  10.267 + * NOTE: this is optional API.  If this doesn't exist then the default
  10.268 + *   'loaded' event occurs
  10.269 + */
  10.270 +Envjs.loadLink = function(node, href) {
  10.271 +    return true;
  10.272 +};
  10.273 +
  10.274 +(function(){
  10.275 +
  10.276 +
  10.277 +/*
  10.278 + *  cookie handling
  10.279 + *  Private internal helper class used to save/retreive cookies
  10.280 + */
  10.281 +
  10.282 +/**
  10.283 + * Specifies the location of the cookie file
  10.284 + */
  10.285 +Envjs.cookieFile = function(){
  10.286 +    return 'file://'+Envjs.homedir+'/.cookies';
  10.287 +};
  10.288 +
  10.289 +/**
  10.290 + * saves cookies to a local file
  10.291 + * @param {Object} htmldoc
  10.292 + */
  10.293 +Envjs.saveCookies = function(){
  10.294 +    var cookiejson = JSON.stringify(Envjs.cookies.peristent,null,'\t');
  10.295 +    //console.log('persisting cookies %s', cookiejson);
  10.296 +    Envjs.writeToFile(cookiejson, Envjs.cookieFile());
  10.297 +};
  10.298 +
  10.299 +/**
  10.300 + * loads cookies from a local file
  10.301 + * @param {Object} htmldoc
  10.302 + */
  10.303 +Envjs.loadCookies = function(){
  10.304 +    var cookiejson,
  10.305 +        js;
  10.306 +    try{
  10.307 +        cookiejson = Envjs.readFromFile(Envjs.cookieFile())
  10.308 +        js = JSON.parse(cookiejson, null, '\t');
  10.309 +    }catch(e){
  10.310 +        //console.log('failed to load cookies %s', e);
  10.311 +        js = {};
  10.312 +    }
  10.313 +    return js;
  10.314 +};
  10.315 +
  10.316 +Envjs.cookies = {
  10.317 +    persistent:{
  10.318 +        //domain - key on domain name {
  10.319 +            //path - key on path {
  10.320 +                //name - key on name {
  10.321 +                     //value : cookie value
  10.322 +                     //other cookie properties
  10.323 +                //}
  10.324 +            //}
  10.325 +        //}
  10.326 +        //expire - provides a timestamp for expiring the cookie
  10.327 +        //cookie - the cookie!
  10.328 +    },
  10.329 +    temporary:{//transient is a reserved word :(
  10.330 +        //like above
  10.331 +    }
  10.332 +};
  10.333 +
  10.334 +var __cookies__;
  10.335 +
  10.336 +//HTMLDocument cookie
  10.337 +Envjs.setCookie = function(url, cookie){
  10.338 +    var i,
  10.339 +        index,
  10.340 +        name,
  10.341 +        value,
  10.342 +        properties = {},
  10.343 +        attr,
  10.344 +        attrs;
  10.345 +    url = Envjs.urlsplit(url);
  10.346 +    if(cookie)
  10.347 +        attrs = cookie.split(";");
  10.348 +    else
  10.349 +        return;
  10.350 +    
  10.351 +    //for now the strategy is to simply create a json object
  10.352 +    //and post it to a file in the .cookies.js file.  I hate parsing
  10.353 +    //dates so I decided not to implement support for 'expires' 
  10.354 +    //(which is deprecated) and instead focus on the easier 'max-age'
  10.355 +    //(which succeeds 'expires') 
  10.356 +    cookie = {};//keyword properties of the cookie
  10.357 +    cookie['domain'] = url.hostname;
  10.358 +    cookie['path'] = url.path||'/';
  10.359 +    for(i=0;i<attrs.length;i++){
  10.360 +        index = attrs[i].indexOf("=");
  10.361 +        if(index > -1){
  10.362 +            name = __trim__(attrs[i].slice(0,index));
  10.363 +            value = __trim__(attrs[i].slice(index+1));
  10.364 +            if(name=='max-age'){
  10.365 +                //we'll have to when to check these
  10.366 +                //and garbage collect expired cookies
  10.367 +                cookie[name] = parseInt(value, 10);
  10.368 +            } else if( name == 'domain' ){
  10.369 +                if(__domainValid__(url, value)){
  10.370 +                    cookie['domain'] = value;
  10.371 +                }
  10.372 +            } else if( name == 'path' ){
  10.373 +                //not sure of any special logic for path
  10.374 +                cookie['path'] = value;
  10.375 +            } else {
  10.376 +                //its not a cookie keyword so store it in our array of properties
  10.377 +                //and we'll serialize individually in a moment
  10.378 +                properties[name] = value;
  10.379 +            }
  10.380 +        }else{
  10.381 +            if( attrs[i] == 'secure' ){
  10.382 +                cookie[attrs[i]] = true;
  10.383 +            }
  10.384 +        }
  10.385 +    }
  10.386 +    if(!('max-age' in cookie)){
  10.387 +        //it's a transient cookie so it only lasts as long as 
  10.388 +        //the window.location remains the same (ie in-memory cookie)
  10.389 +        __mergeCookie__(Envjs.cookies.temporary, cookie, properties);
  10.390 +    }else{
  10.391 +        //the cookie is persistent
  10.392 +        __mergeCookie__(Envjs.cookies.persistent, cookie, properties);
  10.393 +        Envjs.saveCookies();
  10.394 +    }
  10.395 +};
  10.396 +
  10.397 +function __domainValid__(url, value){
  10.398 +    var i,
  10.399 +        domainParts = url.hostname.split('.').reverse(),
  10.400 +        newDomainParts = value.split('.').reverse();
  10.401 +    if(newDomainParts.length > 1){
  10.402 +        for(i=0;i<newDomainParts.length;i++){
  10.403 +            if(!(newDomainParts[i] == domainParts[i])){
  10.404 +                return false;
  10.405 +            }
  10.406 +        }
  10.407 +        return true;
  10.408 +    }
  10.409 +    return false;
  10.410 +};
  10.411 +
  10.412 +Envjs.getCookies = function(url){
  10.413 +    //The cookies that are returned must belong to the same domain
  10.414 +    //and be at or below the current window.location.path.  Also
  10.415 +    //we must check to see if the cookie was set to 'secure' in which
  10.416 +    //case we must check our current location.protocol to make sure it's
  10.417 +    //https:
  10.418 +    var persisted;
  10.419 +    url = Envjs.urlsplit(url);
  10.420 +    if(!__cookies__){
  10.421 +        try{
  10.422 +            __cookies__ = true;
  10.423 +            try{
  10.424 +                persisted = Envjs.loadCookies();
  10.425 +            }catch(e){
  10.426 +                //fail gracefully
  10.427 +                //console.log('%s', e);
  10.428 +            }   
  10.429 +            if(persisted){
  10.430 +                __extend__(Envjs.cookies.persistent, persisted);
  10.431 +            }
  10.432 +            //console.log('set cookies for doc %s', doc.baseURI);
  10.433 +        }catch(e){
  10.434 +            console.log('cookies not loaded %s', e)
  10.435 +        };
  10.436 +    }
  10.437 +    var temporary = __cookieString__(Envjs.cookies.temporary, url),
  10.438 +        persistent =  __cookieString__(Envjs.cookies.persistent, url);
  10.439 +    //console.log('temporary cookies: %s', temporary);  
  10.440 +    //console.log('persistent cookies: %s', persistent);  
  10.441 +    return  temporary + persistent;
  10.442 +};
  10.443 +
  10.444 +function __cookieString__(cookies, url) {
  10.445 +    var cookieString = "",
  10.446 +        domain, 
  10.447 +        path,
  10.448 +        name,
  10.449 +        i=0;
  10.450 +    for (domain in cookies) {
  10.451 +        // check if the cookie is in the current domain (if domain is set)
  10.452 +        // console.log('cookie domain %s', domain);
  10.453 +        if (domain == "" || domain == url.hostname) {
  10.454 +            for (path in cookies[domain]) {
  10.455 +                // console.log('cookie domain path %s', path);
  10.456 +                // make sure path is at or below the window location path
  10.457 +                if (path == "/" || url.path.indexOf(path) > -1) {
  10.458 +                    for (name in cookies[domain][path]) {
  10.459 +                        // console.log('cookie domain path name %s', name);
  10.460 +                        cookieString += 
  10.461 +                            ((i++ > 0)?'; ':'') +
  10.462 +                            name + "=" + 
  10.463 +                            cookies[domain][path][name].value;
  10.464 +                    }
  10.465 +                }
  10.466 +            }
  10.467 +        }
  10.468 +    }
  10.469 +    return cookieString;
  10.470 +};
  10.471 +
  10.472 +function __mergeCookie__(target, cookie, properties){
  10.473 +    var name, now;
  10.474 +    if(!target[cookie.domain]){
  10.475 +        target[cookie.domain] = {};
  10.476 +    }
  10.477 +    if(!target[cookie.domain][cookie.path]){
  10.478 +        target[cookie.domain][cookie.path] = {};
  10.479 +    }
  10.480 +    for(name in properties){
  10.481 +        now = new Date().getTime();
  10.482 +        target[cookie.domain][cookie.path][name] = {
  10.483 +            "value":properties[name],
  10.484 +            "secure":cookie.secure,
  10.485 +            "max-age":cookie['max-age'],
  10.486 +            "date-created":now,
  10.487 +            "expiration":(cookie['max-age']===0) ? 
  10.488 +                0 :
  10.489 +                now + cookie['max-age']
  10.490 +        };
  10.491 +        //console.log('cookie is %o',target[cookie.domain][cookie.path][name]);
  10.492 +    }
  10.493 +};
  10.494 +
  10.495 +})();//end cookies
  10.496 +/*
  10.497 +    http://www.JSON.org/json2.js
  10.498 +    2008-07-15
  10.499 +
  10.500 +    Public Domain.
  10.501 +
  10.502 +    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
  10.503 +
  10.504 +    See http://www.JSON.org/js.html
  10.505 +
  10.506 +   
  10.507 +    This code should be minified before deployment.
  10.508 +    See http://javascript.crockford.com/jsmin.html
  10.509 +
  10.510 +    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
  10.511 +    NOT CONTROL.
  10.512 +*/
  10.513 +try{ JSON; }catch(e){ 
  10.514 +JSON = function () {
  10.515 +
  10.516 +    function f(n) {
  10.517 +        // Format integers to have at least two digits.
  10.518 +        return n < 10 ? '0' + n : n;
  10.519 +    }
  10.520 +
  10.521 +    Date.prototype.toJSON = function (key) {
  10.522 +
  10.523 +        return this.getUTCFullYear()   + '-' +
  10.524 +             f(this.getUTCMonth() + 1) + '-' +
  10.525 +             f(this.getUTCDate())      + 'T' +
  10.526 +             f(this.getUTCHours())     + ':' +
  10.527 +             f(this.getUTCMinutes())   + ':' +
  10.528 +             f(this.getUTCSeconds())   + 'Z';
  10.529 +    };
  10.530 +
  10.531 +    String.prototype.toJSON = function (key) {
  10.532 +        return String(this);
  10.533 +    };
  10.534 +    Number.prototype.toJSON =
  10.535 +    Boolean.prototype.toJSON = function (key) {
  10.536 +        return this.valueOf();
  10.537 +    };
  10.538 +
  10.539 +    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
  10.540 +        escapeable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
  10.541 +        gap,
  10.542 +        indent,
  10.543 +        meta = {    // table of character substitutions
  10.544 +            '\b': '\\b',
  10.545 +            '\t': '\\t',
  10.546 +            '\n': '\\n',
  10.547 +            '\f': '\\f',
  10.548 +            '\r': '\\r',
  10.549 +            '"' : '\\"',
  10.550 +            '\\': '\\\\'
  10.551 +        },
  10.552 +        rep;
  10.553 +
  10.554 +
  10.555 +    function quote(string) {
  10.556 +        
  10.557 +        escapeable.lastIndex = 0;
  10.558 +        return escapeable.test(string) ?
  10.559 +            '"' + string.replace(escapeable, function (a) {
  10.560 +                var c = meta[a];
  10.561 +                if (typeof c === 'string') {
  10.562 +                    return c;
  10.563 +                }
  10.564 +                return '\\u' + ('0000' +
  10.565 +                        (+(a.charCodeAt(0))).toString(16)).slice(-4);
  10.566 +            }) + '"' :
  10.567 +            '"' + string + '"';
  10.568 +    }
  10.569 +
  10.570 +
  10.571 +    function str(key, holder) {
  10.572 +
  10.573 +        var i,          // The loop counter.
  10.574 +            k,          // The member key.
  10.575 +            v,          // The member value.
  10.576 +            length,
  10.577 +            mind = gap,
  10.578 +            partial,
  10.579 +            value = holder[key];
  10.580 +
  10.581 +        if (value && typeof value === 'object' &&
  10.582 +                typeof value.toJSON === 'function') {
  10.583 +            value = value.toJSON(key);
  10.584 +        }
  10.585 +        if (typeof rep === 'function') {
  10.586 +            value = rep.call(holder, key, value);
  10.587 +        }
  10.588 +
  10.589 +        switch (typeof value) {
  10.590 +        case 'string':
  10.591 +            return quote(value);
  10.592 +
  10.593 +        case 'number':
  10.594 +            return isFinite(value) ? String(value) : 'null';
  10.595 +
  10.596 +        case 'boolean':
  10.597 +        case 'null':
  10.598 +
  10.599 +            return String(value);
  10.600 +            
  10.601 +        case 'object':
  10.602 +
  10.603 +            if (!value) {
  10.604 +                return 'null';
  10.605 +            }
  10.606 +            gap += indent;
  10.607 +            partial = [];
  10.608 +
  10.609 +            if (typeof value.length === 'number' &&
  10.610 +                    !(value.propertyIsEnumerable('length'))) {
  10.611 +
  10.612 +                length = value.length;
  10.613 +                for (i = 0; i < length; i += 1) {
  10.614 +                    partial[i] = str(i, value) || 'null';
  10.615 +                }
  10.616 +                
  10.617 +                v = partial.length === 0 ? '[]' :
  10.618 +                    gap ? '[\n' + gap +
  10.619 +                            partial.join(',\n' + gap) + '\n' +
  10.620 +                                mind + ']' :
  10.621 +                          '[' + partial.join(',') + ']';
  10.622 +                gap = mind;
  10.623 +                return v;
  10.624 +            }
  10.625 +
  10.626 +            if (rep && typeof rep === 'object') {
  10.627 +                length = rep.length;
  10.628 +                for (i = 0; i < length; i += 1) {
  10.629 +                    k = rep[i];
  10.630 +                    if (typeof k === 'string') {
  10.631 +                        v = str(k, value);
  10.632 +                        if (v) {
  10.633 +                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
  10.634 +                        }
  10.635 +                    }
  10.636 +                }
  10.637 +            } else {
  10.638 +
  10.639 +                for (k in value) {
  10.640 +                    if (Object.hasOwnProperty.call(value, k)) {
  10.641 +                        v = str(k, value);
  10.642 +                        if (v) {
  10.643 +                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
  10.644 +                        }
  10.645 +                    }
  10.646 +                }
  10.647 +            }
  10.648 +
  10.649 +            v = partial.length === 0 ? '{}' :
  10.650 +                gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
  10.651 +                        mind + '}' : '{' + partial.join(',') + '}';
  10.652 +            gap = mind;
  10.653 +            return v;
  10.654 +        }
  10.655 +    }
  10.656 +
  10.657 +    return {
  10.658 +        stringify: function (value, replacer, space) {
  10.659 +
  10.660 +            var i;
  10.661 +            gap = '';
  10.662 +            indent = '';
  10.663 +
  10.664 +            if (typeof space === 'number') {
  10.665 +                for (i = 0; i < space; i += 1) {
  10.666 +                    indent += ' ';
  10.667 +                }
  10.668 +
  10.669 +            } else if (typeof space === 'string') {
  10.670 +                indent = space;
  10.671 +            }
  10.672 +
  10.673 +            rep = replacer;
  10.674 +            if (replacer && typeof replacer !== 'function' &&
  10.675 +                    (typeof replacer !== 'object' ||
  10.676 +                     typeof replacer.length !== 'number')) {
  10.677 +                throw new Error('JSON.stringify');
  10.678 +            }
  10.679 +
  10.680 +            return str('', {'': value});
  10.681 +        },
  10.682 +
  10.683 +
  10.684 +        parse: function (text, reviver) {
  10.685 +            var j;
  10.686 +            function walk(holder, key) {
  10.687 +                var k, v, value = holder[key];
  10.688 +                if (value && typeof value === 'object') {
  10.689 +                    for (k in value) {
  10.690 +                        if (Object.hasOwnProperty.call(value, k)) {
  10.691 +                            v = walk(value, k);
  10.692 +                            if (v !== undefined) {
  10.693 +                                value[k] = v;
  10.694 +                            } else {
  10.695 +                                delete value[k];
  10.696 +                            }
  10.697 +                        }
  10.698 +                    }
  10.699 +                }
  10.700 +                return reviver.call(holder, key, value);
  10.701 +            }
  10.702 +
  10.703 +            cx.lastIndex = 0;
  10.704 +            if (cx.test(text)) {
  10.705 +                text = text.replace(cx, function (a) {
  10.706 +                    return '\\u' + ('0000' +
  10.707 +                            (+(a.charCodeAt(0))).toString(16)).slice(-4);
  10.708 +                });
  10.709 +            }
  10.710 +
  10.711 +
  10.712 +            if (/^[\],:{}\s]*$/.
  10.713 +test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
  10.714 +replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
  10.715 +replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
  10.716 +        
  10.717 +                j = eval('(' + text + ')');
  10.718 +
  10.719 +                return typeof reviver === 'function' ?
  10.720 +                    walk({'': j}, '') : j;
  10.721 +            }
  10.722 +
  10.723 +            throw new SyntaxError('JSON.parse');
  10.724 +        }
  10.725 +    };
  10.726 +}();
  10.727 +
  10.728 +}
  10.729 +
  10.730 +/**
  10.731 + * synchronizes thread modifications
  10.732 + * @param {Function} fn
  10.733 + */
  10.734 +Envjs.sync = function(fn){};
  10.735 +
  10.736 +/**
  10.737 + * sleep thread for specified duration
  10.738 + * @param {Object} millseconds
  10.739 + */
  10.740 +Envjs.sleep = function(millseconds){};
  10.741 +
  10.742 +/**
  10.743 + * Interval to wait on event loop when nothing is happening
  10.744 + */
  10.745 +Envjs.WAIT_INTERVAL = 20;//milliseconds
  10.746 +
  10.747 +/*
  10.748 + * Copyright (c) 2010 Nick Galbreath
  10.749 + * http://code.google.com/p/stringencoders/source/browse/#svn/trunk/javascript
  10.750 + *
  10.751 + * Permission is hereby granted, free of charge, to any person
  10.752 + * obtaining a copy of this software and associated documentation
  10.753 + * files (the "Software"), to deal in the Software without
  10.754 + * restriction, including without limitation the rights to use,
  10.755 + * copy, modify, merge, publish, distribute, sublicense, and/or sell
  10.756 + * copies of the Software, and to permit persons to whom the
  10.757 + * Software is furnished to do so, subject to the following
  10.758 + * conditions:
  10.759 + *
  10.760 + * The above copyright notice and this permission notice shall be
  10.761 + * included in all copies or substantial portions of the Software.
  10.762 + *
  10.763 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  10.764 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
  10.765 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  10.766 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  10.767 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  10.768 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  10.769 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  10.770 + * OTHER DEALINGS IN THE SOFTWARE.
  10.771 + */
  10.772 +
  10.773 +/*
  10.774 + * url processing in the spirit of python's urlparse module
  10.775 + * see `pydoc urlparse` or
  10.776 + * http://docs.python.org/library/urlparse.html
  10.777 + *
  10.778 + *  urlsplit: break apart a URL into components
  10.779 + *  urlunsplit:  reconsistute a URL from componets
  10.780 + *  urljoin: join an absolute and another URL
  10.781 + *  urldefrag: remove the fragment from a URL
  10.782 + *
  10.783 + * Take a look at the tests in urlparse-test.html
  10.784 + *
  10.785 + * On URL Normalization:
  10.786 + *
  10.787 + * urlsplit only does minor normalization the components Only scheme
  10.788 + * and hostname are lowercased urljoin does a bit more, normalizing
  10.789 + * paths with "."  and "..".
  10.790 +
  10.791 + * urlnormalize adds additional normalization
  10.792 + *
  10.793 + *   * removes default port numbers
  10.794 + *     http://abc.com:80/ -> http://abc.com/, etc
  10.795 + *   * normalizes path
  10.796 + *     http://abc.com -> http://abc.com/
  10.797 + *     and other "." and ".." cleanups
  10.798 + *   * if file, remove query and fragment
  10.799 + *
  10.800 + * It does not do:
  10.801 + *   * normalizes escaped hex values
  10.802 + *     http://abc.com/%7efoo -> http://abc.com/%7Efoo
  10.803 + *   * normalize '+' <--> '%20'
  10.804 + *
  10.805 + * Differences with Python
  10.806 + *
  10.807 + * The javascript urlsplit returns a normal object with the following
  10.808 + * properties: scheme, netloc, hostname, port, path, query, fragment.
  10.809 + * All properties are read-write.
  10.810 + *
  10.811 + * In python, the resulting object is not a dict, but a specialized,
  10.812 + * read-only, and has alternative tuple interface (e.g. obj[0] ==
  10.813 + * obj.scheme).  It's not clear why such a simple function requires
  10.814 + * a unique datastructure.
  10.815 + *
  10.816 + * urlunsplit in javascript takes an duck-typed object,
  10.817 + *  { scheme: 'http', netloc: 'abc.com', ...}
  10.818 + *  while in  * python it takes a list-like object.
  10.819 + *  ['http', 'abc.com'... ]
  10.820 + *
  10.821 + * For all functions, the javascript version use
  10.822 + * hostname+port if netloc is missing.  In python
  10.823 + * hostname+port were always ignored.
  10.824 + *
  10.825 + * Similar functionality in different languages:
  10.826 + *
  10.827 + *   http://php.net/manual/en/function.parse-url.php
  10.828 + *   returns assocative array but cannot handle relative URL
  10.829 + *
  10.830 + * TODO: test allowfragments more
  10.831 + * TODO: test netloc missing, but hostname present
  10.832 + */
  10.833 +
  10.834 +var urlparse = {};
  10.835 +
  10.836 +// Unlike to be useful standalone
  10.837 +//
  10.838 +// NORMALIZE PATH with "../" and "./"
  10.839 +//   http://en.wikipedia.org/wiki/URL_normalization
  10.840 +//   http://tools.ietf.org/html/rfc3986#section-5.2.3
  10.841 +//
  10.842 +urlparse.normalizepath = function(path)
  10.843 +{
  10.844 +    if (!path || path === '/') {
  10.845 +        return '/';
  10.846 +    }
  10.847 +
  10.848 +    var parts = path.split('/');
  10.849 +
  10.850 +    var newparts = [];
  10.851 +    // make sure path always starts with '/'
  10.852 +    if (parts[0]) {
  10.853 +        newparts.push('');
  10.854 +    }
  10.855 +
  10.856 +    for (var i = 0; i < parts.length; ++i) {
  10.857 +        if (parts[i] === '..') {
  10.858 +            if (newparts.length > 1) {
  10.859 +                newparts.pop();
  10.860 +            } else {
  10.861 +                newparts.push(parts[i]);
  10.862 +            }
  10.863 +        } else if (parts[i] != '.') {
  10.864 +            newparts.push(parts[i]);
  10.865 +        }
  10.866 +    }
  10.867 +
  10.868 +    path = newparts.join('/');
  10.869 +    if (!path) {
  10.870 +        path = '/';
  10.871 +    }
  10.872 +    return path;
  10.873 +};
  10.874 +
  10.875 +//
  10.876 +// Does many of the normalizations that the stock
  10.877 +//  python urlsplit/urlunsplit/urljoin neglects
  10.878 +//
  10.879 +// Doesn't do hex-escape normalization on path or query
  10.880 +//   %7e -> %7E
  10.881 +// Nor, '+' <--> %20 translation
  10.882 +//
  10.883 +urlparse.urlnormalize = function(url)
  10.884 +{
  10.885 +    var parts = urlparse.urlsplit(url);
  10.886 +    switch (parts.scheme) {
  10.887 +    case 'file':
  10.888 +        // files can't have query strings
  10.889 +        //  and we don't bother with fragments
  10.890 +        parts.query = '';
  10.891 +        parts.fragment = '';
  10.892 +        break;
  10.893 +    case 'http':
  10.894 +    case 'https':
  10.895 +        // remove default port
  10.896 +        if ((parts.scheme === 'http' && parts.port == 80) ||
  10.897 +            (parts.scheme === 'https' && parts.port == 443)) {
  10.898 +            parts.port = null;
  10.899 +            // hostname is already lower case
  10.900 +            parts.netloc = parts.hostname;
  10.901 +        }
  10.902 +        break;
  10.903 +    default:
  10.904 +        // if we don't have specific normalizations for this
  10.905 +        // scheme, return the original url unmolested
  10.906 +        return url;
  10.907 +    }
  10.908 +
  10.909 +    // for [file|http|https].  Not sure about other schemes
  10.910 +    parts.path = urlparse.normalizepath(parts.path);
  10.911 +
  10.912 +    return urlparse.urlunsplit(parts);
  10.913 +};
  10.914 +
  10.915 +urlparse.urldefrag = function(url)
  10.916 +{
  10.917 +    var idx = url.indexOf('#');
  10.918 +    if (idx == -1) {
  10.919 +        return [ url, '' ];
  10.920 +    } else {
  10.921 +        return [ url.substr(0,idx), url.substr(idx+1) ];
  10.922 +    }
  10.923 +};
  10.924 +
  10.925 +urlparse.urlsplit = function(url, default_scheme, allow_fragments)
  10.926 +{
  10.927 +    var leftover;
  10.928 +
  10.929 +    if (typeof allow_fragments === 'undefined') {
  10.930 +        allow_fragments = true;
  10.931 +    }
  10.932 +
  10.933 +    // scheme (optional), host, port
  10.934 +    var fullurl = /^([A-Za-z]+)?(:?\/\/)([0-9.\-A-Za-z]*)(?::(\d+))?(.*)$/;
  10.935 +    // path, query, fragment
  10.936 +    var parse_leftovers = /([^?#]*)?(?:\?([^#]*))?(?:#(.*))?$/;
  10.937 +
  10.938 +    var o = {};
  10.939 +
  10.940 +    var parts = url.match(fullurl);
  10.941 +    if (parts) {
  10.942 +        o.scheme = parts[1] || default_scheme || '';
  10.943 +        o.hostname = parts[3].toLowerCase() || '';
  10.944 +        o.port = parseInt(parts[4],10) || '';
  10.945 +        // Probably should grab the netloc from regexp
  10.946 +        //  and then parse again for hostname/port
  10.947 +
  10.948 +        o.netloc = parts[3];
  10.949 +        if (parts[4]) {
  10.950 +            o.netloc += ':' + parts[4];
  10.951 +        }
  10.952 +
  10.953 +        leftover = parts[5];
  10.954 +    } else {
  10.955 +        o.scheme = default_scheme || '';
  10.956 +        o.netloc = '';
  10.957 +        o.hostname = '';
  10.958 +        leftover = url;
  10.959 +    }
  10.960 +    o.scheme = o.scheme.toLowerCase();
  10.961 +
  10.962 +    parts = leftover.match(parse_leftovers);
  10.963 +
  10.964 +    o.path =  parts[1] || '';
  10.965 +    o.query = parts[2] || '';
  10.966 +
  10.967 +    if (allow_fragments) {
  10.968 +        o.fragment = parts[3] || '';
  10.969 +    } else {
  10.970 +        o.fragment = '';
  10.971 +    }
  10.972 +
  10.973 +    return o;
  10.974 +};
  10.975 +
  10.976 +urlparse.urlunsplit = function(o) {
  10.977 +    var s = '';
  10.978 +    if (o.scheme) {
  10.979 +        s += o.scheme + '://';
  10.980 +    }
  10.981 +
  10.982 +    if (o.netloc) {
  10.983 +        if (s == '') {
  10.984 +            s += '//';
  10.985 +        }
  10.986 +        s +=  o.netloc;
  10.987 +    } else if (o.hostname) {
  10.988 +        // extension.  Python only uses netloc
  10.989 +        if (s == '') {
  10.990 +            s += '//';
  10.991 +        }
  10.992 +        s += o.hostname;
  10.993 +        if (o.port) {
  10.994 +            s += ':' + o.port;
  10.995 +        }
  10.996 +    }
  10.997 +
  10.998 +    if (o.path) {
  10.999 +        s += o.path;
 10.1000 +    }
 10.1001 +
 10.1002 +    if (o.query) {
 10.1003 +        s += '?' + o.query;
 10.1004 +    }
 10.1005 +    if (o.fragment) {
 10.1006 +        s += '#' + o.fragment;
 10.1007 +    }
 10.1008 +    return s;
 10.1009 +};
 10.1010 +
 10.1011 +urlparse.urljoin = function(base, url, allow_fragments)
 10.1012 +{
 10.1013 +    if (typeof allow_fragments === 'undefined') {
 10.1014 +        allow_fragments = true;
 10.1015 +    }
 10.1016 +
 10.1017 +    var url_parts = urlparse.urlsplit(url);
 10.1018 +
 10.1019 +    // if url parts has a scheme (i.e. absolute)
 10.1020 +    // then nothing to do
 10.1021 +    if (url_parts.scheme) {
 10.1022 +        if (! allow_fragments) {
 10.1023 +            return url;
 10.1024 +        } else {
 10.1025 +            return urlparse.urldefrag(url)[0];
 10.1026 +        }
 10.1027 +    }
 10.1028 +    var base_parts = urlparse.urlsplit(base);
 10.1029 +
 10.1030 +    // copy base, only if not present
 10.1031 +    if (!base_parts.scheme) {
 10.1032 +        base_parts.scheme = url_parts.scheme;
 10.1033 +    }
 10.1034 +
 10.1035 +    // copy netloc, only if not present
 10.1036 +    if (!base_parts.netloc || !base_parts.hostname) {
 10.1037 +        base_parts.netloc = url_parts.netloc;
 10.1038 +        base_parts.hostname = url_parts.hostname;
 10.1039 +        base_parts.port = url_parts.port;
 10.1040 +    }
 10.1041 +
 10.1042 +    // paths
 10.1043 +    if (url_parts.path.length > 0) {
 10.1044 +        if (url_parts.path.charAt(0) == '/') {
 10.1045 +            base_parts.path = url_parts.path;
 10.1046 +        } else {
 10.1047 +            // relative path.. get rid of "current filename" and
 10.1048 +            //   replace.  Same as var parts =
 10.1049 +            //   base_parts.path.split('/'); parts[parts.length-1] =
 10.1050 +            //   url_parts.path; base_parts.path = parts.join('/');
 10.1051 +            var idx = base_parts.path.lastIndexOf('/');
 10.1052 +            if (idx == -1) {
 10.1053 +                base_parts.path = url_parts.path;
 10.1054 +            } else {
 10.1055 +                base_parts.path = base_parts.path.substr(0,idx) + '/' +
 10.1056 +                    url_parts.path;
 10.1057 +            }
 10.1058 +        }
 10.1059 +    }
 10.1060 +
 10.1061 +    // clean up path
 10.1062 +    base_parts.path = urlparse.normalizepath(base_parts.path);
 10.1063 +
 10.1064 +    // copy query string
 10.1065 +    base_parts.query = url_parts.query;
 10.1066 +
 10.1067 +    // copy fragments
 10.1068 +    if (allow_fragments) {
 10.1069 +        base_parts.fragment = url_parts.fragment;
 10.1070 +    } else {
 10.1071 +        base_parts.fragment = '';
 10.1072 +    }
 10.1073 +
 10.1074 +    return urlparse.urlunsplit(base_parts);
 10.1075 +};
 10.1076 +
 10.1077 +/**
 10.1078 + * getcwd - named after posix call of same name (see 'man 2 getcwd')
 10.1079 + *
 10.1080 + */
 10.1081 +Envjs.getcwd = function() {
 10.1082 +    return '.';
 10.1083 +};
 10.1084 +
 10.1085 +/**
 10.1086 + * resolves location relative to doc location
 10.1087 + *
 10.1088 + * @param {Object} path  Relative or absolute URL
 10.1089 + * @param {Object} base  (semi-optional)  The base url used in resolving "path" above
 10.1090 + */
 10.1091 +Envjs.uri = function(path, base) {
 10.1092 +    //console.log('constructing uri from path %s and base %s', path, base);
 10.1093 +
 10.1094 +    // Semi-common trick is to make an iframe with src='javascript:false'
 10.1095 +    //  (or some equivalent).  By returning '', the load is skipped
 10.1096 +    if (path.indexOf('javascript') === 0) {
 10.1097 +        return '';
 10.1098 +    }
 10.1099 +
 10.1100 +    // if path is absolute, then just normalize and return
 10.1101 +    if (path.match('^[a-zA-Z]+://')) {
 10.1102 +        return urlparse.urlnormalize(path);
 10.1103 +    }
 10.1104 +
 10.1105 +    // interesting special case, a few very large websites use
 10.1106 +    // '//foo/bar/' to mean 'http://foo/bar'
 10.1107 +    if (path.match('^//')) {
 10.1108 +        path = 'http:' + path;
 10.1109 +    }
 10.1110 +
 10.1111 +    // if base not passed in, try to get it from document
 10.1112 +    // Ideally I would like the caller to pass in document.baseURI to
 10.1113 +    //  make this more self-sufficient and testable
 10.1114 +    if (!base && document) {
 10.1115 +        base = document.baseURI;
 10.1116 +    }
 10.1117 +
 10.1118 +    // about:blank doesn't count
 10.1119 +    if (base === 'about:blank'){
 10.1120 +        base = '';
 10.1121 +    }
 10.1122 +
 10.1123 +    // if base is still empty, then we are in QA mode loading local
 10.1124 +    // files.  Get current working directory
 10.1125 +    if (!base) {
 10.1126 +        base = 'file://' +  Envjs.getcwd() + '/';
 10.1127 +    }
 10.1128 +    // handles all cases if path is abosulte or relative to base
 10.1129 +    // 3rd arg is "false" --> remove fragments
 10.1130 +    var newurl = urlparse.urlnormalize(urlparse.urljoin(base, path, false));
 10.1131 +
 10.1132 +    return newurl;
 10.1133 +};
 10.1134 +
 10.1135 +
 10.1136 +
 10.1137 +/**
 10.1138 + * Used in the XMLHttpRquest implementation to run a
 10.1139 + * request in a seperate thread
 10.1140 + * @param {Object} fn
 10.1141 + */
 10.1142 +Envjs.runAsync = function(fn){};
 10.1143 +
 10.1144 +
 10.1145 +/**
 10.1146 + * Used to write to a local file
 10.1147 + * @param {Object} text
 10.1148 + * @param {Object} url
 10.1149 + */
 10.1150 +Envjs.writeToFile = function(text, url){};
 10.1151 +
 10.1152 +
 10.1153 +/**
 10.1154 + * Used to write to a local file
 10.1155 + * @param {Object} text
 10.1156 + * @param {Object} suffix
 10.1157 + */
 10.1158 +Envjs.writeToTempFile = function(text, suffix){};
 10.1159 +
 10.1160 +/**
 10.1161 + * Used to read the contents of a local file
 10.1162 + * @param {Object} url
 10.1163 + */
 10.1164 +Envjs.readFromFile = function(url){};
 10.1165 +
 10.1166 +/**
 10.1167 + * Used to delete a local file
 10.1168 + * @param {Object} url
 10.1169 + */
 10.1170 +Envjs.deleteFile = function(url){};
 10.1171 +
 10.1172 +/**
 10.1173 + * establishes connection and calls responsehandler
 10.1174 + * @param {Object} xhr
 10.1175 + * @param {Object} responseHandler
 10.1176 + * @param {Object} data
 10.1177 + */
 10.1178 +Envjs.connection = function(xhr, responseHandler, data){};
 10.1179 +
 10.1180 +
 10.1181 +__extend__(Envjs, urlparse);
 10.1182 +
 10.1183 +/**
 10.1184 + * Makes an object window-like by proxying object accessors
 10.1185 + * @param {Object} scope
 10.1186 + * @param {Object} parent
 10.1187 + */
 10.1188 +Envjs.proxy = function(scope, parent, aliasList){};
 10.1189 +
 10.1190 +Envjs.javaEnabled = false;
 10.1191 +
 10.1192 +Envjs.homedir        = '';
 10.1193 +Envjs.tmpdir         = '';
 10.1194 +Envjs.os_name        = '';
 10.1195 +Envjs.os_arch        = '';
 10.1196 +Envjs.os_version     = '';
 10.1197 +Envjs.lang           = '';
 10.1198 +Envjs.platform       = '';
 10.1199 +
 10.1200 +/**
 10.1201 + *
 10.1202 + * @param {Object} frameElement
 10.1203 + * @param {Object} url
 10.1204 + */
 10.1205 +Envjs.loadFrame = function(frame, url){
 10.1206 +    try {
 10.1207 +        if(frame.contentWindow){
 10.1208 +            //mark for garbage collection
 10.1209 +            frame.contentWindow = null;
 10.1210 +        }
 10.1211 +
 10.1212 +        //create a new scope for the window proxy
 10.1213 +        //platforms will need to override this function
 10.1214 +        //to make sure the scope is global-like
 10.1215 +        frame.contentWindow = (function(){return this;})();
 10.1216 +        new Window(frame.contentWindow, window);
 10.1217 +
 10.1218 +        //I dont think frames load asynchronously in firefox
 10.1219 +        //and I think the tests have verified this but for
 10.1220 +        //some reason I'm less than confident... Are there cases?
 10.1221 +        frame.contentDocument = frame.contentWindow.document;
 10.1222 +        frame.contentDocument.async = false;
 10.1223 +        if(url){
 10.1224 +            //console.log('envjs.loadFrame async %s', frame.contentDocument.async);
 10.1225 +            frame.contentWindow.location = url;
 10.1226 +        }
 10.1227 +    } catch(e) {
 10.1228 +        console.log("failed to load frame content: from %s %s", url, e);
 10.1229 +    }
 10.1230 +};
 10.1231 +
 10.1232 +
 10.1233 +// The following are in rhino/window.js
 10.1234 +// TODO: Envjs.unloadFrame
 10.1235 +// TODO: Envjs.proxy
 10.1236 +
 10.1237 +/**
 10.1238 + * @author john resig & the envjs team
 10.1239 + * @uri http://www.envjs.com/
 10.1240 + * @copyright 2008-2010
 10.1241 + * @license MIT
 10.1242 + */
 10.1243 +//CLOSURE_END
 10.1244 +}());
 10.1245 +/*
 10.1246 + * Envjs rhino-env.1.2.13
 10.1247 + * Pure JavaScript Browser Environment
 10.1248 + * By John Resig <http://ejohn.org/> and the Envjs Team
 10.1249 + * Copyright 2008-2010 John Resig, under the MIT License
 10.1250 + */
 10.1251 +
 10.1252 +var __context__ = Packages.jdk.nashorn.internal.runtime.Context.getContext();
 10.1253 +
 10.1254 +Envjs.platform       = "Nashorn";
 10.1255 +Envjs.revision       = "0.1";
 10.1256 +
 10.1257 +/*
 10.1258 + * Envjs rhino-env.1.2.13 
 10.1259 + * Pure JavaScript Browser Environment
 10.1260 + * By John Resig <http://ejohn.org/> and the Envjs Team
 10.1261 + * Copyright 2008-2010 John Resig, under the MIT License
 10.1262 + */
 10.1263 +
 10.1264 +//CLOSURE_START
 10.1265 +(function(){
 10.1266 +
 10.1267 +
 10.1268 +
 10.1269 +
 10.1270 +
 10.1271 +/**
 10.1272 + * @author john resig
 10.1273 + */
 10.1274 +// Helper method for extending one object with another.
 10.1275 +function __extend__(a,b) {
 10.1276 +    for ( var i in b ) {
 10.1277 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
 10.1278 +        if ( g || s ) {
 10.1279 +            if ( g ) { a.__defineGetter__(i, g); }
 10.1280 +            if ( s ) { a.__defineSetter__(i, s); }
 10.1281 +        } else {
 10.1282 +            a[i] = b[i];
 10.1283 +        }
 10.1284 +    } return a;
 10.1285 +}
 10.1286 +
 10.1287 +/**
 10.1288 + * Writes message to system out.
 10.1289 + *
 10.1290 + * Some sites redefine 'print' as in 'window.print', so instead of
 10.1291 + * printing to stdout, you are popping open a new window, which might
 10.1292 + * call print, etc, etc,etc This can cause infinite loops and can
 10.1293 + * exhausing all memory.
 10.1294 + *
 10.1295 + * By defining this upfront now, Envjs.log will always call the native 'print'
 10.1296 + * function
 10.1297 + *
 10.1298 + * @param {Object} message
 10.1299 + */
 10.1300 +Envjs.log = print;
 10.1301 +
 10.1302 +Envjs.lineSource = function(e){
 10.1303 +    return e&&e.rhinoException?e.rhinoException.lineSource():"(line ?)";
 10.1304 +};
 10.1305 +/**
 10.1306 + * load and execute script tag text content
 10.1307 + * @param {Object} script
 10.1308 + */
 10.1309 +Envjs.loadInlineScript = function(script){
 10.1310 +    if(script.ownerDocument.ownerWindow){
 10.1311 +        Envjs.eval(
 10.1312 +            script.ownerDocument.ownerWindow,
 10.1313 +            script.text,
 10.1314 +            'eval('+script.text.substring(0,16)+'...):'+new Date().getTime()
 10.1315 +        );
 10.1316 +    }else{
 10.1317 +        Envjs.eval(
 10.1318 +            __this__,
 10.1319 +            script.text,
 10.1320 +            'eval('+script.text.substring(0,16)+'...):'+new Date().getTime()
 10.1321 +        );
 10.1322 +    }
 10.1323 +    //console.log('evaluated at scope %s \n%s',
 10.1324 +    //    script.ownerDocument.ownerWindow.guid, script.text);
 10.1325 +};
 10.1326 +
 10.1327 +
 10.1328 +Envjs.eval = function(context, source, name){
 10.1329 +    __context__.eval(context, source, null, name, false);
 10.1330 +};
 10.1331 +
 10.1332 +
 10.1333 +/**
 10.1334 + * Rhino provides a very succinct 'sync'
 10.1335 + * @param {Function} fn
 10.1336 + */
 10.1337 +Envjs.sync = function(fn){
 10.1338 +    //console.log('Threadless platform, sync is safe');
 10.1339 +    return fn;
 10.1340 +};
 10.1341 +Envjs.spawn = function(fn){
 10.1342 +    //console.log('Threadless platform, spawn shares main thread.');
 10.1343 +    return fn();
 10.1344 +};
 10.1345 +
 10.1346 +/**
 10.1347 + * sleep thread for specified duration
 10.1348 + * @param {Object} millseconds
 10.1349 + */
 10.1350 +Envjs.sleep = function(millseconds){
 10.1351 +    try{
 10.1352 +        java.lang.Thread.sleep(millseconds);
 10.1353 +    }catch(e){
 10.1354 +        console.log('Threadless platform, cannot sleep.');
 10.1355 +    }
 10.1356 +};
 10.1357 +
 10.1358 +/**
 10.1359 + * provides callback hook for when the system exits
 10.1360 + */
 10.1361 +Envjs.onExit = function(callback){
 10.1362 +    // TODO add exit listener
 10.1363 +};
 10.1364 +
 10.1365 +/**
 10.1366 + * Get 'Current Working Directory'
 10.1367 + */
 10.1368 +Envjs.getcwd = function() {
 10.1369 +    return java.lang.System.getProperty('user.dir');
 10.1370 +}
 10.1371 +
 10.1372 +/**
 10.1373 + *
 10.1374 + * @param {Object} fn
 10.1375 + * @param {Object} onInterupt
 10.1376 + */
 10.1377 +Envjs.runAsync = function(fn, onInterupt){
 10.1378 +    ////Envjs.debug("running async");
 10.1379 +    var running = true,
 10.1380 +        run;
 10.1381 +
 10.1382 +    try{
 10.1383 +        run = Envjs.sync(function(){
 10.1384 +            fn();
 10.1385 +            Envjs.wait();
 10.1386 +        });
 10.1387 +        Envjs.spawn(run);
 10.1388 +    }catch(e){
 10.1389 +        console.log("error while running async operation", e);
 10.1390 +        try{if(onInterrupt)onInterrupt(e)}catch(ee){};
 10.1391 +    }
 10.1392 +};
 10.1393 +
 10.1394 +/**
 10.1395 + * Used to write to a local file
 10.1396 + * @param {Object} text
 10.1397 + * @param {Object} url
 10.1398 + */
 10.1399 +Envjs.writeToFile = function(text, url){
 10.1400 +    //Envjs.debug("writing text to url : " + url);
 10.1401 +    var out = new java.io.FileWriter(
 10.1402 +        new java.io.File(
 10.1403 +            new java.net.URI(url.toString())));
 10.1404 +    out.write( text, 0, text.length );
 10.1405 +    out.flush();
 10.1406 +    out.close();
 10.1407 +};
 10.1408 +
 10.1409 +/**
 10.1410 + * Used to write to a local file
 10.1411 + * @param {Object} text
 10.1412 + * @param {Object} suffix
 10.1413 + */
 10.1414 +Envjs.writeToTempFile = function(text, suffix){
 10.1415 +    //Envjs.debug("writing text to temp url : " + suffix);
 10.1416 +    // Create temp file.
 10.1417 +    var temp = java.io.File.createTempFile("envjs-tmp", suffix);
 10.1418 +
 10.1419 +    // Delete temp file when program exits.
 10.1420 +    temp.deleteOnExit();
 10.1421 +
 10.1422 +    // Write to temp file
 10.1423 +    var out = new java.io.FileWriter(temp);
 10.1424 +    out.write(text, 0, text.length);
 10.1425 +    out.close();
 10.1426 +    return temp.getAbsolutePath().toString()+'';
 10.1427 +};
 10.1428 +
 10.1429 +
 10.1430 +/**
 10.1431 + * Used to read the contents of a local file
 10.1432 + * @param {Object} url
 10.1433 + */
 10.1434 +Envjs.readFromFile = function( url ){
 10.1435 +    var fileReader = new java.io.FileReader(
 10.1436 +        new java.io.File( 
 10.1437 +            new java.net.URI( url )));
 10.1438 +            
 10.1439 +    var stringwriter = new java.io.StringWriter(),
 10.1440 +        buffer = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 1024),
 10.1441 +        length;
 10.1442 +
 10.1443 +    while ((length = fileReader.read(buffer, 0, 1024)) != -1) {
 10.1444 +        stringwriter.write(buffer, 0, length);
 10.1445 +    }
 10.1446 +
 10.1447 +    stringwriter.close();
 10.1448 +    return stringwriter.toString()+"";
 10.1449 +};
 10.1450 +    
 10.1451 +
 10.1452 +/**
 10.1453 + * Used to delete a local file
 10.1454 + * @param {Object} url
 10.1455 + */
 10.1456 +Envjs.deleteFile = function(url){
 10.1457 +    var file = new java.io.File( new java.net.URI( url ) );
 10.1458 +    file["delete"]();
 10.1459 +};
 10.1460 +
 10.1461 +/**
 10.1462 + * establishes connection and calls responsehandler
 10.1463 + * @param {Object} xhr
 10.1464 + * @param {Object} responseHandler
 10.1465 + * @param {Object} data
 10.1466 + */
 10.1467 +Envjs.connection = function(xhr, responseHandler, data){
 10.1468 +    var url = new java.net.URL(xhr.url),
 10.1469 +        connection,
 10.1470 +        header,
 10.1471 +        outstream,
 10.1472 +        buffer,
 10.1473 +        length,
 10.1474 +        binary = false,
 10.1475 +        name, value,
 10.1476 +        contentEncoding,
 10.1477 +        instream,
 10.1478 +        responseXML,
 10.1479 +        i;
 10.1480 +    if ( /^file\:/.test(url) ) {
 10.1481 +        try{
 10.1482 +            if ( "PUT" == xhr.method || "POST" == xhr.method ) {
 10.1483 +                data =  data || "" ;
 10.1484 +                Envjs.writeToFile(data, url);
 10.1485 +                xhr.readyState = 4;
 10.1486 +                //could be improved, I just cant recall the correct http codes
 10.1487 +                xhr.status = 200;
 10.1488 +                xhr.statusText = "";
 10.1489 +            } else if ( xhr.method == "DELETE" ) {
 10.1490 +                Envjs.deleteFile(url);
 10.1491 +                xhr.readyState = 4;
 10.1492 +                //could be improved, I just cant recall the correct http codes
 10.1493 +                xhr.status = 200;
 10.1494 +                xhr.statusText = "";
 10.1495 +            } else {
 10.1496 +                connection = url.openConnection();
 10.1497 +                connection.connect();
 10.1498 +                //try to add some canned headers that make sense
 10.1499 +
 10.1500 +                try{
 10.1501 +                    if(xhr.url.match(/html$/)){
 10.1502 +                        xhr.responseHeaders["Content-Type"] = 'text/html';
 10.1503 +                    }else if(xhr.url.match(/.xml$/)){
 10.1504 +                        xhr.responseHeaders["Content-Type"] = 'text/xml';
 10.1505 +                    }else if(xhr.url.match(/.js$/)){
 10.1506 +                        xhr.responseHeaders["Content-Type"] = 'text/javascript';
 10.1507 +                    }else if(xhr.url.match(/.json$/)){
 10.1508 +                        xhr.responseHeaders["Content-Type"] = 'application/json';
 10.1509 +                    }else{
 10.1510 +                        xhr.responseHeaders["Content-Type"] = 'text/plain';
 10.1511 +                    }
 10.1512 +                    //xhr.responseHeaders['Last-Modified'] = connection.getLastModified();
 10.1513 +                    //xhr.responseHeaders['Content-Length'] = headerValue+'';
 10.1514 +                    //xhr.responseHeaders['Date'] = new Date()+'';*/
 10.1515 +                }catch(e){
 10.1516 +                    console.log('failed to load response headers',e);
 10.1517 +                }
 10.1518 +            }
 10.1519 +        }catch(e){
 10.1520 +            console.log('failed to open file %s %s', url, e);
 10.1521 +            connection = null;
 10.1522 +            xhr.readyState = 4;
 10.1523 +            xhr.statusText = "Local File Protocol Error";
 10.1524 +            xhr.responseText = "<html><head/><body><p>"+ e+ "</p></body></html>";
 10.1525 +        }
 10.1526 +    } else {
 10.1527 +        connection = url.openConnection();
 10.1528 +        connection.setRequestMethod( xhr.method );
 10.1529 +
 10.1530 +        // Add headers to Java connection
 10.1531 +        for (header in xhr.headers){
 10.1532 +            connection.addRequestProperty(header+'', xhr.headers[header]+'');
 10.1533 +        }
 10.1534 +
 10.1535 +        //write data to output stream if required
 10.1536 +        if(data){
 10.1537 +            if(data instanceof Document){
 10.1538 +                if ( xhr.method == "PUT" || xhr.method == "POST" ) {
 10.1539 +                    connection.setDoOutput(true);
 10.1540 +                    outstream = connection.getOutputStream(),
 10.1541 +                    xml = (new XMLSerializer()).serializeToString(data);
 10.1542 +                    buffer = new java.lang.String(xml).getBytes('UTF-8');
 10.1543 +                    outstream.write(buffer, 0, buffer.length);
 10.1544 +                    outstream.close();
 10.1545 +                }
 10.1546 +            }else if(data.length&&data.length>0){
 10.1547 +                if ( xhr.method == "PUT" || xhr.method == "POST" ) {
 10.1548 +                    connection.setDoOutput(true);
 10.1549 +                    outstream = connection.getOutputStream();
 10.1550 +                    buffer = new java.lang.String(data).getBytes('UTF-8');
 10.1551 +                    outstream.write(buffer, 0, buffer.length);
 10.1552 +                    outstream.close();
 10.1553 +                }
 10.1554 +            }
 10.1555 +            connection.connect();
 10.1556 +        }else{
 10.1557 +            connection.connect();
 10.1558 +        }
 10.1559 +    }
 10.1560 +
 10.1561 +    if(connection){
 10.1562 +        try{
 10.1563 +            length = connection.getHeaderFields().size();
 10.1564 +            // Stick the response headers into responseHeaders
 10.1565 +            for (i = 0; i < length; i++) {
 10.1566 +                name = connection.getHeaderFieldKey(i);
 10.1567 +                value = connection.getHeaderField(i);
 10.1568 +                if (name)
 10.1569 +                    xhr.responseHeaders[name+''] = value+'';
 10.1570 +            }
 10.1571 +        }catch(e){
 10.1572 +            console.log('failed to load response headers \n%s',e);
 10.1573 +        }
 10.1574 +
 10.1575 +        xhr.readyState = 4;
 10.1576 +        xhr.status = parseInt(connection.responseCode,10) || undefined;
 10.1577 +        xhr.statusText = connection.responseMessage || "";
 10.1578 +
 10.1579 +        contentEncoding = connection.getContentEncoding() || "utf-8";
 10.1580 +        instream = null;
 10.1581 +        responseXML = null;
 10.1582 +        
 10.1583 +        try{
 10.1584 +            //console.log('contentEncoding %s', contentEncoding);
 10.1585 +            if( contentEncoding.equalsIgnoreCase("gzip") ||
 10.1586 +                contentEncoding.equalsIgnoreCase("decompress")){
 10.1587 +                //zipped content
 10.1588 +                binary = true;
 10.1589 +                outstream = new java.io.ByteArrayOutputStream();
 10.1590 +                buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024);
 10.1591 +                instream = new java.util.zip.GZIPInputStream(connection.getInputStream())
 10.1592 +            }else{
 10.1593 +                //this is a text file
 10.1594 +                outstream = new java.io.StringWriter();
 10.1595 +                buffer = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 1024);
 10.1596 +                instream = new java.io.InputStreamReader(connection.getInputStream());
 10.1597 +            }
 10.1598 +        }catch(e){
 10.1599 +            if (connection.getResponseCode() == 404){
 10.1600 +                console.log('failed to open connection stream \n %s %s',
 10.1601 +                            e.toString(), e);
 10.1602 +            }else{
 10.1603 +                console.log('failed to open connection stream \n %s %s',
 10.1604 +                            e.toString(), e);
 10.1605 +            }
 10.1606 +            instream = connection.getErrorStream();
 10.1607 +        }
 10.1608 +
 10.1609 +        while ((length = instream.read(buffer, 0, 1024)) != -1) {
 10.1610 +            outstream.write(buffer, 0, length);
 10.1611 +        }
 10.1612 +
 10.1613 +        outstream.close();
 10.1614 +        instream.close();
 10.1615 +        
 10.1616 +        if(binary){
 10.1617 +            xhr.responseText = new String(outstream.toByteArray(), 'UTF-8')+'';
 10.1618 +        }else{
 10.1619 +            xhr.responseText = outstream.toString()+'';
 10.1620 +        }
 10.1621 +
 10.1622 +    }
 10.1623 +    if(responseHandler){
 10.1624 +        //Envjs.debug('calling ajax response handler');
 10.1625 +        responseHandler();
 10.1626 +    }
 10.1627 +};
 10.1628 +
 10.1629 +//Since we're running in rhino I guess we can safely assume
 10.1630 +//java is 'enabled'.  I'm sure this requires more thought
 10.1631 +//than I've given it here
 10.1632 +Envjs.javaEnabled = true;
 10.1633 +
 10.1634 +Envjs.homedir        = java.lang.System.getProperty("user.home");
 10.1635 +Envjs.tmpdir         = java.lang.System.getProperty("java.io.tmpdir");
 10.1636 +Envjs.os_name        = java.lang.System.getProperty("os.name");
 10.1637 +Envjs.os_arch        = java.lang.System.getProperty("os.arch");
 10.1638 +Envjs.os_version     = java.lang.System.getProperty("os.version");
 10.1639 +Envjs.lang           = java.lang.System.getProperty("user.lang");
 10.1640 +
 10.1641 +
 10.1642 +/**
 10.1643 + *
 10.1644 + * @param {Object} frameElement
 10.1645 + * @param {Object} url
 10.1646 + */
 10.1647 +Envjs.loadFrame = function(frame, url){
 10.1648 +    try {
 10.1649 +        if(frame.contentWindow){
 10.1650 +            //mark for garbage collection
 10.1651 +            frame.contentWindow = null;
 10.1652 +        }
 10.1653 +
 10.1654 +        //create a new scope for the window proxy
 10.1655 +        frame.contentWindow = Envjs.proxy();
 10.1656 +        new Window(frame.contentWindow, window);
 10.1657 +
 10.1658 +        //I dont think frames load asynchronously in firefox
 10.1659 +        //and I think the tests have verified this but for
 10.1660 +        //some reason I'm less than confident... Are there cases?
 10.1661 +        frame.contentDocument = frame.contentWindow.document;
 10.1662 +        frame.contentDocument.async = false;
 10.1663 +        if(url){
 10.1664 +            //console.log('envjs.loadFrame async %s', frame.contentDocument.async);
 10.1665 +            frame.contentWindow.location = url;
 10.1666 +        }
 10.1667 +    } catch(e) {
 10.1668 +        console.log("failed to load frame content: from %s %s", url, e);
 10.1669 +    }
 10.1670 +};
 10.1671 +
 10.1672 +/**
 10.1673 + * unloadFrame
 10.1674 + * @param {Object} frame
 10.1675 + */
 10.1676 +Envjs.unloadFrame = function(frame){
 10.1677 +    var all, length, i;
 10.1678 +    try{
 10.1679 +        //TODO: probably self-referencing structures within a document tree
 10.1680 +        //preventing it from being entirely garbage collected once orphaned.
 10.1681 +        //Should have code to walk tree and break all links between contained
 10.1682 +        //objects.
 10.1683 +        frame.contentDocument = null;
 10.1684 +        if(frame.contentWindow){
 10.1685 +            frame.contentWindow.close();
 10.1686 +        }
 10.1687 +        gc();
 10.1688 +    }catch(e){
 10.1689 +        console.log(e);
 10.1690 +    }
 10.1691 +};
 10.1692 +
 10.1693 +/**
 10.1694 + * Makes an object window-like by proxying object accessors
 10.1695 + * @param {Object} scope
 10.1696 + * @param {Object} parent
 10.1697 + */
 10.1698 +Envjs.proxy = function(scope, parent) {
 10.1699 +    try{
 10.1700 +        if(scope+'' == '[object global]'){
 10.1701 +            return scope
 10.1702 +        }else{
 10.1703 +            return __context__.createGlobal();
 10.1704 +        }
 10.1705 +    }catch(e){
 10.1706 +        console.log('failed to init standard objects %s %s \n%s', scope, parent, e);
 10.1707 +    }
 10.1708 +
 10.1709 +};
 10.1710 +
 10.1711 +/**
 10.1712 + * @author john resig & the envjs team
 10.1713 + * @uri http://www.envjs.com/
 10.1714 + * @copyright 2008-2010
 10.1715 + * @license MIT
 10.1716 + */
 10.1717 +//CLOSURE_END
 10.1718 +}());
 10.1719 +
 10.1720 +/**
 10.1721 + * @author envjs team
 10.1722 + */
 10.1723 +var Console,
 10.1724 +    console;
 10.1725 +
 10.1726 +/*
 10.1727 + * Envjs console.1.2.13 
 10.1728 + * Pure JavaScript Browser Environment
 10.1729 + * By John Resig <http://ejohn.org/> and the Envjs Team
 10.1730 + * Copyright 2008-2010 John Resig, under the MIT License
 10.1731 + */
 10.1732 +
 10.1733 +//CLOSURE_START
 10.1734 +(function(){
 10.1735 +
 10.1736 +
 10.1737 +
 10.1738 +
 10.1739 +
 10.1740 +/**
 10.1741 + * @author envjs team
 10.1742 + * borrowed 99%-ish with love from firebug-lite
 10.1743 + *
 10.1744 + * http://wiki.commonjs.org/wiki/Console
 10.1745 + */
 10.1746 +Console = function(module){
 10.1747 +    var $level,
 10.1748 +    $logger,
 10.1749 +    $null = function(){};
 10.1750 +
 10.1751 +
 10.1752 +    if(Envjs[module] && Envjs[module].loglevel){
 10.1753 +        $level = Envjs.module.loglevel;
 10.1754 +        $logger = {
 10.1755 +            log: function(level){
 10.1756 +                logFormatted(arguments, (module)+" ");
 10.1757 +            },
 10.1758 +            debug: $level>1 ? $null: function() {
 10.1759 +                logFormatted(arguments, (module)+" debug");
 10.1760 +            },
 10.1761 +            info: $level>2 ? $null:function(){
 10.1762 +                logFormatted(arguments, (module)+" info");
 10.1763 +            },
 10.1764 +            warn: $level>3 ? $null:function(){
 10.1765 +                logFormatted(arguments, (module)+" warning");
 10.1766 +            },
 10.1767 +            error: $level>4 ? $null:function(){
 10.1768 +                logFormatted(arguments, (module)+" error");
 10.1769 +            }
 10.1770 +        };
 10.1771 +    } else {
 10.1772 +        $logger = {
 10.1773 +            log: function(level){
 10.1774 +                logFormatted(arguments, "");
 10.1775 +            },
 10.1776 +            debug: $null,
 10.1777 +            info: $null,
 10.1778 +            warn: $null,
 10.1779 +            error: $null
 10.1780 +        };
 10.1781 +    }
 10.1782 +
 10.1783 +    return $logger;
 10.1784 +};
 10.1785 +
 10.1786 +console = new Console("console",1);
 10.1787 +
 10.1788 +function logFormatted(objects, className)
 10.1789 +{
 10.1790 +    var html = [];
 10.1791 +
 10.1792 +    var format = objects[0];
 10.1793 +    var objIndex = 0;
 10.1794 +
 10.1795 +    if (typeof(format) != "string")
 10.1796 +    {
 10.1797 +        format = "";
 10.1798 +        objIndex = -1;
 10.1799 +    }
 10.1800 +
 10.1801 +    var parts = parseFormat(format);
 10.1802 +    for (var i = 0; i < parts.length; ++i)
 10.1803 +    {
 10.1804 +        var part = parts[i];
 10.1805 +        if (part && typeof(part) == "object")
 10.1806 +        {
 10.1807 +            var object = objects[++objIndex];
 10.1808 +            part.appender(object, html);
 10.1809 +        }
 10.1810 +        else {
 10.1811 +            appendText(part, html);
 10.1812 +	}
 10.1813 +    }
 10.1814 +
 10.1815 +    for (var i = objIndex+1; i < objects.length; ++i)
 10.1816 +    {
 10.1817 +        appendText(" ", html);
 10.1818 +
 10.1819 +        var object = objects[i];
 10.1820 +        if (typeof(object) == "string") {
 10.1821 +            appendText(object, html);
 10.1822 +        } else {
 10.1823 +            appendObject(object, html);
 10.1824 +	}
 10.1825 +    }
 10.1826 +
 10.1827 +    Envjs.log(html.join(' '));
 10.1828 +}
 10.1829 +
 10.1830 +function parseFormat(format)
 10.1831 +{
 10.1832 +    var parts = [];
 10.1833 +
 10.1834 +    var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
 10.1835 +    var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat};
 10.1836 +
 10.1837 +    for (var m = reg.exec(format); m; m = reg.exec(format))
 10.1838 +    {
 10.1839 +        var type = m[8] ? m[8] : m[5];
 10.1840 +        var appender = type in appenderMap ? appenderMap[type] : appendObject;
 10.1841 +        var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
 10.1842 +
 10.1843 +        parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
 10.1844 +        parts.push({appender: appender, precision: precision});
 10.1845 +
 10.1846 +        format = format.substr(m.index+m[0].length);
 10.1847 +    }
 10.1848 +
 10.1849 +    parts.push(format);
 10.1850 +
 10.1851 +    return parts;
 10.1852 +}
 10.1853 +
 10.1854 +function escapeHTML(value)
 10.1855 +{
 10.1856 +    return value;
 10.1857 +}
 10.1858 +
 10.1859 +function objectToString(object)
 10.1860 +{
 10.1861 +    try
 10.1862 +    {
 10.1863 +        return object+"";
 10.1864 +    }
 10.1865 +    catch (exc)
 10.1866 +    {
 10.1867 +        return null;
 10.1868 +    }
 10.1869 +}
 10.1870 +
 10.1871 +// ********************************************************************************************
 10.1872 +
 10.1873 +function appendText(object, html)
 10.1874 +{
 10.1875 +    html.push(escapeHTML(objectToString(object)));
 10.1876 +}
 10.1877 +
 10.1878 +function appendNull(object, html)
 10.1879 +{
 10.1880 +    html.push(escapeHTML(objectToString(object)));
 10.1881 +}
 10.1882 +
 10.1883 +function appendString(object, html)
 10.1884 +{
 10.1885 +    html.push(escapeHTML(objectToString(object)));
 10.1886 +}
 10.1887 +
 10.1888 +function appendInteger(object, html)
 10.1889 +{
 10.1890 +    html.push(escapeHTML(objectToString(object)));
 10.1891 +}
 10.1892 +
 10.1893 +function appendFloat(object, html)
 10.1894 +{
 10.1895 +    html.push(escapeHTML(objectToString(object)));
 10.1896 +}
 10.1897 +
 10.1898 +function appendFunction(object, html)
 10.1899 +{
 10.1900 +    var reName = /function ?(.*?)\(/;
 10.1901 +    var m = reName.exec(objectToString(object));
 10.1902 +    var name = m ? m[1] : "function";
 10.1903 +    html.push(escapeHTML(name));
 10.1904 +}
 10.1905 +
 10.1906 +function appendObject(object, html)
 10.1907 +{
 10.1908 +    try
 10.1909 +    {
 10.1910 +        if (object == undefined) {
 10.1911 +            appendNull("undefined", html);
 10.1912 +        } else if (object == null) {
 10.1913 +            appendNull("null", html);
 10.1914 +        } else if (typeof object == "string") {
 10.1915 +            appendString(object, html);
 10.1916 +	} else if (typeof object == "number") {
 10.1917 +            appendInteger(object, html);
 10.1918 +	} else if (typeof object == "function") {
 10.1919 +            appendFunction(object, html);
 10.1920 +        } else if (object.nodeType == 1) {
 10.1921 +            appendSelector(object, html);
 10.1922 +        } else if (typeof object == "object") {
 10.1923 +            appendObjectFormatted(object, html);
 10.1924 +        } else {
 10.1925 +            appendText(object, html);
 10.1926 +	}
 10.1927 +    }
 10.1928 +    catch (exc)
 10.1929 +    {
 10.1930 +    }
 10.1931 +}
 10.1932 +
 10.1933 +function appendObjectFormatted(object, html)
 10.1934 +{
 10.1935 +    var text = objectToString(object);
 10.1936 +    var reObject = /\[object (.*?)\]/;
 10.1937 +
 10.1938 +    var m = reObject.exec(text);
 10.1939 +    html.push( m ? m[1] : text);
 10.1940 +}
 10.1941 +
 10.1942 +function appendSelector(object, html)
 10.1943 +{
 10.1944 +
 10.1945 +    html.push(escapeHTML(object.nodeName.toLowerCase()));
 10.1946 +    if (object.id) {
 10.1947 +        html.push(escapeHTML(object.id));
 10.1948 +    }
 10.1949 +    if (object.className) {
 10.1950 +        html.push(escapeHTML(object.className));
 10.1951 +    }
 10.1952 +}
 10.1953 +
 10.1954 +function appendNode(node, html)
 10.1955 +{
 10.1956 +    if (node.nodeType == 1)
 10.1957 +    {
 10.1958 +        html.push( node.nodeName.toLowerCase());
 10.1959 +
 10.1960 +        for (var i = 0; i < node.attributes.length; ++i)
 10.1961 +        {
 10.1962 +            var attr = node.attributes[i];
 10.1963 +            if (!attr.specified) {
 10.1964 +                continue;
 10.1965 +	    }
 10.1966 +
 10.1967 +            html.push( attr.nodeName.toLowerCase(),escapeHTML(attr.nodeValue));
 10.1968 +        }
 10.1969 +
 10.1970 +        if (node.firstChild)
 10.1971 +        {
 10.1972 +            for (var child = node.firstChild; child; child = child.nextSibling) {
 10.1973 +                appendNode(child, html);
 10.1974 +	    }
 10.1975 +
 10.1976 +            html.push( node.nodeName.toLowerCase());
 10.1977 +        }
 10.1978 +    }
 10.1979 +    else if (node.nodeType === 3)
 10.1980 +    {
 10.1981 +        html.push(escapeHTML(node.nodeValue));
 10.1982 +    }
 10.1983 +};
 10.1984 +
 10.1985 +/**
 10.1986 + * @author john resig & the envjs team
 10.1987 + * @uri http://www.envjs.com/
 10.1988 + * @copyright 2008-2010
 10.1989 + * @license MIT
 10.1990 + */
 10.1991 +//CLOSURE_END
 10.1992 +}());
 10.1993 +/*
 10.1994 + * Envjs dom.1.2.13 
 10.1995 + * Pure JavaScript Browser Environment
 10.1996 + * By John Resig <http://ejohn.org/> and the Envjs Team
 10.1997 + * Copyright 2008-2010 John Resig, under the MIT License
 10.1998 + * 
 10.1999 + * Parts of the implementation were originally written by:\
 10.2000 + * and Jon van Noort   (jon@webarcana.com.au) \
 10.2001 + * and David Joham     (djoham@yahoo.com)",\ 
 10.2002 + * and Scott Severtson
 10.2003 + * 
 10.2004 + * This file simply provides the global definitions we need to \
 10.2005 + * be able to correctly implement to core browser DOM interfaces."
 10.2006 + */
 10.2007 +
 10.2008 +var Attr,
 10.2009 +    CDATASection,
 10.2010 +    CharacterData,
 10.2011 +    Comment,
 10.2012 +    Document,
 10.2013 +    DocumentFragment,
 10.2014 +    DocumentType,
 10.2015 +    DOMException,
 10.2016 +    DOMImplementation,
 10.2017 +    Element,
 10.2018 +    Entity,
 10.2019 +    EntityReference,
 10.2020 +    NamedNodeMap,
 10.2021 +    Namespace,
 10.2022 +    Node,
 10.2023 +    NodeList,
 10.2024 +    Notation,
 10.2025 +    ProcessingInstruction,
 10.2026 +    Text,
 10.2027 +    Range,
 10.2028 +    XMLSerializer,
 10.2029 +    DOMParser;
 10.2030 +
 10.2031 +
 10.2032 +
 10.2033 +/*
 10.2034 + * Envjs dom.1.2.13 
 10.2035 + * Pure JavaScript Browser Environment
 10.2036 + * By John Resig <http://ejohn.org/> and the Envjs Team
 10.2037 + * Copyright 2008-2010 John Resig, under the MIT License
 10.2038 + */
 10.2039 +
 10.2040 +//CLOSURE_START
 10.2041 +(function(){
 10.2042 +
 10.2043 +
 10.2044 +
 10.2045 +
 10.2046 +
 10.2047 +/**
 10.2048 + * @author john resig
 10.2049 + */
 10.2050 +// Helper method for extending one object with another.
 10.2051 +function __extend__(a,b) {
 10.2052 +    for ( var i in b ) {
 10.2053 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
 10.2054 +        if ( g || s ) {
 10.2055 +            if ( g ) { a.__defineGetter__(i, g); }
 10.2056 +            if ( s ) { a.__defineSetter__(i, s); }
 10.2057 +        } else {
 10.2058 +            a[i] = b[i];
 10.2059 +        }
 10.2060 +    } return a;
 10.2061 +}
 10.2062 +
 10.2063 +/**
 10.2064 + * @author john resig
 10.2065 + */
 10.2066 +//from jQuery
 10.2067 +function __setArray__( target, array ) {
 10.2068 +    // Resetting the length to 0, then using the native Array push
 10.2069 +    // is a super-fast way to populate an object with array-like properties
 10.2070 +    target.length = 0;
 10.2071 +    Array.prototype.push.apply( target, array );
 10.2072 +}
 10.2073 +
 10.2074 +/**
 10.2075 + * @class  NodeList -
 10.2076 + *      provides the abstraction of an ordered collection of nodes
 10.2077 + *
 10.2078 + * @param  ownerDocument : Document - the ownerDocument
 10.2079 + * @param  parentNode    : Node - the node that the NodeList is attached to (or null)
 10.2080 + */
 10.2081 +NodeList = function(ownerDocument, parentNode) {
 10.2082 +    this.length = 0;
 10.2083 +    this.parentNode = parentNode;
 10.2084 +    this.ownerDocument = ownerDocument;
 10.2085 +    this._readonly = false;
 10.2086 +    __setArray__(this, []);
 10.2087 +};
 10.2088 +
 10.2089 +__extend__(NodeList.prototype, {
 10.2090 +    item : function(index) {
 10.2091 +        var ret = null;
 10.2092 +        if ((index >= 0) && (index < this.length)) {
 10.2093 +            // bounds check
 10.2094 +            ret = this[index];
 10.2095 +        }
 10.2096 +        // if the index is out of bounds, default value null is returned
 10.2097 +        return ret;
 10.2098 +    },
 10.2099 +    get xml() {
 10.2100 +        var ret = "",
 10.2101 +            i;
 10.2102 +
 10.2103 +        // create string containing the concatenation of the string values of each child
 10.2104 +        for (i=0; i < this.length; i++) {
 10.2105 +            if(this[i]){
 10.2106 +                if(this[i].nodeType == Node.TEXT_NODE && i>0 &&
 10.2107 +                   this[i-1].nodeType == Node.TEXT_NODE){
 10.2108 +                    //add a single space between adjacent text nodes
 10.2109 +                    ret += " "+this[i].xml;
 10.2110 +                }else{
 10.2111 +                    ret += this[i].xml;
 10.2112 +                }
 10.2113 +            }
 10.2114 +        }
 10.2115 +        return ret;
 10.2116 +    },
 10.2117 +    toArray: function () {
 10.2118 +        var children = [],
 10.2119 +            i;
 10.2120 +        for ( i=0; i < this.length; i++) {
 10.2121 +            children.push (this[i]);
 10.2122 +        }
 10.2123 +        return children;
 10.2124 +    },
 10.2125 +    toString: function(){
 10.2126 +        return "[object NodeList]";
 10.2127 +    }
 10.2128 +});
 10.2129 +
 10.2130 +
 10.2131 +/**
 10.2132 + * @method __findItemIndex__
 10.2133 + *      find the item index of the node
 10.2134 + * @author Jon van Noort (jon@webarcana.com.au)
 10.2135 + * @param  node : Node
 10.2136 + * @return : int
 10.2137 + */
 10.2138 +var __findItemIndex__ = function (nodelist, node) {
 10.2139 +    var ret = -1, i;
 10.2140 +    for (i=0; i<nodelist.length; i++) {
 10.2141 +        // compare id to each node's _id
 10.2142 +        if (nodelist[i] === node) {
 10.2143 +            // found it!
 10.2144 +            ret = i;
 10.2145 +            break;
 10.2146 +        }
 10.2147 +    }
 10.2148 +    // if node is not found, default value -1 is returned
 10.2149 +    return ret;
 10.2150 +};
 10.2151 +
 10.2152 +/**
 10.2153 + * @method __insertBefore__
 10.2154 + *      insert the specified Node into the NodeList before the specified index
 10.2155 + *      Used by Node.insertBefore(). Note: Node.insertBefore() is responsible
 10.2156 + *      for Node Pointer surgery __insertBefore__ simply modifies the internal
 10.2157 + *      data structure (Array).
 10.2158 + * @param  newChild      : Node - the Node to be inserted
 10.2159 + * @param  refChildIndex : int     - the array index to insert the Node before
 10.2160 + */
 10.2161 +var __insertBefore__ = function(nodelist, newChild, refChildIndex) {
 10.2162 +    if ((refChildIndex >= 0) && (refChildIndex <= nodelist.length)) {
 10.2163 +        // bounds check
 10.2164 +        if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
 10.2165 +            // node is a DocumentFragment
 10.2166 +            // append the children of DocumentFragment
 10.2167 +            Array.prototype.splice.apply(nodelist,
 10.2168 +                [refChildIndex, 0].concat(newChild.childNodes.toArray()));
 10.2169 +        }
 10.2170 +        else {
 10.2171 +            // append the newChild
 10.2172 +            Array.prototype.splice.apply(nodelist,[refChildIndex, 0, newChild]);
 10.2173 +        }
 10.2174 +    }
 10.2175 +};
 10.2176 +
 10.2177 +/**
 10.2178 + * @method __replaceChild__
 10.2179 + *      replace the specified Node in the NodeList at the specified index
 10.2180 + *      Used by Node.replaceChild(). Note: Node.replaceChild() is responsible
 10.2181 + *      for Node Pointer surgery __replaceChild__ simply modifies the internal
 10.2182 + *      data structure (Array).
 10.2183 + *
 10.2184 + * @param  newChild      : Node - the Node to be inserted
 10.2185 + * @param  refChildIndex : int     - the array index to hold the Node
 10.2186 + */
 10.2187 +var __replaceChild__ = function(nodelist, newChild, refChildIndex) {
 10.2188 +    var ret = null;
 10.2189 +
 10.2190 +    // bounds check
 10.2191 +    if ((refChildIndex >= 0) && (refChildIndex < nodelist.length)) {
 10.2192 +        // preserve old child for return
 10.2193 +        ret = nodelist[refChildIndex];
 10.2194 +
 10.2195 +        if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
 10.2196 +            // node is a DocumentFragment
 10.2197 +            // get array containing children prior to refChild
 10.2198 +            Array.prototype.splice.apply(nodelist,
 10.2199 +                [refChildIndex, 1].concat(newChild.childNodes.toArray()));
 10.2200 +        }
 10.2201 +        else {
 10.2202 +            // simply replace node in array (links between Nodes are
 10.2203 +            // made at higher level)
 10.2204 +            nodelist[refChildIndex] = newChild;
 10.2205 +        }
 10.2206 +    }
 10.2207 +    // return replaced node
 10.2208 +    return ret;
 10.2209 +};
 10.2210 +
 10.2211 +/**
 10.2212 + * @method __removeChild__
 10.2213 + *      remove the specified Node in the NodeList at the specified index
 10.2214 + *      Used by Node.removeChild(). Note: Node.removeChild() is responsible
 10.2215 + *      for Node Pointer surgery __removeChild__ simply modifies the internal
 10.2216 + *      data structure (Array).
 10.2217 + * @param  refChildIndex : int - the array index holding the Node to be removed
 10.2218 + */
 10.2219 +var __removeChild__ = function(nodelist, refChildIndex) {
 10.2220 +    var ret = null;
 10.2221 +
 10.2222 +    if (refChildIndex > -1) {
 10.2223 +        // found it!
 10.2224 +        // return removed node
 10.2225 +        ret = nodelist[refChildIndex];
 10.2226 +
 10.2227 +        // rebuild array without removed child
 10.2228 +        Array.prototype.splice.apply(nodelist,[refChildIndex, 1]);
 10.2229 +    }
 10.2230 +    // return removed node
 10.2231 +    return ret;
 10.2232 +};
 10.2233 +
 10.2234 +/**
 10.2235 + * @method __appendChild__
 10.2236 + *      append the specified Node to the NodeList. Used by Node.appendChild().
 10.2237 + *      Note: Node.appendChild() is responsible for Node Pointer surgery
 10.2238 + *      __appendChild__ simply modifies the internal data structure (Array).
 10.2239 + * @param  newChild      : Node - the Node to be inserted
 10.2240 + */
 10.2241 +var __appendChild__ = function(nodelist, newChild) {
 10.2242 +    if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
 10.2243 +        // node is a DocumentFragment
 10.2244 +        // append the children of DocumentFragment
 10.2245 +        Array.prototype.push.apply(nodelist, newChild.childNodes.toArray() );
 10.2246 +    } else {
 10.2247 +        // simply add node to array (links between Nodes are made at higher level)
 10.2248 +        Array.prototype.push.apply(nodelist, [newChild]);
 10.2249 +    }
 10.2250 +
 10.2251 +};
 10.2252 +
 10.2253 +/**
 10.2254 + * @method __cloneNodes__ -
 10.2255 + *      Returns a NodeList containing clones of the Nodes in this NodeList
 10.2256 + * @param  deep : boolean -
 10.2257 + *      If true, recursively clone the subtree under each of the nodes;
 10.2258 + *      if false, clone only the nodes themselves (and their attributes,
 10.2259 + *      if it is an Element).
 10.2260 + * @param  parentNode : Node - the new parent of the cloned NodeList
 10.2261 + * @return : NodeList - NodeList containing clones of the Nodes in this NodeList
 10.2262 + */
 10.2263 +var __cloneNodes__ = function(nodelist, deep, parentNode) {
 10.2264 +    var cloneNodeList = new NodeList(nodelist.ownerDocument, parentNode);
 10.2265 +
 10.2266 +    // create list containing clones of each child
 10.2267 +    for (var i=0; i < nodelist.length; i++) {
 10.2268 +        __appendChild__(cloneNodeList, nodelist[i].cloneNode(deep));
 10.2269 +    }
 10.2270 +
 10.2271 +    return cloneNodeList;
 10.2272 +};
 10.2273 +
 10.2274 +
 10.2275 +var __ownerDocument__ = function(node){
 10.2276 +    return (node.nodeType == Node.DOCUMENT_NODE)?node:node.ownerDocument;
 10.2277 +};
 10.2278 +
 10.2279 +/**
 10.2280 + * @class  Node -
 10.2281 + *      The Node interface is the primary datatype for the entire
 10.2282 + *      Document Object Model. It represents a single node in the
 10.2283 + *      document tree.
 10.2284 + * @param  ownerDocument : Document - The Document object associated with this node.
 10.2285 + */
 10.2286 +
 10.2287 +Node = function(ownerDocument) {
 10.2288 +    this.baseURI = 'about:blank';
 10.2289 +    this.namespaceURI = null;
 10.2290 +    this.nodeName = "";
 10.2291 +    this.nodeValue = null;
 10.2292 +
 10.2293 +    // A NodeList that contains all children of this node. If there are no
 10.2294 +    // children, this is a NodeList containing no nodes.  The content of the
 10.2295 +    // returned NodeList is "live" in the sense that, for instance, changes to
 10.2296 +    // the children of the node object that it was created from are immediately
 10.2297 +    // reflected in the nodes returned by the NodeList accessors; it is not a
 10.2298 +    // static snapshot of the content of the node. This is true for every
 10.2299 +    // NodeList, including the ones returned by the getElementsByTagName method.
 10.2300 +    this.childNodes      = new NodeList(ownerDocument, this);
 10.2301 +
 10.2302 +    // The first child of this node. If there is no such node, this is null
 10.2303 +    this.firstChild      = null;
 10.2304 +    // The last child of this node. If there is no such node, this is null.
 10.2305 +    this.lastChild       = null;
 10.2306 +    // The node immediately preceding this node. If there is no such node,
 10.2307 +    // this is null.
 10.2308 +    this.previousSibling = null;
 10.2309 +    // The node immediately following this node. If there is no such node,
 10.2310 +    // this is null.
 10.2311 +    this.nextSibling     = null;
 10.2312 +
 10.2313 +    this.attributes = null;
 10.2314 +    // The namespaces in scope for this node
 10.2315 +    this._namespaces = new NamespaceNodeMap(ownerDocument, this);
 10.2316 +    this._readonly = false;
 10.2317 +
 10.2318 +    //IMPORTANT: These must come last so rhino will not iterate parent
 10.2319 +    //           properties before child properties.  (qunit.equiv issue)
 10.2320 +
 10.2321 +    // The parent of this node. All nodes, except Document, DocumentFragment,
 10.2322 +    // and Attr may have a parent.  However, if a node has just been created
 10.2323 +    // and not yet added to the tree, or if it has been removed from the tree,
 10.2324 +    // this is null
 10.2325 +    this.parentNode      = null;
 10.2326 +    // The Document object associated with this node
 10.2327 +    this.ownerDocument = ownerDocument;
 10.2328 +
 10.2329 +};
 10.2330 +
 10.2331 +// nodeType constants
 10.2332 +Node.ELEMENT_NODE                = 1;
 10.2333 +Node.ATTRIBUTE_NODE              = 2;
 10.2334 +Node.TEXT_NODE                   = 3;
 10.2335 +Node.CDATA_SECTION_NODE          = 4;
 10.2336 +Node.ENTITY_REFERENCE_NODE       = 5;
 10.2337 +Node.ENTITY_NODE                 = 6;
 10.2338 +Node.PROCESSING_INSTRUCTION_NODE = 7;
 10.2339 +Node.COMMENT_NODE                = 8;
 10.2340 +Node.DOCUMENT_NODE               = 9;
 10.2341 +Node.DOCUMENT_TYPE_NODE          = 10;
 10.2342 +Node.DOCUMENT_FRAGMENT_NODE      = 11;
 10.2343 +Node.NOTATION_NODE               = 12;
 10.2344 +Node.NAMESPACE_NODE              = 13;
 10.2345 +
 10.2346 +Node.DOCUMENT_POSITION_EQUAL        = 0x00;
 10.2347 +Node.DOCUMENT_POSITION_DISCONNECTED = 0x01;
 10.2348 +Node.DOCUMENT_POSITION_PRECEDING    = 0x02;
 10.2349 +Node.DOCUMENT_POSITION_FOLLOWING    = 0x04;
 10.2350 +Node.DOCUMENT_POSITION_CONTAINS     = 0x08;
 10.2351 +Node.DOCUMENT_POSITION_CONTAINED_BY = 0x10;
 10.2352 +Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC      = 0x20;
 10.2353 +
 10.2354 +
 10.2355 +__extend__(Node.prototype, {
 10.2356 +    get localName(){
 10.2357 +        return this.prefix?
 10.2358 +            this.nodeName.substring(this.prefix.length+1, this.nodeName.length):
 10.2359 +            this.nodeName;
 10.2360 +    },
 10.2361 +    get prefix(){
 10.2362 +        return this.nodeName.split(':').length>1?
 10.2363 +            this.nodeName.split(':')[0]:
 10.2364 +            null;
 10.2365 +    },
 10.2366 +    set prefix(value){
 10.2367 +        if(value === null){
 10.2368 +            this.nodeName = this.localName;
 10.2369 +        }else{
 10.2370 +            this.nodeName = value+':'+this.localName;
 10.2371 +        }
 10.2372 +    },
 10.2373 +    hasAttributes : function() {
 10.2374 +        if (this.attributes.length == 0) {
 10.2375 +            return false;
 10.2376 +        }else{
 10.2377 +            return true;
 10.2378 +        }
 10.2379 +    },
 10.2380 +    get textContent(){
 10.2381 +        return __recursivelyGatherText__(this);
 10.2382 +    },
 10.2383 +    set textContent(newText){
 10.2384 +        while(this.firstChild != null){
 10.2385 +            this.removeChild( this.firstChild );
 10.2386 +        }
 10.2387 +        var text = this.ownerDocument.createTextNode(newText);
 10.2388 +        this.appendChild(text);
 10.2389 +    },
 10.2390 +    insertBefore : function(newChild, refChild) {
 10.2391 +        var prevNode;
 10.2392 +
 10.2393 +        if(newChild==null){
 10.2394 +            return newChild;
 10.2395 +        }
 10.2396 +        if(refChild==null){
 10.2397 +            this.appendChild(newChild);
 10.2398 +            return this.newChild;
 10.2399 +        }
 10.2400 +
 10.2401 +        // test for exceptions
 10.2402 +        if (__ownerDocument__(this).implementation.errorChecking) {
 10.2403 +            // throw Exception if Node is readonly
 10.2404 +            if (this._readonly) {
 10.2405 +                throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.2406 +            }
 10.2407 +
 10.2408 +            // throw Exception if newChild was not created by this Document
 10.2409 +            if (__ownerDocument__(this) != __ownerDocument__(newChild)) {
 10.2410 +                throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
 10.2411 +            }
 10.2412 +
 10.2413 +            // throw Exception if the node is an ancestor
 10.2414 +            if (__isAncestor__(this, newChild)) {
 10.2415 +                throw(new DOMException(DOMException.HIERARCHY_REQUEST_ERR));
 10.2416 +            }
 10.2417 +        }
 10.2418 +
 10.2419 +        // if refChild is specified, insert before it
 10.2420 +        if (refChild) {
 10.2421 +            // find index of refChild
 10.2422 +            var itemIndex = __findItemIndex__(this.childNodes, refChild);
 10.2423 +            // throw Exception if there is no child node with this id
 10.2424 +            if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
 10.2425 +                throw(new DOMException(DOMException.NOT_FOUND_ERR));
 10.2426 +            }
 10.2427 +
 10.2428 +            // if the newChild is already in the tree,
 10.2429 +            var newChildParent = newChild.parentNode;
 10.2430 +            if (newChildParent) {
 10.2431 +                // remove it
 10.2432 +                newChildParent.removeChild(newChild);
 10.2433 +            }
 10.2434 +
 10.2435 +            // insert newChild into childNodes
 10.2436 +            __insertBefore__(this.childNodes, newChild, itemIndex);
 10.2437 +
 10.2438 +            // do node pointer surgery
 10.2439 +            prevNode = refChild.previousSibling;
 10.2440 +
 10.2441 +            // handle DocumentFragment
 10.2442 +            if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
 10.2443 +                if (newChild.childNodes.length > 0) {
 10.2444 +                    // set the parentNode of DocumentFragment's children
 10.2445 +                    for (var ind = 0; ind < newChild.childNodes.length; ind++) {
 10.2446 +                        newChild.childNodes[ind].parentNode = this;
 10.2447 +                    }
 10.2448 +
 10.2449 +                    // link refChild to last child of DocumentFragment
 10.2450 +                    refChild.previousSibling = newChild.childNodes[newChild.childNodes.length-1];
 10.2451 +                }
 10.2452 +            }else {
 10.2453 +                // set the parentNode of the newChild
 10.2454 +                newChild.parentNode = this;
 10.2455 +                // link refChild to newChild
 10.2456 +                refChild.previousSibling = newChild;
 10.2457 +            }
 10.2458 +
 10.2459 +        }else {
 10.2460 +            // otherwise, append to end
 10.2461 +            prevNode = this.lastChild;
 10.2462 +            this.appendChild(newChild);
 10.2463 +        }
 10.2464 +
 10.2465 +        if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
 10.2466 +            // do node pointer surgery for DocumentFragment
 10.2467 +            if (newChild.childNodes.length > 0) {
 10.2468 +                if (prevNode) {
 10.2469 +                    prevNode.nextSibling = newChild.childNodes[0];
 10.2470 +                }else {
 10.2471 +                    // this is the first child in the list
 10.2472 +                    this.firstChild = newChild.childNodes[0];
 10.2473 +                }
 10.2474 +                newChild.childNodes[0].previousSibling = prevNode;
 10.2475 +                newChild.childNodes[newChild.childNodes.length-1].nextSibling = refChild;
 10.2476 +            }
 10.2477 +        }else {
 10.2478 +            // do node pointer surgery for newChild
 10.2479 +            if (prevNode) {
 10.2480 +                prevNode.nextSibling = newChild;
 10.2481 +            }else {
 10.2482 +                // this is the first child in the list
 10.2483 +                this.firstChild = newChild;
 10.2484 +            }
 10.2485 +            newChild.previousSibling = prevNode;
 10.2486 +            newChild.nextSibling     = refChild;
 10.2487 +        }
 10.2488 +
 10.2489 +        return newChild;
 10.2490 +    },
 10.2491 +    replaceChild : function(newChild, oldChild) {
 10.2492 +        var ret = null;
 10.2493 +
 10.2494 +        if(newChild==null || oldChild==null){
 10.2495 +            return oldChild;
 10.2496 +        }
 10.2497 +
 10.2498 +        // test for exceptions
 10.2499 +        if (__ownerDocument__(this).implementation.errorChecking) {
 10.2500 +            // throw Exception if Node is readonly
 10.2501 +            if (this._readonly) {
 10.2502 +                throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.2503 +            }
 10.2504 +
 10.2505 +            // throw Exception if newChild was not created by this Document
 10.2506 +            if (__ownerDocument__(this) != __ownerDocument__(newChild)) {
 10.2507 +                throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
 10.2508 +            }
 10.2509 +
 10.2510 +            // throw Exception if the node is an ancestor
 10.2511 +            if (__isAncestor__(this, newChild)) {
 10.2512 +                throw(new DOMException(DOMException.HIERARCHY_REQUEST_ERR));
 10.2513 +            }
 10.2514 +        }
 10.2515 +
 10.2516 +        // get index of oldChild
 10.2517 +        var index = __findItemIndex__(this.childNodes, oldChild);
 10.2518 +
 10.2519 +        // throw Exception if there is no child node with this id
 10.2520 +        if (__ownerDocument__(this).implementation.errorChecking && (index < 0)) {
 10.2521 +            throw(new DOMException(DOMException.NOT_FOUND_ERR));
 10.2522 +        }
 10.2523 +
 10.2524 +        // if the newChild is already in the tree,
 10.2525 +        var newChildParent = newChild.parentNode;
 10.2526 +        if (newChildParent) {
 10.2527 +            // remove it
 10.2528 +            newChildParent.removeChild(newChild);
 10.2529 +        }
 10.2530 +
 10.2531 +        // add newChild to childNodes
 10.2532 +        ret = __replaceChild__(this.childNodes,newChild, index);
 10.2533 +
 10.2534 +
 10.2535 +        if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
 10.2536 +            // do node pointer surgery for Document Fragment
 10.2537 +            if (newChild.childNodes.length > 0) {
 10.2538 +                for (var ind = 0; ind < newChild.childNodes.length; ind++) {
 10.2539 +                    newChild.childNodes[ind].parentNode = this;
 10.2540 +                }
 10.2541 +
 10.2542 +                if (oldChild.previousSibling) {
 10.2543 +                    oldChild.previousSibling.nextSibling = newChild.childNodes[0];
 10.2544 +                } else {
 10.2545 +                    this.firstChild = newChild.childNodes[0];
 10.2546 +                }
 10.2547 +
 10.2548 +                if (oldChild.nextSibling) {
 10.2549 +                    oldChild.nextSibling.previousSibling = newChild;
 10.2550 +                } else {
 10.2551 +                    this.lastChild = newChild.childNodes[newChild.childNodes.length-1];
 10.2552 +                }
 10.2553 +
 10.2554 +                newChild.childNodes[0].previousSibling = oldChild.previousSibling;
 10.2555 +                newChild.childNodes[newChild.childNodes.length-1].nextSibling = oldChild.nextSibling;
 10.2556 +            }
 10.2557 +        } else {
 10.2558 +            // do node pointer surgery for newChild
 10.2559 +            newChild.parentNode = this;
 10.2560 +
 10.2561 +            if (oldChild.previousSibling) {
 10.2562 +                oldChild.previousSibling.nextSibling = newChild;
 10.2563 +            }else{
 10.2564 +                this.firstChild = newChild;
 10.2565 +            }
 10.2566 +            if (oldChild.nextSibling) {
 10.2567 +                oldChild.nextSibling.previousSibling = newChild;
 10.2568 +            }else{
 10.2569 +                this.lastChild = newChild;
 10.2570 +            }
 10.2571 +            newChild.previousSibling = oldChild.previousSibling;
 10.2572 +            newChild.nextSibling = oldChild.nextSibling;
 10.2573 +        }
 10.2574 +
 10.2575 +        return ret;
 10.2576 +    },
 10.2577 +    removeChild : function(oldChild) {
 10.2578 +        if(!oldChild){
 10.2579 +            return null;
 10.2580 +        }
 10.2581 +        // throw Exception if NamedNodeMap is readonly
 10.2582 +        if (__ownerDocument__(this).implementation.errorChecking &&
 10.2583 +            (this._readonly || oldChild._readonly)) {
 10.2584 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.2585 +        }
 10.2586 +
 10.2587 +        // get index of oldChild
 10.2588 +        var itemIndex = __findItemIndex__(this.childNodes, oldChild);
 10.2589 +
 10.2590 +        // throw Exception if there is no child node with this id
 10.2591 +        if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
 10.2592 +            throw(new DOMException(DOMException.NOT_FOUND_ERR));
 10.2593 +        }
 10.2594 +
 10.2595 +        // remove oldChild from childNodes
 10.2596 +        __removeChild__(this.childNodes, itemIndex);
 10.2597 +
 10.2598 +        // do node pointer surgery
 10.2599 +        oldChild.parentNode = null;
 10.2600 +
 10.2601 +        if (oldChild.previousSibling) {
 10.2602 +            oldChild.previousSibling.nextSibling = oldChild.nextSibling;
 10.2603 +        }else {
 10.2604 +            this.firstChild = oldChild.nextSibling;
 10.2605 +        }
 10.2606 +        if (oldChild.nextSibling) {
 10.2607 +            oldChild.nextSibling.previousSibling = oldChild.previousSibling;
 10.2608 +        }else {
 10.2609 +            this.lastChild = oldChild.previousSibling;
 10.2610 +        }
 10.2611 +
 10.2612 +        oldChild.previousSibling = null;
 10.2613 +        oldChild.nextSibling = null;
 10.2614 +
 10.2615 +        return oldChild;
 10.2616 +    },
 10.2617 +    appendChild : function(newChild) {
 10.2618 +        if(!newChild){
 10.2619 +            return null;
 10.2620 +        }
 10.2621 +        // test for exceptions
 10.2622 +        if (__ownerDocument__(this).implementation.errorChecking) {
 10.2623 +            // throw Exception if Node is readonly
 10.2624 +            if (this._readonly) {
 10.2625 +                throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.2626 +            }
 10.2627 +
 10.2628 +            // throw Exception if arg was not created by this Document
 10.2629 +            if (__ownerDocument__(this) != __ownerDocument__(this)) {
 10.2630 +                throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
 10.2631 +            }
 10.2632 +
 10.2633 +            // throw Exception if the node is an ancestor
 10.2634 +            if (__isAncestor__(this, newChild)) {
 10.2635 +              throw(new DOMException(DOMException.HIERARCHY_REQUEST_ERR));
 10.2636 +            }
 10.2637 +        }
 10.2638 +
 10.2639 +        // if the newChild is already in the tree,
 10.2640 +        var newChildParent = newChild.parentNode;
 10.2641 +        if (newChildParent) {
 10.2642 +            // remove it
 10.2643 +           //console.debug('removing node %s', newChild);
 10.2644 +            newChildParent.removeChild(newChild);
 10.2645 +        }
 10.2646 +
 10.2647 +        // add newChild to childNodes
 10.2648 +        __appendChild__(this.childNodes, newChild);
 10.2649 +
 10.2650 +        if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
 10.2651 +            // do node pointer surgery for DocumentFragment
 10.2652 +            if (newChild.childNodes.length > 0) {
 10.2653 +                for (var ind = 0; ind < newChild.childNodes.length; ind++) {
 10.2654 +                    newChild.childNodes[ind].parentNode = this;
 10.2655 +                }
 10.2656 +
 10.2657 +                if (this.lastChild) {
 10.2658 +                    this.lastChild.nextSibling = newChild.childNodes[0];
 10.2659 +                    newChild.childNodes[0].previousSibling = this.lastChild;
 10.2660 +                    this.lastChild = newChild.childNodes[newChild.childNodes.length-1];
 10.2661 +                } else {
 10.2662 +                    this.lastChild = newChild.childNodes[newChild.childNodes.length-1];
 10.2663 +                    this.firstChild = newChild.childNodes[0];
 10.2664 +                }
 10.2665 +            }
 10.2666 +        } else {
 10.2667 +            // do node pointer surgery for newChild
 10.2668 +            newChild.parentNode = this;
 10.2669 +            if (this.lastChild) {
 10.2670 +                this.lastChild.nextSibling = newChild;
 10.2671 +                newChild.previousSibling = this.lastChild;
 10.2672 +                this.lastChild = newChild;
 10.2673 +            } else {
 10.2674 +                this.lastChild = newChild;
 10.2675 +                this.firstChild = newChild;
 10.2676 +            }
 10.2677 +       }
 10.2678 +       return newChild;
 10.2679 +    },
 10.2680 +    hasChildNodes : function() {
 10.2681 +        return (this.childNodes.length > 0);
 10.2682 +    },
 10.2683 +    cloneNode: function(deep) {
 10.2684 +        // use importNode to clone this Node
 10.2685 +        //do not throw any exceptions
 10.2686 +        try {
 10.2687 +            return __ownerDocument__(this).importNode(this, deep);
 10.2688 +        } catch (e) {
 10.2689 +            //there shouldn't be any exceptions, but if there are, return null
 10.2690 +            // may want to warn: $debug("could not clone node: "+e.code);
 10.2691 +            return null;
 10.2692 +        }
 10.2693 +    },
 10.2694 +    normalize : function() {
 10.2695 +        var i;
 10.2696 +        var inode;
 10.2697 +        var nodesToRemove = new NodeList();
 10.2698 +
 10.2699 +        if (this.nodeType == Node.ELEMENT_NODE || this.nodeType == Node.DOCUMENT_NODE) {
 10.2700 +            var adjacentTextNode = null;
 10.2701 +
 10.2702 +            // loop through all childNodes
 10.2703 +            for(i = 0; i < this.childNodes.length; i++) {
 10.2704 +                inode = this.childNodes.item(i);
 10.2705 +
 10.2706 +                if (inode.nodeType == Node.TEXT_NODE) {
 10.2707 +                    // this node is a text node
 10.2708 +                    if (inode.length < 1) {
 10.2709 +                        // this text node is empty
 10.2710 +                        // add this node to the list of nodes to be remove
 10.2711 +                        __appendChild__(nodesToRemove, inode);
 10.2712 +                    }else {
 10.2713 +                        if (adjacentTextNode) {
 10.2714 +                            // previous node was also text
 10.2715 +                            adjacentTextNode.appendData(inode.data);
 10.2716 +                            // merge the data in adjacent text nodes
 10.2717 +                            // add this node to the list of nodes to be removed
 10.2718 +                            __appendChild__(nodesToRemove, inode);
 10.2719 +                        } else {
 10.2720 +                            // remember this node for next cycle
 10.2721 +                            adjacentTextNode = inode;
 10.2722 +                        }
 10.2723 +                    }
 10.2724 +                } else {
 10.2725 +                    // (soon to be) previous node is not a text node
 10.2726 +                    adjacentTextNode = null;
 10.2727 +                    // normalize non Text childNodes
 10.2728 +                    inode.normalize();
 10.2729 +                }
 10.2730 +            }
 10.2731 +
 10.2732 +            // remove redundant Text Nodes
 10.2733 +            for(i = 0; i < nodesToRemove.length; i++) {
 10.2734 +                inode = nodesToRemove.item(i);
 10.2735 +                inode.parentNode.removeChild(inode);
 10.2736 +            }
 10.2737 +        }
 10.2738 +    },
 10.2739 +    isSupported : function(feature, version) {
 10.2740 +        // use Implementation.hasFeature to determine if this feature is supported
 10.2741 +        return __ownerDocument__(this).implementation.hasFeature(feature, version);
 10.2742 +    },
 10.2743 +    getElementsByTagName : function(tagname) {
 10.2744 +        // delegate to _getElementsByTagNameRecursive
 10.2745 +        // recurse childNodes
 10.2746 +        var nodelist = new NodeList(__ownerDocument__(this));
 10.2747 +        for (var i = 0; i < this.childNodes.length; i++) {
 10.2748 +            __getElementsByTagNameRecursive__(this.childNodes.item(i),
 10.2749 +                                              tagname,
 10.2750 +                                              nodelist);
 10.2751 +        }
 10.2752 +        return nodelist;
 10.2753 +    },
 10.2754 +    getElementsByTagNameNS : function(namespaceURI, localName) {
 10.2755 +        // delegate to _getElementsByTagNameNSRecursive
 10.2756 +        return __getElementsByTagNameNSRecursive__(this, namespaceURI, localName,
 10.2757 +            new NodeList(__ownerDocument__(this)));
 10.2758 +    },
 10.2759 +    importNode : function(importedNode, deep) {
 10.2760 +        var i;
 10.2761 +        var importNode;
 10.2762 +
 10.2763 +        //there is no need to perform namespace checks since everything has already gone through them
 10.2764 +        //in order to have gotten into the DOM in the first place. The following line
 10.2765 +        //turns namespace checking off in ._isValidNamespace
 10.2766 +        __ownerDocument__(this).importing = true;
 10.2767 +
 10.2768 +        if (importedNode.nodeType == Node.ELEMENT_NODE) {
 10.2769 +            if (!__ownerDocument__(this).implementation.namespaceAware) {
 10.2770 +                // create a local Element (with the name of the importedNode)
 10.2771 +                importNode = __ownerDocument__(this).createElement(importedNode.tagName);
 10.2772 +
 10.2773 +                // create attributes matching those of the importedNode
 10.2774 +                for(i = 0; i < importedNode.attributes.length; i++) {
 10.2775 +                    importNode.setAttribute(importedNode.attributes.item(i).name, importedNode.attributes.item(i).value);
 10.2776 +                }
 10.2777 +            } else {
 10.2778 +                // create a local Element (with the name & namespaceURI of the importedNode)
 10.2779 +                importNode = __ownerDocument__(this).createElementNS(importedNode.namespaceURI, importedNode.nodeName);
 10.2780 +
 10.2781 +                // create attributes matching those of the importedNode
 10.2782 +                for(i = 0; i < importedNode.attributes.length; i++) {
 10.2783 +                    importNode.setAttributeNS(importedNode.attributes.item(i).namespaceURI,
 10.2784 +                        importedNode.attributes.item(i).name, importedNode.attributes.item(i).value);
 10.2785 +                }
 10.2786 +
 10.2787 +                // create namespace definitions matching those of the importedNode
 10.2788 +                for(i = 0; i < importedNode._namespaces.length; i++) {
 10.2789 +                    importNode._namespaces[i] = __ownerDocument__(this).createNamespace(importedNode._namespaces.item(i).localName);
 10.2790 +                    importNode._namespaces[i].value = importedNode._namespaces.item(i).value;
 10.2791 +                }
 10.2792 +            }
 10.2793 +        } else if (importedNode.nodeType == Node.ATTRIBUTE_NODE) {
 10.2794 +            if (!__ownerDocument__(this).implementation.namespaceAware) {
 10.2795 +                // create a local Attribute (with the name of the importedAttribute)
 10.2796 +                importNode = __ownerDocument__(this).createAttribute(importedNode.name);
 10.2797 +            } else {
 10.2798 +                // create a local Attribute (with the name & namespaceURI of the importedAttribute)
 10.2799 +                importNode = __ownerDocument__(this).createAttributeNS(importedNode.namespaceURI, importedNode.nodeName);
 10.2800 +
 10.2801 +                // create namespace definitions matching those of the importedAttribute
 10.2802 +                for(i = 0; i < importedNode._namespaces.length; i++) {
 10.2803 +                    importNode._namespaces[i] = __ownerDocument__(this).createNamespace(importedNode._namespaces.item(i).localName);
 10.2804 +                    importNode._namespaces[i].value = importedNode._namespaces.item(i).value;
 10.2805 +                }
 10.2806 +            }
 10.2807 +
 10.2808 +            // set the value of the local Attribute to match that of the importedAttribute
 10.2809 +            importNode.value = importedNode.value;
 10.2810 +
 10.2811 +        } else if (importedNode.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
 10.2812 +            // create a local DocumentFragment
 10.2813 +            importNode = __ownerDocument__(this).createDocumentFragment();
 10.2814 +        } else if (importedNode.nodeType == Node.NAMESPACE_NODE) {
 10.2815 +            // create a local NamespaceNode (with the same name & value as the importedNode)
 10.2816 +            importNode = __ownerDocument__(this).createNamespace(importedNode.nodeName);
 10.2817 +            importNode.value = importedNode.value;
 10.2818 +        } else if (importedNode.nodeType == Node.TEXT_NODE) {
 10.2819 +            // create a local TextNode (with the same data as the importedNode)
 10.2820 +            importNode = __ownerDocument__(this).createTextNode(importedNode.data);
 10.2821 +        } else if (importedNode.nodeType == Node.CDATA_SECTION_NODE) {
 10.2822 +            // create a local CDATANode (with the same data as the importedNode)
 10.2823 +            importNode = __ownerDocument__(this).createCDATASection(importedNode.data);
 10.2824 +        } else if (importedNode.nodeType == Node.PROCESSING_INSTRUCTION_NODE) {
 10.2825 +            // create a local ProcessingInstruction (with the same target & data as the importedNode)
 10.2826 +            importNode = __ownerDocument__(this).createProcessingInstruction(importedNode.target, importedNode.data);
 10.2827 +        } else if (importedNode.nodeType == Node.COMMENT_NODE) {
 10.2828 +            // create a local Comment (with the same data as the importedNode)
 10.2829 +            importNode = __ownerDocument__(this).createComment(importedNode.data);
 10.2830 +        } else {  // throw Exception if nodeType is not supported
 10.2831 +            throw(new DOMException(DOMException.NOT_SUPPORTED_ERR));
 10.2832 +        }
 10.2833 +
 10.2834 +        if (deep) {
 10.2835 +            // recurse childNodes
 10.2836 +            for(i = 0; i < importedNode.childNodes.length; i++) {
 10.2837 +                importNode.appendChild(__ownerDocument__(this).importNode(importedNode.childNodes.item(i), true));
 10.2838 +            }
 10.2839 +        }
 10.2840 +
 10.2841 +        //reset importing
 10.2842 +        __ownerDocument__(this).importing = false;
 10.2843 +        return importNode;
 10.2844 +
 10.2845 +    },
 10.2846 +    contains : function(node){
 10.2847 +        while(node && node != this ){
 10.2848 +            node = node.parentNode;
 10.2849 +        }
 10.2850 +        return !!node;
 10.2851 +    },
 10.2852 +    toString : function() {
 10.2853 +        return '[object Node]';
 10.2854 +    }
 10.2855 +
 10.2856 +});
 10.2857 +
 10.2858 +
 10.2859 +
 10.2860 +/**
 10.2861 + * @method __getElementsByTagNameRecursive__ - implements getElementsByTagName()
 10.2862 + * @param  elem     : Element  - The element which are checking and then recursing into
 10.2863 + * @param  tagname  : string      - The name of the tag to match on. The special value "*" matches all tags
 10.2864 + * @param  nodeList : NodeList - The accumulating list of matching nodes
 10.2865 + *
 10.2866 + * @return : NodeList
 10.2867 + */
 10.2868 +var __getElementsByTagNameRecursive__ = function (elem, tagname, nodeList) {
 10.2869 +
 10.2870 +    if (elem.nodeType == Node.ELEMENT_NODE || elem.nodeType == Node.DOCUMENT_NODE) {
 10.2871 +
 10.2872 +        if(elem.nodeType !== Node.DOCUMENT_NODE &&
 10.2873 +            ((elem.nodeName.toUpperCase() == tagname.toUpperCase()) ||
 10.2874 +                (tagname == "*")) ){
 10.2875 +            // add matching node to nodeList
 10.2876 +            __appendChild__(nodeList, elem);
 10.2877 +        }
 10.2878 +
 10.2879 +        // recurse childNodes
 10.2880 +        for(var i = 0; i < elem.childNodes.length; i++) {
 10.2881 +            nodeList = __getElementsByTagNameRecursive__(elem.childNodes.item(i), tagname, nodeList);
 10.2882 +        }
 10.2883 +    }
 10.2884 +
 10.2885 +    return nodeList;
 10.2886 +};
 10.2887 +
 10.2888 +/**
 10.2889 + * @method __getElementsByTagNameNSRecursive__
 10.2890 + *      implements getElementsByTagName()
 10.2891 + *
 10.2892 + * @param  elem     : Element  - The element which are checking and then recursing into
 10.2893 + * @param  namespaceURI : string - the namespace URI of the required node
 10.2894 + * @param  localName    : string - the local name of the required node
 10.2895 + * @param  nodeList     : NodeList - The accumulating list of matching nodes
 10.2896 + *
 10.2897 + * @return : NodeList
 10.2898 + */
 10.2899 +var __getElementsByTagNameNSRecursive__ = function(elem, namespaceURI, localName, nodeList) {
 10.2900 +    if (elem.nodeType == Node.ELEMENT_NODE || elem.nodeType == Node.DOCUMENT_NODE) {
 10.2901 +
 10.2902 +        if (((elem.namespaceURI == namespaceURI) || (namespaceURI == "*")) &&
 10.2903 +            ((elem.localName == localName) || (localName == "*"))) {
 10.2904 +            // add matching node to nodeList
 10.2905 +            __appendChild__(nodeList, elem);
 10.2906 +        }
 10.2907 +
 10.2908 +        // recurse childNodes
 10.2909 +        for(var i = 0; i < elem.childNodes.length; i++) {
 10.2910 +            nodeList = __getElementsByTagNameNSRecursive__(
 10.2911 +                elem.childNodes.item(i), namespaceURI, localName, nodeList);
 10.2912 +        }
 10.2913 +    }
 10.2914 +
 10.2915 +    return nodeList;
 10.2916 +};
 10.2917 +
 10.2918 +/**
 10.2919 + * @method __isAncestor__ - returns true if node is ancestor of target
 10.2920 + * @param  target         : Node - The node we are using as context
 10.2921 + * @param  node         : Node - The candidate ancestor node
 10.2922 + * @return : boolean
 10.2923 + */
 10.2924 +var __isAncestor__ = function(target, node) {
 10.2925 +    // if this node matches, return true,
 10.2926 +    // otherwise recurse up (if there is a parentNode)
 10.2927 +    return ((target == node) || ((target.parentNode) && (__isAncestor__(target.parentNode, node))));
 10.2928 +};
 10.2929 +
 10.2930 +
 10.2931 +
 10.2932 +var __recursivelyGatherText__ = function(aNode) {
 10.2933 +    var accumulateText = "",
 10.2934 +        idx,
 10.2935 +        node;
 10.2936 +    for (idx=0;idx < aNode.childNodes.length;idx++){
 10.2937 +        node = aNode.childNodes.item(idx);
 10.2938 +        if(node.nodeType == Node.TEXT_NODE)
 10.2939 +            accumulateText += node.data;
 10.2940 +        else
 10.2941 +            accumulateText += __recursivelyGatherText__(node);
 10.2942 +    }
 10.2943 +    return accumulateText;
 10.2944 +};
 10.2945 +
 10.2946 +/**
 10.2947 + * function __escapeXML__
 10.2948 + * @param  str : string - The string to be escaped
 10.2949 + * @return : string - The escaped string
 10.2950 + */
 10.2951 +var escAmpRegEx = /&(?!(amp;|lt;|gt;|quot|apos;))/g;
 10.2952 +var escLtRegEx = /</g;
 10.2953 +var escGtRegEx = />/g;
 10.2954 +var quotRegEx = /"/g;
 10.2955 +var aposRegEx = /'/g;
 10.2956 +
 10.2957 +function __escapeXML__(str) {
 10.2958 +    str = str.replace(escAmpRegEx, "&amp;").
 10.2959 +            replace(escLtRegEx, "&lt;").
 10.2960 +            replace(escGtRegEx, "&gt;").
 10.2961 +            replace(quotRegEx, "&quot;").
 10.2962 +            replace(aposRegEx, "&apos;");
 10.2963 +
 10.2964 +    return str;
 10.2965 +};
 10.2966 +
 10.2967 +/*
 10.2968 +function __escapeHTML5__(str) {
 10.2969 +    str = str.replace(escAmpRegEx, "&amp;").
 10.2970 +            replace(escLtRegEx, "&lt;").
 10.2971 +            replace(escGtRegEx, "&gt;");
 10.2972 +
 10.2973 +    return str;
 10.2974 +};
 10.2975 +function __escapeHTML5Atribute__(str) {
 10.2976 +    str = str.replace(escAmpRegEx, "&amp;").
 10.2977 +            replace(escLtRegEx, "&lt;").
 10.2978 +            replace(escGtRegEx, "&gt;").
 10.2979 +            replace(quotRegEx, "&quot;").
 10.2980 +            replace(aposRegEx, "&apos;");
 10.2981 +
 10.2982 +    return str;
 10.2983 +};
 10.2984 +*/
 10.2985 +
 10.2986 +/**
 10.2987 + * function __unescapeXML__
 10.2988 + * @param  str : string - The string to be unescaped
 10.2989 + * @return : string - The unescaped string
 10.2990 + */
 10.2991 +var unescAmpRegEx = /&amp;/g;
 10.2992 +var unescLtRegEx = /&lt;/g;
 10.2993 +var unescGtRegEx = /&gt;/g;
 10.2994 +var unquotRegEx = /&quot;/g;
 10.2995 +var unaposRegEx = /&apos;/g;
 10.2996 +function __unescapeXML__(str) {
 10.2997 +    str = str.replace(unescAmpRegEx, "&").
 10.2998 +            replace(unescLtRegEx, "<").
 10.2999 +            replace(unescGtRegEx, ">").
 10.3000 +            replace(unquotRegEx, "\"").
 10.3001 +            replace(unaposRegEx, "'");
 10.3002 +
 10.3003 +    return str;
 10.3004 +};
 10.3005 +
 10.3006 +/**
 10.3007 + * @class  NamedNodeMap -
 10.3008 + *      used to represent collections of nodes that can be accessed by name
 10.3009 + *      typically a set of Element attributes
 10.3010 + *
 10.3011 + * @extends NodeList -
 10.3012 + *      note W3C spec says that this is not the case, but we need an item()
 10.3013 + *      method identical to NodeList's, so why not?
 10.3014 + * @param  ownerDocument : Document - the ownerDocument
 10.3015 + * @param  parentNode    : Node - the node that the NamedNodeMap is attached to (or null)
 10.3016 + */
 10.3017 +NamedNodeMap = function(ownerDocument, parentNode) {
 10.3018 +    NodeList.apply(this, arguments);
 10.3019 +    __setArray__(this, []);
 10.3020 +};
 10.3021 +NamedNodeMap.prototype = new NodeList();
 10.3022 +__extend__(NamedNodeMap.prototype, {
 10.3023 +    add: function(name){
 10.3024 +        this[this.length] = name;
 10.3025 +    },
 10.3026 +    getNamedItem : function(name) {
 10.3027 +        var ret = null;
 10.3028 +        //console.log('NamedNodeMap getNamedItem %s', name);
 10.3029 +        // test that Named Node exists
 10.3030 +        var itemIndex = __findNamedItemIndex__(this, name);
 10.3031 +
 10.3032 +        if (itemIndex > -1) {
 10.3033 +            // found it!
 10.3034 +            ret = this[itemIndex];
 10.3035 +        }
 10.3036 +        // if node is not found, default value null is returned
 10.3037 +        return ret;
 10.3038 +    },
 10.3039 +    setNamedItem : function(arg) {
 10.3040 +      //console.log('setNamedItem %s', arg);
 10.3041 +      // test for exceptions
 10.3042 +      if (__ownerDocument__(this).implementation.errorChecking) {
 10.3043 +            // throw Exception if arg was not created by this Document
 10.3044 +            if (this.ownerDocument != arg.ownerDocument) {
 10.3045 +              throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
 10.3046 +            }
 10.3047 +
 10.3048 +            // throw Exception if DOMNamedNodeMap is readonly
 10.3049 +            if (this._readonly || (this.parentNode && this.parentNode._readonly)) {
 10.3050 +              throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3051 +            }
 10.3052 +
 10.3053 +            // throw Exception if arg is already an attribute of another Element object
 10.3054 +            if (arg.ownerElement && (arg.ownerElement != this.parentNode)) {
 10.3055 +              throw(new DOMException(DOMException.INUSE_ATTRIBUTE_ERR));
 10.3056 +            }
 10.3057 +      }
 10.3058 +
 10.3059 +     //console.log('setNamedItem __findNamedItemIndex__ ');
 10.3060 +      // get item index
 10.3061 +      var itemIndex = __findNamedItemIndex__(this, arg.name);
 10.3062 +      var ret = null;
 10.3063 +
 10.3064 +     //console.log('setNamedItem __findNamedItemIndex__ %s', itemIndex);
 10.3065 +      if (itemIndex > -1) {                          // found it!
 10.3066 +            ret = this[itemIndex];                // use existing Attribute
 10.3067 +
 10.3068 +            // throw Exception if DOMAttr is readonly
 10.3069 +            if (__ownerDocument__(this).implementation.errorChecking && ret._readonly) {
 10.3070 +              throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3071 +            } else {
 10.3072 +              this[itemIndex] = arg;                // over-write existing NamedNode
 10.3073 +              this[arg.name.toLowerCase()] = arg;
 10.3074 +            }
 10.3075 +      } else {
 10.3076 +            // add new NamedNode
 10.3077 +           //console.log('setNamedItem add new named node map (by index)');
 10.3078 +            Array.prototype.push.apply(this, [arg]);
 10.3079 +           //console.log('setNamedItem add new named node map (by name) %s %s', arg, arg.name);
 10.3080 +            this[arg.name] = arg;
 10.3081 +           //console.log('finsished setNamedItem add new named node map (by name) %s', arg.name);
 10.3082 +
 10.3083 +      }
 10.3084 +
 10.3085 +     //console.log('setNamedItem parentNode');
 10.3086 +      arg.ownerElement = this.parentNode;            // update ownerElement
 10.3087 +      // return old node or new node
 10.3088 +     //console.log('setNamedItem exit');
 10.3089 +      return ret;
 10.3090 +    },
 10.3091 +    removeNamedItem : function(name) {
 10.3092 +          var ret = null;
 10.3093 +          // test for exceptions
 10.3094 +          // throw Exception if NamedNodeMap is readonly
 10.3095 +          if (__ownerDocument__(this).implementation.errorChecking &&
 10.3096 +                (this._readonly || (this.parentNode && this.parentNode._readonly))) {
 10.3097 +              throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3098 +          }
 10.3099 +
 10.3100 +          // get item index
 10.3101 +          var itemIndex = __findNamedItemIndex__(this, name);
 10.3102 +
 10.3103 +          // throw Exception if there is no node named name in this map
 10.3104 +          if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
 10.3105 +            throw(new DOMException(DOMException.NOT_FOUND_ERR));
 10.3106 +          }
 10.3107 +
 10.3108 +          // get Node
 10.3109 +          var oldNode = this[itemIndex];
 10.3110 +          //this[oldNode.name] = undefined;
 10.3111 +
 10.3112 +          // throw Exception if Node is readonly
 10.3113 +          if (__ownerDocument__(this).implementation.errorChecking && oldNode._readonly) {
 10.3114 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3115 +          }
 10.3116 +
 10.3117 +          // return removed node
 10.3118 +          return __removeChild__(this, itemIndex);
 10.3119 +    },
 10.3120 +    getNamedItemNS : function(namespaceURI, localName) {
 10.3121 +        var ret = null;
 10.3122 +
 10.3123 +        // test that Named Node exists
 10.3124 +        var itemIndex = __findNamedItemNSIndex__(this, namespaceURI, localName);
 10.3125 +
 10.3126 +        if (itemIndex > -1) {
 10.3127 +            // found it! return NamedNode
 10.3128 +            ret = this[itemIndex];
 10.3129 +        }
 10.3130 +        // if node is not found, default value null is returned
 10.3131 +        return ret;
 10.3132 +    },
 10.3133 +    setNamedItemNS : function(arg) {
 10.3134 +        //console.log('setNamedItemNS %s', arg);
 10.3135 +        // test for exceptions
 10.3136 +        if (__ownerDocument__(this).implementation.errorChecking) {
 10.3137 +            // throw Exception if NamedNodeMap is readonly
 10.3138 +            if (this._readonly || (this.parentNode && this.parentNode._readonly)) {
 10.3139 +                throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3140 +            }
 10.3141 +
 10.3142 +            // throw Exception if arg was not created by this Document
 10.3143 +            if (__ownerDocument__(this) != __ownerDocument__(arg)) {
 10.3144 +                throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
 10.3145 +            }
 10.3146 +
 10.3147 +            // throw Exception if arg is already an attribute of another Element object
 10.3148 +            if (arg.ownerElement && (arg.ownerElement != this.parentNode)) {
 10.3149 +                throw(new DOMException(DOMException.INUSE_ATTRIBUTE_ERR));
 10.3150 +            }
 10.3151 +        }
 10.3152 +
 10.3153 +        // get item index
 10.3154 +        var itemIndex = __findNamedItemNSIndex__(this, arg.namespaceURI, arg.localName);
 10.3155 +        var ret = null;
 10.3156 +
 10.3157 +        if (itemIndex > -1) {
 10.3158 +            // found it!
 10.3159 +            // use existing Attribute
 10.3160 +            ret = this[itemIndex];
 10.3161 +            // throw Exception if Attr is readonly
 10.3162 +            if (__ownerDocument__(this).implementation.errorChecking && ret._readonly) {
 10.3163 +                throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3164 +            } else {
 10.3165 +                // over-write existing NamedNode
 10.3166 +                this[itemIndex] = arg;
 10.3167 +            }
 10.3168 +        }else {
 10.3169 +            // add new NamedNode
 10.3170 +            Array.prototype.push.apply(this, [arg]);
 10.3171 +        }
 10.3172 +        arg.ownerElement = this.parentNode;
 10.3173 +
 10.3174 +        // return old node or null
 10.3175 +        return ret;
 10.3176 +        //console.log('finished setNamedItemNS %s', arg);
 10.3177 +    },
 10.3178 +    removeNamedItemNS : function(namespaceURI, localName) {
 10.3179 +          var ret = null;
 10.3180 +
 10.3181 +          // test for exceptions
 10.3182 +          // throw Exception if NamedNodeMap is readonly
 10.3183 +          if (__ownerDocument__(this).implementation.errorChecking && (this._readonly || (this.parentNode && this.parentNode._readonly))) {
 10.3184 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3185 +          }
 10.3186 +
 10.3187 +          // get item index
 10.3188 +          var itemIndex = __findNamedItemNSIndex__(this, namespaceURI, localName);
 10.3189 +
 10.3190 +          // throw Exception if there is no matching node in this map
 10.3191 +          if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
 10.3192 +            throw(new DOMException(DOMException.NOT_FOUND_ERR));
 10.3193 +          }
 10.3194 +
 10.3195 +          // get Node
 10.3196 +          var oldNode = this[itemIndex];
 10.3197 +
 10.3198 +          // throw Exception if Node is readonly
 10.3199 +          if (__ownerDocument__(this).implementation.errorChecking && oldNode._readonly) {
 10.3200 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3201 +          }
 10.3202 +
 10.3203 +          return __removeChild__(this, itemIndex);             // return removed node
 10.3204 +    },
 10.3205 +    get xml() {
 10.3206 +          var ret = "";
 10.3207 +
 10.3208 +          // create string containing concatenation of all (but last) Attribute string values (separated by spaces)
 10.3209 +          for (var i=0; i < this.length -1; i++) {
 10.3210 +            ret += this[i].xml +" ";
 10.3211 +          }
 10.3212 +
 10.3213 +          // add last Attribute to string (without trailing space)
 10.3214 +          if (this.length > 0) {
 10.3215 +            ret += this[this.length -1].xml;
 10.3216 +          }
 10.3217 +
 10.3218 +          return ret;
 10.3219 +    },
 10.3220 +    toString : function(){
 10.3221 +        return "[object NamedNodeMap]";
 10.3222 +    }
 10.3223 +
 10.3224 +});
 10.3225 +
 10.3226 +/**
 10.3227 + * @method __findNamedItemIndex__
 10.3228 + *      find the item index of the node with the specified name
 10.3229 + *
 10.3230 + * @param  name : string - the name of the required node
 10.3231 + * @param  isnsmap : if its a NamespaceNodeMap
 10.3232 + * @return : int
 10.3233 + */
 10.3234 +var __findNamedItemIndex__ = function(namednodemap, name, isnsmap) {
 10.3235 +    var ret = -1;
 10.3236 +    // loop through all nodes
 10.3237 +    for (var i=0; i<namednodemap.length; i++) {
 10.3238 +        // compare name to each node's nodeName
 10.3239 +        if(namednodemap[i].localName && name && isnsmap){
 10.3240 +            if (namednodemap[i].localName.toLowerCase() == name.toLowerCase()) {
 10.3241 +                // found it!
 10.3242 +                ret = i;
 10.3243 +                break;
 10.3244 +            }
 10.3245 +        }else{
 10.3246 +            if(namednodemap[i].name && name){
 10.3247 +                if (namednodemap[i].name.toLowerCase() == name.toLowerCase()) {
 10.3248 +                    // found it!
 10.3249 +                    ret = i;
 10.3250 +                    break;
 10.3251 +                }
 10.3252 +            }
 10.3253 +        }
 10.3254 +    }
 10.3255 +    // if node is not found, default value -1 is returned
 10.3256 +    return ret;
 10.3257 +};
 10.3258 +
 10.3259 +/**
 10.3260 + * @method __findNamedItemNSIndex__
 10.3261 + *      find the item index of the node with the specified
 10.3262 + *      namespaceURI and localName
 10.3263 + *
 10.3264 + * @param  namespaceURI : string - the namespace URI of the required node
 10.3265 + * @param  localName    : string - the local name of the required node
 10.3266 + * @return : int
 10.3267 + */
 10.3268 +var __findNamedItemNSIndex__ = function(namednodemap, namespaceURI, localName) {
 10.3269 +    var ret = -1;
 10.3270 +    // test that localName is not null
 10.3271 +    if (localName) {
 10.3272 +        // loop through all nodes
 10.3273 +        for (var i=0; i<namednodemap.length; i++) {
 10.3274 +            if(namednodemap[i].namespaceURI && namednodemap[i].localName){
 10.3275 +                // compare name to each node's namespaceURI and localName
 10.3276 +                if ((namednodemap[i].namespaceURI.toLowerCase() == namespaceURI.toLowerCase()) &&
 10.3277 +                    (namednodemap[i].localName.toLowerCase() == localName.toLowerCase())) {
 10.3278 +                    // found it!
 10.3279 +                    ret = i;
 10.3280 +                    break;
 10.3281 +                }
 10.3282 +            }
 10.3283 +        }
 10.3284 +    }
 10.3285 +    // if node is not found, default value -1 is returned
 10.3286 +    return ret;
 10.3287 +};
 10.3288 +
 10.3289 +/**
 10.3290 + * @method __hasAttribute__
 10.3291 + *      Returns true if specified node exists
 10.3292 + *
 10.3293 + * @param  name : string - the name of the required node
 10.3294 + * @return : boolean
 10.3295 + */
 10.3296 +var __hasAttribute__ = function(namednodemap, name) {
 10.3297 +    var ret = false;
 10.3298 +    // test that Named Node exists
 10.3299 +    var itemIndex = __findNamedItemIndex__(namednodemap, name);
 10.3300 +        if (itemIndex > -1) {
 10.3301 +        // found it!
 10.3302 +        ret = true;
 10.3303 +    }
 10.3304 +    // if node is not found, default value false is returned
 10.3305 +    return ret;
 10.3306 +}
 10.3307 +
 10.3308 +/**
 10.3309 + * @method __hasAttributeNS__
 10.3310 + *      Returns true if specified node exists
 10.3311 + *
 10.3312 + * @param  namespaceURI : string - the namespace URI of the required node
 10.3313 + * @param  localName    : string - the local name of the required node
 10.3314 + * @return : boolean
 10.3315 + */
 10.3316 +var __hasAttributeNS__ = function(namednodemap, namespaceURI, localName) {
 10.3317 +    var ret = false;
 10.3318 +    // test that Named Node exists
 10.3319 +    var itemIndex = __findNamedItemNSIndex__(namednodemap, namespaceURI, localName);
 10.3320 +    if (itemIndex > -1) {
 10.3321 +        // found it!
 10.3322 +        ret = true;
 10.3323 +    }
 10.3324 +    // if node is not found, default value false is returned
 10.3325 +    return ret;
 10.3326 +}
 10.3327 +
 10.3328 +/**
 10.3329 + * @method __cloneNamedNodes__
 10.3330 + *      Returns a NamedNodeMap containing clones of the Nodes in this NamedNodeMap
 10.3331 + *
 10.3332 + * @param  parentNode : Node - the new parent of the cloned NodeList
 10.3333 + * @param  isnsmap : bool - is this a NamespaceNodeMap
 10.3334 + * @return NamedNodeMap containing clones of the Nodes in this NamedNodeMap
 10.3335 + */
 10.3336 +var __cloneNamedNodes__ = function(namednodemap, parentNode, isnsmap) {
 10.3337 +    var cloneNamedNodeMap = isnsmap?
 10.3338 +        new NamespaceNodeMap(namednodemap.ownerDocument, parentNode):
 10.3339 +        new NamedNodeMap(namednodemap.ownerDocument, parentNode);
 10.3340 +
 10.3341 +    // create list containing clones of all children
 10.3342 +    for (var i=0; i < namednodemap.length; i++) {
 10.3343 +        __appendChild__(cloneNamedNodeMap, namednodemap[i].cloneNode(false));
 10.3344 +    }
 10.3345 +
 10.3346 +    return cloneNamedNodeMap;
 10.3347 +};
 10.3348 +
 10.3349 +
 10.3350 +/**
 10.3351 + * @class  NamespaceNodeMap -
 10.3352 + *      used to represent collections of namespace nodes that can be
 10.3353 + *      accessed by name typically a set of Element attributes
 10.3354 + *
 10.3355 + * @extends NamedNodeMap
 10.3356 + *
 10.3357 + * @param  ownerDocument : Document - the ownerDocument
 10.3358 + * @param  parentNode    : Node - the node that the NamespaceNodeMap is attached to (or null)
 10.3359 + */
 10.3360 +var NamespaceNodeMap = function(ownerDocument, parentNode) {
 10.3361 +    this.NamedNodeMap = NamedNodeMap;
 10.3362 +    this.NamedNodeMap(ownerDocument, parentNode);
 10.3363 +    __setArray__(this, []);
 10.3364 +};
 10.3365 +NamespaceNodeMap.prototype = new NamedNodeMap();
 10.3366 +__extend__(NamespaceNodeMap.prototype, {
 10.3367 +    get xml() {
 10.3368 +        var ret = "",
 10.3369 +            ns,
 10.3370 +            ind;
 10.3371 +        // identify namespaces declared local to this Element (ie, not inherited)
 10.3372 +        for (ind = 0; ind < this.length; ind++) {
 10.3373 +            // if namespace declaration does not exist in the containing node's, parentNode's namespaces
 10.3374 +            ns = null;
 10.3375 +            try {
 10.3376 +                var ns = this.parentNode.parentNode._namespaces.
 10.3377 +                    getNamedItem(this[ind].localName);
 10.3378 +            }catch (e) {
 10.3379 +                //breaking to prevent default namespace being inserted into return value
 10.3380 +                break;
 10.3381 +            }
 10.3382 +            if (!(ns && (""+ ns.nodeValue == ""+ this[ind].nodeValue))) {
 10.3383 +                // display the namespace declaration
 10.3384 +                ret += this[ind].xml +" ";
 10.3385 +            }
 10.3386 +        }
 10.3387 +        return ret;
 10.3388 +    }
 10.3389 +});
 10.3390 +
 10.3391 +/**
 10.3392 + * @class  Namespace -
 10.3393 + *      The Namespace interface represents an namespace in an Element object
 10.3394 + *
 10.3395 + * @param  ownerDocument : The Document object associated with this node.
 10.3396 + */
 10.3397 +Namespace = function(ownerDocument) {
 10.3398 +    Node.apply(this, arguments);
 10.3399 +    // the name of this attribute
 10.3400 +    this.name      = "";
 10.3401 +
 10.3402 +    // If this attribute was explicitly given a value in the original document,
 10.3403 +    // this is true; otherwise, it is false.
 10.3404 +    // Note that the implementation is in charge of this attribute, not the user.
 10.3405 +    // If the user changes the value of the attribute (even if it ends up having
 10.3406 +    // the same value as the default value) then the specified flag is
 10.3407 +    // automatically flipped to true
 10.3408 +    this.specified = false;
 10.3409 +};
 10.3410 +Namespace.prototype = new Node();
 10.3411 +__extend__(Namespace.prototype, {
 10.3412 +    get value(){
 10.3413 +        // the value of the attribute is returned as a string
 10.3414 +        return this.nodeValue;
 10.3415 +    },
 10.3416 +    set value(value){
 10.3417 +        this.nodeValue = value+'';
 10.3418 +    },
 10.3419 +    get nodeType(){
 10.3420 +        return Node.NAMESPACE_NODE;
 10.3421 +    },
 10.3422 +    get xml(){
 10.3423 +        var ret = "";
 10.3424 +
 10.3425 +          // serialize Namespace Declaration
 10.3426 +          if (this.nodeName != "") {
 10.3427 +            ret += this.nodeName +"=\""+ __escapeXML__(this.nodeValue) +"\"";
 10.3428 +          }
 10.3429 +          else {  // handle default namespace
 10.3430 +            ret += "xmlns=\""+ __escapeXML__(this.nodeValue) +"\"";
 10.3431 +          }
 10.3432 +
 10.3433 +          return ret;
 10.3434 +    },
 10.3435 +    toString: function(){
 10.3436 +        return '[object Namespace]';
 10.3437 +    }
 10.3438 +});
 10.3439 +
 10.3440 +
 10.3441 +/**
 10.3442 + * @class  CharacterData - parent abstract class for Text and Comment
 10.3443 + * @extends Node
 10.3444 + * @param  ownerDocument : The Document object associated with this node.
 10.3445 + */
 10.3446 +CharacterData = function(ownerDocument) {
 10.3447 +    Node.apply(this, arguments);
 10.3448 +};
 10.3449 +CharacterData.prototype = new Node();
 10.3450 +__extend__(CharacterData.prototype,{
 10.3451 +    get data(){
 10.3452 +        return this.nodeValue;
 10.3453 +    },
 10.3454 +    set data(data){
 10.3455 +        this.nodeValue = data;
 10.3456 +    },
 10.3457 +    get textContent(){
 10.3458 +        return this.nodeValue;
 10.3459 +    },
 10.3460 +    set textContent(newText){
 10.3461 +        this.nodeValue = newText;
 10.3462 +    },
 10.3463 +    get length(){return this.nodeValue.length;},
 10.3464 +    appendData: function(arg){
 10.3465 +        // throw Exception if CharacterData is readonly
 10.3466 +        if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
 10.3467 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3468 +        }
 10.3469 +        // append data
 10.3470 +        this.data = "" + this.data + arg;
 10.3471 +    },
 10.3472 +    deleteData: function(offset, count){
 10.3473 +        // throw Exception if CharacterData is readonly
 10.3474 +        if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
 10.3475 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3476 +        }
 10.3477 +        if (this.data) {
 10.3478 +            // throw Exception if offset is negative or greater than the data length,
 10.3479 +            if (__ownerDocument__(this).implementation.errorChecking &&
 10.3480 +                ((offset < 0) || (offset >  this.data.length) || (count < 0))) {
 10.3481 +                throw(new DOMException(DOMException.INDEX_SIZE_ERR));
 10.3482 +            }
 10.3483 +
 10.3484 +            // delete data
 10.3485 +            if(!count || (offset + count) > this.data.length) {
 10.3486 +              this.data = this.data.substring(0, offset);
 10.3487 +            }else {
 10.3488 +              this.data = this.data.substring(0, offset).
 10.3489 +                concat(this.data.substring(offset + count));
 10.3490 +            }
 10.3491 +        }
 10.3492 +    },
 10.3493 +    insertData: function(offset, arg){
 10.3494 +        // throw Exception if CharacterData is readonly
 10.3495 +        if(__ownerDocument__(this).implementation.errorChecking && this._readonly){
 10.3496 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3497 +        }
 10.3498 +
 10.3499 +        if(this.data){
 10.3500 +            // throw Exception if offset is negative or greater than the data length,
 10.3501 +            if (__ownerDocument__(this).implementation.errorChecking &&
 10.3502 +                ((offset < 0) || (offset >  this.data.length))) {
 10.3503 +                throw(new DOMException(DOMException.INDEX_SIZE_ERR));
 10.3504 +            }
 10.3505 +
 10.3506 +            // insert data
 10.3507 +            this.data =  this.data.substring(0, offset).concat(arg, this.data.substring(offset));
 10.3508 +        }else {
 10.3509 +            // throw Exception if offset is negative or greater than the data length,
 10.3510 +            if (__ownerDocument__(this).implementation.errorChecking && (offset !== 0)) {
 10.3511 +               throw(new DOMException(DOMException.INDEX_SIZE_ERR));
 10.3512 +            }
 10.3513 +
 10.3514 +            // set data
 10.3515 +            this.data = arg;
 10.3516 +        }
 10.3517 +    },
 10.3518 +    replaceData: function(offset, count, arg){
 10.3519 +        // throw Exception if CharacterData is readonly
 10.3520 +        if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
 10.3521 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3522 +        }
 10.3523 +
 10.3524 +        if (this.data) {
 10.3525 +            // throw Exception if offset is negative or greater than the data length,
 10.3526 +            if (__ownerDocument__(this).implementation.errorChecking &&
 10.3527 +                ((offset < 0) || (offset >  this.data.length) || (count < 0))) {
 10.3528 +                throw(new DOMException(DOMException.INDEX_SIZE_ERR));
 10.3529 +            }
 10.3530 +
 10.3531 +            // replace data
 10.3532 +            this.data = this.data.substring(0, offset).
 10.3533 +                concat(arg, this.data.substring(offset + count));
 10.3534 +        }else {
 10.3535 +            // set data
 10.3536 +            this.data = arg;
 10.3537 +        }
 10.3538 +    },
 10.3539 +    substringData: function(offset, count){
 10.3540 +        var ret = null;
 10.3541 +        if (this.data) {
 10.3542 +            // throw Exception if offset is negative or greater than the data length,
 10.3543 +            // or the count is negative
 10.3544 +            if (__ownerDocument__(this).implementation.errorChecking &&
 10.3545 +                ((offset < 0) || (offset > this.data.length) || (count < 0))) {
 10.3546 +                throw(new DOMException(DOMException.INDEX_SIZE_ERR));
 10.3547 +            }
 10.3548 +            // if count is not specified
 10.3549 +            if (!count) {
 10.3550 +                ret = this.data.substring(offset); // default to 'end of string'
 10.3551 +            }else{
 10.3552 +                ret = this.data.substring(offset, offset + count);
 10.3553 +            }
 10.3554 +        }
 10.3555 +        return ret;
 10.3556 +    },
 10.3557 +    toString : function(){
 10.3558 +        return "[object CharacterData]";
 10.3559 +    }
 10.3560 +});
 10.3561 +
 10.3562 +/**
 10.3563 + * @class  Text
 10.3564 + *      The Text interface represents the textual content (termed
 10.3565 + *      character data in XML) of an Element or Attr.
 10.3566 + *      If there is no markup inside an element's content, the text is
 10.3567 + *      contained in a single object implementing the Text interface that
 10.3568 + *      is the only child of the element. If there is markup, it is
 10.3569 + *      parsed into a list of elements and Text nodes that form the
 10.3570 + *      list of children of the element.
 10.3571 + * @extends CharacterData
 10.3572 + * @param  ownerDocument The Document object associated with this node.
 10.3573 + */
 10.3574 +Text = function(ownerDocument) {
 10.3575 +    CharacterData.apply(this, arguments);
 10.3576 +    this.nodeName  = "#text";
 10.3577 +};
 10.3578 +Text.prototype = new CharacterData();
 10.3579 +__extend__(Text.prototype,{
 10.3580 +    get localName(){
 10.3581 +        return null;
 10.3582 +    },
 10.3583 +    // Breaks this Text node into two Text nodes at the specified offset,
 10.3584 +    // keeping both in the tree as siblings. This node then only contains
 10.3585 +    // all the content up to the offset point.  And a new Text node, which
 10.3586 +    // is inserted as the next sibling of this node, contains all the
 10.3587 +    // content at and after the offset point.
 10.3588 +    splitText : function(offset) {
 10.3589 +        var data,
 10.3590 +            inode;
 10.3591 +        // test for exceptions
 10.3592 +        if (__ownerDocument__(this).implementation.errorChecking) {
 10.3593 +            // throw Exception if Node is readonly
 10.3594 +            if (this._readonly) {
 10.3595 +              throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3596 +            }
 10.3597 +            // throw Exception if offset is negative or greater than the data length,
 10.3598 +            if ((offset < 0) || (offset > this.data.length)) {
 10.3599 +              throw(new DOMException(DOMException.INDEX_SIZE_ERR));
 10.3600 +            }
 10.3601 +        }
 10.3602 +        if (this.parentNode) {
 10.3603 +            // get remaining string (after offset)
 10.3604 +            data  = this.substringData(offset);
 10.3605 +            // create new TextNode with remaining string
 10.3606 +            inode = __ownerDocument__(this).createTextNode(data);
 10.3607 +            // attach new TextNode
 10.3608 +            if (this.nextSibling) {
 10.3609 +              this.parentNode.insertBefore(inode, this.nextSibling);
 10.3610 +            } else {
 10.3611 +              this.parentNode.appendChild(inode);
 10.3612 +            }
 10.3613 +            // remove remaining string from original TextNode
 10.3614 +            this.deleteData(offset);
 10.3615 +        }
 10.3616 +        return inode;
 10.3617 +    },
 10.3618 +    get nodeType(){
 10.3619 +        return Node.TEXT_NODE;
 10.3620 +    },
 10.3621 +    get xml(){
 10.3622 +        return __escapeXML__(""+ this.nodeValue);
 10.3623 +    },
 10.3624 +    toString: function(){
 10.3625 +        return "[object Text]";
 10.3626 +    }
 10.3627 +});
 10.3628 +
 10.3629 +/**
 10.3630 + * @class CDATASection 
 10.3631 + *      CDATA sections are used to escape blocks of text containing 
 10.3632 + *      characters that would otherwise be regarded as markup.
 10.3633 + *      The only delimiter that is recognized in a CDATA section is 
 10.3634 + *      the "\]\]\>" string that ends the CDATA section
 10.3635 + * @extends Text
 10.3636 + * @param  ownerDocument : The Document object associated with this node.
 10.3637 + */
 10.3638 +CDATASection = function(ownerDocument) {
 10.3639 +    Text.apply(this, arguments);
 10.3640 +    this.nodeName = '#cdata-section';
 10.3641 +};
 10.3642 +CDATASection.prototype = new Text();
 10.3643 +__extend__(CDATASection.prototype,{
 10.3644 +    get nodeType(){
 10.3645 +        return Node.CDATA_SECTION_NODE;
 10.3646 +    },
 10.3647 +    get xml(){
 10.3648 +        return "<![CDATA[" + this.nodeValue + "]]>";
 10.3649 +    },
 10.3650 +    toString : function(){
 10.3651 +        return "[object CDATASection]";
 10.3652 +    }
 10.3653 +});
 10.3654 +/**
 10.3655 + * @class  Comment
 10.3656 + *      This represents the content of a comment, i.e., all the
 10.3657 + *      characters between the starting '<!--' and ending '-->'
 10.3658 + * @extends CharacterData
 10.3659 + * @param  ownerDocument :  The Document object associated with this node.
 10.3660 + */
 10.3661 +Comment = function(ownerDocument) {
 10.3662 +    CharacterData.apply(this, arguments);
 10.3663 +    this.nodeName  = "#comment";
 10.3664 +};
 10.3665 +Comment.prototype = new CharacterData();
 10.3666 +__extend__(Comment.prototype, {
 10.3667 +    get localName(){
 10.3668 +        return null;
 10.3669 +    },
 10.3670 +    get nodeType(){
 10.3671 +        return Node.COMMENT_NODE;
 10.3672 +    },
 10.3673 +    get xml(){
 10.3674 +        return "<!--" + this.nodeValue + "-->";
 10.3675 +    },
 10.3676 +    toString : function(){
 10.3677 +        return "[object Comment]";
 10.3678 +    }
 10.3679 +});
 10.3680 +
 10.3681 +
 10.3682 +/**
 10.3683 + * @author envjs team
 10.3684 + * @param {Document} onwnerDocument
 10.3685 + */
 10.3686 +DocumentType = function(ownerDocument) {
 10.3687 +    Node.apply(this, arguments);
 10.3688 +    this.systemId = null;
 10.3689 +    this.publicId = null;
 10.3690 +};
 10.3691 +DocumentType.prototype = new Node();
 10.3692 +__extend__({
 10.3693 +    get name(){
 10.3694 +        return this.nodeName;
 10.3695 +    },
 10.3696 +    get entities(){
 10.3697 +        return null;
 10.3698 +    },
 10.3699 +    get internalSubsets(){
 10.3700 +        return null;
 10.3701 +    },
 10.3702 +    get notations(){
 10.3703 +        return null;
 10.3704 +    },
 10.3705 +    toString : function(){
 10.3706 +        return "[object DocumentType]";
 10.3707 +    }
 10.3708 +});
 10.3709 +
 10.3710 +/**
 10.3711 + * @class  Attr
 10.3712 + *      The Attr interface represents an attribute in an Element object
 10.3713 + * @extends Node
 10.3714 + * @param  ownerDocument : The Document object associated with this node.
 10.3715 + */
 10.3716 +Attr = function(ownerDocument) {
 10.3717 +    Node.apply(this, arguments);
 10.3718 +    // set when Attr is added to NamedNodeMap
 10.3719 +    this.ownerElement = null;
 10.3720 +    //TODO: our implementation of Attr is incorrect because we don't
 10.3721 +    //      treat the value of the attribute as a child text node.
 10.3722 +};
 10.3723 +Attr.prototype = new Node();
 10.3724 +__extend__(Attr.prototype, {
 10.3725 +    // the name of this attribute
 10.3726 +    get name(){
 10.3727 +        return this.nodeName;
 10.3728 +    },
 10.3729 +    // the value of the attribute is returned as a string
 10.3730 +    get value(){
 10.3731 +        return this.nodeValue||'';
 10.3732 +    },
 10.3733 +    set value(value){
 10.3734 +        // throw Exception if Attribute is readonly
 10.3735 +        if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
 10.3736 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3737 +        }
 10.3738 +        // delegate to node
 10.3739 +        this.nodeValue = value;
 10.3740 +    },
 10.3741 +    get textContent(){
 10.3742 +        return this.nodeValue;
 10.3743 +    },
 10.3744 +    set textContent(newText){
 10.3745 +        this.nodeValue = newText;
 10.3746 +    },
 10.3747 +    get specified(){
 10.3748 +        return (this !== null && this !== undefined);
 10.3749 +    },
 10.3750 +    get nodeType(){
 10.3751 +        return Node.ATTRIBUTE_NODE;
 10.3752 +    },
 10.3753 +    get xml() {
 10.3754 +        if (this.nodeValue) {
 10.3755 +            return  __escapeXML__(this.nodeValue+"");
 10.3756 +        } else {
 10.3757 +            return '';
 10.3758 +        }
 10.3759 +    },
 10.3760 +    toString : function() {
 10.3761 +        return '[object Attr]';
 10.3762 +    }
 10.3763 +});
 10.3764 +
 10.3765 +
 10.3766 +/**
 10.3767 + * @class  Element -
 10.3768 + *      By far the vast majority of objects (apart from text)
 10.3769 + *      that authors encounter when traversing a document are
 10.3770 + *      Element nodes.
 10.3771 + * @extends Node
 10.3772 + * @param  ownerDocument : The Document object associated with this node.
 10.3773 + */
 10.3774 +Element = function(ownerDocument) {
 10.3775 +    Node.apply(this, arguments);
 10.3776 +    this.attributes = new NamedNodeMap(this.ownerDocument, this);
 10.3777 +};
 10.3778 +Element.prototype = new Node();
 10.3779 +__extend__(Element.prototype, {
 10.3780 +    // The name of the element.
 10.3781 +    get tagName(){
 10.3782 +        return this.nodeName;
 10.3783 +    },
 10.3784 +
 10.3785 +    getAttribute: function(name) {
 10.3786 +        var ret = null;
 10.3787 +        // if attribute exists, use it
 10.3788 +        var attr = this.attributes.getNamedItem(name);
 10.3789 +        if (attr) {
 10.3790 +            ret = attr.value;
 10.3791 +        }
 10.3792 +        // if Attribute exists, return its value, otherwise, return null
 10.3793 +        return ret;
 10.3794 +    },
 10.3795 +    setAttribute : function (name, value) {
 10.3796 +        // if attribute exists, use it
 10.3797 +        var attr = this.attributes.getNamedItem(name);
 10.3798 +       //console.log('attr %s', attr);
 10.3799 +        //I had to add this check because as the script initializes
 10.3800 +        //the id may be set in the constructor, and the html element
 10.3801 +        //overrides the id property with a getter/setter.
 10.3802 +        if(__ownerDocument__(this)){
 10.3803 +            if (attr===null||attr===undefined) {
 10.3804 +                // otherwise create it
 10.3805 +                attr = __ownerDocument__(this).createAttribute(name);
 10.3806 +               //console.log('attr %s', attr);
 10.3807 +            }
 10.3808 +
 10.3809 +
 10.3810 +            // test for exceptions
 10.3811 +            if (__ownerDocument__(this).implementation.errorChecking) {
 10.3812 +                // throw Exception if Attribute is readonly
 10.3813 +                if (attr._readonly) {
 10.3814 +                    throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3815 +                }
 10.3816 +
 10.3817 +                // throw Exception if the value string contains an illegal character
 10.3818 +                if (!__isValidString__(value+'')) {
 10.3819 +                    throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
 10.3820 +                }
 10.3821 +            }
 10.3822 +
 10.3823 +            // assign values to properties (and aliases)
 10.3824 +            attr.value     = value + '';
 10.3825 +
 10.3826 +            // add/replace Attribute in NamedNodeMap
 10.3827 +            this.attributes.setNamedItem(attr);
 10.3828 +           //console.log('element setNamedItem %s', attr);
 10.3829 +        }else{
 10.3830 +           console.warn('Element has no owner document '+this.tagName+
 10.3831 +                '\n\t cant set attribute ' + name + ' = '+value );
 10.3832 +        }
 10.3833 +    },
 10.3834 +    removeAttribute : function removeAttribute(name) {
 10.3835 +        // delegate to NamedNodeMap.removeNamedItem
 10.3836 +        return this.attributes.removeNamedItem(name);
 10.3837 +    },
 10.3838 +    getAttributeNode : function getAttributeNode(name) {
 10.3839 +        // delegate to NamedNodeMap.getNamedItem
 10.3840 +        return this.attributes.getNamedItem(name);
 10.3841 +    },
 10.3842 +    setAttributeNode: function(newAttr) {
 10.3843 +        // if this Attribute is an ID
 10.3844 +        if (__isIdDeclaration__(newAttr.name)) {
 10.3845 +            this.id = newAttr.value;  // cache ID for getElementById()
 10.3846 +        }
 10.3847 +        // delegate to NamedNodeMap.setNamedItem
 10.3848 +        return this.attributes.setNamedItem(newAttr);
 10.3849 +    },
 10.3850 +    removeAttributeNode: function(oldAttr) {
 10.3851 +      // throw Exception if Attribute is readonly
 10.3852 +      if (__ownerDocument__(this).implementation.errorChecking && oldAttr._readonly) {
 10.3853 +        throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3854 +      }
 10.3855 +
 10.3856 +      // get item index
 10.3857 +      var itemIndex = this.attributes._findItemIndex(oldAttr._id);
 10.3858 +
 10.3859 +      // throw Exception if node does not exist in this map
 10.3860 +      if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
 10.3861 +        throw(new DOMException(DOMException.NOT_FOUND_ERR));
 10.3862 +      }
 10.3863 +
 10.3864 +      return this.attributes._removeChild(itemIndex);
 10.3865 +    },
 10.3866 +    getAttributeNS : function(namespaceURI, localName) {
 10.3867 +        var ret = "";
 10.3868 +        // delegate to NAmedNodeMap.getNamedItemNS
 10.3869 +        var attr = this.attributes.getNamedItemNS(namespaceURI, localName);
 10.3870 +        if (attr) {
 10.3871 +            ret = attr.value;
 10.3872 +        }
 10.3873 +        return ret;  // if Attribute exists, return its value, otherwise return ""
 10.3874 +    },
 10.3875 +    setAttributeNS : function(namespaceURI, qualifiedName, value) {
 10.3876 +        // call NamedNodeMap.getNamedItem
 10.3877 +        //console.log('setAttributeNS %s %s %s', namespaceURI, qualifiedName, value);
 10.3878 +        var attr = this.attributes.getNamedItem(namespaceURI, qualifiedName);
 10.3879 +
 10.3880 +        if (!attr) {  // if Attribute exists, use it
 10.3881 +            // otherwise create it
 10.3882 +            attr = __ownerDocument__(this).createAttributeNS(namespaceURI, qualifiedName);
 10.3883 +        }
 10.3884 +
 10.3885 +        value = '' + value;
 10.3886 +
 10.3887 +        // test for exceptions
 10.3888 +        if (__ownerDocument__(this).implementation.errorChecking) {
 10.3889 +            // throw Exception if Attribute is readonly
 10.3890 +            if (attr._readonly) {
 10.3891 +                throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.3892 +            }
 10.3893 +
 10.3894 +            // throw Exception if the Namespace is invalid
 10.3895 +            if (!__isValidNamespace__(this.ownerDocument, namespaceURI, qualifiedName, true)) {
 10.3896 +                throw(new DOMException(DOMException.NAMESPACE_ERR));
 10.3897 +            }
 10.3898 +
 10.3899 +            // throw Exception if the value string contains an illegal character
 10.3900 +            if (!__isValidString__(value)) {
 10.3901 +                throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
 10.3902 +            }
 10.3903 +        }
 10.3904 +
 10.3905 +        // if this Attribute is an ID
 10.3906 +        //if (__isIdDeclaration__(name)) {
 10.3907 +        //    this.id = value;
 10.3908 +        //}
 10.3909 +
 10.3910 +        // assign values to properties (and aliases)
 10.3911 +        attr.value     = value;
 10.3912 +        attr.nodeValue = value;
 10.3913 +
 10.3914 +        // delegate to NamedNodeMap.setNamedItem
 10.3915 +        this.attributes.setNamedItemNS(attr);
 10.3916 +    },
 10.3917 +    removeAttributeNS : function(namespaceURI, localName) {
 10.3918 +        // delegate to NamedNodeMap.removeNamedItemNS
 10.3919 +        return this.attributes.removeNamedItemNS(namespaceURI, localName);
 10.3920 +    },
 10.3921 +    getAttributeNodeNS : function(namespaceURI, localName) {
 10.3922 +        // delegate to NamedNodeMap.getNamedItemNS
 10.3923 +        return this.attributes.getNamedItemNS(namespaceURI, localName);
 10.3924 +    },
 10.3925 +    setAttributeNodeNS : function(newAttr) {
 10.3926 +        // if this Attribute is an ID
 10.3927 +        if ((newAttr.prefix == "") &&  __isIdDeclaration__(newAttr.name)) {
 10.3928 +            this.id = newAttr.value+'';  // cache ID for getElementById()
 10.3929 +        }
 10.3930 +
 10.3931 +        // delegate to NamedNodeMap.setNamedItemNS
 10.3932 +        return this.attributes.setNamedItemNS(newAttr);
 10.3933 +    },
 10.3934 +    hasAttribute : function(name) {
 10.3935 +        // delegate to NamedNodeMap._hasAttribute
 10.3936 +        return __hasAttribute__(this.attributes,name);
 10.3937 +    },
 10.3938 +    hasAttributeNS : function(namespaceURI, localName) {
 10.3939 +        // delegate to NamedNodeMap._hasAttributeNS
 10.3940 +        return __hasAttributeNS__(this.attributes, namespaceURI, localName);
 10.3941 +    },
 10.3942 +    get nodeType(){
 10.3943 +        return Node.ELEMENT_NODE;
 10.3944 +    },
 10.3945 +    get xml() {
 10.3946 +        var ret = "",
 10.3947 +            ns = "",
 10.3948 +            attrs,
 10.3949 +            attrstring,
 10.3950 +            i;
 10.3951 +
 10.3952 +        // serialize namespace declarations
 10.3953 +        if (this.namespaceURI ){
 10.3954 +            if((this === this.ownerDocument.documentElement) ||
 10.3955 +               (!this.parentNode)||
 10.3956 +               (this.parentNode && (this.parentNode.namespaceURI !== this.namespaceURI))) {
 10.3957 +                ns = ' xmlns' + (this.prefix?(':'+this.prefix):'') +
 10.3958 +                    '="' + this.namespaceURI + '"';
 10.3959 +            }
 10.3960 +        }
 10.3961 +
 10.3962 +        // serialize Attribute declarations
 10.3963 +        attrs = this.attributes;
 10.3964 +        attrstring = "";
 10.3965 +        for(i=0;i< attrs.length;i++){
 10.3966 +            if(attrs[i].name.match('xmlns:')) {
 10.3967 +                attrstring += " "+attrs[i].name+'="'+attrs[i].xml+'"';
 10.3968 +            }
 10.3969 +        }
 10.3970 +        for(i=0;i< attrs.length;i++){
 10.3971 +            if(!attrs[i].name.match('xmlns:')) {
 10.3972 +                attrstring += " "+attrs[i].name+'="'+attrs[i].xml+'"';
 10.3973 +            }
 10.3974 +        }
 10.3975 +
 10.3976 +        if(this.hasChildNodes()){
 10.3977 +            // serialize this Element
 10.3978 +            ret += "<" + this.tagName + ns + attrstring +">";
 10.3979 +            ret += this.childNodes.xml;
 10.3980 +            ret += "</" + this.tagName + ">";
 10.3981 +        }else{
 10.3982 +            ret += "<" + this.tagName + ns + attrstring +"/>";
 10.3983 +        }
 10.3984 +
 10.3985 +        return ret;
 10.3986 +    },
 10.3987 +    toString : function(){
 10.3988 +        return '[object Element]';
 10.3989 +    }
 10.3990 +});
 10.3991 +/**
 10.3992 + * @class  DOMException - raised when an operation is impossible to perform
 10.3993 + * @author Jon van Noort (jon@webarcana.com.au)
 10.3994 + * @param  code : int - the exception code (one of the DOMException constants)
 10.3995 + */
 10.3996 +DOMException = function(code) {
 10.3997 +    this.code = code;
 10.3998 +};
 10.3999 +
 10.4000 +// DOMException constants
 10.4001 +// Introduced in DOM Level 1:
 10.4002 +DOMException.INDEX_SIZE_ERR                 = 1;
 10.4003 +DOMException.DOMSTRING_SIZE_ERR             = 2;
 10.4004 +DOMException.HIERARCHY_REQUEST_ERR          = 3;
 10.4005 +DOMException.WRONG_DOCUMENT_ERR             = 4;
 10.4006 +DOMException.INVALID_CHARACTER_ERR          = 5;
 10.4007 +DOMException.NO_DATA_ALLOWED_ERR            = 6;
 10.4008 +DOMException.NO_MODIFICATION_ALLOWED_ERR    = 7;
 10.4009 +DOMException.NOT_FOUND_ERR                  = 8;
 10.4010 +DOMException.NOT_SUPPORTED_ERR              = 9;
 10.4011 +DOMException.INUSE_ATTRIBUTE_ERR            = 10;
 10.4012 +
 10.4013 +// Introduced in DOM Level 2:
 10.4014 +DOMException.INVALID_STATE_ERR              = 11;
 10.4015 +DOMException.SYNTAX_ERR                     = 12;
 10.4016 +DOMException.INVALID_MODIFICATION_ERR       = 13;
 10.4017 +DOMException.NAMESPACE_ERR                  = 14;
 10.4018 +DOMException.INVALID_ACCESS_ERR             = 15;
 10.4019 +
 10.4020 +/**
 10.4021 + * @class  DocumentFragment -
 10.4022 + *      DocumentFragment is a "lightweight" or "minimal" Document object.
 10.4023 + * @extends Node
 10.4024 + * @param  ownerDocument :  The Document object associated with this node.
 10.4025 + */
 10.4026 +DocumentFragment = function(ownerDocument) {
 10.4027 +    Node.apply(this, arguments);
 10.4028 +    this.nodeName  = "#document-fragment";
 10.4029 +};
 10.4030 +DocumentFragment.prototype = new Node();
 10.4031 +__extend__(DocumentFragment.prototype,{
 10.4032 +    get nodeType(){
 10.4033 +        return Node.DOCUMENT_FRAGMENT_NODE;
 10.4034 +    },
 10.4035 +    get xml(){
 10.4036 +        var xml = "",
 10.4037 +        count = this.childNodes.length;
 10.4038 +
 10.4039 +        // create string concatenating the serialized ChildNodes
 10.4040 +        for (var i = 0; i < count; i++) {
 10.4041 +            xml += this.childNodes.item(i).xml;
 10.4042 +        }
 10.4043 +
 10.4044 +        return xml;
 10.4045 +    },
 10.4046 +    toString : function(){
 10.4047 +        return "[object DocumentFragment]";
 10.4048 +    },
 10.4049 +    get localName(){
 10.4050 +        return null;
 10.4051 +    }
 10.4052 +});
 10.4053 +
 10.4054 +
 10.4055 +/**
 10.4056 + * @class  ProcessingInstruction -
 10.4057 + *      The ProcessingInstruction interface represents a
 10.4058 + *      "processing instruction", used in XML as a way to
 10.4059 + *      keep processor-specific information in the text of
 10.4060 + *      the document
 10.4061 + * @extends Node
 10.4062 + * @author Jon van Noort (jon@webarcana.com.au)
 10.4063 + * @param  ownerDocument :  The Document object associated with this node.
 10.4064 + */
 10.4065 +ProcessingInstruction = function(ownerDocument) {
 10.4066 +    Node.apply(this, arguments);
 10.4067 +};
 10.4068 +ProcessingInstruction.prototype = new Node();
 10.4069 +__extend__(ProcessingInstruction.prototype, {
 10.4070 +    get data(){
 10.4071 +        return this.nodeValue;
 10.4072 +    },
 10.4073 +    set data(data){
 10.4074 +        // throw Exception if Node is readonly
 10.4075 +        if (__ownerDocument__(this).errorChecking && this._readonly) {
 10.4076 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
 10.4077 +        }
 10.4078 +        this.nodeValue = data;
 10.4079 +    },
 10.4080 +    get textContent(){
 10.4081 +        return this.data;
 10.4082 +    },
 10.4083 +    get localName(){
 10.4084 +        return null;
 10.4085 +    },
 10.4086 +    get target(){
 10.4087 +      // The target of this processing instruction.
 10.4088 +      // XML defines this as being the first token following the markup that begins the processing instruction.
 10.4089 +      // The content of this processing instruction.
 10.4090 +        return this.nodeName;
 10.4091 +    },
 10.4092 +    set target(value){
 10.4093 +      // The target of this processing instruction.
 10.4094 +      // XML defines this as being the first token following the markup that begins the processing instruction.
 10.4095 +      // The content of this processing instruction.
 10.4096 +        this.nodeName = value;
 10.4097 +    },
 10.4098 +    get nodeType(){
 10.4099 +        return Node.PROCESSING_INSTRUCTION_NODE;
 10.4100 +    },
 10.4101 +    get xml(){
 10.4102 +        return "<?" + this.nodeName +" "+ this.nodeValue + "?>";
 10.4103 +    },
 10.4104 +    toString : function(){
 10.4105 +        return "[object ProcessingInstruction]";
 10.4106 +    }
 10.4107 +});
 10.4108 +
 10.4109 +
 10.4110 +/**
 10.4111 + * @author envjs team
 10.4112 + */
 10.4113 +
 10.4114 +Entity = function() {
 10.4115 +    throw new Error("Entity Not Implemented" );
 10.4116 +};
 10.4117 +
 10.4118 +Entity.constants = {
 10.4119 +        // content taken from W3C "HTML 4.01 Specification"
 10.4120 +        //                        "W3C Recommendation 24 December 1999"
 10.4121 +
 10.4122 +    nbsp: "\u00A0",
 10.4123 +    iexcl: "\u00A1",
 10.4124 +    cent: "\u00A2",
 10.4125 +    pound: "\u00A3",
 10.4126 +    curren: "\u00A4",
 10.4127 +    yen: "\u00A5",
 10.4128 +    brvbar: "\u00A6",
 10.4129 +    sect: "\u00A7",
 10.4130 +    uml: "\u00A8",
 10.4131 +    copy: "\u00A9",
 10.4132 +    ordf: "\u00AA",
 10.4133 +    laquo: "\u00AB",
 10.4134 +    not: "\u00AC",
 10.4135 +    shy: "\u00AD",
 10.4136 +    reg: "\u00AE",
 10.4137 +    macr: "\u00AF",
 10.4138 +    deg: "\u00B0",
 10.4139 +    plusmn: "\u00B1",
 10.4140 +    sup2: "\u00B2",
 10.4141 +    sup3: "\u00B3",
 10.4142 +    acute: "\u00B4",
 10.4143 +    micro: "\u00B5",
 10.4144 +    para: "\u00B6",
 10.4145 +    middot: "\u00B7",
 10.4146 +    cedil: "\u00B8",
 10.4147 +    sup1: "\u00B9",
 10.4148 +    ordm: "\u00BA",
 10.4149 +    raquo: "\u00BB",
 10.4150 +    frac14: "\u00BC",
 10.4151 +    frac12: "\u00BD",
 10.4152 +    frac34: "\u00BE",
 10.4153 +    iquest: "\u00BF",
 10.4154 +    Agrave: "\u00C0",
 10.4155 +    Aacute: "\u00C1",
 10.4156 +    Acirc: "\u00C2",
 10.4157 +    Atilde: "\u00C3",
 10.4158 +    Auml: "\u00C4",
 10.4159 +    Aring: "\u00C5",
 10.4160 +    AElig: "\u00C6",
 10.4161 +    Ccedil: "\u00C7",
 10.4162 +    Egrave: "\u00C8",
 10.4163 +    Eacute: "\u00C9",
 10.4164 +    Ecirc: "\u00CA",
 10.4165 +    Euml: "\u00CB",
 10.4166 +    Igrave: "\u00CC",
 10.4167 +    Iacute: "\u00CD",
 10.4168 +    Icirc: "\u00CE",
 10.4169 +    Iuml: "\u00CF",
 10.4170 +    ETH: "\u00D0",
 10.4171 +    Ntilde: "\u00D1",
 10.4172 +    Ograve: "\u00D2",
 10.4173 +    Oacute: "\u00D3",
 10.4174 +    Ocirc: "\u00D4",
 10.4175 +    Otilde: "\u00D5",
 10.4176 +    Ouml: "\u00D6",
 10.4177 +    times: "\u00D7",
 10.4178 +    Oslash: "\u00D8",
 10.4179 +    Ugrave: "\u00D9",
 10.4180 +    Uacute: "\u00DA",
 10.4181 +    Ucirc: "\u00DB",
 10.4182 +    Uuml: "\u00DC",
 10.4183 +    Yacute: "\u00DD",
 10.4184 +    THORN: "\u00DE",
 10.4185 +    szlig: "\u00DF",
 10.4186 +    agrave: "\u00E0",
 10.4187 +    aacute: "\u00E1",
 10.4188 +    acirc: "\u00E2",
 10.4189 +    atilde: "\u00E3",
 10.4190 +    auml: "\u00E4",
 10.4191 +    aring: "\u00E5",
 10.4192 +    aelig: "\u00E6",
 10.4193 +    ccedil: "\u00E7",
 10.4194 +    egrave: "\u00E8",
 10.4195 +    eacute: "\u00E9",
 10.4196 +    ecirc: "\u00EA",
 10.4197 +    euml: "\u00EB",
 10.4198 +    igrave: "\u00EC",
 10.4199 +    iacute: "\u00ED",
 10.4200 +    icirc: "\u00EE",
 10.4201 +    iuml: "\u00EF",
 10.4202 +    eth: "\u00F0",
 10.4203 +    ntilde: "\u00F1",
 10.4204 +    ograve: "\u00F2",
 10.4205 +    oacute: "\u00F3",
 10.4206 +    ocirc: "\u00F4",
 10.4207 +    otilde: "\u00F5",
 10.4208 +    ouml: "\u00F6",
 10.4209 +    divide: "\u00F7",
 10.4210 +    oslash: "\u00F8",
 10.4211 +    ugrave: "\u00F9",
 10.4212 +    uacute: "\u00FA",
 10.4213 +    ucirc: "\u00FB",
 10.4214 +    uuml: "\u00FC",
 10.4215 +    yacute: "\u00FD",
 10.4216 +    thorn: "\u00FE",
 10.4217 +    yuml: "\u00FF",
 10.4218 +    fnof: "\u0192",
 10.4219 +    Alpha: "\u0391",
 10.4220 +    Beta: "\u0392",
 10.4221 +    Gamma: "\u0393",
 10.4222 +    Delta: "\u0394",
 10.4223 +    Epsilon: "\u0395",
 10.4224 +    Zeta: "\u0396",
 10.4225 +    Eta: "\u0397",
 10.4226 +    Theta: "\u0398",
 10.4227 +    Iota: "\u0399",
 10.4228 +    Kappa: "\u039A",
 10.4229 +    Lambda: "\u039B",
 10.4230 +    Mu: "\u039C",
 10.4231 +    Nu: "\u039D",
 10.4232 +    Xi: "\u039E",
 10.4233 +    Omicron: "\u039F",
 10.4234 +    Pi: "\u03A0",
 10.4235 +    Rho: "\u03A1",
 10.4236 +    Sigma: "\u03A3",
 10.4237 +    Tau: "\u03A4",
 10.4238 +    Upsilon: "\u03A5",
 10.4239 +    Phi: "\u03A6",
 10.4240 +    Chi: "\u03A7",
 10.4241 +    Psi: "\u03A8",
 10.4242 +    Omega: "\u03A9",
 10.4243 +    alpha: "\u03B1",
 10.4244 +    beta: "\u03B2",
 10.4245 +    gamma: "\u03B3",
 10.4246 +    delta: "\u03B4",
 10.4247 +    epsilon: "\u03B5",
 10.4248 +    zeta: "\u03B6",
 10.4249 +    eta: "\u03B7",
 10.4250 +    theta: "\u03B8",
 10.4251 +    iota: "\u03B9",
 10.4252 +    kappa: "\u03BA",
 10.4253 +    lambda: "\u03BB",
 10.4254 +    mu: "\u03BC",
 10.4255 +    nu: "\u03BD",
 10.4256 +    xi: "\u03BE",
 10.4257 +    omicron: "\u03BF",
 10.4258 +    pi: "\u03C0",
 10.4259 +    rho: "\u03C1",
 10.4260 +    sigmaf: "\u03C2",
 10.4261 +    sigma: "\u03C3",
 10.4262 +    tau: "\u03C4",
 10.4263 +    upsilon: "\u03C5",
 10.4264 +    phi: "\u03C6",
 10.4265 +    chi: "\u03C7",
 10.4266 +    psi: "\u03C8",
 10.4267 +    omega: "\u03C9",
 10.4268 +    thetasym: "\u03D1",
 10.4269 +    upsih: "\u03D2",
 10.4270 +    piv: "\u03D6",
 10.4271 +    bull: "\u2022",
 10.4272 +    hellip: "\u2026",
 10.4273 +    prime: "\u2032",
 10.4274 +    Prime: "\u2033",
 10.4275 +    oline: "\u203E",
 10.4276 +    frasl: "\u2044",
 10.4277 +    weierp: "\u2118",
 10.4278 +    image: "\u2111",
 10.4279 +    real: "\u211C",
 10.4280 +    trade: "\u2122",
 10.4281 +    alefsym: "\u2135",
 10.4282 +    larr: "\u2190",
 10.4283 +    uarr: "\u2191",
 10.4284 +    rarr: "\u2192",
 10.4285 +    darr: "\u2193",
 10.4286 +    harr: "\u2194",
 10.4287 +    crarr: "\u21B5",
 10.4288 +    lArr: "\u21D0",
 10.4289 +    uArr: "\u21D1",
 10.4290 +    rArr: "\u21D2",
 10.4291 +    dArr: "\u21D3",
 10.4292 +    hArr: "\u21D4",
 10.4293 +    forall: "\u2200",
 10.4294 +    part: "\u2202",
 10.4295 +    exist: "\u2203",
 10.4296 +    empty: "\u2205",
 10.4297 +    nabla: "\u2207",
 10.4298 +    isin: "\u2208",
 10.4299 +    notin: "\u2209",
 10.4300 +    ni: "\u220B",
 10.4301 +    prod: "\u220F",
 10.4302 +    sum: "\u2211",
 10.4303 +    minus: "\u2212",
 10.4304 +    lowast: "\u2217",
 10.4305 +    radic: "\u221A",
 10.4306 +    prop: "\u221D",
 10.4307 +    infin: "\u221E",
 10.4308 +    ang: "\u2220",
 10.4309 +    and: "\u2227",
 10.4310 +    or: "\u2228",
 10.4311 +    cap: "\u2229",
 10.4312 +    cup: "\u222A",
 10.4313 +    intXX: "\u222B",
 10.4314 +    there4: "\u2234",
 10.4315 +    sim: "\u223C",
 10.4316 +    cong: "\u2245",
 10.4317 +    asymp: "\u2248",
 10.4318 +    ne: "\u2260",
 10.4319 +    equiv: "\u2261",
 10.4320 +    le: "\u2264",
 10.4321 +    ge: "\u2265",
 10.4322 +    sub: "\u2282",
 10.4323 +    sup: "\u2283",
 10.4324 +    nsub: "\u2284",
 10.4325 +    sube: "\u2286",
 10.4326 +    supe: "\u2287",
 10.4327 +    oplus: "\u2295",
 10.4328 +    otimes: "\u2297",
 10.4329 +    perp: "\u22A5",
 10.4330 +    sdot: "\u22C5",
 10.4331 +    lceil: "\u2308",
 10.4332 +    rceil: "\u2309",
 10.4333 +    lfloor: "\u230A",
 10.4334 +    rfloor: "\u230B",
 10.4335 +    lang: "\u2329",
 10.4336 +    rang: "\u232A",
 10.4337 +    loz: "\u25CA",
 10.4338 +    spades: "\u2660",
 10.4339 +    clubs: "\u2663",
 10.4340 +    hearts: "\u2665",
 10.4341 +    diams: "\u2666",
 10.4342 +    quot: "\u0022",
 10.4343 +    amp: "\u0026",
 10.4344 +    lt: "\u003C",
 10.4345 +    gt: "\u003E",
 10.4346 +    OElig: "\u0152",
 10.4347 +    oelig: "\u0153",
 10.4348 +    Scaron: "\u0160",
 10.4349 +    scaron: "\u0161",
 10.4350 +    Yuml: "\u0178",
 10.4351 +    circ: "\u02C6",
 10.4352 +    tilde: "\u02DC",
 10.4353 +    ensp: "\u2002",
 10.4354 +    emsp: "\u2003",
 10.4355 +    thinsp: "\u2009",
 10.4356 +    zwnj: "\u200C",
 10.4357 +    zwj: "\u200D",
 10.4358 +    lrm: "\u200E",
 10.4359 +    rlm: "\u200F",
 10.4360 +    ndash: "\u2013",
 10.4361 +    mdash: "\u2014",
 10.4362 +    lsquo: "\u2018",
 10.4363 +    rsquo: "\u2019",
 10.4364 +    sbquo: "\u201A",
 10.4365 +    ldquo: "\u201C",
 10.4366 +    rdquo: "\u201D",
 10.4367 +    bdquo: "\u201E",
 10.4368 +    dagger: "\u2020",
 10.4369 +    Dagger: "\u2021",
 10.4370 +    permil: "\u2030",
 10.4371 +    lsaquo: "\u2039",
 10.4372 +    rsaquo: "\u203A",
 10.4373 +    euro: "\u20AC",
 10.4374 +
 10.4375 +    // non-standard entities
 10.4376 +    apos: "'"
 10.4377 +};
 10.4378 +
 10.4379 +/**
 10.4380 + * @author envjs team
 10.4381 + */
 10.4382 +
 10.4383 +EntityReference = function() {
 10.4384 +    throw new Error("EntityReference Not Implemented" );
 10.4385 +};
 10.4386 +
 10.4387 +/**
 10.4388 + * @class  DOMImplementation -
 10.4389 + *      provides a number of methods for performing operations
 10.4390 + *      that are independent of any particular instance of the
 10.4391 + *      document object model.
 10.4392 + *
 10.4393 + * @author Jon van Noort (jon@webarcana.com.au)
 10.4394 + */
 10.4395 +DOMImplementation = function() {
 10.4396 +    this.preserveWhiteSpace = false;  // by default, ignore whitespace
 10.4397 +    this.namespaceAware = true;       // by default, handle namespaces
 10.4398 +    this.errorChecking  = true;      // by default, test for exceptions
 10.4399 +};
 10.4400 +
 10.4401 +__extend__(DOMImplementation.prototype,{
 10.4402 +    // @param  feature : string - The package name of the feature to test.
 10.4403 +    //      the legal only values are "XML" and "CORE" (case-insensitive).
 10.4404 +    // @param  version : string - This is the version number of the package
 10.4405 +    //       name to test. In Level 1, this is the string "1.0".*
 10.4406 +    // @return : boolean
 10.4407 +    hasFeature : function(feature, version) {
 10.4408 +        var ret = false;
 10.4409 +        if (feature.toLowerCase() == "xml") {
 10.4410 +            ret = (!version || (version == "1.0") || (version == "2.0"));
 10.4411 +        }
 10.4412 +        else if (feature.toLowerCase() == "core") {
 10.4413 +            ret = (!version || (version == "2.0"));
 10.4414 +        }
 10.4415 +        else if (feature == "http://www.w3.org/TR/SVG11/feature#BasicStructure") {
 10.4416 +            ret = (version == "1.1");
 10.4417 +        }
 10.4418 +        return ret;
 10.4419 +    },
 10.4420 +    createDocumentType : function(qname, publicId, systemId){
 10.4421 +        var doctype = new DocumentType();
 10.4422 +        doctype.nodeName = qname?qname.toUpperCase():null;
 10.4423 +        doctype.publicId = publicId?publicId:null;
 10.4424 +        doctype.systemId = systemId?systemId:null;
 10.4425 +        return doctype;
 10.4426 +    },
 10.4427 +    createDocument : function(nsuri, qname, doctype){
 10.4428 +
 10.4429 +        var doc = null, documentElement;
 10.4430 +
 10.4431 +        doc = new Document(this, null);
 10.4432 +        if(doctype){
 10.4433 +            doc.doctype = doctype;
 10.4434 +        }
 10.4435 +
 10.4436 +        if(nsuri && qname){
 10.4437 +            documentElement = doc.createElementNS(nsuri, qname);
 10.4438 +        }else if(qname){
 10.4439 +            documentElement = doc.createElement(qname);
 10.4440 +        }
 10.4441 +        if(documentElement){
 10.4442 +            doc.appendChild(documentElement);
 10.4443 +        }
 10.4444 +        return doc;
 10.4445 +    },
 10.4446 +    createHTMLDocument : function(title){
 10.4447 +        var doc = new HTMLDocument($implementation, null, "");
 10.4448 +        var html = doc.createElement("html"); doc.appendChild(html);
 10.4449 +        var head = doc.createElement("head"); html.appendChild(head);
 10.4450 +        var body = doc.createElement("body"); html.appendChild(body);
 10.4451 +        var t = doc.createElement("title"); head.appendChild(t);
 10.4452 +        if( title) {
 10.4453 +            t.appendChild(doc.createTextNode(title));
 10.4454 +        }
 10.4455 +        return doc;
 10.4456 +    },
 10.4457 +    translateErrCode : function(code) {
 10.4458 +        //convert DOMException Code to human readable error message;
 10.4459 +      var msg = "";
 10.4460 +
 10.4461 +      switch (code) {
 10.4462 +        case DOMException.INDEX_SIZE_ERR :                // 1
 10.4463 +           msg = "INDEX_SIZE_ERR: Index out of bounds";
 10.4464 +           break;
 10.4465 +
 10.4466 +        case DOMException.DOMSTRING_SIZE_ERR :            // 2
 10.4467 +           msg = "DOMSTRING_SIZE_ERR: The resulting string is too long to fit in a DOMString";
 10.4468 +           break;
 10.4469 +
 10.4470 +        case DOMException.HIERARCHY_REQUEST_ERR :         // 3
 10.4471 +           msg = "HIERARCHY_REQUEST_ERR: The Node can not be inserted at this location";
 10.4472 +           break;
 10.4473 +
 10.4474 +        case DOMException.WRONG_DOCUMENT_ERR :            // 4
 10.4475 +           msg = "WRONG_DOCUMENT_ERR: The source and the destination Documents are not the same";
 10.4476 +           break;
 10.4477 +
 10.4478 +        case DOMException.INVALID_CHARACTER_ERR :         // 5
 10.4479 +           msg = "INVALID_CHARACTER_ERR: The string contains an invalid character";
 10.4480 +           break;
 10.4481 +
 10.4482 +        case DOMException.NO_DATA_ALLOWED_ERR :           // 6
 10.4483 +           msg = "NO_DATA_ALLOWED_ERR: This Node / NodeList does not support data";
 10.4484 +           break;
 10.4485 +
 10.4486 +        case DOMException.NO_MODIFICATION_ALLOWED_ERR :   // 7
 10.4487 +           msg = "NO_MODIFICATION_ALLOWED_ERR: This object cannot be modified";
 10.4488 +           break;
 10.4489 +
 10.4490 +        case DOMException.NOT_FOUND_ERR :                 // 8
 10.4491 +           msg = "NOT_FOUND_ERR: The item cannot be found";
 10.4492 +           break;
 10.4493 +
 10.4494 +        case DOMException.NOT_SUPPORTED_ERR :             // 9
 10.4495 +           msg = "NOT_SUPPORTED_ERR: This implementation does not support function";
 10.4496 +           break;
 10.4497 +
 10.4498 +        case DOMException.INUSE_ATTRIBUTE_ERR :           // 10
 10.4499 +           msg = "INUSE_ATTRIBUTE_ERR: The Attribute has already been assigned to another Element";
 10.4500 +           break;
 10.4501 +
 10.4502 +        // Introduced in DOM Level 2:
 10.4503 +        case DOMException.INVALID_STATE_ERR :             // 11
 10.4504 +           msg = "INVALID_STATE_ERR: The object is no longer usable";
 10.4505 +           break;
 10.4506 +
 10.4507 +        case DOMException.SYNTAX_ERR :                    // 12
 10.4508 +           msg = "SYNTAX_ERR: Syntax error";
 10.4509 +           break;
 10.4510 +
 10.4511 +        case DOMException.INVALID_MODIFICATION_ERR :      // 13
 10.4512 +           msg = "INVALID_MODIFICATION_ERR: Cannot change the type of the object";
 10.4513 +           break;
 10.4514 +
 10.4515 +        case DOMException.NAMESPACE_ERR :                 // 14
 10.4516 +           msg = "NAMESPACE_ERR: The namespace declaration is incorrect";
 10.4517 +           break;
 10.4518 +
 10.4519 +        case DOMException.INVALID_ACCESS_ERR :            // 15
 10.4520 +           msg = "INVALID_ACCESS_ERR: The object does not support this function";
 10.4521 +           break;
 10.4522 +
 10.4523 +        default :
 10.4524 +           msg = "UNKNOWN: Unknown Exception Code ("+ code +")";
 10.4525 +      }
 10.4526 +
 10.4527 +      return msg;
 10.4528 +    },
 10.4529 +    toString : function(){
 10.4530 +        return "[object DOMImplementation]";
 10.4531 +    }
 10.4532 +});
 10.4533 +
 10.4534 +
 10.4535 +
 10.4536 +/**
 10.4537 + * @method DOMImplementation._isNamespaceDeclaration - Return true, if attributeName is a namespace declaration
 10.4538 + * @author Jon van Noort (jon@webarcana.com.au)
 10.4539 + * @param  attributeName : string - the attribute name
 10.4540 + * @return : boolean
 10.4541 + */
 10.4542 +function __isNamespaceDeclaration__(attributeName) {
 10.4543 +  // test if attributeName is 'xmlns'
 10.4544 +  return (attributeName.indexOf('xmlns') > -1);
 10.4545 +}
 10.4546 +
 10.4547 +/**
 10.4548 + * @method DOMImplementation._isIdDeclaration - Return true, if attributeName is an id declaration
 10.4549 + * @author Jon van Noort (jon@webarcana.com.au)
 10.4550 + * @param  attributeName : string - the attribute name
 10.4551 + * @return : boolean
 10.4552 + */
 10.4553 +function __isIdDeclaration__(attributeName) {
 10.4554 +  // test if attributeName is 'id' (case insensitive)
 10.4555 +  return attributeName?(attributeName.toLowerCase() == 'id'):false;
 10.4556 +}
 10.4557 +
 10.4558 +/**
 10.4559 + * @method DOMImplementation._isValidName - Return true,
 10.4560 + *   if name contains no invalid characters
 10.4561 + * @author Jon van Noort (jon@webarcana.com.au)
 10.4562 + * @param  name : string - the candidate name
 10.4563 + * @return : boolean
 10.4564 + */
 10.4565 +function __isValidName__(name) {
 10.4566 +  // test if name contains only valid characters
 10.4567 +  return name.match(re_validName);
 10.4568 +}
 10.4569 +var re_validName = /^[a-zA-Z_:][a-zA-Z0-9\.\-_:]*$/;
 10.4570 +
 10.4571 +/**
 10.4572 + * @method DOMImplementation._isValidString - Return true, if string does not contain any illegal chars
 10.4573 + *  All of the characters 0 through 31 and character 127 are nonprinting control characters.
 10.4574 + *  With the exception of characters 09, 10, and 13, (Ox09, Ox0A, and Ox0D)
 10.4575 + *  Note: different from _isValidName in that ValidStrings may contain spaces
 10.4576 + * @author Jon van Noort (jon@webarcana.com.au)
 10.4577 + * @param  name : string - the candidate string
 10.4578 + * @return : boolean
 10.4579 + */
 10.4580 +function __isValidString__(name) {
 10.4581 +  // test that string does not contains invalid characters
 10.4582 +  return (name.search(re_invalidStringChars) < 0);
 10.4583 +}
 10.4584 +var re_invalidStringChars = /\x01|\x02|\x03|\x04|\x05|\x06|\x07|\x08|\x0B|\x0C|\x0E|\x0F|\x10|\x11|\x12|\x13|\x14|\x15|\x16|\x17|\x18|\x19|\x1A|\x1B|\x1C|\x1D|\x1E|\x1F|\x7F/;
 10.4585 +
 10.4586 +/**
 10.4587 + * @method DOMImplementation._parseNSName - parse the namespace name.
 10.4588 + *  if there is no colon, the
 10.4589 + * @author Jon van Noort (jon@webarcana.com.au)
 10.4590 + * @param  qualifiedName : string - The qualified name
 10.4591 + * @return : NSName - [
 10.4592 +         .prefix        : string - The prefix part of the qname
 10.4593 +         .namespaceName : string - The namespaceURI part of the qname
 10.4594 +    ]
 10.4595 + */
 10.4596 +function __parseNSName__(qualifiedName) {
 10.4597 +    var resultNSName = {};
 10.4598 +    // unless the qname has a namespaceName, the prefix is the entire String
 10.4599 +    resultNSName.prefix          = qualifiedName;
 10.4600 +    resultNSName.namespaceName   = "";
 10.4601 +    // split on ':'
 10.4602 +    var delimPos = qualifiedName.indexOf(':');
 10.4603 +    if (delimPos > -1) {
 10.4604 +        // get prefix
 10.4605 +        resultNSName.prefix        = qualifiedName.substring(0, delimPos);
 10.4606 +        // get namespaceName
 10.4607 +        resultNSName.namespaceName = qualifiedName.substring(delimPos +1, qualifiedName.length);
 10.4608 +    }
 10.4609 +    return resultNSName;
 10.4610 +}
 10.4611 +
 10.4612 +/**
 10.4613 + * @method DOMImplementation._parseQName - parse the qualified name
 10.4614 + * @author Jon van Noort (jon@webarcana.com.au)
 10.4615 + * @param  qualifiedName : string - The qualified name
 10.4616 + * @return : QName
 10.4617 + */
 10.4618 +function __parseQName__(qualifiedName) {
 10.4619 +    var resultQName = {};
 10.4620 +    // unless the qname has a prefix, the local name is the entire String
 10.4621 +    resultQName.localName = qualifiedName;
 10.4622 +    resultQName.prefix    = "";
 10.4623 +    // split on ':'
 10.4624 +    var delimPos = qualifiedName.indexOf(':');
 10.4625 +    if (delimPos > -1) {
 10.4626 +        // get prefix
 10.4627 +        resultQName.prefix    = qualifiedName.substring(0, delimPos);
 10.4628 +        // get localName
 10.4629 +        resultQName.localName = qualifiedName.substring(delimPos +1, qualifiedName.length);
 10.4630 +    }
 10.4631 +    return resultQName;
 10.4632 +}
 10.4633 +/**
 10.4634 + * @author envjs team
 10.4635 + */
 10.4636 +Notation = function() {
 10.4637 +    throw new Error("Notation Not Implemented" );
 10.4638 +};/**
 10.4639 + * @author thatcher
 10.4640 + */
 10.4641 +Range = function(){
 10.4642 +
 10.4643 +};
 10.4644 +
 10.4645 +__extend__(Range.prototype, {
 10.4646 +    get startContainer(){
 10.4647 +
 10.4648 +    },
 10.4649 +    get endContainer(){
 10.4650 +
 10.4651 +    },
 10.4652 +    get startOffset(){
 10.4653 +
 10.4654 +    },
 10.4655 +    get endOffset(){
 10.4656 +
 10.4657 +    },
 10.4658 +    get collapsed(){
 10.4659 +
 10.4660 +    },
 10.4661 +    get commonAncestorContainer(){
 10.4662 +
 10.4663 +    },
 10.4664 +    setStart: function(refNode, offset){//throws RangeException
 10.4665 +
 10.4666 +    },
 10.4667 +    setEnd: function(refNode, offset){//throws RangeException
 10.4668 +    
 10.4669 +    },
 10.4670 +    setStartBefore: function(refNode){//throws RangeException
 10.4671 +    
 10.4672 +    },
 10.4673 +    setStartAfter: function(refNode){//throws RangeException
 10.4674 +    
 10.4675 +    },
 10.4676 +    setEndBefore: function(refNode){//throws RangeException
 10.4677 +    
 10.4678 +    },
 10.4679 +    setEndAfter: function(refNode){//throws RangeException
 10.4680 +    
 10.4681 +    },
 10.4682 +    collapse: function(toStart){//throws RangeException
 10.4683 +    
 10.4684 +    },
 10.4685 +    selectNode: function(refNode){//throws RangeException
 10.4686 +    
 10.4687 +    },
 10.4688 +    selectNodeContents: function(refNode){//throws RangeException
 10.4689 +    
 10.4690 +    },
 10.4691 +    compareBoundaryPoints: function(how, sourceRange){
 10.4692 +
 10.4693 +    },
 10.4694 +    deleteContents: function(){
 10.4695 +
 10.4696 +    },
 10.4697 +    extractContents: function(){
 10.4698 +
 10.4699 +    },
 10.4700 +    cloneContents: function(){
 10.4701 +
 10.4702 +    },
 10.4703 +    insertNode: function(newNode){
 10.4704 +
 10.4705 +    },
 10.4706 +    surroundContents: function(newParent){
 10.4707 +
 10.4708 +    },
 10.4709 +    cloneRange: function(){
 10.4710 +
 10.4711 +    },
 10.4712 +    toString: function(){
 10.4713 +        return '[object Range]';
 10.4714 +    },
 10.4715 +    detach: function(){
 10.4716 +
 10.4717 +    }
 10.4718 +});
 10.4719 +
 10.4720 +
 10.4721 +  // CompareHow
 10.4722 +Range.START_TO_START                 = 0;
 10.4723 +Range.START_TO_END                   = 1;
 10.4724 +Range.END_TO_END                     = 2;
 10.4725 +Range.END_TO_START                   = 3;
 10.4726 +  
 10.4727 +/*
 10.4728 + * Forward declarations
 10.4729 + */
 10.4730 +var __isValidNamespace__;
 10.4731 +
 10.4732 +/**
 10.4733 + * @class  Document - The Document interface represents the entire HTML
 10.4734 + *      or XML document. Conceptually, it is the root of the document tree,
 10.4735 + *      and provides the primary access to the document's data.
 10.4736 + *
 10.4737 + * @extends Node
 10.4738 + * @param  implementation : DOMImplementation - the creator Implementation
 10.4739 + */
 10.4740 +Document = function(implementation, docParentWindow) {
 10.4741 +    Node.apply(this, arguments);
 10.4742 +
 10.4743 +    //TODO: Temporary!!! Cnage back to true!!!
 10.4744 +    this.async = true;
 10.4745 +    // The Document Type Declaration (see DocumentType) associated with this document
 10.4746 +    this.doctype = null;
 10.4747 +    // The DOMImplementation object that handles this document.
 10.4748 +    this.implementation = implementation;
 10.4749 +
 10.4750 +    this.nodeName  = "#document";
 10.4751 +    // initially false, set to true by parser
 10.4752 +    this.parsing = false;
 10.4753 +    this.baseURI = 'about:blank';
 10.4754 +
 10.4755 +    this.ownerDocument = null;
 10.4756 +
 10.4757 +    this.importing = false;
 10.4758 +};
 10.4759 +
 10.4760 +Document.prototype = new Node();
 10.4761 +__extend__(Document.prototype,{
 10.4762 +    get localName(){
 10.4763 +        return null;
 10.4764 +    },
 10.4765 +    get textContent(){
 10.4766 +        return null;
 10.4767 +    },
 10.4768 +    get all(){
 10.4769 +        return this.getElementsByTagName("*");
 10.4770 +    },
 10.4771 +    get documentElement(){
 10.4772 +        var i, length = this.childNodes?this.childNodes.length:0;
 10.4773 +        for(i=0;i<length;i++){
 10.4774 +            if(this.childNodes[i].nodeType === Node.ELEMENT_NODE){
 10.4775 +                return this.childNodes[i];
 10.4776 +            }
 10.4777 +        }
 10.4778 +        return null;
 10.4779 +    },
 10.4780 +    get documentURI(){
 10.4781 +        return this.baseURI;
 10.4782 +    },
 10.4783 +    createExpression: function(xpath, nsuriMap){
 10.4784 +        return new XPathExpression(xpath, nsuriMap);
 10.4785 +    },
 10.4786 +    createDocumentFragment: function() {
 10.4787 +        var node = new DocumentFragment(this);
 10.4788 +        return node;
 10.4789 +    },
 10.4790 +    createTextNode: function(data) {
 10.4791 +        var node = new Text(this);
 10.4792 +        node.data = data;
 10.4793 +        return node;
 10.4794 +    },
 10.4795 +    createComment: function(data) {
 10.4796 +        var node = new Comment(this);
 10.4797 +        node.data = data;
 10.4798 +        return node;
 10.4799 +    },
 10.4800 +    createCDATASection : function(data) {
 10.4801 +        var node = new CDATASection(this);
 10.4802 +        node.data = data;
 10.4803 +        return node;
 10.4804 +    },
 10.4805 +    createProcessingInstruction: function(target, data) {
 10.4806 +        // throw Exception if the target string contains an illegal character
 10.4807 +        if (__ownerDocument__(this).implementation.errorChecking &&
 10.4808 +            (!__isValidName__(target))) {
 10.4809 +            throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
 10.4810 +        }
 10.4811 +
 10.4812 +        var node = new ProcessingInstruction(this);
 10.4813 +        node.target = target;
 10.4814 +        node.data = data;
 10.4815 +        return node;
 10.4816 +    },
 10.4817 +    createElement: function(tagName) {
 10.4818 +        // throw Exception if the tagName string contains an illegal character
 10.4819 +        if (__ownerDocument__(this).implementation.errorChecking &&
 10.4820 +            (!__isValidName__(tagName))) {
 10.4821 +            throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
 10.4822 +        }
 10.4823 +        var node = new Element(this);
 10.4824 +        node.nodeName = tagName;
 10.4825 +        return node;
 10.4826 +    },
 10.4827 +    createElementNS : function(namespaceURI, qualifiedName) {
 10.4828 +        //we use this as a parser flag to ignore the xhtml
 10.4829 +        //namespace assumed by the parser
 10.4830 +        //console.log('creating element %s %s', namespaceURI, qualifiedName);
 10.4831 +        if(this.baseURI === 'http://envjs.com/xml' &&
 10.4832 +            namespaceURI === 'http://www.w3.org/1999/xhtml'){
 10.4833 +            return this.createElement(qualifiedName);
 10.4834 +        }
 10.4835 +        //console.log('createElementNS %s %s', namespaceURI, qualifiedName);
 10.4836 +        if (__ownerDocument__(this).implementation.errorChecking) {
 10.4837 +            // throw Exception if the Namespace is invalid
 10.4838 +            if (!__isValidNamespace__(this, namespaceURI, qualifiedName)) {
 10.4839 +                throw(new DOMException(DOMException.NAMESPACE_ERR));
 10.4840 +            }
 10.4841 +
 10.4842 +            // throw Exception if the qualifiedName string contains an illegal character
 10.4843 +            if (!__isValidName__(qualifiedName)) {
 10.4844 +                throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
 10.4845 +            }
 10.4846 +        }
 10.4847 +        var node  = new Element(this);
 10.4848 +        var qname = __parseQName__(qualifiedName);
 10.4849 +        node.namespaceURI = namespaceURI;
 10.4850 +        node.prefix       = qname.prefix;
 10.4851 +        node.nodeName     = qualifiedName;
 10.4852 +
 10.4853 +        //console.log('created element %s %s', namespaceURI, qualifiedName);
 10.4854 +        return node;
 10.4855 +    },
 10.4856 +    createAttribute : function(name) {
 10.4857 +        //console.log('createAttribute %s ', name);
 10.4858 +        // throw Exception if the name string contains an illegal character
 10.4859 +        if (__ownerDocument__(this).implementation.errorChecking &&
 10.4860 +            (!__isValidName__(name))) {
 10.4861 +            throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
 10.4862 +        }
 10.4863 +        var node = new Attr(this);
 10.4864 +        node.nodeName = name;
 10.4865 +        return node;
 10.4866 +    },
 10.4867 +    createAttributeNS : function(namespaceURI, qualifiedName) {
 10.4868 +        //we use this as a parser flag to ignore the xhtml
 10.4869 +        //namespace assumed by the parser
 10.4870 +        if(this.baseURI === 'http://envjs.com/xml' &&
 10.4871 +            namespaceURI === 'http://www.w3.org/1999/xhtml'){
 10.4872 +            return this.createAttribute(qualifiedName);
 10.4873 +        }
 10.4874 +        //console.log('createAttributeNS %s %s', namespaceURI, qualifiedName);
 10.4875 +        // test for exceptions
 10.4876 +        if (this.implementation.errorChecking) {
 10.4877 +            // throw Exception if the Namespace is invalid
 10.4878 +            if (!__isValidNamespace__(this, namespaceURI, qualifiedName, true)) {
 10.4879 +                throw(new DOMException(DOMException.NAMESPACE_ERR));
 10.4880 +            }
 10.4881 +
 10.4882 +            // throw Exception if the qualifiedName string contains an illegal character
 10.4883 +            if (!__isValidName__(qualifiedName)) {
 10.4884 +                throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
 10.4885 +            }
 10.4886 +        }
 10.4887 +        var node  = new Attr(this);
 10.4888 +        var qname = __parseQName__(qualifiedName);
 10.4889 +        node.namespaceURI = namespaceURI === '' ? null : namespaceURI;
 10.4890 +        node.prefix       = qname.prefix;
 10.4891 +        node.nodeName     = qualifiedName;
 10.4892 +        node.nodeValue    = "";
 10.4893 +        //console.log('attribute %s %s %s', node.namespaceURI, node.prefix, node.nodeName);
 10.4894 +        return node;
 10.4895 +    },
 10.4896 +    createNamespace : function(qualifiedName) {
 10.4897 +        //console.log('createNamespace %s', qualifiedName);
 10.4898 +        // create Namespace specifying 'this' as ownerDocument
 10.4899 +        var node  = new Namespace(this);
 10.4900 +        var qname = __parseQName__(qualifiedName);
 10.4901 +
 10.4902 +        // assign values to properties (and aliases)
 10.4903 +        node.prefix       = qname.prefix;
 10.4904 +        node.localName    = qname.localName;
 10.4905 +        node.name         = qualifiedName;
 10.4906 +        node.nodeValue    = "";
 10.4907 +
 10.4908 +        return node;
 10.4909 +    },
 10.4910 +
 10.4911 +    createRange: function(){
 10.4912 +        return new Range();
 10.4913 +    },
 10.4914 +
 10.4915 +    evaluate: function(xpathText, contextNode, nsuriMapper, resultType, result){
 10.4916 +        //return new XPathExpression().evaluate();
 10.4917 +        throw Error('Document.evaluate not supported yet!');
 10.4918 +    },
 10.4919 +
 10.4920 +    getElementById : function(elementId) {
 10.4921 +        var retNode = null,
 10.4922 +            node;
 10.4923 +        // loop through all Elements
 10.4924 +        var all = this.getElementsByTagName('*');
 10.4925 +        for (var i=0; i < all.length; i++) {
 10.4926 +            node = all[i];
 10.4927 +            // if id matches
 10.4928 +            if (node.id == elementId) {
 10.4929 +                //found the node
 10.4930 +                retNode = node;
 10.4931 +                break;
 10.4932 +            }
 10.4933 +        }
 10.4934 +        return retNode;
 10.4935 +    },
 10.4936 +    normalizeDocument: function(){
 10.4937 +        this.normalize();
 10.4938 +    },
 10.4939 +    get nodeType(){
 10.4940 +        return Node.DOCUMENT_NODE;
 10.4941 +    },
 10.4942 +    get xml(){
 10.4943 +        return this.documentElement.xml;
 10.4944 +    },
 10.4945 +    toString: function(){
 10.4946 +        return "[object XMLDocument]";
 10.4947 +    },
 10.4948 +    get defaultView(){
 10.4949 +        return { getComputedStyle: function(elem){
 10.4950 +            return window.getComputedStyle(elem);
 10.4951 +        }};
 10.4952 +    },
 10.4953 +});
 10.4954 +
 10.4955 +/*
 10.4956 + * Helper function
 10.4957 + *
 10.4958 + */
 10.4959 +__isValidNamespace__ = function(doc, namespaceURI, qualifiedName, isAttribute) {
 10.4960 +
 10.4961 +    if (doc.importing === true) {
 10.4962 +        //we're doing an importNode operation (or a cloneNode) - in both cases, there
 10.4963 +        //is no need to perform any namespace checking since the nodes have to have been valid
 10.4964 +        //to have gotten into the DOM in the first place
 10.4965 +        return true;
 10.4966 +    }
 10.4967 +
 10.4968 +    var valid = true;
 10.4969 +    // parse QName
 10.4970 +    var qName = __parseQName__(qualifiedName);
 10.4971 +
 10.4972 +
 10.4973 +    //only check for namespaces if we're finished parsing
 10.4974 +    if (this.parsing === false) {
 10.4975 +
 10.4976 +        // if the qualifiedName is malformed
 10.4977 +        if (qName.localName.indexOf(":") > -1 ){
 10.4978 +            valid = false;
 10.4979 +        }
 10.4980 +
 10.4981 +        if ((valid) && (!isAttribute)) {
 10.4982 +            // if the namespaceURI is not null
 10.4983 +            if (!namespaceURI) {
 10.4984 +                valid = false;
 10.4985 +            }
 10.4986 +        }
 10.4987 +
 10.4988 +        // if the qualifiedName has a prefix
 10.4989 +        if ((valid) && (qName.prefix === "")) {
 10.4990 +            valid = false;
 10.4991 +        }
 10.4992 +    }
 10.4993 +
 10.4994 +    // if the qualifiedName has a prefix that is "xml" and the namespaceURI is
 10.4995 +    //  different from "http://www.w3.org/XML/1998/namespace" [Namespaces].
 10.4996 +    if ((valid) && (qName.prefix === "xml") && (namespaceURI !== "http://www.w3.org/XML/1998/namespace")) {
 10.4997 +        valid = false;
 10.4998 +    }
 10.4999 +
 10.5000 +    return valid;
 10.5001 +};
 10.5002 +/**
 10.5003 + *
 10.5004 + * This file only handles XML parser.
 10.5005 + * It is extended by parser/domparser.js (and parser/htmlparser.js)
 10.5006 + *
 10.5007 + * This depends on e4x, which some engines may not have.
 10.5008 + *
 10.5009 + * @author thatcher
 10.5010 + */
 10.5011 +DOMParser = function(principle, documentURI, baseURI) {
 10.5012 +    // TODO: why/what should these 3 args do?
 10.5013 +};
 10.5014 +__extend__(DOMParser.prototype,{
 10.5015 +    parseFromString: function(xmlstring, mimetype){
 10.5016 +        var doc = new Document(new DOMImplementation()),
 10.5017 +            e4;
 10.5018 +
 10.5019 +        // The following are e4x directives.
 10.5020 +        // Full spec is here:
 10.5021 +        // http://www.ecma-international.org/publications/standards/Ecma-357.htm
 10.5022 +        //
 10.5023 +        // that is pretty gross, so checkout this summary
 10.5024 +        // http://rephrase.net/days/07/06/e4x
 10.5025 +        //
 10.5026 +        // also see the Mozilla Developer Center:
 10.5027 +        // https://developer.mozilla.org/en/E4X
 10.5028 +        //
 10.5029 +        XML.ignoreComments = false;
 10.5030 +        XML.ignoreProcessingInstructions = false;
 10.5031 +        XML.ignoreWhitespace = false;
 10.5032 +
 10.5033 +        // for some reason e4x can't handle initial xml declarations
 10.5034 +        // https://bugzilla.mozilla.org/show_bug.cgi?id=336551
 10.5035 +        // The official workaround is the big regexp below
 10.5036 +        // but simpler one seems to be ok
 10.5037 +        // xmlstring = xmlstring.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, "");
 10.5038 +        //
 10.5039 +        xmlstring = xmlstring.replace(/<\?xml.*\?>/);
 10.5040 +
 10.5041 +        e4 = new XMLList(xmlstring);
 10.5042 +
 10.5043 +        __toDomNode__(e4, doc, doc);
 10.5044 +
 10.5045 +        //console.log('xml \n %s', doc.documentElement.xml);
 10.5046 +        return doc;
 10.5047 +    }
 10.5048 +});
 10.5049 +
 10.5050 +var __toDomNode__ = function(e4, parent, doc){
 10.5051 +    var xnode,
 10.5052 +        domnode,
 10.5053 +        children,
 10.5054 +        target,
 10.5055 +        value,
 10.5056 +        length,
 10.5057 +        element,
 10.5058 +        kind,
 10.5059 +        item;
 10.5060 +    //console.log('converting e4x node list \n %s', e4)
 10.5061 +
 10.5062 +    // not using the for each(item in e4) since some engines can't
 10.5063 +    // handle the syntax (i.e. says syntax error)
 10.5064 +    //
 10.5065 +    // for each(xnode in e4) {
 10.5066 +    for (item in e4) {
 10.5067 +        // NO do not do this if (e4.hasOwnProperty(item)) {
 10.5068 +        // breaks spidermonkey
 10.5069 +        xnode = e4[item];
 10.5070 +
 10.5071 +        kind = xnode.nodeKind();
 10.5072 +        //console.log('treating node kind %s', kind);
 10.5073 +        switch(kind){
 10.5074 +        case 'element':
 10.5075 +            // add node
 10.5076 +            //console.log('creating element %s %s', xnode.localName(), xnode.namespace());
 10.5077 +            if(xnode.namespace() && (xnode.namespace()+'') !== ''){
 10.5078 +                //console.log('createElementNS %s %s',xnode.namespace()+'', xnode.localName() );
 10.5079 +                domnode = doc.createElementNS(xnode.namespace()+'', xnode.localName());
 10.5080 +            }else{
 10.5081 +                domnode = doc.createElement(xnode.name()+'');
 10.5082 +            }
 10.5083 +            parent.appendChild(domnode);
 10.5084 +
 10.5085 +            // add attributes
 10.5086 +            __toDomNode__(xnode.attributes(), domnode, doc);
 10.5087 +
 10.5088 +            // add children
 10.5089 +            children = xnode.children();
 10.5090 +            length = children.length();
 10.5091 +            //console.log('recursing? %s', length ? 'yes' : 'no');
 10.5092 +            if (length > 0) {
 10.5093 +                __toDomNode__(children, domnode, doc);
 10.5094 +            }
 10.5095 +            break;
 10.5096 +        case 'attribute':
 10.5097 +            // console.log('setting attribute %s %s %s',
 10.5098 +            //       xnode.localName(), xnode.namespace(), xnode.valueOf());
 10.5099 +
 10.5100 +            //
 10.5101 +            // cross-platform alert.  The original code used
 10.5102 +            //  xnode.text() to get the attribute value
 10.5103 +            //  This worked in Rhino, but did not in Spidermonkey
 10.5104 +            //  valueOf seemed to work in both
 10.5105 +            //
 10.5106 +            if(xnode.namespace() && xnode.namespace().prefix){
 10.5107 +                //console.log("%s", xnode.namespace().prefix);
 10.5108 +                parent.setAttributeNS(xnode.namespace()+'',
 10.5109 +                                      xnode.namespace().prefix+':'+xnode.localName(),
 10.5110 +                                      xnode.valueOf());
 10.5111 +            }else if((xnode.name()+'').match('http://www.w3.org/2000/xmlns/::')){
 10.5112 +                if(xnode.localName()!=='xmlns'){
 10.5113 +                    parent.setAttributeNS('http://www.w3.org/2000/xmlns/',
 10.5114 +                                          'xmlns:'+xnode.localName(),
 10.5115 +                                          xnode.valueOf());
 10.5116 +                }
 10.5117 +            }else{
 10.5118 +                parent.setAttribute(xnode.localName()+'', xnode.valueOf());
 10.5119 +            }
 10.5120 +            break;
 10.5121 +        case 'text':
 10.5122 +            //console.log('creating text node : %s', xnode);
 10.5123 +            domnode = doc.createTextNode(xnode+'');
 10.5124 +            parent.appendChild(domnode);
 10.5125 +            break;
 10.5126 +        case 'comment':
 10.5127 +            //console.log('creating comment node : %s', xnode);
 10.5128 +            value = xnode+'';
 10.5129 +            domnode = doc.createComment(value.substring(4,value.length-3));
 10.5130 +            parent.appendChild(domnode);
 10.5131 +            break;
 10.5132 +        case 'processing-instruction':
 10.5133 +            //console.log('creating processing-instruction node : %s', xnode);
 10.5134 +            value = xnode+'';
 10.5135 +            target = value.split(' ')[0].substring(2);
 10.5136 +            value = value.split(' ').splice(1).join(' ').replace('?>','');
 10.5137 +            //console.log('creating processing-instruction data : %s', value);
 10.5138 +            domnode = doc.createProcessingInstruction(target, value);
 10.5139 +            parent.appendChild(domnode);
 10.5140 +            break;
 10.5141 +        default:
 10.5142 +            console.log('e4x DOM ERROR');
 10.5143 +            throw new Error("Assertion failed in xml parser");
 10.5144 +        }
 10.5145 +    }
 10.5146 +};
 10.5147 +/**
 10.5148 + * @author envjs team
 10.5149 + * @class XMLSerializer
 10.5150 + */
 10.5151 +
 10.5152 +XMLSerializer = function() {};
 10.5153 +
 10.5154 +__extend__(XMLSerializer.prototype, {
 10.5155 +    serializeToString: function(node){
 10.5156 +        return node.xml;
 10.5157 +    },
 10.5158 +    toString : function(){
 10.5159 +        return "[object XMLSerializer]";
 10.5160 +    }
 10.5161 +});
 10.5162 +
 10.5163 +/**
 10.5164 + * @author john resig & the envjs team
 10.5165 + * @uri http://www.envjs.com/
 10.5166 + * @copyright 2008-2010
 10.5167 + * @license MIT
 10.5168 + */
 10.5169 +//CLOSURE_END
 10.5170 +}());
 10.5171 +/*
 10.5172 + * Envjs event.1.2.13
 10.5173 + * Pure JavaScript Browser Environment
 10.5174 + * By John Resig <http://ejohn.org/> and the Envjs Team
 10.5175 + * Copyright 2008-2010 John Resig, under the MIT License
 10.5176 + *
 10.5177 + * This file simply provides the global definitions we need to
 10.5178 + * be able to correctly implement to core browser DOM Event interfaces.
 10.5179 + */
 10.5180 +var Event,
 10.5181 +    MouseEvent,
 10.5182 +    UIEvent,
 10.5183 +    KeyboardEvent,
 10.5184 +    MutationEvent,
 10.5185 +    DocumentEvent,
 10.5186 +    EventTarget,
 10.5187 +    EventException,
 10.5188 +    //nonstandard but very useful for implementing mutation events
 10.5189 +    //among other things like general profiling
 10.5190 +    Aspect;
 10.5191 +/*
 10.5192 + * Envjs event.1.2.13 
 10.5193 + * Pure JavaScript Browser Environment
 10.5194 + * By John Resig <http://ejohn.org/> and the Envjs Team
 10.5195 + * Copyright 2008-2010 John Resig, under the MIT License
 10.5196 + */
 10.5197 +
 10.5198 +//CLOSURE_START
 10.5199 +(function(){
 10.5200 +
 10.5201 +
 10.5202 +
 10.5203 +
 10.5204 +
 10.5205 +/**
 10.5206 + * @author john resig
 10.5207 + */
 10.5208 +// Helper method for extending one object with another.
 10.5209 +function __extend__(a,b) {
 10.5210 +    for ( var i in b ) {
 10.5211 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
 10.5212 +        if ( g || s ) {
 10.5213 +            if ( g ) { a.__defineGetter__(i, g); }
 10.5214 +            if ( s ) { a.__defineSetter__(i, s); }
 10.5215 +        } else {
 10.5216 +            a[i] = b[i];
 10.5217 +        }
 10.5218 +    } return a;
 10.5219 +}
 10.5220 +
 10.5221 +/**
 10.5222 + * @author john resig
 10.5223 + */
 10.5224 +//from jQuery
 10.5225 +function __setArray__( target, array ) {
 10.5226 +    // Resetting the length to 0, then using the native Array push
 10.5227 +    // is a super-fast way to populate an object with array-like properties
 10.5228 +    target.length = 0;
 10.5229 +    Array.prototype.push.apply( target, array );
 10.5230 +}
 10.5231 +/**
 10.5232 + * Borrowed with love from:
 10.5233 + * 
 10.5234 + * jQuery AOP - jQuery plugin to add features of aspect-oriented programming (AOP) to jQuery.
 10.5235 + * http://jquery-aop.googlecode.com/
 10.5236 + *
 10.5237 + * Licensed under the MIT license:
 10.5238 + * http://www.opensource.org/licenses/mit-license.php
 10.5239 + *
 10.5240 + * Version: 1.1
 10.5241 + */
 10.5242 +(function() {
 10.5243 +
 10.5244 +	var _after	= 1;
 10.5245 +	var _before	= 2;
 10.5246 +	var _around	= 3;
 10.5247 +	var _intro  = 4;
 10.5248 +	var _regexEnabled = true;
 10.5249 +
 10.5250 +	/**
 10.5251 +	 * Private weaving function.
 10.5252 +	 */
 10.5253 +	var weaveOne = function(source, method, advice) {
 10.5254 +
 10.5255 +		var old = source[method];
 10.5256 +
 10.5257 +		var aspect;
 10.5258 +		if (advice.type == _after)
 10.5259 +			aspect = function() {
 10.5260 +				var returnValue = old.apply(this, arguments);
 10.5261 +				return advice.value.apply(this, [returnValue, method]);
 10.5262 +			};
 10.5263 +		else if (advice.type == _before)
 10.5264 +			aspect = function() {
 10.5265 +				advice.value.apply(this, [arguments, method]);
 10.5266 +				return old.apply(this, arguments);
 10.5267 +			};
 10.5268 +		else if (advice.type == _intro)
 10.5269 +			aspect = function() {
 10.5270 +				return advice.value.apply(this, arguments);
 10.5271 +			};
 10.5272 +		else if (advice.type == _around) {
 10.5273 +			aspect = function() {
 10.5274 +				var invocation = { object: this, args: arguments };
 10.5275 +				return advice.value.apply(invocation.object, [{ arguments: invocation.args, method: method, proceed : 
 10.5276 +					function() {
 10.5277 +						return old.apply(invocation.object, invocation.args);
 10.5278 +					}
 10.5279 +				}] );
 10.5280 +			};
 10.5281 +		}
 10.5282 +
 10.5283 +		aspect.unweave = function() { 
 10.5284 +			source[method] = old;
 10.5285 +			pointcut = source = aspect = old = null;
 10.5286 +		};
 10.5287 +
 10.5288 +		source[method] = aspect;
 10.5289 +
 10.5290 +		return aspect;
 10.5291 +
 10.5292 +	};
 10.5293 +
 10.5294 +
 10.5295 +	/**
 10.5296 +	 * Private weaver and pointcut parser.
 10.5297 +	 */
 10.5298 +	var weave = function(pointcut, advice)
 10.5299 +	{
 10.5300 +
 10.5301 +		var source = (typeof(pointcut.target.prototype) != 'undefined') ? pointcut.target.prototype : pointcut.target;
 10.5302 +		var advices = [];
 10.5303 +
 10.5304 +		// If it's not an introduction and no method was found, try with regex...
 10.5305 +		if (advice.type != _intro && typeof(source[pointcut.method]) == 'undefined')
 10.5306 +		{
 10.5307 +
 10.5308 +			for (var method in source)
 10.5309 +			{
 10.5310 +				if (source[method] != null && source[method] instanceof Function && method.match(pointcut.method))
 10.5311 +				{
 10.5312 +					advices[advices.length] = weaveOne(source, method, advice);
 10.5313 +				}
 10.5314 +			}
 10.5315 +
 10.5316 +			if (advices.length == 0)
 10.5317 +				throw 'No method: ' + pointcut.method;
 10.5318 +
 10.5319 +		} 
 10.5320 +		else
 10.5321 +		{
 10.5322 +			// Return as an array of one element
 10.5323 +			advices[0] = weaveOne(source, pointcut.method, advice);
 10.5324 +		}
 10.5325 +
 10.5326 +		return _regexEnabled ? advices : advices[0];
 10.5327 +
 10.5328 +	};
 10.5329 +
 10.5330 +	Aspect = 
 10.5331 +	{
 10.5332 +		/**
 10.5333 +		 * Creates an advice after the defined point-cut. The advice will be executed after the point-cut method 
 10.5334 +		 * has completed execution successfully, and will receive one parameter with the result of the execution.
 10.5335 +		 * This function returns an array of weaved aspects (Function).
 10.5336 +		 *
 10.5337 +		 * @example jQuery.aop.after( {target: window, method: 'MyGlobalMethod'}, function(result) { alert('Returned: ' + result); } );
 10.5338 +		 * @result Array<Function>
 10.5339 +		 *
 10.5340 +		 * @example jQuery.aop.after( {target: String, method: 'indexOf'}, function(index) { alert('Result found at: ' + index + ' on:' + this); } );
 10.5341 +		 * @result Array<Function>
 10.5342 +		 *
 10.5343 +		 * @name after
 10.5344 +		 * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
 10.5345 +		 * @option Object target Target object to be weaved. 
 10.5346 +		 * @option String method Name of the function to be weaved. Regex are supported, but not on built-in objects.
 10.5347 +		 * @param Function advice Function containing the code that will get called after the execution of the point-cut. It receives one parameter
 10.5348 +		 *                        with the result of the point-cut's execution.
 10.5349 +		 *
 10.5350 +		 * @type Array<Function>
 10.5351 +		 * @cat Plugins/General
 10.5352 +		 */
 10.5353 +		after : function(pointcut, advice)
 10.5354 +		{
 10.5355 +			return weave( pointcut, { type: _after, value: advice } );
 10.5356 +		},
 10.5357 +
 10.5358 +		/**
 10.5359 +		 * Creates an advice before the defined point-cut. The advice will be executed before the point-cut method 
 10.5360 +		 * but cannot modify the behavior of the method, or prevent its execution.
 10.5361 +		 * This function returns an array of weaved aspects (Function).
 10.5362 +		 *
 10.5363 +		 * @example jQuery.aop.before( {target: window, method: 'MyGlobalMethod'}, function() { alert('About to execute MyGlobalMethod'); } );
 10.5364 +		 * @result Array<Function>
 10.5365 +		 *
 10.5366 +		 * @example jQuery.aop.before( {target: String, method: 'indexOf'}, function(index) { alert('About to execute String.indexOf on: ' + this); } );
 10.5367 +		 * @result Array<Function>
 10.5368 +		 *
 10.5369 +		 * @name before
 10.5370 +		 * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
 10.5371 +		 * @option Object target Target object to be weaved. 
 10.5372 +		 * @option String method Name of the function to be weaved. Regex are supported, but not on built-in objects.
 10.5373 +		 * @param Function advice Function containing the code that will get called before the execution of the point-cut.
 10.5374 +		 *
 10.5375 +		 * @type Array<Function>
 10.5376 +		 * @cat Plugins/General
 10.5377 +		 */
 10.5378 +		before : function(pointcut, advice)
 10.5379 +		{
 10.5380 +			return weave( pointcut, { type: _before, value: advice } );
 10.5381 +		},
 10.5382 +
 10.5383 +
 10.5384 +		/**
 10.5385 +		 * Creates an advice 'around' the defined point-cut. This type of advice can control the point-cut method execution by calling
 10.5386 +		 * the functions '.proceed()' on the 'invocation' object, and also, can modify the arguments collection before sending them to the function call.
 10.5387 +		 * This function returns an array of weaved aspects (Function).
 10.5388 +		 *
 10.5389 +		 * @example jQuery.aop.around( {target: window, method: 'MyGlobalMethod'}, function(invocation) {
 10.5390 +		 *                alert('# of Arguments: ' + invocation.arguments.length); 
 10.5391 +		 *                return invocation.proceed(); 
 10.5392 +		 *          } );
 10.5393 +		 * @result Array<Function>
 10.5394 +		 *
 10.5395 +		 * @example jQuery.aop.around( {target: String, method: 'indexOf'}, function(invocation) { 
 10.5396 +		 *                alert('Searching: ' + invocation.arguments[0] + ' on: ' + this); 
 10.5397 +		 *                return invocation.proceed(); 
 10.5398 +		 *          } );
 10.5399 +		 * @result Array<Function>
 10.5400 +		 *
 10.5401 +		 * @example jQuery.aop.around( {target: window, method: /Get(\d+)/}, function(invocation) {
 10.5402 +		 *                alert('Executing ' + invocation.method); 
 10.5403 +		 *                return invocation.proceed(); 
 10.5404 +		 *          } );
 10.5405 +		 * @desc Matches all global methods starting with 'Get' and followed by a number.
 10.5406 +		 * @result Array<Function>
 10.5407 +		 *
 10.5408 +		 *
 10.5409 +		 * @name around
 10.5410 +		 * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
 10.5411 +		 * @option Object target Target object to be weaved. 
 10.5412 +		 * @option String method Name of the function to be weaved. Regex are supported, but not on built-in objects.
 10.5413 +		 * @param Function advice Function containing the code that will get called around the execution of the point-cut. This advice will be called with one
 10.5414 +		 *                        argument containing one function '.proceed()', the collection of arguments '.arguments', and the matched method name '.method'.
 10.5415 +		 *
 10.5416 +		 * @type Array<Function>
 10.5417 +		 * @cat Plugins/General
 10.5418 +		 */
 10.5419 +		around : function(pointcut, advice)
 10.5420 +		{
 10.5421 +			return weave( pointcut, { type: _around, value: advice } );
 10.5422 +		},
 10.5423 +
 10.5424 +		/**
 10.5425 +		 * Creates an introduction on the defined point-cut. This type of advice replaces any existing methods with the same
 10.5426 +		 * name. To restore them, just unweave it.
 10.5427 +		 * This function returns an array with only one weaved aspect (Function).
 10.5428 +		 *
 10.5429 +		 * @example jQuery.aop.introduction( {target: window, method: 'MyGlobalMethod'}, function(result) { alert('Returned: ' + result); } );
 10.5430 +		 * @result Array<Function>
 10.5431 +		 *
 10.5432 +		 * @example jQuery.aop.introduction( {target: String, method: 'log'}, function() { alert('Console: ' + this); } );
 10.5433 +		 * @result Array<Function>
 10.5434 +		 *
 10.5435 +		 * @name introduction
 10.5436 +		 * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
 10.5437 +		 * @option Object target Target object to be weaved. 
 10.5438 +		 * @option String method Name of the function to be weaved.
 10.5439 +		 * @param Function advice Function containing the code that will be executed on the point-cut. 
 10.5440 +		 *
 10.5441 +		 * @type Array<Function>
 10.5442 +		 * @cat Plugins/General
 10.5443 +		 */
 10.5444 +		introduction : function(pointcut, advice)
 10.5445 +		{
 10.5446 +			return weave( pointcut, { type: _intro, value: advice } );
 10.5447 +		},
 10.5448 +		
 10.5449 +		/**
 10.5450 +		 * Configures global options.
 10.5451 +		 *
 10.5452 +		 * @name setup
 10.5453 +		 * @param Map settings Configuration options.
 10.5454 +		 * @option Boolean regexMatch Enables/disables regex matching of method names.
 10.5455 +		 *
 10.5456 +		 * @example jQuery.aop.setup( { regexMatch: false } );
 10.5457 +		 * @desc Disable regex matching.
 10.5458 +		 *
 10.5459 +		 * @type Void
 10.5460 +		 * @cat Plugins/General
 10.5461 +		 */
 10.5462 +		setup: function(settings)
 10.5463 +		{
 10.5464 +			_regexEnabled = settings.regexMatch;
 10.5465 +		}
 10.5466 +	};
 10.5467 +
 10.5468 +})();
 10.5469 +
 10.5470 +
 10.5471 +
 10.5472 +
 10.5473 +/**
 10.5474 + * @name EventTarget
 10.5475 + * @w3c:domlevel 2
 10.5476 + * @uri -//TODO: paste dom event level 2 w3c spc uri here
 10.5477 + */
 10.5478 +EventTarget = function(){};
 10.5479 +EventTarget.prototype.addEventListener = function(type, fn, phase){
 10.5480 +    __addEventListener__(this, type, fn, phase);
 10.5481 +};
 10.5482 +EventTarget.prototype.removeEventListener = function(type, fn){
 10.5483 +    __removeEventListener__(this, type, fn);
 10.5484 +};
 10.5485 +EventTarget.prototype.dispatchEvent = function(event, bubbles){
 10.5486 +    __dispatchEvent__(this, event, bubbles);
 10.5487 +};
 10.5488 +
 10.5489 +__extend__(Node.prototype, EventTarget.prototype);
 10.5490 +
 10.5491 +
 10.5492 +var $events = [{}];
 10.5493 +
 10.5494 +function __addEventListener__(target, type, fn, phase){
 10.5495 +    phase = !!phase?"CAPTURING":"BUBBLING";
 10.5496 +    if ( !target.uuid ) {
 10.5497 +        //console.log('event uuid %s %s', target, target.uuid);
 10.5498 +        target.uuid = $events.length+'';
 10.5499 +    }
 10.5500 +    if ( !$events[target.uuid] ) {
 10.5501 +        //console.log('creating listener for target: %s %s', target, target.uuid);
 10.5502 +        $events[target.uuid] = {};
 10.5503 +    }
 10.5504 +    if ( !$events[target.uuid][type] ){
 10.5505 +        //console.log('creating listener for type: %s %s %s', target, target.uuid, type);
 10.5506 +        $events[target.uuid][type] = {
 10.5507 +            CAPTURING:[],
 10.5508 +            BUBBLING:[]
 10.5509 +        };
 10.5510 +    }
 10.5511 +    if ( $events[target.uuid][type][phase].indexOf( fn ) < 0 ){
 10.5512 +        //console.log('adding event listener %s %s %s %s %s %s', target, target.uuid, type, phase,
 10.5513 +        //    $events[target.uuid][type][phase].length, $events[target.uuid][type][phase].indexOf( fn ));
 10.5514 +        //console.log('creating listener for function: %s %s %s', target, target.uuid, phase);
 10.5515 +        $events[target.uuid][type][phase].push( fn );
 10.5516 +        //console.log('adding event listener %s %s %s %s %s %s', target, target.uuid, type, phase,
 10.5517 +        //    $events[target.uuid][type][phase].length, $events[target.uuid][type][phase].indexOf( fn ));
 10.5518 +    }
 10.5519 +    //console.log('registered event listeners %s', $events.length);
 10.5520 +}
 10.5521 +
 10.5522 +function __removeEventListener__(target, type, fn, phase){
 10.5523 +
 10.5524 +    phase = !!phase?"CAPTURING":"BUBBLING";
 10.5525 +    if ( !target.uuid ) {
 10.5526 +        return;
 10.5527 +    }
 10.5528 +    if ( !$events[target.uuid] ) {
 10.5529 +        return;
 10.5530 +    }
 10.5531 +    if(type == '*'){
 10.5532 +        //used to clean all event listeners for a given node
 10.5533 +        //console.log('cleaning all event listeners for node %s %s',target, target.uuid);
 10.5534 +        delete $events[target.uuid];
 10.5535 +        return;
 10.5536 +    }else if ( !$events[target.uuid][type] ){
 10.5537 +        return;
 10.5538 +    }
 10.5539 +    $events[target.uuid][type][phase] =
 10.5540 +    $events[target.uuid][type][phase].filter(function(f){
 10.5541 +        //console.log('removing event listener %s %s %s %s', target, type, phase, fn);
 10.5542 +        return f != fn;
 10.5543 +    });
 10.5544 +}
 10.5545 +
 10.5546 +var __eventuuid__ = 0;
 10.5547 +function __dispatchEvent__(target, event, bubbles){
 10.5548 +
 10.5549 +    if (!event.uuid) {
 10.5550 +        event.uuid = __eventuuid__++;
 10.5551 +    }
 10.5552 +    //the window scope defines the $event object, for IE(^^^) compatibility;
 10.5553 +    //$event = event;
 10.5554 +    //console.log('dispatching event %s', event.uuid);
 10.5555 +    if (bubbles === undefined || bubbles === null) {
 10.5556 +        bubbles = true;
 10.5557 +    }
 10.5558 +
 10.5559 +    if (!event.target) {
 10.5560 +        event.target = target;
 10.5561 +    }
 10.5562 +
 10.5563 +    //console.log('dispatching? %s %s %s', target, event.type, bubbles);
 10.5564 +    if ( event.type && (target.nodeType || target === window )) {
 10.5565 +
 10.5566 +        //console.log('dispatching event %s %s %s', target, event.type, bubbles);
 10.5567 +        __captureEvent__(target, event);
 10.5568 +
 10.5569 +        event.eventPhase = Event.AT_TARGET;
 10.5570 +        if ( target.uuid && $events[target.uuid] && $events[target.uuid][event.type] ) {
 10.5571 +            event.currentTarget = target;
 10.5572 +            //console.log('dispatching %s %s %s %s', target, event.type,
 10.5573 +            //  $events[target.uuid][event.type]['CAPTURING'].length);
 10.5574 +            $events[target.uuid][event.type].CAPTURING.forEach(function(fn){
 10.5575 +                //console.log('AT_TARGET (CAPTURING) event %s', fn);
 10.5576 +                var returnValue = fn( event );
 10.5577 +                //console.log('AT_TARGET (CAPTURING) return value %s', returnValue);
 10.5578 +                if(returnValue === false){
 10.5579 +                    event.stopPropagation();
 10.5580 +                }
 10.5581 +            });
 10.5582 +            //console.log('dispatching %s %s %s %s', target, event.type,
 10.5583 +            //  $events[target.uuid][event.type]['BUBBLING'].length);
 10.5584 +            $events[target.uuid][event.type].BUBBLING.forEach(function(fn){
 10.5585 +                //console.log('AT_TARGET (BUBBLING) event %s', fn);
 10.5586 +                var returnValue = fn( event );
 10.5587 +                //console.log('AT_TARGET (BUBBLING) return value %s', returnValue);
 10.5588 +                if(returnValue === false){
 10.5589 +                    event.stopPropagation();
 10.5590 +                }
 10.5591 +            });
 10.5592 +        }
 10.5593 +        if (target["on" + event.type]) {
 10.5594 +            target["on" + event.type](event);
 10.5595 +        }
 10.5596 +        if (bubbles && !event.cancelled){
 10.5597 +            __bubbleEvent__(target, event);
 10.5598 +        }
 10.5599 +        if(!event._preventDefault){
 10.5600 +            //At this point I'm guessing that just HTMLEvents are concerned
 10.5601 +            //with default behavior being executed in a browser but I could be
 10.5602 +            //wrong as usual.  The goal is much more to filter at this point
 10.5603 +            //what events have no need to be handled
 10.5604 +            //console.log('triggering default behavior for %s', event.type);
 10.5605 +            if(event.type in Envjs.defaultEventBehaviors){
 10.5606 +                Envjs.defaultEventBehaviors[event.type](event);
 10.5607 +            }
 10.5608 +        }
 10.5609 +        //console.log('deleting event %s', event.uuid);
 10.5610 +        event.target = null;
 10.5611 +        event = null;
 10.5612 +    }else{
 10.5613 +        throw new EventException(EventException.UNSPECIFIED_EVENT_TYPE_ERR);
 10.5614 +    }
 10.5615 +}
 10.5616 +
 10.5617 +function __captureEvent__(target, event){
 10.5618 +    var ancestorStack = [],
 10.5619 +        parent = target.parentNode;
 10.5620 +
 10.5621 +    event.eventPhase = Event.CAPTURING_PHASE;
 10.5622 +    while(parent){
 10.5623 +        if(parent.uuid && $events[parent.uuid] && $events[parent.uuid][event.type]){
 10.5624 +            ancestorStack.push(parent);
 10.5625 +        }
 10.5626 +        parent = parent.parentNode;
 10.5627 +    }
 10.5628 +    while(ancestorStack.length && !event.cancelled){
 10.5629 +        event.currentTarget = ancestorStack.pop();
 10.5630 +        if($events[event.currentTarget.uuid] && $events[event.currentTarget.uuid][event.type]){
 10.5631 +            $events[event.currentTarget.uuid][event.type].CAPTURING.forEach(function(fn){
 10.5632 +                var returnValue = fn( event );
 10.5633 +                if(returnValue === false){
 10.5634 +                    event.stopPropagation();
 10.5635 +                }
 10.5636 +            });
 10.5637 +        }
 10.5638 +    }
 10.5639 +}
 10.5640 +
 10.5641 +function __bubbleEvent__(target, event){
 10.5642 +    var parent = target.parentNode;
 10.5643 +    event.eventPhase = Event.BUBBLING_PHASE;
 10.5644 +    while(parent){
 10.5645 +        if(parent.uuid && $events[parent.uuid] && $events[parent.uuid][event.type] ){
 10.5646 +            event.currentTarget = parent;
 10.5647 +            $events[event.currentTarget.uuid][event.type].BUBBLING.forEach(function(fn){
 10.5648 +                var returnValue = fn( event );
 10.5649 +                if(returnValue === false){
 10.5650 +                    event.stopPropagation();
 10.5651 +                }
 10.5652 +            });
 10.5653 +        }
 10.5654 +        parent = parent.parentNode;
 10.5655 +    }
 10.5656 +}
 10.5657 +
 10.5658 +/**
 10.5659 + * @class Event
 10.5660 + */
 10.5661 +Event = function(options){
 10.5662 +    // event state is kept read-only by forcing
 10.5663 +    // a new object for each event.  This may not
 10.5664 +    // be appropriate in the long run and we'll
 10.5665 +    // have to decide if we simply dont adhere to
 10.5666 +    // the read-only restriction of the specification
 10.5667 +    this._bubbles = true;
 10.5668 +    this._cancelable = true;
 10.5669 +    this._cancelled = false;
 10.5670 +    this._currentTarget = null;
 10.5671 +    this._target = null;
 10.5672 +    this._eventPhase = Event.AT_TARGET;
 10.5673 +    this._timeStamp = new Date().getTime();
 10.5674 +    this._preventDefault = false;
 10.5675 +    this._stopPropogation = false;
 10.5676 +};
 10.5677 +
 10.5678 +__extend__(Event.prototype,{
 10.5679 +    get bubbles(){return this._bubbles;},
 10.5680 +    get cancelable(){return this._cancelable;},
 10.5681 +    get currentTarget(){return this._currentTarget;},
 10.5682 +    set currentTarget(currentTarget){ this._currentTarget = currentTarget; },
 10.5683 +    get eventPhase(){return this._eventPhase;},
 10.5684 +    set eventPhase(eventPhase){this._eventPhase = eventPhase;},
 10.5685 +    get target(){return this._target;},
 10.5686 +    set target(target){ this._target = target;},
 10.5687 +    get timeStamp(){return this._timeStamp;},
 10.5688 +    get type(){return this._type;},
 10.5689 +    initEvent: function(type, bubbles, cancelable){
 10.5690 +        this._type=type?type:'';
 10.5691 +        this._bubbles=!!bubbles;
 10.5692 +        this._cancelable=!!cancelable;
 10.5693 +    },
 10.5694 +    preventDefault: function(){
 10.5695 +        this._preventDefault = true;
 10.5696 +    },
 10.5697 +    stopPropagation: function(){
 10.5698 +        if(this._cancelable){
 10.5699 +            this._cancelled = true;
 10.5700 +            this._bubbles = false;
 10.5701 +        }
 10.5702 +    },
 10.5703 +    get cancelled(){
 10.5704 +        return this._cancelled;
 10.5705 +    },
 10.5706 +    toString: function(){
 10.5707 +        return '[object Event]';
 10.5708 +    }
 10.5709 +});
 10.5710 +
 10.5711 +__extend__(Event,{
 10.5712 +    CAPTURING_PHASE : 1,
 10.5713 +    AT_TARGET       : 2,
 10.5714 +    BUBBLING_PHASE  : 3
 10.5715 +});
 10.5716 +
 10.5717 +
 10.5718 +
 10.5719 +/**
 10.5720 + * @name UIEvent
 10.5721 + * @param {Object} options
 10.5722 + */
 10.5723 +UIEvent = function(options) {
 10.5724 +    this._view = null;
 10.5725 +    this._detail = 0;
 10.5726 +};
 10.5727 +
 10.5728 +UIEvent.prototype = new Event();
 10.5729 +__extend__(UIEvent.prototype,{
 10.5730 +    get view(){
 10.5731 +        return this._view;
 10.5732 +    },
 10.5733 +    get detail(){
 10.5734 +        return this._detail;
 10.5735 +    },
 10.5736 +    initUIEvent: function(type, bubbles, cancelable, windowObject, detail){
 10.5737 +        this.initEvent(type, bubbles, cancelable);
 10.5738 +        this._detail = 0;
 10.5739 +        this._view = windowObject;
 10.5740 +    }
 10.5741 +});
 10.5742 +
 10.5743 +var $onblur,
 10.5744 +    $onfocus,
 10.5745 +    $onresize;
 10.5746 +
 10.5747 +
 10.5748 +/**
 10.5749 + * @name MouseEvent
 10.5750 + * @w3c:domlevel 2 
 10.5751 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
 10.5752 + */
 10.5753 +MouseEvent = function(options) {
 10.5754 +    this._screenX= 0;
 10.5755 +    this._screenY= 0;
 10.5756 +    this._clientX= 0;
 10.5757 +    this._clientY= 0;
 10.5758 +    this._ctrlKey= false;
 10.5759 +    this._metaKey= false;
 10.5760 +    this._altKey= false;
 10.5761 +    this._button= null;
 10.5762 +    this._relatedTarget= null;
 10.5763 +};
 10.5764 +MouseEvent.prototype = new UIEvent();
 10.5765 +__extend__(MouseEvent.prototype,{
 10.5766 +    get screenX(){
 10.5767 +        return this._screenX;
 10.5768 +    },
 10.5769 +    get screenY(){
 10.5770 +        return this._screenY;
 10.5771 +    },
 10.5772 +    get clientX(){
 10.5773 +        return this._clientX;
 10.5774 +    },
 10.5775 +    get clientY(){
 10.5776 +        return this._clientY;
 10.5777 +    },
 10.5778 +    get ctrlKey(){
 10.5779 +        return this._ctrlKey;
 10.5780 +    },
 10.5781 +    get altKey(){
 10.5782 +        return this._altKey;
 10.5783 +    },
 10.5784 +    get shiftKey(){
 10.5785 +        return this._shiftKey;
 10.5786 +    },
 10.5787 +    get metaKey(){
 10.5788 +        return this._metaKey;
 10.5789 +    },
 10.5790 +    get button(){
 10.5791 +        return this._button;
 10.5792 +    },
 10.5793 +    get relatedTarget(){
 10.5794 +        return this._relatedTarget;
 10.5795 +    },
 10.5796 +    initMouseEvent: function(type, bubbles, cancelable, windowObject, detail,
 10.5797 +            screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, 
 10.5798 +            metaKey, button, relatedTarget){
 10.5799 +        this.initUIEvent(type, bubbles, cancelable, windowObject, detail);
 10.5800 +        this._screenX = screenX;
 10.5801 +        this._screenY = screenY;
 10.5802 +        this._clientX = clientX;
 10.5803 +        this._clientY = clientY;
 10.5804 +        this._ctrlKey = ctrlKey;
 10.5805 +        this._altKey = altKey;
 10.5806 +        this._shiftKey = shiftKey;
 10.5807 +        this._metaKey = metaKey;
 10.5808 +        this._button = button;
 10.5809 +        this._relatedTarget = relatedTarget;
 10.5810 +    }
 10.5811 +});
 10.5812 +
 10.5813 +/**
 10.5814 + * Interface KeyboardEvent (introduced in DOM Level 3)
 10.5815 + */
 10.5816 +KeyboardEvent = function(options) {
 10.5817 +    this._keyIdentifier = 0;
 10.5818 +    this._keyLocation = 0;
 10.5819 +    this._ctrlKey = false;
 10.5820 +    this._metaKey = false;
 10.5821 +    this._altKey = false;
 10.5822 +    this._metaKey = false;
 10.5823 +};
 10.5824 +KeyboardEvent.prototype = new UIEvent();
 10.5825 +
 10.5826 +__extend__(KeyboardEvent.prototype,{
 10.5827 +
 10.5828 +    get ctrlKey(){
 10.5829 +        return this._ctrlKey;
 10.5830 +    },
 10.5831 +    get altKey(){
 10.5832 +        return this._altKey;
 10.5833 +    },
 10.5834 +    get shiftKey(){
 10.5835 +        return this._shiftKey;
 10.5836 +    },
 10.5837 +    get metaKey(){
 10.5838 +        return this._metaKey;
 10.5839 +    },
 10.5840 +    get button(){
 10.5841 +        return this._button;
 10.5842 +    },
 10.5843 +    get relatedTarget(){
 10.5844 +        return this._relatedTarget;
 10.5845 +    },
 10.5846 +    getModifiersState: function(keyIdentifier){
 10.5847 +
 10.5848 +    },
 10.5849 +    initMouseEvent: function(type, bubbles, cancelable, windowObject,
 10.5850 +            keyIdentifier, keyLocation, modifiersList, repeat){
 10.5851 +        this.initUIEvent(type, bubbles, cancelable, windowObject, 0);
 10.5852 +        this._keyIdentifier = keyIdentifier;
 10.5853 +        this._keyLocation = keyLocation;
 10.5854 +        this._modifiersList = modifiersList;
 10.5855 +        this._repeat = repeat;
 10.5856 +    }
 10.5857 +});
 10.5858 +
 10.5859 +KeyboardEvent.DOM_KEY_LOCATION_STANDARD      = 0;
 10.5860 +KeyboardEvent.DOM_KEY_LOCATION_LEFT          = 1;
 10.5861 +KeyboardEvent.DOM_KEY_LOCATION_RIGHT         = 2;
 10.5862 +KeyboardEvent.DOM_KEY_LOCATION_NUMPAD        = 3;
 10.5863 +KeyboardEvent.DOM_KEY_LOCATION_MOBILE        = 4;
 10.5864 +KeyboardEvent.DOM_KEY_LOCATION_JOYSTICK      = 5;
 10.5865 +
 10.5866 +
 10.5867 +
 10.5868 +//We dont fire mutation events until someone has registered for them
 10.5869 +var __supportedMutations__ = /DOMSubtreeModified|DOMNodeInserted|DOMNodeRemoved|DOMAttrModified|DOMCharacterDataModified/;
 10.5870 +
 10.5871 +var __fireMutationEvents__ = Aspect.before({
 10.5872 +    target: EventTarget,
 10.5873 +    method: 'addEventListener'
 10.5874 +}, function(target, type){
 10.5875 +    if(type && type.match(__supportedMutations__)){
 10.5876 +        //unweaving removes the __addEventListener__ aspect
 10.5877 +        __fireMutationEvents__.unweave();
 10.5878 +        // These two methods are enough to cover all dom 2 manipulations
 10.5879 +        Aspect.around({
 10.5880 +            target: Node,
 10.5881 +            method:"removeChild"
 10.5882 +        }, function(invocation){
 10.5883 +            var event,
 10.5884 +                node = invocation.arguments[0];
 10.5885 +            event = node.ownerDocument.createEvent('MutationEvents');
 10.5886 +            event.initEvent('DOMNodeRemoved', true, false, node.parentNode, null, null, null, null);
 10.5887 +            node.dispatchEvent(event, false);
 10.5888 +            return invocation.proceed();
 10.5889 +
 10.5890 +        });
 10.5891 +        Aspect.around({
 10.5892 +            target: Node,
 10.5893 +            method:"appendChild"
 10.5894 +        }, function(invocation) {
 10.5895 +            var event,
 10.5896 +                node = invocation.proceed();
 10.5897 +            event = node.ownerDocument.createEvent('MutationEvents');
 10.5898 +            event.initEvent('DOMNodeInserted', true, false, node.parentNode, null, null, null, null);
 10.5899 +            node.dispatchEvent(event, false);
 10.5900 +            return node;
 10.5901 +        });
 10.5902 +    }
 10.5903 +});
 10.5904 +
 10.5905 +/**
 10.5906 + * @name MutationEvent
 10.5907 + * @param {Object} options
 10.5908 + */
 10.5909 +MutationEvent = function(options) {
 10.5910 +    this._cancelable = false;
 10.5911 +    this._timeStamp = 0;
 10.5912 +};
 10.5913 +
 10.5914 +MutationEvent.prototype = new Event();
 10.5915 +__extend__(MutationEvent.prototype,{
 10.5916 +    get relatedNode(){
 10.5917 +        return this._relatedNode;
 10.5918 +    },
 10.5919 +    get prevValue(){
 10.5920 +        return this._prevValue;
 10.5921 +    },
 10.5922 +    get newValue(){
 10.5923 +        return this._newValue;
 10.5924 +    },
 10.5925 +    get attrName(){
 10.5926 +        return this._attrName;
 10.5927 +    },
 10.5928 +    get attrChange(){
 10.5929 +        return this._attrChange;
 10.5930 +    },
 10.5931 +    initMutationEvent: function( type, bubbles, cancelable,
 10.5932 +            relatedNode, prevValue, newValue, attrName, attrChange ){
 10.5933 +        this._relatedNode = relatedNode;
 10.5934 +        this._prevValue = prevValue;
 10.5935 +        this._newValue = newValue;
 10.5936 +        this._attrName = attrName;
 10.5937 +        this._attrChange = attrChange;
 10.5938 +        switch(type){
 10.5939 +            case "DOMSubtreeModified":
 10.5940 +                this.initEvent(type, true, false);
 10.5941 +                break;
 10.5942 +            case "DOMNodeInserted":
 10.5943 +                this.initEvent(type, true, false);
 10.5944 +                break;
 10.5945 +            case "DOMNodeRemoved":
 10.5946 +                this.initEvent(type, true, false);
 10.5947 +                break;
 10.5948 +            case "DOMNodeRemovedFromDocument":
 10.5949 +                this.initEvent(type, false, false);
 10.5950 +                break;
 10.5951 +            case "DOMNodeInsertedIntoDocument":
 10.5952 +                this.initEvent(type, false, false);
 10.5953 +                break;
 10.5954 +            case "DOMAttrModified":
 10.5955 +                this.initEvent(type, true, false);
 10.5956 +                break;
 10.5957 +            case "DOMCharacterDataModified":
 10.5958 +                this.initEvent(type, true, false);
 10.5959 +                break;
 10.5960 +            default:
 10.5961 +                this.initEvent(type, bubbles, cancelable);
 10.5962 +        }
 10.5963 +    }
 10.5964 +});
 10.5965 +
 10.5966 +// constants
 10.5967 +MutationEvent.ADDITION = 0;
 10.5968 +MutationEvent.MODIFICATION = 1;
 10.5969 +MutationEvent.REMOVAL = 2;
 10.5970 +
 10.5971 +
 10.5972 +/**
 10.5973 + * @name EventException
 10.5974 + */
 10.5975 +EventException = function(code) {
 10.5976 +  this.code = code;
 10.5977 +};
 10.5978 +EventException.UNSPECIFIED_EVENT_TYPE_ERR = 0;
 10.5979 +/**
 10.5980 + *
 10.5981 + * DOM Level 2: http://www.w3.org/TR/DOM-Level-2-Events/events.html
 10.5982 + * DOM Level 3: http://www.w3.org/TR/DOM-Level-3-Events/
 10.5983 + *
 10.5984 + * interface DocumentEvent {
 10.5985 + *   Event createEvent (in DOMString eventType)
 10.5986 + *      raises (DOMException);
 10.5987 + * };
 10.5988 + *
 10.5989 + * Firefox (3.6) exposes DocumentEvent
 10.5990 + * Safari (4) does NOT.
 10.5991 + */
 10.5992 +
 10.5993 +/**
 10.5994 + * TODO: Not sure we need a full prototype.  We not just an regular object?
 10.5995 + */
 10.5996 +DocumentEvent = function(){};
 10.5997 +DocumentEvent.prototype.__EventMap__ = {
 10.5998 +    // Safari4: singular and plural forms accepted
 10.5999 +    // Firefox3.6: singular and plural forms accepted
 10.6000 +    'Event'          : Event,
 10.6001 +    'Events'         : Event,
 10.6002 +    'UIEvent'        : UIEvent,
 10.6003 +    'UIEvents'       : UIEvent,
 10.6004 +    'MouseEvent'     : MouseEvent,
 10.6005 +    'MouseEvents'    : MouseEvent,
 10.6006 +    'MutationEvent'  : MutationEvent,
 10.6007 +    'MutationEvents' : MutationEvent,
 10.6008 +
 10.6009 +    // Safari4: accepts HTMLEvents, but not HTMLEvent
 10.6010 +    // Firefox3.6: accepts HTMLEvents, but not HTMLEvent
 10.6011 +    'HTMLEvent'      : Event,
 10.6012 +    'HTMLEvents'     : Event,
 10.6013 +
 10.6014 +    // Safari4: both not accepted
 10.6015 +    // Firefox3.6, only KeyEvents is accepted
 10.6016 +    'KeyEvent'       : KeyboardEvent,
 10.6017 +    'KeyEvents'      : KeyboardEvent,
 10.6018 +
 10.6019 +    // Safari4: both accepted
 10.6020 +    // Firefox3.6: none accepted
 10.6021 +    'KeyboardEvent'  : KeyboardEvent,
 10.6022 +    'KeyboardEvents' : KeyboardEvent
 10.6023 +};
 10.6024 +
 10.6025 +DocumentEvent.prototype.createEvent = function(eventType) {
 10.6026 +    var Clazz = this.__EventMap__[eventType];
 10.6027 +    if (Clazz) {
 10.6028 +        return new Clazz();
 10.6029 +    }
 10.6030 +    throw(new DOMException(DOMException.NOT_SUPPORTED_ERR));
 10.6031 +};
 10.6032 +
 10.6033 +__extend__(Document.prototype, DocumentEvent.prototype);
 10.6034 +
 10.6035 +/**
 10.6036 + * @author john resig & the envjs team
 10.6037 + * @uri http://www.envjs.com/
 10.6038 + * @copyright 2008-2010
 10.6039 + * @license MIT
 10.6040 + */
 10.6041 +//CLOSURE_END
 10.6042 +}());
 10.6043 +
 10.6044 +/*
 10.6045 + * Envjs timer.1.2.13 
 10.6046 + * Pure JavaScript Browser Environment
 10.6047 + * By John Resig <http://ejohn.org/> and the Envjs Team
 10.6048 + * Copyright 2008-2010 John Resig, under the MIT License
 10.6049 + * 
 10.6050 + * Parts of the implementation were originally written by:\
 10.6051 + * Steven Parkes
 10.6052 + * 
 10.6053 + * requires Envjs.wait, Envjs.sleep, Envjs.WAIT_INTERVAL
 10.6054 + */
 10.6055 +var setTimeout,
 10.6056 +    clearTimeout,
 10.6057 +    setInterval,
 10.6058 +    clearInterval;
 10.6059 +    
 10.6060 +/*
 10.6061 + * Envjs timer.1.2.13 
 10.6062 + * Pure JavaScript Browser Environment
 10.6063 + * By John Resig <http://ejohn.org/> and the Envjs Team
 10.6064 + * Copyright 2008-2010 John Resig, under the MIT License
 10.6065 + */
 10.6066 +
 10.6067 +//CLOSURE_START
 10.6068 +(function(){
 10.6069 +
 10.6070 +
 10.6071 +
 10.6072 +
 10.6073 +/*
 10.6074 +*       timer.js
 10.6075 +*   implementation provided by Steven Parkes
 10.6076 +*/
 10.6077 +
 10.6078 +//private
 10.6079 +var $timers = [],
 10.6080 +    EVENT_LOOP_RUNNING = false;
 10.6081 +
 10.6082 +$timers.lock = function(fn){
 10.6083 +    Envjs.sync(fn)();
 10.6084 +};
 10.6085 +
 10.6086 +//private internal class
 10.6087 +var Timer = function(fn, interval){
 10.6088 +    this.fn = fn;
 10.6089 +    this.interval = interval;
 10.6090 +    this.at = Date.now() + interval;
 10.6091 +    // allows for calling wait() from callbacks
 10.6092 +    this.running = false;
 10.6093 +};
 10.6094 +
 10.6095 +Timer.prototype.start = function(){};
 10.6096 +Timer.prototype.stop = function(){};
 10.6097 +
 10.6098 +//static
 10.6099 +Timer.normalize = function(time) {
 10.6100 +    time = time*1;
 10.6101 +    if ( isNaN(time) || time < 0 ) {
 10.6102 +        time = 0;
 10.6103 +    }
 10.6104 +
 10.6105 +    if ( EVENT_LOOP_RUNNING && time < Timer.MIN_TIME ) {
 10.6106 +        time = Timer.MIN_TIME;
 10.6107 +    }
 10.6108 +    return time;
 10.6109 +};
 10.6110 +// html5 says this should be at least 4, but the parser is using
 10.6111 +// a setTimeout for the SAX stuff which messes up the world
 10.6112 +Timer.MIN_TIME = /* 4 */ 0;
 10.6113 +
 10.6114 +/**
 10.6115 + * @function setTimeout
 10.6116 + * @param {Object} fn
 10.6117 + * @param {Object} time
 10.6118 + */
 10.6119 +setTimeout = function(fn, time){
 10.6120 +    var num;
 10.6121 +    time = Timer.normalize(time);
 10.6122 +    $timers.lock(function(){
 10.6123 +        num = $timers.length+1;
 10.6124 +        var tfn;
 10.6125 +        if (typeof fn == 'string') {
 10.6126 +            tfn = function() {
 10.6127 +                try {
 10.6128 +                    // eval in global scope
 10.6129 +                    eval(fn, null);
 10.6130 +                // } catch (e) {
 10.6131 +                //     console.log('timer error %s %s', fn, e);
 10.6132 +                } finally {
 10.6133 +                    clearInterval(num);
 10.6134 +                }
 10.6135 +            };
 10.6136 +        } else {
 10.6137 +            tfn = function() {
 10.6138 +                try {
 10.6139 +                    fn();
 10.6140 +                // } catch (e) {
 10.6141 +                //     console.log('timer error %s %s', fn, e);
 10.6142 +                } finally {
 10.6143 +                    clearInterval(num);
 10.6144 +                }
 10.6145 +            };
 10.6146 +        }
 10.6147 +        //console.log("Creating timer number %s", num);
 10.6148 +        $timers[num] = new Timer(tfn, time);
 10.6149 +        $timers[num].start();
 10.6150 +    });
 10.6151 +    return num;
 10.6152 +};
 10.6153 +
 10.6154 +/**
 10.6155 + * @function setInterval
 10.6156 + * @param {Object} fn
 10.6157 + * @param {Object} time
 10.6158 + */
 10.6159 +setInterval = function(fn, time){
 10.6160 +    //console.log('setting interval %s %s', time, fn.toString().substring(0,64));
 10.6161 +    time = Timer.normalize(time);
 10.6162 +    if ( time < 10 ) {
 10.6163 +        time = 10;
 10.6164 +    }
 10.6165 +    if (typeof fn == 'string') {
 10.6166 +        var fnstr = fn;
 10.6167 +        fn = function() {
 10.6168 +            eval(fnstr);
 10.6169 +        };
 10.6170 +    }
 10.6171 +    var num;
 10.6172 +    $timers.lock(function(){
 10.6173 +        num = $timers.length+1;
 10.6174 +        //Envjs.debug("Creating timer number "+num);
 10.6175 +        $timers[num] = new Timer(fn, time);
 10.6176 +        $timers[num].start();
 10.6177 +    });
 10.6178 +    return num;
 10.6179 +};
 10.6180 +
 10.6181 +/**
 10.6182 + * clearInterval
 10.6183 + * @param {Object} num
 10.6184 + */
 10.6185 +clearInterval = clearTimeout = function(num){
 10.6186 +    //console.log("clearing interval "+num);
 10.6187 +    $timers.lock(function(){
 10.6188 +        if ( $timers[num] ) {
 10.6189 +            $timers[num].stop();
 10.6190 +            delete $timers[num];
 10.6191 +        }
 10.6192 +    });
 10.6193 +};
 10.6194 +
 10.6195 +// wait === null/undefined: execute any timers as they fire,
 10.6196 +//  waiting until there are none left
 10.6197 +// wait(n) (n > 0): execute any timers as they fire until there
 10.6198 +//  are none left waiting at least n ms but no more, even if there
 10.6199 +//  are future events/current threads
 10.6200 +// wait(0): execute any immediately runnable timers and return
 10.6201 +// wait(-n): keep sleeping until the next event is more than n ms
 10.6202 +//  in the future
 10.6203 +//
 10.6204 +// TODO: make a priority queue ...
 10.6205 +
 10.6206 +Envjs.wait = function(wait) {
 10.6207 +    //console.log('wait %s', wait);
 10.6208 +    var delta_wait,
 10.6209 +        start = Date.now(),
 10.6210 +        was_running = EVENT_LOOP_RUNNING;
 10.6211 +
 10.6212 +    if (wait < 0) {
 10.6213 +        delta_wait = -wait;
 10.6214 +        wait = 0;
 10.6215 +    }
 10.6216 +    EVENT_LOOP_RUNNING = true;
 10.6217 +    if (wait !== 0 && wait !== null && wait !== undefined){
 10.6218 +        wait += Date.now();
 10.6219 +    }
 10.6220 +
 10.6221 +    var earliest,
 10.6222 +        timer,
 10.6223 +        sleep,
 10.6224 +        index,
 10.6225 +        goal,
 10.6226 +        now,
 10.6227 +        nextfn;
 10.6228 +
 10.6229 +    for (;;) {
 10.6230 +        //console.log('timer loop');
 10.6231 +        earliest = sleep = goal = now = nextfn = null;
 10.6232 +        $timers.lock(function(){
 10.6233 +            for(index in $timers){
 10.6234 +                if( isNaN(index*0) ) {
 10.6235 +                    continue;
 10.6236 +                }
 10.6237 +                timer = $timers[index];
 10.6238 +                // determine timer with smallest run-at time that is
 10.6239 +                // not already running
 10.6240 +                if( !timer.running && ( !earliest || timer.at < earliest.at) ) {
 10.6241 +                    earliest = timer;
 10.6242 +                }
 10.6243 +            }
 10.6244 +        });
 10.6245 +        //next sleep time
 10.6246 +        sleep = earliest && earliest.at - Date.now();
 10.6247 +        if ( earliest && sleep <= 0 ) {
 10.6248 +            nextfn = earliest.fn;
 10.6249 +            try {
 10.6250 +                //console.log('running stack %s', nextfn.toString().substring(0,64));
 10.6251 +                earliest.running = true;
 10.6252 +                nextfn();
 10.6253 +            // } catch (e) {
 10.6254 +            //     console.log('timer error %s %s', nextfn, e);
 10.6255 +            } finally {
 10.6256 +                earliest.running = false;
 10.6257 +            }
 10.6258 +            goal = earliest.at + earliest.interval;
 10.6259 +            now = Date.now();
 10.6260 +            if ( goal < now ) {
 10.6261 +                earliest.at = now;
 10.6262 +            } else {
 10.6263 +                earliest.at = goal;
 10.6264 +            }
 10.6265 +            continue;
 10.6266 +        }
 10.6267 +
 10.6268 +        // bunch of subtle cases here ...
 10.6269 +        if ( !earliest ) {
 10.6270 +            // no events in the queue (but maybe XHR will bring in events, so ...
 10.6271 +            if ( !wait || wait < Date.now() ) {
 10.6272 +                // Loop ends if there are no events and a wait hasn't been
 10.6273 +                // requested or has expired
 10.6274 +                break;
 10.6275 +            }
 10.6276 +        // no events, but a wait requested: fall through to sleep
 10.6277 +        } else {
 10.6278 +            // there are events in the queue, but they aren't firable now
 10.6279 +            /*if ( delta_wait && sleep <= delta_wait ) {
 10.6280 +                //TODO: why waste a check on a tight
 10.6281 +                // loop if it just falls through?
 10.6282 +            // if they will happen within the next delta, fall through to sleep
 10.6283 +            } else */if ( wait === 0 || ( wait > 0 && wait < Date.now () ) ) {
 10.6284 +                // loop ends even if there are events but the user
 10.6285 +                // specifcally asked not to wait too long
 10.6286 +                break;
 10.6287 +            }
 10.6288 +            // there are events and the user wants to wait: fall through to sleep
 10.6289 +        }
 10.6290 +
 10.6291 +        // Related to ajax threads ... hopefully can go away ..
 10.6292 +        var interval =  Envjs.WAIT_INTERVAL || 100;
 10.6293 +        if ( !sleep || sleep > interval ) {
 10.6294 +            sleep = interval;
 10.6295 +        }
 10.6296 +        //console.log('sleeping %s', sleep);
 10.6297 +        Envjs.sleep(sleep);
 10.6298 +
 10.6299 +    }
 10.6300 +    EVENT_LOOP_RUNNING = was_running;
 10.6301 +};
 10.6302 +
 10.6303 +
 10.6304 +/**
 10.6305 + * @author john resig & the envjs team
 10.6306 + * @uri http://www.envjs.com/
 10.6307 + * @copyright 2008-2010
 10.6308 + * @license MIT
 10.6309 + */
 10.6310 +//CLOSURE_END
 10.6311 +}());
 10.6312 +/*
 10.6313 + * Pure JavaScript Browser Environment
 10.6314 + * By John Resig <http://ejohn.org/> and the Envjs Team
 10.6315 + * Copyright 2008-2010 John Resig, under the MIT License
 10.6316 + *
 10.6317 + * This file simply provides the global definitions we need to
 10.6318 + * be able to correctly implement to core browser DOM HTML interfaces.
 10.6319 + */
 10.6320 +var HTMLDocument,
 10.6321 +    HTMLElement,
 10.6322 +    HTMLCollection,
 10.6323 +    HTMLAnchorElement,
 10.6324 +    HTMLAreaElement,
 10.6325 +    HTMLBaseElement,
 10.6326 +    HTMLQuoteElement,
 10.6327 +    HTMLBodyElement,
 10.6328 +    HTMLBRElement,
 10.6329 +    HTMLButtonElement,
 10.6330 +    HTMLCanvasElement,
 10.6331 +    HTMLTableColElement,
 10.6332 +    HTMLModElement,
 10.6333 +    HTMLDivElement,
 10.6334 +    HTMLDListElement,
 10.6335 +    HTMLFieldSetElement,
 10.6336 +    HTMLFormElement,
 10.6337 +    HTMLFrameElement,
 10.6338 +    HTMLFrameSetElement,
 10.6339 +    HTMLHeadElement,
 10.6340 +    HTMLHeadingElement,
 10.6341 +    HTMLHRElement,
 10.6342 +    HTMLHtmlElement,
 10.6343 +    HTMLIFrameElement,
 10.6344 +    HTMLImageElement,
 10.6345 +    HTMLInputElement,
 10.6346 +    HTMLLabelElement,
 10.6347 +    HTMLLegendElement,
 10.6348 +    HTMLLIElement,
 10.6349 +    HTMLLinkElement,
 10.6350 +    HTMLMapElement,
 10.6351 +    HTMLMetaElement,
 10.6352 +    HTMLObjectElement,
 10.6353 +    HTMLOListElement,
 10.6354 +    HTMLOptGroupElement,
 10.6355 +    HTMLOptionElement,
 10.6356 +    HTMLParagraphElement,
 10.6357 +    HTMLParamElement,
 10.6358 +    HTMLPreElement,
 10.6359 +    HTMLScriptElement,
 10.6360 +    HTMLSelectElement,
 10.6361 +    HTMLSpanElement,
 10.6362 +    HTMLStyleElement,
 10.6363 +    HTMLTableElement,
 10.6364 +    HTMLTableSectionElement,
 10.6365 +    HTMLTableCellElement,
 10.6366 +    HTMLTableDataCellElement,
 10.6367 +    HTMLTableHeaderCellElement,
 10.6368 +    HTMLTableRowElement,
 10.6369 +    HTMLTextAreaElement,
 10.6370 +    HTMLTitleElement,
 10.6371 +    HTMLUListElement,
 10.6372 +    HTMLUnknownElement,
 10.6373 +    Image,
 10.6374 +    Option,
 10.6375 +    __loadImage__,
 10.6376 +    __loadLink__;
 10.6377 +
 10.6378 +/*
 10.6379 + * Envjs html.1.2.13 
 10.6380 + * Pure JavaScript Browser Environment
 10.6381 + * By John Resig <http://ejohn.org/> and the Envjs Team
 10.6382 + * Copyright 2008-2010 John Resig, under the MIT License
 10.6383 + */
 10.6384 +
 10.6385 +//CLOSURE_START
 10.6386 +(function(){
 10.6387 +
 10.6388 +
 10.6389 +
 10.6390 +
 10.6391 +
 10.6392 +/**
 10.6393 + * @author ariel flesler
 10.6394 + *    http://flesler.blogspot.com/2008/11/fast-trim-function-for-javascript.html
 10.6395 + * @param {Object} str
 10.6396 + */
 10.6397 +function __trim__( str ){
 10.6398 +    return (str || "").replace( /^\s+|\s+$/g, "" );
 10.6399 +}
 10.6400 +
 10.6401 +
 10.6402 +/**
 10.6403 + * @author john resig
 10.6404 + */
 10.6405 +// Helper method for extending one object with another.
 10.6406 +function __extend__(a,b) {
 10.6407 +    for ( var i in b ) {
 10.6408 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
 10.6409 +        if ( g || s ) {
 10.6410 +            if ( g ) { a.__defineGetter__(i, g); }
 10.6411 +            if ( s ) { a.__defineSetter__(i, s); }
 10.6412 +        } else {
 10.6413 +            a[i] = b[i];
 10.6414 +        }
 10.6415 +    } return a;
 10.6416 +}
 10.6417 +
 10.6418 +/**
 10.6419 + * @author john resig
 10.6420 + */
 10.6421 +//from jQuery
 10.6422 +function __setArray__( target, array ) {
 10.6423 +    // Resetting the length to 0, then using the native Array push
 10.6424 +    // is a super-fast way to populate an object with array-like properties
 10.6425 +    target.length = 0;
 10.6426 +    Array.prototype.push.apply( target, array );
 10.6427 +}
 10.6428 +
 10.6429 +/**
 10.6430 + * @class  HTMLDocument
 10.6431 + *      The Document interface represents the entire HTML or XML document.
 10.6432 + *      Conceptually, it is the root of the document tree, and provides
 10.6433 + *      the primary access to the document's data.
 10.6434 + *
 10.6435 + * @extends Document
 10.6436 + */
 10.6437 +HTMLDocument = function(implementation, ownerWindow, referrer) {
 10.6438 +    Document.apply(this, arguments);
 10.6439 +    this.referrer = referrer || '';
 10.6440 +    this.baseURI = "about:blank";
 10.6441 +    this.ownerWindow = ownerWindow;
 10.6442 +};
 10.6443 +
 10.6444 +HTMLDocument.prototype = new Document();
 10.6445 +
 10.6446 +__extend__(HTMLDocument.prototype, {
 10.6447 +    createElement: function(tagName){
 10.6448 +        var node;
 10.6449 +        tagName = tagName.toUpperCase();
 10.6450 +        // create Element specifying 'this' as ownerDocument
 10.6451 +        // This is an html document so we need to use explicit interfaces per the
 10.6452 +        //TODO: would be much faster as a big switch
 10.6453 +        switch(tagName){
 10.6454 +        case "A":
 10.6455 +            node = new HTMLAnchorElement(this);break;
 10.6456 +        case "AREA":
 10.6457 +            node = new HTMLAreaElement(this);break;
 10.6458 +        case "BASE":
 10.6459 +            node = new HTMLBaseElement(this);break;
 10.6460 +        case "BLOCKQUOTE":
 10.6461 +            node = new HTMLQuoteElement(this);break;
 10.6462 +        case "CANVAS":
 10.6463 +            node = new HTMLCanvasElement(this);break;
 10.6464 +        case "Q":
 10.6465 +            node = new HTMLQuoteElement(this);break;
 10.6466 +        case "BODY":
 10.6467 +            node = new HTMLBodyElement(this);break;
 10.6468 +        case "BR":
 10.6469 +            node = new HTMLBRElement(this);break;
 10.6470 +        case "BUTTON":
 10.6471 +            node = new HTMLButtonElement(this);break;
 10.6472 +        case "CAPTION":
 10.6473 +            node = new HTMLElement(this);break;
 10.6474 +        case "COL":
 10.6475 +            node = new HTMLTableColElement(this);break;
 10.6476 +        case "COLGROUP":
 10.6477 +            node = new HTMLTableColElement(this);break;
 10.6478 +        case "DEL":
 10.6479 +            node = new HTMLModElement(this);break;
 10.6480 +        case "INS":
 10.6481 +            node = new HTMLModElement(this);break;
 10.6482 +        case "DIV":
 10.6483 +            node = new HTMLDivElement(this);break;
 10.6484 +        case "DL":
 10.6485 +            node = new HTMLDListElement(this);break;
 10.6486 +        case "DT":
 10.6487 +            node = new HTMLElement(this); break;
 10.6488 +        case "FIELDSET":
 10.6489 +            node = new HTMLFieldSetElement(this);break;
 10.6490 +        case "FORM":
 10.6491 +            node = new HTMLFormElement(this);break;
 10.6492 +        case "FRAME":
 10.6493 +            node = new HTMLFrameElement(this);break;
 10.6494 +        case "H1":
 10.6495 +            node = new HTMLHeadingElement(this);break;
 10.6496 +        case "H2":
 10.6497 +            node = new HTMLHeadingElement(this);break;
 10.6498 +        case "H3":
 10.6499 +            node = new HTMLHeadingElement(this);break;
 10.6500 +        case "H4":
 10.6501 +            node = new HTMLHeadingElement(this);break;
 10.6502 +        case "H5":
 10.6503 +            node = new HTMLHeadingElement(this);break;
 10.6504 +        case "H6":
 10.6505 +            node = new HTMLHeadingElement(this);break;
 10.6506 +        case "HEAD":
 10.6507 +            node = new HTMLHeadElement(this);break;
 10.6508 +        case "HR":
 10.6509 +            node = new HTMLHRElement(this);break;
 10.6510 +        case "HTML":
 10.6511 +            node = new HTMLHtmlElement(this);break;
 10.6512 +        case "IFRAME":
 10.6513 +            node = new HTMLIFrameElement(this);break;
 10.6514 +        case "IMG":
 10.6515 +            node = new HTMLImageElement(this);break;
 10.6516 +        case "INPUT":
 10.6517 +            node = new HTMLInputElement(this);break;
 10.6518 +        case "LABEL":
 10.6519 +            node = new HTMLLabelElement(this);break;
 10.6520 +        case "LEGEND":
 10.6521 +            node = new HTMLLegendElement(this);break;
 10.6522 +        case "LI":
 10.6523 +            node = new HTMLLIElement(this);break;
 10.6524 +        case "LINK":
 10.6525 +            node = new HTMLLinkElement(this);break;
 10.6526 +        case "MAP":
 10.6527 +            node = new HTMLMapElement(this);break;
 10.6528 +        case "META":
 10.6529 +            node = new HTMLMetaElement(this);break;
 10.6530 +        case "NOSCRIPT":
 10.6531 +            node = new HTMLElement(this);break;
 10.6532 +        case "OBJECT":
 10.6533 +            node = new HTMLObjectElement(this);break;
 10.6534 +        case "OPTGROUP":
 10.6535 +            node = new HTMLOptGroupElement(this);break;
 10.6536 +        case "OL":
 10.6537 +            node = new HTMLOListElement(this); break;
 10.6538 +        case "OPTION":
 10.6539 +            node = new HTMLOptionElement(this);break;
 10.6540 +        case "P":
 10.6541 +            node = new HTMLParagraphElement(this);break;
 10.6542 +        case "PARAM":
 10.6543 +            node = new HTMLParamElement(this);break;
 10.6544 +        case "PRE":
 10.6545 +            node = new HTMLPreElement(this);break;
 10.6546 +        case "SCRIPT":
 10.6547 +            node = new HTMLScriptElement(this);break;
 10.6548 +        case "SELECT":
 10.6549 +            node = new HTMLSelectElement(this);break;
 10.6550 +        case "SMALL":
 10.6551 +            node = new HTMLElement(this);break;
 10.6552 +        case "SPAN":
 10.6553 +            node = new HTMLSpanElement(this);break;
 10.6554 +        case "STRONG":
 10.6555 +            node = new HTMLElement(this);break;
 10.6556 +        case "STYLE":
 10.6557 +            node = new HTMLStyleElement(this);break;
 10.6558 +        case "TABLE":
 10.6559 +            node = new HTMLTableElement(this);break;
 10.6560 +        case "TBODY":
 10.6561 +            node = new HTMLTableSectionElement(this);break;
 10.6562 +        case "TFOOT":
 10.6563 +            node = new HTMLTableSectionElement(this);break;
 10.6564 +        case "THEAD":
 10.6565 +            node = new HTMLTableSectionElement(this);break;
 10.6566 +        case "TD":
 10.6567 +            node = new HTMLTableDataCellElement(this);break;
 10.6568 +        case "TH":
 10.6569 +            node = new HTMLTableHeaderCellElement(this);break;
 10.6570 +        case "TEXTAREA":
 10.6571 +            node = new HTMLTextAreaElement(this);break;
 10.6572 +        case "TITLE":
 10.6573 +            node = new HTMLTitleElement(this);break;
 10.6574 +        case "TR":
 10.6575 +            node = new HTMLTableRowElement(this);break;
 10.6576 +        case "UL":
 10.6577 +            node = new HTMLUListElement(this);break;
 10.6578 +        default:
 10.6579 +            node = new HTMLUnknownElement(this);
 10.6580 +        }
 10.6581 +        // assign values to properties (and aliases)
 10.6582 +        node.nodeName  = tagName;
 10.6583 +        return node;
 10.6584 +    },
 10.6585 +    createElementNS : function (uri, local) {
 10.6586 +        //print('createElementNS :'+uri+" "+local);
 10.6587 +        if(!uri){
 10.6588 +            return this.createElement(local);
 10.6589 +        }else if ("http://www.w3.org/1999/xhtml" == uri) {
 10.6590 +            return this.createElement(local);
 10.6591 +        } else if ("http://www.w3.org/1998/Math/MathML" == uri) {
 10.6592 +            return this.createElement(local);
 10.6593 +        } else {
 10.6594 +            return Document.prototype.createElementNS.apply(this,[uri, local]);
 10.6595 +        }
 10.6596 +    },
 10.6597 +    get anchors(){
 10.6598 +        return new HTMLCollection(this.getElementsByTagName('a'));
 10.6599 +    },
 10.6600 +    get applets(){
 10.6601 +        return new HTMLCollection(this.getElementsByTagName('applet'));
 10.6602 +    },
 10.6603 +    get documentElement(){
 10.6604 +        var html = Document.prototype.__lookupGetter__('documentElement').apply(this,[]);
 10.6605 +        if( html === null){
 10.6606 +            html = this.createElement('html');
 10.6607 +            this.appendChild(html);
 10.6608 +            html.appendChild(this.createElement('head'));
 10.6609 +            html.appendChild(this.createElement('body'));
 10.6610 +        }
 10.6611 +        return html;
 10.6612 +    },
 10.6613 +    //document.head is non-standard
 10.6614 +    get head(){
 10.6615 +        //console.log('get head');
 10.6616 +        if (!this.documentElement) {
 10.6617 +            this.appendChild(this.createElement('html'));
 10.6618 +        }
 10.6619 +        var element = this.documentElement,
 10.6620 +        length = element.childNodes.length,
 10.6621 +        i;
 10.6622 +        //check for the presence of the head element in this html doc
 10.6623 +        for(i=0;i<length;i++){
 10.6624 +            if(element.childNodes[i].nodeType === Node.ELEMENT_NODE){
 10.6625 +                if(element.childNodes[i].tagName.toLowerCase() === 'head'){
 10.6626 +                    return element.childNodes[i];
 10.6627 +                }
 10.6628 +            }
 10.6629 +        }
 10.6630 +        //no head?  ugh bad news html.. I guess we'll force the issue?
 10.6631 +        var head = element.appendChild(this.createElement('head'));
 10.6632 +        return head;
 10.6633 +    },
 10.6634 +    get title(){
 10.6635 +        //console.log('get title');
 10.6636 +        if (!this.documentElement) {
 10.6637 +            this.appendChild(this.createElement('html'));
 10.6638 +        }
 10.6639 +        var title,
 10.6640 +        head = this.head,
 10.6641 +        length = head.childNodes.length,
 10.6642 +        i;
 10.6643 +        //check for the presence of the title element in this head element
 10.6644 +        for(i=0;i<length;i++){
 10.6645 +            if(head.childNodes[i].nodeType === Node.ELEMENT_NODE){
 10.6646 +                if(head.childNodes[i].tagName.toLowerCase() === 'title'){
 10.6647 +                    return head.childNodes[i].textContent;
 10.6648 +                }
 10.6649 +            }
 10.6650 +        }
 10.6651 +        //no title?  ugh bad news html.. I guess we'll force the issue?
 10.6652 +        title = head.appendChild(this.createElement('title'));
 10.6653 +        return title.appendChild(this.createTextNode('Untitled Document')).nodeValue;
 10.6654 +    },
 10.6655 +    set title(titleStr){
 10.6656 +        //console.log('set title %s', titleStr);
 10.6657 +        if (!this.documentElement) {
 10.6658 +            this.appendChild(this.createElement('html'));
 10.6659 +        }
 10.6660 +        var title = this.title;
 10.6661 +        title.textContent = titleStr;
 10.6662 +    },
 10.6663 +
 10.6664 +    get body(){
 10.6665 +        //console.log('get body');
 10.6666 +        if (!this.documentElement) {
 10.6667 +            this.appendChild(this.createElement('html'));
 10.6668 +        }
 10.6669 +        var body,
 10.6670 +        element = this.documentElement,
 10.6671 +        length = element.childNodes.length,
 10.6672 +        i;
 10.6673 +        //check for the presence of the head element in this html doc
 10.6674 +        for(i=0;i<length;i++){
 10.6675 +            if(element.childNodes[i].nodeType === Node.ELEMENT_NODE){
 10.6676 +                if(element.childNodes[i].tagName.toLowerCase() === 'body'){
 10.6677 +                    return element.childNodes[i];
 10.6678 +                }
 10.6679 +            }
 10.6680 +        }
 10.6681 +        //no head?  ugh bad news html.. I guess we'll force the issue?
 10.6682 +        return element.appendChild(this.createElement('body'));
 10.6683 +    },
 10.6684 +    set body(x){console.log('set body');/**in firefox this is a benevolent do nothing*/},
 10.6685 +    get cookie(){
 10.6686 +        return Envjs.getCookies(this.location+'');
 10.6687 +    },
 10.6688 +    set cookie(cookie){
 10.6689 +        return Envjs.setCookie(this.location+'', cookie);
 10.6690 +    },
 10.6691 +
 10.6692 +    /**
 10.6693 +     * document.location
 10.6694 +     *
 10.6695 +     * should be identical to window.location
 10.6696 +     *
 10.6697 +     * HTML5:
 10.6698 +     * http://dev.w3.org/html5/spec/Overview.html#the-location-interface
 10.6699 +     *
 10.6700 +     * Mozilla MDC:
 10.6701 +     * https://developer.mozilla.org/en/DOM/document.location
 10.6702 +     *
 10.6703 +     */
 10.6704 +    get location() {
 10.6705 +        if (this.ownerWindow) {
 10.6706 +            return this.ownerWindow.location;
 10.6707 +        } else {
 10.6708 +            return this.baseURI;
 10.6709 +        }
 10.6710 +    },
 10.6711 +    set location(url) {
 10.6712 +        this.baseURI = url;
 10.6713 +        if (this.ownerWindow) {
 10.6714 +            this.ownerWindow.location = url;
 10.6715 +        }
 10.6716 +    },
 10.6717 +
 10.6718 +    /**
 10.6719 +     * document.URL (read-only)
 10.6720 +     *
 10.6721 +     * HTML DOM Level 2:
 10.6722 +     * http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-46183437
 10.6723 +     *
 10.6724 +     * HTML5:
 10.6725 +     * http://dev.w3.org/html5/spec/Overview.html#dom-document-url
 10.6726 +     *
 10.6727 +     * Mozilla MDC:
 10.6728 +     * https://developer.mozilla.org/en/DOM/document.URL
 10.6729 +     */
 10.6730 +    get URL() {
 10.6731 +        return this.location;
 10.6732 +    },
 10.6733 +    set URL(url) {
 10.6734 +        this.location = url;
 10.6735 +    },
 10.6736 +
 10.6737 +    /**
 10.6738 +     * document.domain
 10.6739 +     *
 10.6740 +     * HTML5 Spec:
 10.6741 +     * http://dev.w3.org/html5/spec/Overview.html#dom-document-domain
 10.6742 +     *
 10.6743 +     * Mozilla MDC:
 10.6744 +     * https://developer.mozilla.org/en/DOM/document.domain
 10.6745 +     *
 10.6746 +     */
 10.6747 +    get domain(){
 10.6748 +        var HOSTNAME = new RegExp('\/\/([^\:\/]+)'),
 10.6749 +        matches = HOSTNAME.exec(this.baseURI);
 10.6750 +        return matches&&matches.length>1?matches[1]:"";
 10.6751 +    },
 10.6752 +    set domain(value){
 10.6753 +        var i,
 10.6754 +        domainParts = this.domain.split('.').reverse(),
 10.6755 +        newDomainParts = value.split('.').reverse();
 10.6756 +        if(newDomainParts.length > 1){
 10.6757 +            for(i=0;i<newDomainParts.length;i++){
 10.6758 +                if(!(newDomainParts[i] === domainParts[i])){
 10.6759 +                    return;
 10.6760 +                }
 10.6761 +            }
 10.6762 +            this.baseURI = this.baseURI.replace(domainParts.join('.'), value);
 10.6763 +        }
 10.6764 +    },
 10.6765 +
 10.6766 +    get forms(){
 10.6767 +        return new HTMLCollection(this.getElementsByTagName('form'));
 10.6768 +    },
 10.6769 +    get images(){
 10.6770 +        return new HTMLCollection(this.getElementsByTagName('img'));
 10.6771 +    },
 10.6772 +    get lastModified(){
 10.6773 +        /* TODO */
 10.6774 +        return this._lastModified;
 10.6775 +    },
 10.6776 +    get links(){
 10.6777 +        return new HTMLCollection(this.getElementsByTagName('a'));
 10.6778 +    },
 10.6779 +    getElementsByName : function(name){
 10.6780 +        //returns a real Array + the NodeList
 10.6781 +        var retNodes = __extend__([],new NodeList(this, this.documentElement)),
 10.6782 +        node;
 10.6783 +        // loop through all Elements
 10.6784 +        var all = this.getElementsByTagName('*');
 10.6785 +        for (var i=0; i < all.length; i++) {
 10.6786 +            node = all[i];
 10.6787 +            if (node.nodeType === Node.ELEMENT_NODE &&
 10.6788 +                node.getAttribute('name') == name) {
 10.6789 +                retNodes.push(node);
 10.6790 +            }
 10.6791 +        }
 10.6792 +        return retNodes;
 10.6793 +    },
 10.6794 +    toString: function(){
 10.6795 +        return "[object HTMLDocument]";
 10.6796 +    },
 10.6797 +    get innerHTML(){
 10.6798 +        return this.documentElement.outerHTML;
 10.6799 +    }
 10.6800 +});
 10.6801 +
 10.6802 +
 10.6803 +
 10.6804 +Aspect.around({
 10.6805 +    target: Node,
 10.6806 +    method:"appendChild"
 10.6807 +}, function(invocation) {
 10.6808 +    var event,
 10.6809 +    okay,
 10.6810 +    node = invocation.proceed(),
 10.6811 +    doc = node.ownerDocument;
 10.6812 +
 10.6813 +    //console.log('element appended: %s %s %s', node+'', node.nodeName, node.namespaceURI);
 10.6814 +    if((node.nodeType !== Node.ELEMENT_NODE)){
 10.6815 +        //for now we are only handling element insertions.  probably
 10.6816 +        //we will need to handle text node changes to script tags and
 10.6817 +        //changes to src attributes
 10.6818 +        return node;
 10.6819 +    }
 10.6820 +    //console.log('appended html element %s %s %s',
 10.6821 +    //             node.namespaceURI, node.nodeName, node);
 10.6822 +    switch(doc.parsing){
 10.6823 +        case true:
 10.6824 +            //handled by parser if included
 10.6825 +            //console.log('html document in parse mode');
 10.6826 +            break;
 10.6827 +        case false:
 10.6828 +            switch(node.namespaceURI){
 10.6829 +                case null:
 10.6830 +                    //fall through
 10.6831 +                case "":
 10.6832 +                    //fall through
 10.6833 +                case "http://www.w3.org/1999/xhtml":
 10.6834 +                    switch(node.tagName.toLowerCase()){
 10.6835 +                    case 'style':
 10.6836 +                        document.styleSheets.push(CSSStyleSheet(node));
 10.6837 +                        break;
 10.6838 +                    case 'script':
 10.6839 +                        if((this.nodeName.toLowerCase() === 'head')){
 10.6840 +                            try{
 10.6841 +                                okay = Envjs.loadLocalScript(node, null);
 10.6842 +                                //console.log('loaded script? %s %s', node.uuid, okay);
 10.6843 +                                // only fire event if we actually had something to load
 10.6844 +                                if (node.src && node.src.length > 0){
 10.6845 +                                    event = doc.createEvent('HTMLEvents');
 10.6846 +                                    event.initEvent( okay ? "load" : "error", false, false );
 10.6847 +                                    node.dispatchEvent( event, false );
 10.6848 +                                }
 10.6849 +                            }catch(e){
 10.6850 +                                console.log('error loading html element %s %e', node, e.toString());
 10.6851 +                            }
 10.6852 +                        }
 10.6853 +                        break;
 10.6854 +                    case 'frame':
 10.6855 +                    case 'iframe':
 10.6856 +                        node.contentWindow = { };
 10.6857 +                        node.contentDocument = new HTMLDocument(new DOMImplementation(), node.contentWindow);
 10.6858 +                        node.contentWindow.document = node.contentDocument;
 10.6859 +                        try{
 10.6860 +                            Window;
 10.6861 +                        }catch(e){
 10.6862 +                            node.contentDocument.addEventListener('DOMContentLoaded', function(){
 10.6863 +                                event = node.contentDocument.createEvent('HTMLEvents');
 10.6864 +                                event.initEvent("load", false, false);
 10.6865 +                                node.dispatchEvent( event, false );
 10.6866 +                            });
 10.6867 +                        }
 10.6868 +                        try{
 10.6869 +                            if (node.src && node.src.length > 0){
 10.6870 +                                //console.log("getting content document for (i)frame from %s", node.src);
 10.6871 +                                Envjs.loadFrame(node, Envjs.uri(node.src));
 10.6872 +                                event = node.contentDocument.createEvent('HTMLEvents');
 10.6873 +                                event.initEvent("load", false, false);
 10.6874 +                                node.dispatchEvent( event, false );
 10.6875 +                            }else{
 10.6876 +                                //I dont like this being here:
 10.6877 +                                //TODO: better  mix-in strategy so the try/catch isnt required
 10.6878 +                                try{
 10.6879 +                                    if(Window){
 10.6880 +                                        Envjs.loadFrame(node);
 10.6881 +                                        //console.log('src/html/document.js: triggering frame load');
 10.6882 +                                        event = node.contentDocument.createEvent('HTMLEvents');
 10.6883 +                                        event.initEvent("load", false, false);
 10.6884 +                                        node.dispatchEvent( event, false );
 10.6885 +                                    }
 10.6886 +                                }catch(e){}
 10.6887 +                            }
 10.6888 +                        }catch(e){
 10.6889 +                            console.log('error loading html element %s %e', node, e.toString());
 10.6890 +                        }
 10.6891 +                        break;
 10.6892 +        
 10.6893 +                    case 'link':
 10.6894 +                        if (node.href && node.href.length > 0) {
 10.6895 +                            __loadLink__(node, node.href);
 10.6896 +                        }
 10.6897 +                        break;
 10.6898 +                        /*
 10.6899 +                          case 'img':
 10.6900 +                          if (node.src && node.src.length > 0){
 10.6901 +                          // don't actually load anything, so we're "done" immediately:
 10.6902 +                          event = doc.createEvent('HTMLEvents');
 10.6903 +                          event.initEvent("load", false, false);
 10.6904 +                          node.dispatchEvent( event, false );
 10.6905 +                          }
 10.6906 +                          break;
 10.6907 +                        */
 10.6908 +                    case 'option':
 10.6909 +                        node._updateoptions();
 10.6910 +                        break;
 10.6911 +                    default:
 10.6912 +                        if(node.getAttribute('onload')){
 10.6913 +                            console.log('calling attribute onload %s | %s', node.onload, node.tagName);
 10.6914 +                            node.onload();
 10.6915 +                        }
 10.6916 +                        break;
 10.6917 +                    }//switch on name
 10.6918 +                default:
 10.6919 +                    break;
 10.6920 +            }//switch on ns
 10.6921 +            break;
 10.6922 +        default:
 10.6923 +            // console.log('element appended: %s %s', node+'', node.namespaceURI);
 10.6924 +    }//switch on doc.parsing
 10.6925 +    return node;
 10.6926 +
 10.6927 +});
 10.6928 +
 10.6929 +Aspect.around({
 10.6930 +    target: Node,
 10.6931 +    method:"removeChild"
 10.6932 +}, function(invocation) {
 10.6933 +    var event,
 10.6934 +        okay,
 10.6935 +        node = invocation.proceed(),
 10.6936 +        doc = node.ownerDocument;
 10.6937 +    if((node.nodeType !== Node.ELEMENT_NODE)){
 10.6938 +        //for now we are only handling element insertions.  probably we will need
 10.6939 +        //to handle text node changes to script tags and changes to src
 10.6940 +        //attributes
 10.6941 +        if(node.nodeType !== Node.DOCUMENT_NODE && node.uuid){
 10.6942 +            //console.log('removing event listeners, %s', node, node.uuid);
 10.6943 +            node.removeEventListener('*', null, null);
 10.6944 +        }
 10.6945 +        return node;
 10.6946 +    }
 10.6947 +    //console.log('appended html element %s %s %s', node.namespaceURI, node.nodeName, node);
 10.6948 +
 10.6949 +    switch(doc.parsing){
 10.6950 +        case true:
 10.6951 +            //handled by parser if included
 10.6952 +            break;
 10.6953 +        case false:
 10.6954 +            switch(node.namespaceURI){
 10.6955 +            case null:
 10.6956 +                //fall through
 10.6957 +            case "":
 10.6958 +                //fall through
 10.6959 +            case "http://www.w3.org/1999/xhtml":
 10.6960 +                //this is interesting dillema since our event engine is
 10.6961 +                //storing the registered events in an array accessed
 10.6962 +                //by the uuid property of the node.  unforunately this
 10.6963 +                //means listeners hang out way after(forever ;)) the node
 10.6964 +                //has been removed and gone out of scope.
 10.6965 +                //console.log('removing event listeners, %s', node, node.uuid);
 10.6966 +                node.removeEventListener('*', null, null);
 10.6967 +                switch(node.tagName.toLowerCase()){
 10.6968 +                case 'frame':
 10.6969 +                case 'iframe':
 10.6970 +                    try{
 10.6971 +                        //console.log('removing iframe document');
 10.6972 +                        try{
 10.6973 +                            Envjs.unloadFrame(node);
 10.6974 +                        }catch(e){
 10.6975 +                            console.log('error freeing resources from frame %s', e);
 10.6976 +                        }
 10.6977 +                        node.contentWindow = null;
 10.6978 +                        node.contentDocument = null;
 10.6979 +                    }catch(e){
 10.6980 +                        console.log('error unloading html element %s %e', node, e.toString());
 10.6981 +                    }
 10.6982 +                    break;
 10.6983 +                default:
 10.6984 +                    break;
 10.6985 +                }//switch on name
 10.6986 +            default:
 10.6987 +                break;
 10.6988 +            }//switch on ns
 10.6989 +            break;
 10.6990 +        default:
 10.6991 +            console.log('element appended: %s %s', node+'', node.namespaceURI);
 10.6992 +    }//switch on doc.parsing
 10.6993 +    return node;
 10.6994 +
 10.6995 +});
 10.6996 +
 10.6997 +
 10.6998 +
 10.6999 +/**
 10.7000 + * Named Element Support
 10.7001 + *
 10.7002 + *
 10.7003 + */
 10.7004 +
 10.7005 +/*
 10.7006 + *
 10.7007 + * @returns 'name' if the node has a appropriate name
 10.7008 + *          null if node does not have a name
 10.7009 + */
 10.7010 +
 10.7011 +var __isNamedElement__ = function(node) {
 10.7012 +    if (node.nodeType !== Node.ELEMENT_NODE) {
 10.7013 +        return null;
 10.7014 +    }
 10.7015 +    var tagName = node.tagName.toLowerCase();
 10.7016 +    var nodename = null;
 10.7017 +
 10.7018 +    switch (tagName) {
 10.7019 +        case 'embed':
 10.7020 +        case 'form':
 10.7021 +        case 'iframe':
 10.7022 +            nodename = node.getAttribute('name');
 10.7023 +            break;
 10.7024 +        case 'applet':
 10.7025 +            nodename = node.id;
 10.7026 +            break;
 10.7027 +        case 'object':
 10.7028 +            // TODO: object needs to be 'fallback free'
 10.7029 +            nodename = node.id;
 10.7030 +            break;
 10.7031 +        case 'img':
 10.7032 +            nodename = node.id;
 10.7033 +            if (!nodename || ! node.getAttribute('name')) {
 10.7034 +                nodename = null;
 10.7035 +            }
 10.7036 +            break;
 10.7037 +    }
 10.7038 +    return (nodename) ? nodename : null;
 10.7039 +};
 10.7040 +
 10.7041 +
 10.7042 +var __addNamedMap__ = function(target, node) {
 10.7043 +    var nodename = __isNamedElement__(node);
 10.7044 +    if (nodename) {
 10.7045 +        target.__defineGetter__(nodename, function() {
 10.7046 +            return node;
 10.7047 +        });
 10.7048 +    }
 10.7049 +};
 10.7050 +
 10.7051 +var __removeNamedMap__ = function(target, node) {
 10.7052 +    if (!node) {
 10.7053 +        return;
 10.7054 +    }
 10.7055 +    var nodename = __isNamedElement__(node);
 10.7056 +    if (nodename) {
 10.7057 +        delete target[nodename];
 10.7058 +    }
 10.7059 +};
 10.7060 +    
 10.7061 +/**
 10.7062 + * @name HTMLEvents
 10.7063 + * @w3c:domlevel 2
 10.7064 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
 10.7065 + */
 10.7066 +
 10.7067 +var __eval__ = function(script, node){
 10.7068 +    if (!script == ""){
 10.7069 +        // don't assemble environment if no script...
 10.7070 +        try{
 10.7071 +            eval(script);
 10.7072 +        }catch(e){
 10.7073 +            console.log('error evaluating %s', e);
 10.7074 +        }
 10.7075 +    }
 10.7076 +};
 10.7077 +
 10.7078 +var HTMLEvents= function(){};
 10.7079 +HTMLEvents.prototype = {
 10.7080 +    onload: function(event){
 10.7081 +        __eval__(this.getAttribute('onload')||'', this);
 10.7082 +    },
 10.7083 +    onunload: function(event){
 10.7084 +        __eval__(this.getAttribute('onunload')||'', this);
 10.7085 +    },
 10.7086 +    onabort: function(event){
 10.7087 +        __eval__(this.getAttribute('onabort')||'', this);
 10.7088 +    },
 10.7089 +    onerror: function(event){
 10.7090 +        __eval__(this.getAttribute('onerror')||'', this);
 10.7091 +    },
 10.7092 +    onselect: function(event){
 10.7093 +        __eval__(this.getAttribute('onselect')||'', this);
 10.7094 +    },
 10.7095 +    onchange: function(event){
 10.7096 +        __eval__(this.getAttribute('onchange')||'', this);
 10.7097 +    },
 10.7098 +    onsubmit: function(event){
 10.7099 +        if (__eval__(this.getAttribute('onsubmit')||'', this)) {
 10.7100 +            this.submit();
 10.7101 +        }
 10.7102 +    },
 10.7103 +    onreset: function(event){
 10.7104 +        __eval__(this.getAttribute('onreset')||'', this);
 10.7105 +    },
 10.7106 +    onfocus: function(event){
 10.7107 +        __eval__(this.getAttribute('onfocus')||'', this);
 10.7108 +    },
 10.7109 +    onblur: function(event){
 10.7110 +        __eval__(this.getAttribute('onblur')||'', this);
 10.7111 +    },
 10.7112 +    onresize: function(event){
 10.7113 +        __eval__(this.getAttribute('onresize')||'', this);
 10.7114 +    },
 10.7115 +    onscroll: function(event){
 10.7116 +        __eval__(this.getAttribute('onscroll')||'', this);
 10.7117 +    }
 10.7118 +};
 10.7119 +
 10.7120 +//HTMLDocument, HTMLFramesetElement, HTMLObjectElement
 10.7121 +var  __load__ = function(element){
 10.7122 +    var event = new Event('HTMLEvents');
 10.7123 +    event.initEvent("load", false, false);
 10.7124 +    element.dispatchEvent(event);
 10.7125 +    return event;
 10.7126 +};
 10.7127 +
 10.7128 +//HTMLFramesetElement, HTMLBodyElement
 10.7129 +var  __unload__ = function(element){
 10.7130 +    var event = new Event('HTMLEvents');
 10.7131 +    event.initEvent("unload", false, false);
 10.7132 +    element.dispatchEvent(event);
 10.7133 +    return event;
 10.7134 +};
 10.7135 +
 10.7136 +//HTMLObjectElement
 10.7137 +var  __abort__ = function(element){
 10.7138 +    var event = new Event('HTMLEvents');
 10.7139 +    event.initEvent("abort", true, false);
 10.7140 +    element.dispatchEvent(event);
 10.7141 +    return event;
 10.7142 +};
 10.7143 +
 10.7144 +//HTMLFramesetElement, HTMLObjectElement, HTMLBodyElement
 10.7145 +var  __error__ = function(element){
 10.7146 +    var event = new Event('HTMLEvents');
 10.7147 +    event.initEvent("error", true, false);
 10.7148 +    element.dispatchEvent(event);
 10.7149 +    return event;
 10.7150 +};
 10.7151 +
 10.7152 +//HTMLInputElement, HTMLTextAreaElement
 10.7153 +var  __select__ = function(element){
 10.7154 +    var event = new Event('HTMLEvents');
 10.7155 +    event.initEvent("select", true, false);
 10.7156 +    element.dispatchEvent(event);
 10.7157 +    return event;
 10.7158 +};
 10.7159 +
 10.7160 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
 10.7161 +var  __change__ = function(element){
 10.7162 +    var event = new Event('HTMLEvents');
 10.7163 +    event.initEvent("change", true, false);
 10.7164 +    element.dispatchEvent(event);
 10.7165 +    return event;
 10.7166 +};
 10.7167 +
 10.7168 +//HtmlFormElement
 10.7169 +var __submit__ = function(element){
 10.7170 +    var event = new Event('HTMLEvents');
 10.7171 +    event.initEvent("submit", true, true);
 10.7172 +    element.dispatchEvent(event);
 10.7173 +    return event;
 10.7174 +};
 10.7175 +
 10.7176 +//HtmlFormElement
 10.7177 +var  __reset__ = function(element){
 10.7178 +    var event = new Event('HTMLEvents');
 10.7179 +    event.initEvent("reset", false, false);
 10.7180 +    element.dispatchEvent(event);
 10.7181 +    return event;
 10.7182 +};
 10.7183 +
 10.7184 +//LABEL, INPUT, SELECT, TEXTAREA, and BUTTON
 10.7185 +var __focus__ = function(element){
 10.7186 +    var event = new Event('HTMLEvents');
 10.7187 +    event.initEvent("focus", false, false);
 10.7188 +    element.dispatchEvent(event);
 10.7189 +    return event;
 10.7190 +};
 10.7191 +
 10.7192 +//LABEL, INPUT, SELECT, TEXTAREA, and BUTTON
 10.7193 +var __blur__ = function(element){
 10.7194 +    var event = new Event('HTMLEvents');
 10.7195 +    event.initEvent("blur", false, false);
 10.7196 +    element.dispatchEvent(event);
 10.7197 +    return event;
 10.7198 +};
 10.7199 +
 10.7200 +//Window
 10.7201 +var __resize__ = function(element){
 10.7202 +    var event = new Event('HTMLEvents');
 10.7203 +    event.initEvent("resize", true, false);
 10.7204 +    element.dispatchEvent(event);
 10.7205 +    return event;
 10.7206 +};
 10.7207 +
 10.7208 +//Window
 10.7209 +var __scroll__ = function(element){
 10.7210 +    var event = new Event('HTMLEvents');
 10.7211 +    event.initEvent("scroll", true, false);
 10.7212 +    element.dispatchEvent(event);
 10.7213 +    return event;
 10.7214 +};
 10.7215 +
 10.7216 +/**
 10.7217 + * @name KeyboardEvents
 10.7218 + * @w3c:domlevel 2 
 10.7219 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
 10.7220 + */
 10.7221 +var KeyboardEvents= function(){};
 10.7222 +KeyboardEvents.prototype = {
 10.7223 +    onkeydown: function(event){
 10.7224 +        __eval__(this.getAttribute('onkeydown')||'', this);
 10.7225 +    },
 10.7226 +    onkeypress: function(event){
 10.7227 +        __eval__(this.getAttribute('onkeypress')||'', this);
 10.7228 +    },
 10.7229 +    onkeyup: function(event){
 10.7230 +        __eval__(this.getAttribute('onkeyup')||'', this);
 10.7231 +    }
 10.7232 +};
 10.7233 +
 10.7234 +
 10.7235 +var __registerKeyboardEventAttrs__ = function(elm){
 10.7236 +    if(elm.hasAttribute('onkeydown')){ 
 10.7237 +        elm.addEventListener('keydown', elm.onkeydown, false); 
 10.7238 +    }
 10.7239 +    if(elm.hasAttribute('onkeypress')){ 
 10.7240 +        elm.addEventListener('keypress', elm.onkeypress, false); 
 10.7241 +    }
 10.7242 +    if(elm.hasAttribute('onkeyup')){ 
 10.7243 +        elm.addEventListener('keyup', elm.onkeyup, false); 
 10.7244 +    }
 10.7245 +    return elm;
 10.7246 +};
 10.7247 +
 10.7248 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
 10.7249 +var  __keydown__ = function(element){
 10.7250 +    var event = new Event('KeyboardEvents');
 10.7251 +    event.initEvent("keydown", false, false);
 10.7252 +    element.dispatchEvent(event);
 10.7253 +};
 10.7254 +
 10.7255 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
 10.7256 +var  __keypress__ = function(element){
 10.7257 +    var event = new Event('KeyboardEvents');
 10.7258 +    event.initEvent("keypress", false, false);
 10.7259 +    element.dispatchEvent(event);
 10.7260 +};
 10.7261 +
 10.7262 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
 10.7263 +var  __keyup__ = function(element){
 10.7264 +    var event = new Event('KeyboardEvents');
 10.7265 +    event.initEvent("keyup", false, false);
 10.7266 +    element.dispatchEvent(event);
 10.7267 +};
 10.7268 +
 10.7269 +/**
 10.7270 + * @name MaouseEvents
 10.7271 + * @w3c:domlevel 2 
 10.7272 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
 10.7273 + */
 10.7274 +var MouseEvents= function(){};
 10.7275 +MouseEvents.prototype = {
 10.7276 +    onclick: function(event){
 10.7277 +        __eval__(this.getAttribute('onclick')||'', this);
 10.7278 +    },
 10.7279 +    ondblclick: function(event){
 10.7280 +        __eval__(this.getAttribute('ondblclick')||'', this);
 10.7281 +    },
 10.7282 +    onmousedown: function(event){
 10.7283 +        __eval__(this.getAttribute('onmousedown')||'', this);
 10.7284 +    },
 10.7285 +    onmousemove: function(event){
 10.7286 +        __eval__(this.getAttribute('onmousemove')||'', this);
 10.7287 +    },
 10.7288 +    onmouseout: function(event){
 10.7289 +        __eval__(this.getAttribute('onmouseout')||'', this);
 10.7290 +    },
 10.7291 +    onmouseover: function(event){
 10.7292 +        __eval__(this.getAttribute('onmouseover')||'', this);
 10.7293 +    },
 10.7294 +    onmouseup: function(event){
 10.7295 +        __eval__(this.getAttribute('onmouseup')||'', this);
 10.7296 +    }  
 10.7297 +};
 10.7298 +
 10.7299 +var __registerMouseEventAttrs__ = function(elm){
 10.7300 +    if(elm.hasAttribute('onclick')){ 
 10.7301 +        elm.addEventListener('click', elm.onclick, false); 
 10.7302 +    }
 10.7303 +    if(elm.hasAttribute('ondblclick')){ 
 10.7304 +        elm.addEventListener('dblclick', elm.ondblclick, false); 
 10.7305 +    }
 10.7306 +    if(elm.hasAttribute('onmousedown')){ 
 10.7307 +        elm.addEventListener('mousedown', elm.onmousedown, false); 
 10.7308 +    }
 10.7309 +    if(elm.hasAttribute('onmousemove')){ 
 10.7310 +        elm.addEventListener('mousemove', elm.onmousemove, false); 
 10.7311 +    }
 10.7312 +    if(elm.hasAttribute('onmouseout')){ 
 10.7313 +        elm.addEventListener('mouseout', elm.onmouseout, false); 
 10.7314 +    }
 10.7315 +    if(elm.hasAttribute('onmouseover')){ 
 10.7316 +        elm.addEventListener('mouseover', elm.onmouseover, false); 
 10.7317 +    }
 10.7318 +    if(elm.hasAttribute('onmouseup')){ 
 10.7319 +        elm.addEventListener('mouseup', elm.onmouseup, false); 
 10.7320 +    }
 10.7321 +    return elm;
 10.7322 +};
 10.7323 +
 10.7324 +
 10.7325 +var  __click__ = function(element){
 10.7326 +    var event = new Event('MouseEvents');
 10.7327 +    event.initEvent("click", true, true, null, 0,
 10.7328 +                0, 0, 0, 0, false, false, false, 
 10.7329 +                false, null, null);
 10.7330 +    element.dispatchEvent(event);
 10.7331 +};
 10.7332 +var  __mousedown__ = function(element){
 10.7333 +    var event = new Event('MouseEvents');
 10.7334 +    event.initEvent("mousedown", true, true, null, 0,
 10.7335 +                0, 0, 0, 0, false, false, false, 
 10.7336 +                false, null, null);
 10.7337 +    element.dispatchEvent(event);
 10.7338 +};
 10.7339 +var  __mouseup__ = function(element){
 10.7340 +    var event = new Event('MouseEvents');
 10.7341 +    event.initEvent("mouseup", true, true, null, 0,
 10.7342 +                0, 0, 0, 0, false, false, false, 
 10.7343 +                false, null, null);
 10.7344 +    element.dispatchEvent(event);
 10.7345 +};
 10.7346 +var  __mouseover__ = function(element){
 10.7347 +    var event = new Event('MouseEvents');
 10.7348 +    event.initEvent("mouseover", true, true, null, 0,
 10.7349 +                0, 0, 0, 0, false, false, false, 
 10.7350 +                false, null, null);
 10.7351 +    element.dispatchEvent(event);
 10.7352 +};
 10.7353 +var  __mousemove__ = function(element){
 10.7354 +    var event = new Event('MouseEvents');
 10.7355 +    event.initEvent("mousemove", true, true, null, 0,
 10.7356 +                0, 0, 0, 0, false, false, false, 
 10.7357 +                false, null, null);
 10.7358 +    element.dispatchEvent(event);
 10.7359 +};
 10.7360 +var  __mouseout__ = function(element){
 10.7361 +    var event = new Event('MouseEvents');
 10.7362 +    event.initEvent("mouseout", true, true, null, 0,
 10.7363 +                0, 0, 0, 0, false, false, false, 
 10.7364 +                false, null, null);
 10.7365 +    element.dispatchEvent(event);
 10.7366 +};
 10.7367 +
 10.7368 +/**
 10.7369 + * HTMLElement - DOM Level 2
 10.7370 + */
 10.7371 +
 10.7372 +
 10.7373 +/* Hack for http://www.prototypejs.org/
 10.7374 + *
 10.7375 + * Prototype 1.6 (the library) creates a new global Element, which causes
 10.7376 + * envjs to use the wrong Element.
 10.7377 + *
 10.7378 + * http://envjs.lighthouseapp.com/projects/21590/tickets/108-prototypejs-wont-load-due-it-clobbering-element
 10.7379 + *
 10.7380 + * Options:
 10.7381 + *  (1) Rename the dom/element to something else
 10.7382 + *       rejected: been done before. people want Element.
 10.7383 + *  (2) merge dom+html and not export Element to global namespace
 10.7384 + *      (meaning we would use a local var Element in a closure, so prototype
 10.7385 + *      can do what ever it wants)
 10.7386 + *       rejected: want dom and html separate
 10.7387 + *  (3) use global namespace (put everything under Envjs = {})
 10.7388 + *       rejected: massive change
 10.7389 + *  (4) use commonjs modules (similar to (3) in spirit)
 10.7390 + *       rejected: massive change
 10.7391 + *
 10.7392 + *  or
 10.7393 + *
 10.7394 + *  (5) take a reference to Element during initial loading ("compile
 10.7395 + *      time"), and use the reference instead of "Element".  That's
 10.7396 + *      what the next line does.  We use __DOMElement__ if we need to
 10.7397 + *      reference the parent class.  Only this file explcity uses
 10.7398 + *      Element so this should work, and is the most minimal change I
 10.7399 + *      could think of with no external API changes.
 10.7400 + *
 10.7401 + */
 10.7402 +var  __DOMElement__ = Element;
 10.7403 +
 10.7404 +HTMLElement = function(ownerDocument) {
 10.7405 +    __DOMElement__.apply(this, arguments);
 10.7406 +};
 10.7407 +
 10.7408 +HTMLElement.prototype = new Element();
 10.7409 +__extend__(HTMLElement.prototype, HTMLEvents.prototype);
 10.7410 +__extend__(HTMLElement.prototype, {
 10.7411 +    get className() {
 10.7412 +        return this.getAttribute("class")||'';
 10.7413 +    },
 10.7414 +    set className(value) {
 10.7415 +        return this.setAttribute("class",__trim__(value));
 10.7416 +    },
 10.7417 +    get dir() {
 10.7418 +        return this.getAttribute("dir")||"ltr";
 10.7419 +    },
 10.7420 +    set dir(val) {
 10.7421 +        return this.setAttribute("dir",val);
 10.7422 +    },
 10.7423 +    get id(){
 10.7424 +        return this.getAttribute('id');
 10.7425 +    },
 10.7426 +    set id(id){
 10.7427 +        this.setAttribute('id', id);
 10.7428 +    },
 10.7429 +    get innerHTML(){
 10.7430 +        var ret = "",
 10.7431 +        i;
 10.7432 +
 10.7433 +        // create string containing the concatenation of the string
 10.7434 +        // values of each child
 10.7435 +        for (i=0; i < this.childNodes.length; i++) {
 10.7436 +            if(this.childNodes[i]){
 10.7437 +                if(this.childNodes[i].nodeType === Node.ELEMENT_NODE){
 10.7438 +                    ret += this.childNodes[i].xhtml;
 10.7439 +                } else if (this.childNodes[i].nodeType === Node.TEXT_NODE && i>0 &&
 10.7440 +                           this.childNodes[i-1].nodeType === Node.TEXT_NODE){
 10.7441 +                    //add a single space between adjacent text nodes
 10.7442 +                    ret += " "+this.childNodes[i].xml;
 10.7443 +                }else{
 10.7444 +                    ret += this.childNodes[i].xml;
 10.7445 +                }
 10.7446 +            }
 10.7447 +        }
 10.7448 +        return ret;
 10.7449 +    },
 10.7450 +    get lang() {
 10.7451 +        return this.getAttribute("lang");
 10.7452 +    },
 10.7453 +    set lang(val) {
 10.7454 +        return this.setAttribute("lang",val);
 10.7455 +    },
 10.7456 +    get offsetHeight(){
 10.7457 +        return Number((this.style.height || '').replace("px",""));
 10.7458 +    },
 10.7459 +    get offsetWidth(){
 10.7460 +        return Number((this.style.width || '').replace("px",""));
 10.7461 +    },
 10.7462 +    offsetLeft: 0,
 10.7463 +    offsetRight: 0,
 10.7464 +    get offsetParent(){
 10.7465 +        /* TODO */
 10.7466 +        return;
 10.7467 +    },
 10.7468 +    set offsetParent(element){
 10.7469 +        /* TODO */
 10.7470 +        return;
 10.7471 +    },
 10.7472 +    scrollHeight: 0,
 10.7473 +    scrollWidth: 0,
 10.7474 +    scrollLeft: 0,
 10.7475 +    scrollRight: 0,
 10.7476 +    get style(){
 10.7477 +        return this.getAttribute('style')||'';
 10.7478 +    },
 10.7479 +    get title() {
 10.7480 +        return this.getAttribute("title");
 10.7481 +    },
 10.7482 +    set title(value) {
 10.7483 +        return this.setAttribute("title", value);
 10.7484 +    },
 10.7485 +    get tabIndex(){
 10.7486 +        var tabindex = this.getAttribute('tabindex');
 10.7487 +        if(tabindex!==null){
 10.7488 +            return Number(tabindex);
 10.7489 +        } else {
 10.7490 +            return 0;
 10.7491 +        }
 10.7492 +    },
 10.7493 +    set tabIndex(value){
 10.7494 +        if (value === undefined || value === null) {
 10.7495 +            value = 0;
 10.7496 +        }
 10.7497 +        this.setAttribute('tabindex',Number(value));
 10.7498 +    },
 10.7499 +    get outerHTML(){
 10.7500 +        //Not in the specs but I'll leave it here for now.
 10.7501 +        return this.xhtml;
 10.7502 +    },
 10.7503 +    scrollIntoView: function(){
 10.7504 +        /*TODO*/
 10.7505 +        return;
 10.7506 +    },
 10.7507 +    toString: function(){
 10.7508 +        return '[object HTMLElement]';
 10.7509 +    },
 10.7510 +    get xhtml() {
 10.7511 +        // HTMLDocument.xhtml is non-standard
 10.7512 +        // This is exactly like Document.xml except the tagName has to be
 10.7513 +        // lower cased.  I dont like to duplicate this but its really not
 10.7514 +        // a simple work around between xml and html serialization via
 10.7515 +        // XMLSerializer (which uppercases html tags) and innerHTML (which
 10.7516 +        // lowercases tags)
 10.7517 +
 10.7518 +        var ret = "",
 10.7519 +            ns = "",
 10.7520 +            name = (this.tagName+"").toLowerCase(),
 10.7521 +            attrs,
 10.7522 +            attrstring = "",
 10.7523 +            i;
 10.7524 +
 10.7525 +        // serialize namespace declarations
 10.7526 +        if (this.namespaceURI){
 10.7527 +            if((this === this.ownerDocument.documentElement) ||
 10.7528 +               (!this.parentNode) ||
 10.7529 +               (this.parentNode &&
 10.7530 +                (this.parentNode.namespaceURI !== this.namespaceURI))) {
 10.7531 +                ns = ' xmlns' + (this.prefix ? (':' + this.prefix) : '') +
 10.7532 +                    '="' + this.namespaceURI + '"';
 10.7533 +            }
 10.7534 +        }
 10.7535 +
 10.7536 +        // serialize Attribute declarations
 10.7537 +        attrs = this.attributes;
 10.7538 +        for(i=0;i< attrs.length;i++){
 10.7539 +            attrstring += " "+attrs[i].name+'="'+attrs[i].xml+'"';
 10.7540 +        }
 10.7541 +
 10.7542 +        if(this.hasChildNodes()){
 10.7543 +            // serialize this Element
 10.7544 +            ret += "<" + name + ns + attrstring +">";
 10.7545 +            for(i=0;i< this.childNodes.length;i++){
 10.7546 +                ret += this.childNodes[i].xhtml ?
 10.7547 +                    this.childNodes[i].xhtml :
 10.7548 +                    this.childNodes[i].xml;
 10.7549 +            }
 10.7550 +            ret += "</" + name + ">";
 10.7551 +        }else{
 10.7552 +            switch(name){
 10.7553 +            case 'script':
 10.7554 +                ret += "<" + name + ns + attrstring +"></"+name+">";
 10.7555 +                break;
 10.7556 +            default:
 10.7557 +                ret += "<" + name + ns + attrstring +"/>";
 10.7558 +            }
 10.7559 +        }
 10.7560 +
 10.7561 +        return ret;
 10.7562 +    },
 10.7563 +
 10.7564 +    /**
 10.7565 +     * setAttribute use a dispatch table that other tags can set to
 10.7566 +     *  "listen" to various values being set.  The dispatch table
 10.7567 +     * and registration functions are at the end of the file.
 10.7568 +     *
 10.7569 +     */
 10.7570 +
 10.7571 +    setAttribute: function(name, value) {
 10.7572 +        var result = __DOMElement__.prototype.setAttribute.apply(this, arguments);
 10.7573 +        __addNamedMap__(this.ownerDocument, this);
 10.7574 +        var tagname = this.tagName;
 10.7575 +        var callback = HTMLElement.getAttributeCallback('set', tagname, name);
 10.7576 +        if (callback) {
 10.7577 +            callback(this, value);
 10.7578 +        }
 10.7579 +    },
 10.7580 +    setAttributeNS: function(namespaceURI, name, value) {
 10.7581 +        var result = __DOMElement__.prototype.setAttributeNS.apply(this, arguments);
 10.7582 +        __addNamedMap__(this.ownerDocument, this);
 10.7583 +        var tagname = this.tagName;
 10.7584 +        var callback = HTMLElement.getAttributeCallback('set', tagname, name);
 10.7585 +        if (callback) {
 10.7586 +            callback(this, value);
 10.7587 +        }
 10.7588 +
 10.7589 +        return result;
 10.7590 +    },
 10.7591 +    setAttributeNode: function(newnode) {
 10.7592 +        var result = __DOMElement__.prototype.setAttributeNode.apply(this, arguments);
 10.7593 +        __addNamedMap__(this.ownerDocument, this);
 10.7594 +        var tagname = this.tagName;
 10.7595 +        var callback = HTMLElement.getAttributeCallback('set', tagname, newnode.name);
 10.7596 +        if (callback) {
 10.7597 +            callback(this, node.value);
 10.7598 +        }
 10.7599 +        return result;
 10.7600 +    },
 10.7601 +    setAttributeNodeNS: function(newnode) {
 10.7602 +        var result = __DOMElement__.prototype.setAttributeNodeNS.apply(this, arguments);
 10.7603 +        __addNamedMap__(this.ownerDocument, this);
 10.7604 +        var tagname = this.tagName;
 10.7605 +        var callback = HTMLElement.getAttributeCallback('set', tagname, newnode.name);
 10.7606 +        if (callback) {
 10.7607 +            callback(this, node.value);
 10.7608 +        }
 10.7609 +        return result;
 10.7610 +    },
 10.7611 +    removeAttribute: function(name) {
 10.7612 +        __removeNamedMap__(this.ownerDocument, this);
 10.7613 +        return __DOMElement__.prototype.removeAttribute.apply(this, arguments);
 10.7614 +    },
 10.7615 +    removeAttributeNS: function(namespace, localname) {
 10.7616 +        __removeNamedMap__(this.ownerDocument, this);
 10.7617 +        return __DOMElement__.prototype.removeAttributeNS.apply(this, arguments);
 10.7618 +    },
 10.7619 +    removeAttributeNode: function(name) {
 10.7620 +        __removeNamedMap__(this.ownerDocument, this);
 10.7621 +        return __DOMElement__.prototype.removeAttribute.apply(this, arguments);
 10.7622 +    },
 10.7623 +    removeChild: function(oldChild) {
 10.7624 +        __removeNamedMap__(this.ownerDocument, oldChild);
 10.7625 +        return __DOMElement__.prototype.removeChild.apply(this, arguments);
 10.7626 +    },
 10.7627 +    importNode: function(othernode, deep) {
 10.7628 +        var newnode = __DOMElement__.prototype.importNode.apply(this, arguments);
 10.7629 +        __addNamedMap__(this.ownerDocument, newnode);
 10.7630 +        return newnode;
 10.7631 +    },
 10.7632 +
 10.7633 +    // not actually sure if this is needed or not
 10.7634 +    replaceNode: function(newchild, oldchild) {
 10.7635 +        var newnode = __DOMElement__.prototype.replaceNode.apply(this, arguments);
 10.7636 +        __removeNamedMap__(this.ownerDocument, oldchild);
 10.7637 +        __addNamedMap__(this.ownerDocument, newnode);
 10.7638 +                return newnode;
 10.7639 +    }
 10.7640 +});
 10.7641 +
 10.7642 +
 10.7643 +HTMLElement.attributeCallbacks = {};
 10.7644 +HTMLElement.registerSetAttribute = function(tag, attrib, callbackfn) {
 10.7645 +    HTMLElement.attributeCallbacks[tag + ':set:' + attrib] = callbackfn;
 10.7646 +};
 10.7647 +HTMLElement.registerRemoveAttribute = function(tag, attrib, callbackfn) {
 10.7648 +    HTMLElement.attributeCallbacks[tag + ':remove:' + attrib] = callbackfn;
 10.7649 +};
 10.7650 +
 10.7651 +/**
 10.7652 + * This is really only useful internally
 10.7653 + *
 10.7654 + */
 10.7655 +HTMLElement.getAttributeCallback = function(type, tag, attrib) {
 10.7656 +    return HTMLElement.attributeCallbacks[tag + ':' + type + ':' + attrib] || null;
 10.7657 +};
 10.7658 +/*
 10.7659 + * HTMLCollection
 10.7660 + *
 10.7661 + * HTML5 -- 2.7.2.1 HTMLCollection
 10.7662 + * http://dev.w3.org/html5/spec/Overview.html#htmlcollection
 10.7663 + * http://dev.w3.org/html5/spec/Overview.html#collections
 10.7664 + */
 10.7665 +HTMLCollection = function(nodelist, type) {
 10.7666 +
 10.7667 +    __setArray__(this, []);
 10.7668 +    var n;
 10.7669 +    for (var i=0; i<nodelist.length; i++) {
 10.7670 +        this[i] = nodelist[i];
 10.7671 +        n = nodelist[i].name;
 10.7672 +        if (n) {
 10.7673 +            this[n] = nodelist[i];
 10.7674 +        }
 10.7675 +        n = nodelist[i].id;
 10.7676 +        if (n) {
 10.7677 +            this[n] = nodelist[i];
 10.7678 +        }
 10.7679 +    }
 10.7680 +
 10.7681 +    this.length = nodelist.length;
 10.7682 +};
 10.7683 +
 10.7684 +HTMLCollection.prototype = {
 10.7685 +
 10.7686 +    item: function (idx) {
 10.7687 +        return  ((idx >= 0) && (idx < this.length)) ? this[idx] : null;
 10.7688 +    },
 10.7689 +
 10.7690 +    namedItem: function (name) {
 10.7691 +        return this[name] || null;
 10.7692 +    },
 10.7693 +
 10.7694 +    toString: function() {
 10.7695 +        return '[object HTMLCollection]';
 10.7696 +    }
 10.7697 +};
 10.7698 +/*
 10.7699 + *  a set of convenience classes to centralize implementation of
 10.7700 + * properties and methods across multiple in-form elements
 10.7701 + *
 10.7702 + *  the hierarchy of related HTML elements and their members is as follows:
 10.7703 + *
 10.7704 + * Condensed Version
 10.7705 + *
 10.7706 + *  HTMLInputCommon
 10.7707 + *     * legent (no value attr)
 10.7708 + *     * fieldset (no value attr)
 10.7709 + *     * label (no value attr)
 10.7710 + *     * option (custom value)
 10.7711 + *  HTMLTypeValueInputs (extends InputCommon)
 10.7712 + *     * select  (custom value)
 10.7713 + *     * button (just sets value)
 10.7714 + *  HTMLInputAreaCommon (extends TypeValueIput)
 10.7715 + *     * input  (custom)
 10.7716 + *     * textarea (just sets value)
 10.7717 + *
 10.7718 + * -----------------------
 10.7719 + *    HTMLInputCommon:  common to all elements
 10.7720 + *       .form
 10.7721 + *
 10.7722 + *    <legend>
 10.7723 + *          [common plus:]
 10.7724 + *       .align
 10.7725 + *
 10.7726 + *    <fieldset>
 10.7727 + *          [identical to "legend" plus:]
 10.7728 + *       .margin
 10.7729 + *
 10.7730 + *
 10.7731 + *  ****
 10.7732 + *
 10.7733 + *    <label>
 10.7734 + *          [common plus:]
 10.7735 + *       .dataFormatAs
 10.7736 + *       .htmlFor
 10.7737 + *       [plus data properties]
 10.7738 + *
 10.7739 + *    <option>
 10.7740 + *          [common plus:]
 10.7741 + *       .defaultSelected
 10.7742 + *       .index
 10.7743 + *       .label
 10.7744 + *       .selected
 10.7745 + *       .text
 10.7746 + *       .value   // unique implementation, not duplicated
 10.7747 + *       .form    // unique implementation, not duplicated
 10.7748 + *  ****
 10.7749 + *
 10.7750 + *    HTMLTypeValueInputs:  common to remaining elements
 10.7751 + *          [common plus:]
 10.7752 + *       .name
 10.7753 + *       .type
 10.7754 + *       .value
 10.7755 + *       [plus data properties]
 10.7756 + *
 10.7757 + *
 10.7758 + *    <select>
 10.7759 + *       .length
 10.7760 + *       .multiple
 10.7761 + *       .options[]
 10.7762 + *       .selectedIndex
 10.7763 + *       .add()
 10.7764 + *       .remove()
 10.7765 + *       .item()                                       // unimplemented
 10.7766 + *       .namedItem()                                  // unimplemented
 10.7767 + *       [plus ".onchange"]
 10.7768 + *       [plus focus events]
 10.7769 + *       [plus data properties]
 10.7770 + *       [plus ".size"]
 10.7771 + *
 10.7772 + *    <button>
 10.7773 + *       .dataFormatAs   // duplicated from above, oh well....
 10.7774 + *       [plus ".status", ".createTextRange()"]
 10.7775 + *
 10.7776 + *  ****
 10.7777 + *
 10.7778 + *    HTMLInputAreaCommon:  common to remaining elements
 10.7779 + *       .defaultValue
 10.7780 + *       .readOnly
 10.7781 + *       .handleEvent()                                // unimplemented
 10.7782 + *       .select()
 10.7783 + *       .onselect
 10.7784 + *       [plus ".size"]
 10.7785 + *       [plus ".status", ".createTextRange()"]
 10.7786 + *       [plus focus events]
 10.7787 + *       [plus ".onchange"]
 10.7788 + *
 10.7789 + *    <textarea>
 10.7790 + *       .cols
 10.7791 + *       .rows
 10.7792 + *       .wrap                                         // unimplemented
 10.7793 + *       .onscroll                                     // unimplemented
 10.7794 + *
 10.7795 + *    <input>
 10.7796 + *       .alt
 10.7797 + *       .accept                                       // unimplemented
 10.7798 + *       .checked
 10.7799 + *       .complete                                     // unimplemented
 10.7800 + *       .defaultChecked
 10.7801 + *       .dynsrc                                       // unimplemented
 10.7802 + *       .height
 10.7803 + *       .hspace                                       // unimplemented
 10.7804 + *       .indeterminate                                // unimplemented
 10.7805 + *       .loop                                         // unimplemented
 10.7806 + *       .lowsrc                                       // unimplemented
 10.7807 + *       .maxLength
 10.7808 + *       .src
 10.7809 + *       .start                                        // unimplemented
 10.7810 + *       .useMap
 10.7811 + *       .vspace                                       // unimplemented
 10.7812 + *       .width
 10.7813 + *       .onclick
 10.7814 + *       [plus ".size"]
 10.7815 + *       [plus ".status", ".createTextRange()"]
 10.7816 +
 10.7817 + *    [data properties]                                // unimplemented
 10.7818 + *       .dataFld
 10.7819 + *       .dataSrc
 10.7820 +
 10.7821 + *    [status stuff]                                   // unimplemented
 10.7822 + *       .status
 10.7823 + *       .createTextRange()
 10.7824 +
 10.7825 + *    [focus events]
 10.7826 + *       .onblur
 10.7827 + *       .onfocus
 10.7828 +
 10.7829 + */
 10.7830 +
 10.7831 +
 10.7832 +
 10.7833 +var inputElements_dataProperties = {};
 10.7834 +var inputElements_status = {};
 10.7835 +
 10.7836 +var inputElements_onchange = {
 10.7837 +    onchange: function(event){
 10.7838 +        __eval__(this.getAttribute('onchange')||'', this);
 10.7839 +    }
 10.7840 +};
 10.7841 +
 10.7842 +var inputElements_size = {
 10.7843 +    get size(){
 10.7844 +        return Number(this.getAttribute('size'));
 10.7845 +    },
 10.7846 +    set size(value){
 10.7847 +        this.setAttribute('size',value);
 10.7848 +    }
 10.7849 +};
 10.7850 +
 10.7851 +var inputElements_focusEvents = {
 10.7852 +    blur: function(){
 10.7853 +        __blur__(this);
 10.7854 +
 10.7855 +        if (this._oldValue != this.value){
 10.7856 +            var event = document.createEvent("HTMLEvents");
 10.7857 +            event.initEvent("change", true, true);
 10.7858 +            this.dispatchEvent( event );
 10.7859 +        }
 10.7860 +    },
 10.7861 +    focus: function(){
 10.7862 +        __focus__(this);
 10.7863 +        this._oldValue = this.value;
 10.7864 +    }
 10.7865 +};
 10.7866 +
 10.7867 +
 10.7868 +/*
 10.7869 +* HTMLInputCommon - convenience class, not DOM
 10.7870 +*/
 10.7871 +var HTMLInputCommon = function(ownerDocument) {
 10.7872 +    HTMLElement.apply(this, arguments);
 10.7873 +};
 10.7874 +HTMLInputCommon.prototype = new HTMLElement();
 10.7875 +__extend__(HTMLInputCommon.prototype, {
 10.7876 +    get form() {
 10.7877 +        // parent can be null if element is outside of a form
 10.7878 +        // or not yet added to the document
 10.7879 +        var parent = this.parentNode;
 10.7880 +        while (parent && parent.nodeName.toLowerCase() !== 'form') {
 10.7881 +            parent = parent.parentNode;
 10.7882 +        }
 10.7883 +        return parent;
 10.7884 +    },
 10.7885 +    get accessKey(){
 10.7886 +        return this.getAttribute('accesskey');
 10.7887 +    },
 10.7888 +    set accessKey(value){
 10.7889 +        this.setAttribute('accesskey',value);
 10.7890 +    },
 10.7891 +    get access(){
 10.7892 +        return this.getAttribute('access');
 10.7893 +    },
 10.7894 +    set access(value){
 10.7895 +        this.setAttribute('access', value);
 10.7896 +    },
 10.7897 +    get disabled(){
 10.7898 +        return (this.getAttribute('disabled') === 'disabled');
 10.7899 +    },
 10.7900 +    set disabled(value){
 10.7901 +        this.setAttribute('disabled', (value ? 'disabled' :''));
 10.7902 +    }
 10.7903 +});
 10.7904 +
 10.7905 +
 10.7906 +
 10.7907 +
 10.7908 +/*
 10.7909 +* HTMLTypeValueInputs - convenience class, not DOM
 10.7910 +*/
 10.7911 +var HTMLTypeValueInputs = function(ownerDocument) {
 10.7912 +
 10.7913 +    HTMLInputCommon.apply(this, arguments);
 10.7914 +
 10.7915 +    this._oldValue = "";
 10.7916 +};
 10.7917 +HTMLTypeValueInputs.prototype = new HTMLInputCommon();
 10.7918 +__extend__(HTMLTypeValueInputs.prototype, inputElements_size);
 10.7919 +__extend__(HTMLTypeValueInputs.prototype, inputElements_status);
 10.7920 +__extend__(HTMLTypeValueInputs.prototype, inputElements_dataProperties);
 10.7921 +__extend__(HTMLTypeValueInputs.prototype, {
 10.7922 +    get name(){
 10.7923 +        return this.getAttribute('name')||'';
 10.7924 +    },
 10.7925 +    set name(value){
 10.7926 +        this.setAttribute('name',value);
 10.7927 +    },
 10.7928 +});
 10.7929 +
 10.7930 +
 10.7931 +/*
 10.7932 +* HTMLInputAreaCommon - convenience class, not DOM
 10.7933 +*/
 10.7934 +var HTMLInputAreaCommon = function(ownerDocument) {
 10.7935 +    HTMLTypeValueInputs.apply(this, arguments);
 10.7936 +};
 10.7937 +HTMLInputAreaCommon.prototype = new HTMLTypeValueInputs();
 10.7938 +__extend__(HTMLInputAreaCommon.prototype, inputElements_focusEvents);
 10.7939 +__extend__(HTMLInputAreaCommon.prototype, inputElements_onchange);
 10.7940 +__extend__(HTMLInputAreaCommon.prototype, {
 10.7941 +    get readOnly(){
 10.7942 +        return (this.getAttribute('readonly')=='readonly');
 10.7943 +    },
 10.7944 +    set readOnly(value){
 10.7945 +        this.setAttribute('readonly', (value ? 'readonly' :''));
 10.7946 +    },
 10.7947 +    select:function(){
 10.7948 +        __select__(this);
 10.7949 +
 10.7950 +    }
 10.7951 +});
 10.7952 +
 10.7953 +
 10.7954 +var __updateFormForNamedElement__ = function(node, value) {
 10.7955 +    if (node.form) {
 10.7956 +        // to check for ID or NAME attribute too
 10.7957 +        // not, then nothing to do
 10.7958 +        node.form._updateElements();
 10.7959 +    }
 10.7960 +};
 10.7961 +
 10.7962 +/**
 10.7963 + * HTMLAnchorElement - DOM Level 2
 10.7964 + *
 10.7965 + * HTML5: 4.6.1 The a element
 10.7966 + * http://dev.w3.org/html5/spec/Overview.html#the-a-element
 10.7967 + */
 10.7968 +HTMLAnchorElement = function(ownerDocument) {
 10.7969 +    HTMLElement.apply(this, arguments);
 10.7970 +};
 10.7971 +HTMLAnchorElement.prototype = new HTMLElement();
 10.7972 +__extend__(HTMLAnchorElement.prototype, {
 10.7973 +    get accessKey() {
 10.7974 +        return this.getAttribute("accesskey")||'';
 10.7975 +    },
 10.7976 +    set accessKey(val) {
 10.7977 +        return this.setAttribute("accesskey",val);
 10.7978 +    },
 10.7979 +    get charset() {
 10.7980 +        return this.getAttribute("charset")||'';
 10.7981 +    },
 10.7982 +    set charset(val) {
 10.7983 +        return this.setAttribute("charset",val);
 10.7984 +    },
 10.7985 +    get coords() {
 10.7986 +        return this.getAttribute("coords")||'';
 10.7987 +    },
 10.7988 +    set coords(val) {
 10.7989 +        return this.setAttribute("coords",val);
 10.7990 +    },
 10.7991 +    get href() {
 10.7992 +        var link = this.getAttribute('href');
 10.7993 +        if (!link) {
 10.7994 +            return '';
 10.7995 +        }
 10.7996 +        return Envjs.uri(link,
 10.7997 +                         this.ownerDocument.location.toString());
 10.7998 +    },
 10.7999 +    set href(val) {
 10.8000 +        return this.setAttribute("href", val);
 10.8001 +    },
 10.8002 +    get hreflang() {
 10.8003 +        return this.getAttribute("hreflang")||'';
 10.8004 +    },
 10.8005 +    set hreflang(val) {
 10.8006 +        this.setAttribute("hreflang",val);
 10.8007 +    },
 10.8008 +    get name() {
 10.8009 +        return this.getAttribute("name")||'';
 10.8010 +    },
 10.8011 +    set name(val) {
 10.8012 +        this.setAttribute("name",val);
 10.8013 +    },
 10.8014 +    get rel() {
 10.8015 +        return this.getAttribute("rel")||'';
 10.8016 +    },
 10.8017 +    set rel(val) {
 10.8018 +        return this.setAttribute("rel", val);
 10.8019 +    },
 10.8020 +    get rev() {
 10.8021 +        return this.getAttribute("rev")||'';
 10.8022 +    },
 10.8023 +    set rev(val) {
 10.8024 +        return this.setAttribute("rev",val);
 10.8025 +    },
 10.8026 +    get shape() {
 10.8027 +        return this.getAttribute("shape")||'';
 10.8028 +    },
 10.8029 +    set shape(val) {
 10.8030 +        return this.setAttribute("shape",val);
 10.8031 +    },
 10.8032 +    get target() {
 10.8033 +        return this.getAttribute("target")||'';
 10.8034 +    },
 10.8035 +    set target(val) {
 10.8036 +        return this.setAttribute("target",val);
 10.8037 +    },
 10.8038 +    get type() {
 10.8039 +        return this.getAttribute("type")||'';
 10.8040 +    },
 10.8041 +    set type(val) {
 10.8042 +        return this.setAttribute("type",val);
 10.8043 +    },
 10.8044 +    blur: function() {
 10.8045 +        __blur__(this);
 10.8046 +    },
 10.8047 +    focus: function() {
 10.8048 +        __focus__(this);
 10.8049 +    },
 10.8050 +
 10.8051 +    /**
 10.8052 +     * Unlike other elements, toString returns the href
 10.8053 +     */
 10.8054 +    toString: function() {
 10.8055 +        return this.href;
 10.8056 +    }
 10.8057 +});
 10.8058 +
 10.8059 +/*
 10.8060 + * HTMLAreaElement - DOM Level 2
 10.8061 + *
 10.8062 + * HTML5: 4.8.13 The area element
 10.8063 + * http://dev.w3.org/html5/spec/Overview.html#the-area-element
 10.8064 + */
 10.8065 +HTMLAreaElement = function(ownerDocument) {
 10.8066 +    HTMLElement.apply(this, arguments);
 10.8067 +};
 10.8068 +HTMLAreaElement.prototype = new HTMLElement();
 10.8069 +__extend__(HTMLAreaElement.prototype, {
 10.8070 +    get accessKey(){
 10.8071 +        return this.getAttribute('accesskey');
 10.8072 +    },
 10.8073 +    set accessKey(value){
 10.8074 +        this.setAttribute('accesskey',value);
 10.8075 +    },
 10.8076 +    get alt(){
 10.8077 +        return this.getAttribute('alt') || '';
 10.8078 +    },
 10.8079 +    set alt(value){
 10.8080 +        this.setAttribute('alt',value);
 10.8081 +    },
 10.8082 +    get coords(){
 10.8083 +        return this.getAttribute('coords');
 10.8084 +    },
 10.8085 +    set coords(value){
 10.8086 +        this.setAttribute('coords',value);
 10.8087 +    },
 10.8088 +    get href(){
 10.8089 +        return this.getAttribute('href') || '';
 10.8090 +    },
 10.8091 +    set href(value){
 10.8092 +        this.setAttribute('href',value);
 10.8093 +    },
 10.8094 +    get noHref(){
 10.8095 +        return this.hasAttribute('href');
 10.8096 +    },
 10.8097 +    get shape(){
 10.8098 +        //TODO
 10.8099 +        return 0;
 10.8100 +    },
 10.8101 +    /*get tabIndex(){
 10.8102 +      return this.getAttribute('tabindex');
 10.8103 +      },
 10.8104 +      set tabIndex(value){
 10.8105 +      this.setAttribute('tabindex',value);
 10.8106 +      },*/
 10.8107 +    get target(){
 10.8108 +        return this.getAttribute('target');
 10.8109 +    },
 10.8110 +    set target(value){
 10.8111 +        this.setAttribute('target',value);
 10.8112 +    },
 10.8113 +
 10.8114 +    /**
 10.8115 +     * toString like <a>, returns the href
 10.8116 +     */
 10.8117 +    toString: function() {
 10.8118 +        return this.href;
 10.8119 +    }
 10.8120 +});
 10.8121 +
 10.8122 +
 10.8123 +/*
 10.8124 + * HTMLBaseElement - DOM Level 2
 10.8125 + *
 10.8126 + * HTML5: 4.2.3 The base element
 10.8127 + * http://dev.w3.org/html5/spec/Overview.html#the-base-element
 10.8128 + */
 10.8129 +HTMLBaseElement = function(ownerDocument) {
 10.8130 +    HTMLElement.apply(this, arguments);
 10.8131 +};
 10.8132 +HTMLBaseElement.prototype = new HTMLElement();
 10.8133 +__extend__(HTMLBaseElement.prototype, {
 10.8134 +    get href(){
 10.8135 +        return this.getAttribute('href');
 10.8136 +    },
 10.8137 +    set href(value){
 10.8138 +        this.setAttribute('href',value);
 10.8139 +    },
 10.8140 +    get target(){
 10.8141 +        return this.getAttribute('target');
 10.8142 +    },
 10.8143 +    set target(value){
 10.8144 +        this.setAttribute('target',value);
 10.8145 +    },
 10.8146 +    toString: function() {
 10.8147 +        return '[object HTMLBaseElement]';
 10.8148 +    }
 10.8149 +});
 10.8150 +
 10.8151 +
 10.8152 +/*
 10.8153 + * HTMLQuoteElement - DOM Level 2
 10.8154 + * HTML5: 4.5.5 The blockquote element
 10.8155 + * http://dev.w3.org/html5/spec/Overview.html#htmlquoteelement
 10.8156 + */
 10.8157 +HTMLQuoteElement = function(ownerDocument) {
 10.8158 +    HTMLElement.apply(this, arguments);
 10.8159 +};
 10.8160 +__extend__(HTMLQuoteElement.prototype, HTMLElement.prototype);
 10.8161 +__extend__(HTMLQuoteElement.prototype, {
 10.8162 +    /**
 10.8163 +     * Quoth the spec:
 10.8164 +     * """
 10.8165 +     * If the cite attribute is present, it must be a valid URL. To
 10.8166 +     * obtain the corresponding citation link, the value of the
 10.8167 +     * attribute must be resolved relative to the element. User agents
 10.8168 +     * should allow users to follow such citation links.
 10.8169 +     * """
 10.8170 +     *
 10.8171 +     * TODO: normalize
 10.8172 +     *
 10.8173 +     */
 10.8174 +    get cite() {
 10.8175 +        return this.getAttribute('cite') || '';
 10.8176 +    },
 10.8177 +
 10.8178 +    set cite(value) {
 10.8179 +        this.setAttribute('cite', value);
 10.8180 +    },
 10.8181 +    toString: function() {
 10.8182 +        return '[object HTMLQuoteElement]';
 10.8183 +    }
 10.8184 +});
 10.8185 +
 10.8186 +/*
 10.8187 + * HTMLBodyElement - DOM Level 2
 10.8188 + * HTML5: http://dev.w3.org/html5/spec/Overview.html#the-body-element-0
 10.8189 + */
 10.8190 +HTMLBodyElement = function(ownerDocument) {
 10.8191 +    HTMLElement.apply(this, arguments);
 10.8192 +};
 10.8193 +HTMLBodyElement.prototype = new HTMLElement();
 10.8194 +__extend__(HTMLBodyElement.prototype, {
 10.8195 +    onload: function(event){
 10.8196 +        __eval__(this.getAttribute('onload')||'', this);
 10.8197 +    },
 10.8198 +    onunload: function(event){
 10.8199 +        __eval__(this.getAttribute('onunload')||'', this);
 10.8200 +    },
 10.8201 +    toString: function() {
 10.8202 +        return '[object HTMLBodyElement]';
 10.8203 +    }
 10.8204 +});
 10.8205 +
 10.8206 +/*
 10.8207 + * HTMLBRElement
 10.8208 + * HTML5: 4.5.3 The hr Element
 10.8209 + * http://dev.w3.org/html5/spec/Overview.html#the-br-element
 10.8210 + */
 10.8211 +HTMLBRElement = function(ownerDocument) {
 10.8212 +    HTMLElement.apply(this, arguments);
 10.8213 +};
 10.8214 +
 10.8215 +HTMLBRElement.prototype = new HTMLElement();
 10.8216 +__extend__(HTMLBRElement.prototype, {
 10.8217 +
 10.8218 +    // no additional properties or elements
 10.8219 +
 10.8220 +    toString: function() {
 10.8221 +        return '[object HTMLBRElement]';
 10.8222 +    }
 10.8223 +});
 10.8224 +
 10.8225 +
 10.8226 +/*
 10.8227 + * HTMLButtonElement - DOM Level 2
 10.8228 + *
 10.8229 + * HTML5: 4.10.6 The button element
 10.8230 + * http://dev.w3.org/html5/spec/Overview.html#the-button-element
 10.8231 + */
 10.8232 +HTMLButtonElement = function(ownerDocument) {
 10.8233 +    HTMLTypeValueInputs.apply(this, arguments);
 10.8234 +};
 10.8235 +HTMLButtonElement.prototype = new HTMLTypeValueInputs();
 10.8236 +__extend__(HTMLButtonElement.prototype, inputElements_status);
 10.8237 +__extend__(HTMLButtonElement.prototype, {
 10.8238 +    get dataFormatAs(){
 10.8239 +        return this.getAttribute('dataFormatAs');
 10.8240 +    },
 10.8241 +    set dataFormatAs(value){
 10.8242 +        this.setAttribute('dataFormatAs',value);
 10.8243 +    },
 10.8244 +    get type() {
 10.8245 +        return this.getAttribute('type') || 'submit';
 10.8246 +    },
 10.8247 +    set type(value) {
 10.8248 +        this.setAttribute('type', value);
 10.8249 +    },
 10.8250 +    get value() {
 10.8251 +        return this.getAttribute('value') || '';
 10.8252 +    },
 10.8253 +    set value(value) {
 10.8254 +        this.setAttribute('value', value);
 10.8255 +    },
 10.8256 +    toString: function() {
 10.8257 +        return '[object HTMLButtonElement]';
 10.8258 +    }
 10.8259 +});
 10.8260 +
 10.8261 +// Named Element Support
 10.8262 +HTMLElement.registerSetAttribute('BUTTON', 'name',
 10.8263 +                                 __updateFormForNamedElement__);
 10.8264 +
 10.8265 +/*
 10.8266 + * HTMLCanvasElement - DOM Level 2
 10.8267 + * HTML5: 4.8.11 The canvas element
 10.8268 + * http://dev.w3.org/html5/spec/Overview.html#the-canvas-element
 10.8269 + */
 10.8270 +
 10.8271 +
 10.8272 +/*
 10.8273 + * This is a "non-Abstract Base Class". For an implmentation that actually
 10.8274 + * did something, all these methods would need to over-written
 10.8275 + */
 10.8276 +CanvasRenderingContext2D = function() {
 10.8277 +    // NOP
 10.8278 +};
 10.8279 +
 10.8280 +var nullfunction = function() {};
 10.8281 +
 10.8282 +CanvasRenderingContext2D.prototype = {
 10.8283 +    addColorStop: nullfunction,
 10.8284 +    arc: nullfunction,
 10.8285 +    beginPath: nullfunction,
 10.8286 +    bezierCurveTo: nullfunction,
 10.8287 +    clearRect: nullfunction,
 10.8288 +    clip: nullfunction,
 10.8289 +    closePath: nullfunction,
 10.8290 +    createLinearGradient: nullfunction,
 10.8291 +    createPattern: nullfunction,
 10.8292 +    createRadialGradient: nullfunction,
 10.8293 +    drawImage: nullfunction,
 10.8294 +    fill: nullfunction,
 10.8295 +    fillRect:  nullfunction,
 10.8296 +    lineTo: nullfunction,
 10.8297 +    moveTo: nullfunction,
 10.8298 +    quadraticCurveTo: nullfunction,
 10.8299 +    rect: nullfunction,
 10.8300 +    restore: nullfunction,
 10.8301 +    rotate: nullfunction,
 10.8302 +    save: nullfunction,
 10.8303 +    scale: nullfunction,
 10.8304 +    setTranform: nullfunction,
 10.8305 +    stroke: nullfunction,
 10.8306 +    strokeRect: nullfunction,
 10.8307 +    transform: nullfunction,
 10.8308 +    translate: nullfunction,
 10.8309 +
 10.8310 +    toString: function() {
 10.8311 +        return '[object CanvasRenderingContext2D]';
 10.8312 +    }
 10.8313 +};
 10.8314 +
 10.8315 +HTMLCanvasElement = function(ownerDocument) {
 10.8316 +    HTMLElement.apply(this, arguments);
 10.8317 +};
 10.8318 +HTMLCanvasElement.prototype = new HTMLElement();
 10.8319 +__extend__(HTMLCanvasElement.prototype, {
 10.8320 +
 10.8321 +    getContext: function(ctxtype) {
 10.8322 +        if (ctxtype === '2d') {
 10.8323 +            return new CanvasRenderingContext2D();
 10.8324 +        }
 10.8325 +        throw new Error("Unknown context type of '" + ctxtype + '"');
 10.8326 +    },
 10.8327 +
 10.8328 +    get height(){
 10.8329 +        return Number(this.getAttribute('height')|| 150);
 10.8330 +    },
 10.8331 +    set height(value){
 10.8332 +        this.setAttribute('height', value);
 10.8333 +    },
 10.8334 +
 10.8335 +    get width(){
 10.8336 +        return Number(this.getAttribute('width')|| 300);
 10.8337 +    },
 10.8338 +    set width(value){
 10.8339 +        this.setAttribute('width', value);
 10.8340 +    },
 10.8341 +
 10.8342 +    toString: function() {
 10.8343 +        return '[object HTMLCanvasElement]';
 10.8344 +    }
 10.8345 +
 10.8346 +});
 10.8347 +
 10.8348 +
 10.8349 +/*
 10.8350 +* HTMLTableColElement - DOM Level 2
 10.8351 +*
 10.8352 +* HTML5: 4.9.3 The colgroup element
 10.8353 +* http://dev.w3.org/html5/spec/Overview.html#the-colgroup-element
 10.8354 +*/
 10.8355 +HTMLTableColElement = function(ownerDocument) {
 10.8356 +    HTMLElement.apply(this, arguments);
 10.8357 +};
 10.8358 +HTMLTableColElement.prototype = new HTMLElement();
 10.8359 +__extend__(HTMLTableColElement.prototype, {
 10.8360 +    get align(){
 10.8361 +        return this.getAttribute('align');
 10.8362 +    },
 10.8363 +    set align(value){
 10.8364 +        this.setAttribute('align', value);
 10.8365 +    },
 10.8366 +    get ch(){
 10.8367 +        return this.getAttribute('ch');
 10.8368 +    },
 10.8369 +    set ch(value){
 10.8370 +        this.setAttribute('ch', value);
 10.8371 +    },
 10.8372 +    get chOff(){
 10.8373 +        return this.getAttribute('ch');
 10.8374 +    },
 10.8375 +    set chOff(value){
 10.8376 +        this.setAttribute('ch', value);
 10.8377 +    },
 10.8378 +    get span(){
 10.8379 +        return this.getAttribute('span');
 10.8380 +    },
 10.8381 +    set span(value){
 10.8382 +        this.setAttribute('span', value);
 10.8383 +    },
 10.8384 +    get vAlign(){
 10.8385 +        return this.getAttribute('valign');
 10.8386 +    },
 10.8387 +    set vAlign(value){
 10.8388 +        this.setAttribute('valign', value);
 10.8389 +    },
 10.8390 +    get width(){
 10.8391 +        return this.getAttribute('width');
 10.8392 +    },
 10.8393 +    set width(value){
 10.8394 +        this.setAttribute('width', value);
 10.8395 +    },
 10.8396 +    toString: function() {
 10.8397 +        return '[object HTMLTableColElement]';
 10.8398 +    }
 10.8399 +});
 10.8400 +
 10.8401 +
 10.8402 +/*
 10.8403 + * HTMLModElement - DOM Level 2
 10.8404 + * http://dev.w3.org/html5/spec/Overview.html#htmlmodelement
 10.8405 + */
 10.8406 +HTMLModElement = function(ownerDocument) {
 10.8407 +    HTMLElement.apply(this, arguments);
 10.8408 +};
 10.8409 +HTMLModElement.prototype = new HTMLElement();
 10.8410 +__extend__(HTMLModElement.prototype, {
 10.8411 +    get cite(){
 10.8412 +        return this.getAttribute('cite');
 10.8413 +    },
 10.8414 +    set cite(value){
 10.8415 +        this.setAttribute('cite', value);
 10.8416 +    },
 10.8417 +    get dateTime(){
 10.8418 +        return this.getAttribute('datetime');
 10.8419 +    },
 10.8420 +    set dateTime(value){
 10.8421 +        this.setAttribute('datetime', value);
 10.8422 +    },
 10.8423 +    toString: function() {
 10.8424 +        return '[object HTMLModElement]';
 10.8425 +    }
 10.8426 +});
 10.8427 +
 10.8428 +/*
 10.8429 + * HTMLDivElement - DOM Level 2
 10.8430 + * HTML5: 4.5.12 The Div Element
 10.8431 + * http://dev.w3.org/html5/spec/Overview.html#the-div-element
 10.8432 + */
 10.8433 +HTMLDivElement = function(ownerDocument) {
 10.8434 +    HTMLElement.apply(this, arguments);
 10.8435 +};
 10.8436 +
 10.8437 +HTMLDivElement.prototype = new HTMLElement();
 10.8438 +__extend__(HTMLDivElement.prototype, {
 10.8439 +    get align(){
 10.8440 +        return this.getAttribute('align') || 'left';
 10.8441 +    },
 10.8442 +    set align(value){
 10.8443 +        this.setAttribute('align', value);
 10.8444 +    },
 10.8445 +    toString: function() {
 10.8446 +        return '[object HTMLDivElement]';
 10.8447 +    }
 10.8448 +});
 10.8449 +
 10.8450 +
 10.8451 +/*
 10.8452 + * HTMLDListElement
 10.8453 + * HTML5: 4.5.7 The dl Element
 10.8454 + * http://dev.w3.org/html5/spec/Overview.html#the-dl-element
 10.8455 + */
 10.8456 +HTMLDListElement = function(ownerDocument) {
 10.8457 +    HTMLElement.apply(this, arguments);
 10.8458 +};
 10.8459 +
 10.8460 +HTMLDListElement.prototype = new HTMLElement();
 10.8461 +__extend__(HTMLDListElement.prototype, {
 10.8462 +
 10.8463 +    // no additional properties or elements
 10.8464 +
 10.8465 +    toString: function() {
 10.8466 +        return '[object HTMLDListElement]';
 10.8467 +    }
 10.8468 +});
 10.8469 +
 10.8470 +
 10.8471 +/**
 10.8472 + * HTMLLegendElement - DOM Level 2
 10.8473 + *
 10.8474 + * HTML5: 4.10.3 The legend element
 10.8475 + * http://dev.w3.org/html5/spec/Overview.html#the-legend-element
 10.8476 + */
 10.8477 +HTMLLegendElement = function(ownerDocument) {
 10.8478 +    HTMLInputCommon.apply(this, arguments);
 10.8479 +};
 10.8480 +HTMLLegendElement.prototype = new HTMLInputCommon();
 10.8481 +__extend__(HTMLLegendElement.prototype, {
 10.8482 +    get align(){
 10.8483 +        return this.getAttribute('align');
 10.8484 +    },
 10.8485 +    set align(value){
 10.8486 +        this.setAttribute('align',value);
 10.8487 +    }
 10.8488 +});
 10.8489 +
 10.8490 +
 10.8491 +/*
 10.8492 + * HTMLFieldSetElement - DOM Level 2
 10.8493 + *
 10.8494 + * HTML5: 4.10.2 The fieldset element
 10.8495 + * http://dev.w3.org/html5/spec/Overview.html#the-fieldset-element
 10.8496 + */
 10.8497 +HTMLFieldSetElement = function(ownerDocument) {
 10.8498 +    HTMLLegendElement.apply(this, arguments);
 10.8499 +};
 10.8500 +HTMLFieldSetElement.prototype = new HTMLLegendElement();
 10.8501 +__extend__(HTMLFieldSetElement.prototype, {
 10.8502 +    get margin(){
 10.8503 +        return this.getAttribute('margin');
 10.8504 +    },
 10.8505 +    set margin(value){
 10.8506 +        this.setAttribute('margin',value);
 10.8507 +    },
 10.8508 +    toString: function() {
 10.8509 +        return '[object HTMLFieldSetElement]';
 10.8510 +    }
 10.8511 +});
 10.8512 +
 10.8513 +// Named Element Support
 10.8514 +HTMLElement.registerSetAttribute('FIELDSET', 'name',
 10.8515 +                                 __updateFormForNamedElement__);
 10.8516 +/*
 10.8517 + * HTMLFormElement - DOM Level 2
 10.8518 + *
 10.8519 + * HTML5: http://dev.w3.org/html5/spec/Overview.html#the-form-element
 10.8520 + */
 10.8521 +HTMLFormElement = function(ownerDocument){
 10.8522 +    HTMLElement.apply(this, arguments);
 10.8523 +
 10.8524 +    //TODO: on __elementPopped__ from the parser
 10.8525 +    //      we need to determine all the forms default
 10.8526 +    //      values
 10.8527 +};
 10.8528 +HTMLFormElement.prototype = new HTMLElement();
 10.8529 +__extend__(HTMLFormElement.prototype,{
 10.8530 +    get acceptCharset(){
 10.8531 +        return this.getAttribute('accept-charset');
 10.8532 +    },
 10.8533 +    set acceptCharset(acceptCharset) {
 10.8534 +        this.setAttribute('accept-charset', acceptCharset);
 10.8535 +    },
 10.8536 +    get action() {
 10.8537 +        return this.getAttribute('action');
 10.8538 +    },
 10.8539 +    set action(action){
 10.8540 +        this.setAttribute('action', action);
 10.8541 +    },
 10.8542 +
 10.8543 +    get enctype() {
 10.8544 +        return this.getAttribute('enctype');
 10.8545 +    },
 10.8546 +    set enctype(enctype) {
 10.8547 +        this.setAttribute('enctype', enctype);
 10.8548 +    },
 10.8549 +    get method() {
 10.8550 +        return this.getAttribute('method');
 10.8551 +    },
 10.8552 +    set method(method) {
 10.8553 +        this.setAttribute('method', method);
 10.8554 +    },
 10.8555 +    get name() {
 10.8556 +        return this.getAttribute("name");
 10.8557 +    },
 10.8558 +    set name(val) {
 10.8559 +        return this.setAttribute("name",val);
 10.8560 +    },
 10.8561 +    get target() {
 10.8562 +        return this.getAttribute("target");
 10.8563 +    },
 10.8564 +    set target(val) {
 10.8565 +        return this.setAttribute("target",val);
 10.8566 +    },
 10.8567 +
 10.8568 +    /**
 10.8569 +     * "Named Elements"
 10.8570 +     *
 10.8571 +     */
 10.8572 +    /**
 10.8573 +     * returns HTMLFormControlsCollection
 10.8574 +     * http://dev.w3.org/html5/spec/Overview.html#dom-form-elements
 10.8575 +     *
 10.8576 +     * button fieldset input keygen object output select textarea
 10.8577 +     */
 10.8578 +    get elements() {
 10.8579 +        var nodes = this.getElementsByTagName('*');
 10.8580 +        var alist = [];
 10.8581 +        var i, tmp;
 10.8582 +        for (i = 0; i < nodes.length; ++i) {
 10.8583 +            nodename = nodes[i].nodeName;
 10.8584 +            // would like to replace switch with something else
 10.8585 +            //  since it's redundant with the SetAttribute callbacks
 10.8586 +            switch (nodes[i].nodeName) {
 10.8587 +            case 'BUTTON':
 10.8588 +            case 'FIELDSET':
 10.8589 +            case 'INPUT':
 10.8590 +            case 'KEYGEN':
 10.8591 +            case 'OBJECT':
 10.8592 +            case 'OUTPUT':
 10.8593 +            case 'SELECT':
 10.8594 +            case 'TEXTAREA':
 10.8595 +                alist.push(nodes[i]);
 10.8596 +                this[i] = nodes[i];
 10.8597 +                tmp = nodes[i].name;
 10.8598 +                if (tmp) {
 10.8599 +                    this[tmp] = nodes[i];
 10.8600 +                }
 10.8601 +                tmp = nodes[i].id;
 10.8602 +                if (tmp) {
 10.8603 +                    this[tmp] = nodes[i];
 10.8604 +                }
 10.8605 +            }
 10.8606 +        }
 10.8607 +        return new HTMLCollection(alist);
 10.8608 +    },
 10.8609 +    _updateElements: function() {
 10.8610 +        this.elements;
 10.8611 +    },
 10.8612 +    get length() {
 10.8613 +        return this.elements.length;
 10.8614 +    },
 10.8615 +    item: function(idx) {
 10.8616 +        return this.elements[idx];
 10.8617 +    },
 10.8618 +    namedItem: function(aname) {
 10.8619 +        return this.elements.namedItem(aname);
 10.8620 +    },
 10.8621 +    toString: function() {
 10.8622 +        return '[object HTMLFormElement]';
 10.8623 +    },
 10.8624 +    submit: function() {
 10.8625 +        //TODO: this needs to perform the form inputs serialization
 10.8626 +        //      and submission
 10.8627 +        //  DONE: see xhr/form.js
 10.8628 +        var event = __submit__(this);
 10.8629 +
 10.8630 +    },
 10.8631 +    reset: function() {
 10.8632 +        //TODO: this needs to reset all values specified in the form
 10.8633 +        //      to those which where set as defaults
 10.8634 +        __reset__(this);
 10.8635 +
 10.8636 +    },
 10.8637 +    onsubmit: HTMLEvents.prototype.onsubmit,
 10.8638 +    onreset: HTMLEvents.prototype.onreset
 10.8639 +});
 10.8640 +
 10.8641 +/**
 10.8642 + * HTMLFrameElement - DOM Level 2
 10.8643 + */
 10.8644 +HTMLFrameElement = function(ownerDocument) {
 10.8645 +    HTMLElement.apply(this, arguments);
 10.8646 +    // this is normally a getter but we need to be
 10.8647 +    // able to set it to correctly emulate behavior
 10.8648 +    this.contentDocument = null;
 10.8649 +    this.contentWindow = null;
 10.8650 +};
 10.8651 +HTMLFrameElement.prototype = new HTMLElement();
 10.8652 +__extend__(HTMLFrameElement.prototype, {
 10.8653 +
 10.8654 +    get frameBorder(){
 10.8655 +        return this.getAttribute('border')||"";
 10.8656 +    },
 10.8657 +    set frameBorder(value){
 10.8658 +        this.setAttribute('border', value);
 10.8659 +    },
 10.8660 +    get longDesc(){
 10.8661 +        return this.getAttribute('longdesc')||"";
 10.8662 +    },
 10.8663 +    set longDesc(value){
 10.8664 +        this.setAttribute('longdesc', value);
 10.8665 +    },
 10.8666 +    get marginHeight(){
 10.8667 +        return this.getAttribute('marginheight')||"";
 10.8668 +    },
 10.8669 +    set marginHeight(value){
 10.8670 +        this.setAttribute('marginheight', value);
 10.8671 +    },
 10.8672 +    get marginWidth(){
 10.8673 +        return this.getAttribute('marginwidth')||"";
 10.8674 +    },
 10.8675 +    set marginWidth(value){
 10.8676 +        this.setAttribute('marginwidth', value);
 10.8677 +    },
 10.8678 +    get name(){
 10.8679 +        return this.getAttribute('name')||"";
 10.8680 +    },
 10.8681 +    set name(value){
 10.8682 +        this.setAttribute('name', value);
 10.8683 +    },
 10.8684 +    get noResize(){
 10.8685 +        return this.getAttribute('noresize')||false;
 10.8686 +    },
 10.8687 +    set noResize(value){
 10.8688 +        this.setAttribute('noresize', value);
 10.8689 +    },
 10.8690 +    get scrolling(){
 10.8691 +        return this.getAttribute('scrolling')||"";
 10.8692 +    },
 10.8693 +    set scrolling(value){
 10.8694 +        this.setAttribute('scrolling', value);
 10.8695 +    },
 10.8696 +    get src(){
 10.8697 +        return this.getAttribute('src')||"";
 10.8698 +    },
 10.8699 +    set src(value){
 10.8700 +        this.setAttribute('src', value);
 10.8701 +    },
 10.8702 +    toString: function(){
 10.8703 +        return '[object HTMLFrameElement]';
 10.8704 +    },
 10.8705 +    onload: HTMLEvents.prototype.onload
 10.8706 +});
 10.8707 +
 10.8708 +/**
 10.8709 + * HTMLFrameSetElement - DOM Level 2
 10.8710 + *
 10.8711 + * HTML5: 12.3.3 Frames
 10.8712 + * http://dev.w3.org/html5/spec/Overview.html#frameset
 10.8713 + */
 10.8714 +HTMLFrameSetElement = function(ownerDocument) {
 10.8715 +    HTMLElement.apply(this, arguments);
 10.8716 +};
 10.8717 +HTMLFrameSetElement.prototype = new HTMLElement();
 10.8718 +__extend__(HTMLFrameSetElement.prototype, {
 10.8719 +    get cols(){
 10.8720 +        return this.getAttribute('cols');
 10.8721 +    },
 10.8722 +    set cols(value){
 10.8723 +        this.setAttribute('cols', value);
 10.8724 +    },
 10.8725 +    get rows(){
 10.8726 +        return this.getAttribute('rows');
 10.8727 +    },
 10.8728 +    set rows(value){
 10.8729 +        this.setAttribute('rows', value);
 10.8730 +    },
 10.8731 +    toString: function() {
 10.8732 +        return '[object HTMLFrameSetElement]';
 10.8733 +    }
 10.8734 +});
 10.8735 +
 10.8736 +/*
 10.8737 + * HTMLHeadingElement
 10.8738 + * HTML5: 4.4.6 The h1, h2, h3, h4, h5, and h6 elements
 10.8739 + * http://dev.w3.org/html5/spec/Overview.html#the-h1-h2-h3-h4-h5-and-h6-elements
 10.8740 + */
 10.8741 +HTMLHeadingElement = function(ownerDocument) {
 10.8742 +    HTMLElement.apply(this, arguments);
 10.8743 +};
 10.8744 +
 10.8745 +HTMLHeadingElement.prototype = new HTMLElement();
 10.8746 +__extend__(HTMLHeadingElement.prototype, {
 10.8747 +    toString: function() {
 10.8748 +        return '[object HTMLHeadingElement]';
 10.8749 +    }
 10.8750 +});
 10.8751 +
 10.8752 +/**
 10.8753 + * HTMLHeadElement - DOM Level 2
 10.8754 + *
 10.8755 + * HTML5: 4.2.1 The head element
 10.8756 + * http://dev.w3.org/html5/spec/Overview.html#the-head-element-0
 10.8757 + */
 10.8758 +HTMLHeadElement = function(ownerDocument) {
 10.8759 +    HTMLElement.apply(this, arguments);
 10.8760 +};
 10.8761 +HTMLHeadElement.prototype = new HTMLElement();
 10.8762 +__extend__(HTMLHeadElement.prototype, {
 10.8763 +    get profile(){
 10.8764 +        return this.getAttribute('profile');
 10.8765 +    },
 10.8766 +    set profile(value){
 10.8767 +        this.setAttribute('profile', value);
 10.8768 +    },
 10.8769 +    //we override this so we can apply browser behavior specific to head children
 10.8770 +    //like loading scripts
 10.8771 +    appendChild : function(newChild) {
 10.8772 +        newChild = HTMLElement.prototype.appendChild.apply(this,[newChild]);
 10.8773 +        //TODO: evaluate scripts which are appended to the head
 10.8774 +        //__evalScript__(newChild);
 10.8775 +        return newChild;
 10.8776 +    },
 10.8777 +    insertBefore : function(newChild, refChild) {
 10.8778 +        newChild = HTMLElement.prototype.insertBefore.apply(this,[newChild]);
 10.8779 +        //TODO: evaluate scripts which are appended to the head
 10.8780 +        //__evalScript__(newChild);
 10.8781 +        return newChild;
 10.8782 +    },
 10.8783 +    toString: function(){
 10.8784 +        return '[object HTMLHeadElement]';
 10.8785 +    }
 10.8786 +});
 10.8787 +
 10.8788 +
 10.8789 +/*
 10.8790 + * HTMLHRElement
 10.8791 + * HTML5: 4.5.2 The hr Element
 10.8792 + * http://dev.w3.org/html5/spec/Overview.html#the-hr-element
 10.8793 + */
 10.8794 +HTMLHRElement = function(ownerDocument) {
 10.8795 +    HTMLElement.apply(this, arguments);
 10.8796 +};
 10.8797 +
 10.8798 +HTMLHRElement.prototype = new HTMLElement();
 10.8799 +__extend__(HTMLHRElement.prototype, {
 10.8800 +
 10.8801 +    // no additional properties or elements
 10.8802 +
 10.8803 +    toString: function() {
 10.8804 +        return '[object HTMLHRElement]';
 10.8805 +    }
 10.8806 +});
 10.8807 +
 10.8808 +
 10.8809 +/*
 10.8810 + * HTMLHtmlElement
 10.8811 + * HTML5: 4.1.1 The Html Element
 10.8812 + * http://dev.w3.org/html5/spec/Overview.html#htmlhtmlelement
 10.8813 + */
 10.8814 +HTMLHtmlElement = function(ownerDocument) {
 10.8815 +    HTMLElement.apply(this, arguments);
 10.8816 +};
 10.8817 +
 10.8818 +HTMLHtmlElement.prototype = new HTMLElement();
 10.8819 +__extend__(HTMLHtmlElement.prototype, {
 10.8820 +
 10.8821 +    // no additional properties or elements
 10.8822 +
 10.8823 +    toString: function() {
 10.8824 +        return '[object HTMLHtmlElement]';
 10.8825 +    }
 10.8826 +});
 10.8827 +
 10.8828 +
 10.8829 +/*
 10.8830 + * HTMLIFrameElement - DOM Level 2
 10.8831 + *
 10.8832 + * HTML5: 4.8.3 The iframe element
 10.8833 + * http://dev.w3.org/html5/spec/Overview.html#the-iframe-element
 10.8834 + */
 10.8835 +HTMLIFrameElement = function(ownerDocument) {
 10.8836 +    HTMLFrameElement.apply(this, arguments);
 10.8837 +};
 10.8838 +HTMLIFrameElement.prototype = new HTMLFrameElement();
 10.8839 +__extend__(HTMLIFrameElement.prototype, {
 10.8840 +    get height() {
 10.8841 +        return this.getAttribute("height") || "";
 10.8842 +    },
 10.8843 +    set height(val) {
 10.8844 +        return this.setAttribute("height",val);
 10.8845 +    },
 10.8846 +    get width() {
 10.8847 +        return this.getAttribute("width") || "";
 10.8848 +    },
 10.8849 +    set width(val) {
 10.8850 +        return this.setAttribute("width",val);
 10.8851 +    },
 10.8852 +    toString: function(){
 10.8853 +        return '[object HTMLIFrameElement]';
 10.8854 +    }
 10.8855 +});
 10.8856 +
 10.8857 +/**
 10.8858 + * HTMLImageElement and Image
 10.8859 + */
 10.8860 +
 10.8861 +
 10.8862 +HTMLImageElement = function(ownerDocument) {
 10.8863 +    HTMLElement.apply(this, arguments);
 10.8864 +};
 10.8865 +HTMLImageElement.prototype = new HTMLElement();
 10.8866 +__extend__(HTMLImageElement.prototype, {
 10.8867 +    get alt(){
 10.8868 +        return this.getAttribute('alt');
 10.8869 +    },
 10.8870 +    set alt(value){
 10.8871 +        this.setAttribute('alt', value);
 10.8872 +    },
 10.8873 +    get height(){
 10.8874 +        return parseInt(this.getAttribute('height'), 10) || 0;
 10.8875 +    },
 10.8876 +    set height(value){
 10.8877 +        this.setAttribute('height', value);
 10.8878 +    },
 10.8879 +    get isMap(){
 10.8880 +        return this.hasAttribute('map');
 10.8881 +    },
 10.8882 +    set useMap(value){
 10.8883 +        this.setAttribute('map', value);
 10.8884 +    },
 10.8885 +    get longDesc(){
 10.8886 +        return this.getAttribute('longdesc');
 10.8887 +    },
 10.8888 +    set longDesc(value){
 10.8889 +        this.setAttribute('longdesc', value);
 10.8890 +    },
 10.8891 +    get name(){
 10.8892 +        return this.getAttribute('name');
 10.8893 +    },
 10.8894 +    set name(value){
 10.8895 +        this.setAttribute('name', value);
 10.8896 +    },
 10.8897 +    get src(){
 10.8898 +        return this.getAttribute('src') || '';
 10.8899 +    },
 10.8900 +    set src(value){
 10.8901 +        this.setAttribute('src', value);
 10.8902 +    },
 10.8903 +    get width(){
 10.8904 +        return parseInt(this.getAttribute('width'), 10) || 0;
 10.8905 +    },
 10.8906 +    set width(value){
 10.8907 +        this.setAttribute('width', value);
 10.8908 +    },
 10.8909 +    toString: function(){
 10.8910 +        return '[object HTMLImageElement]';
 10.8911 +    }
 10.8912 +});
 10.8913 +
 10.8914 +/*
 10.8915 + * html5 4.8.1
 10.8916 + * http://dev.w3.org/html5/spec/Overview.html#the-img-element
 10.8917 + */
 10.8918 +Image = function(width, height) {
 10.8919 +    // Not sure if "[global].document" satifies this requirement:
 10.8920 +    // "The element's document must be the active document of the
 10.8921 +    // browsing context of the Window object on which the interface
 10.8922 +    // object of the invoked constructor is found."
 10.8923 +
 10.8924 +    HTMLElement.apply(this, [document]);
 10.8925 +    // Note: firefox will throw an error if the width/height
 10.8926 +    //   is not an integer.  Safari just converts to 0 on error.
 10.8927 +    this.width = parseInt(width, 10) || 0;
 10.8928 +    this.height = parseInt(height, 10) || 0;
 10.8929 +    this.nodeName = 'IMG';
 10.8930 +};
 10.8931 +Image.prototype = new HTMLImageElement();
 10.8932 +
 10.8933 +
 10.8934 +/*
 10.8935 + * Image.src attribute events.
 10.8936 + *
 10.8937 + * Not sure where this should live... in events/img.js? in parser/img.js?
 10.8938 + * Split out to make it easy to move.
 10.8939 + */
 10.8940 +
 10.8941 +/**
 10.8942 + * HTMLImageElement && Image are a bit odd in that the 'src' attribute
 10.8943 + * is 'active' -- changing it triggers loading of the image from the
 10.8944 + * network.
 10.8945 + *
 10.8946 + * This can occur by
 10.8947 + *   - Directly setting the Image.src =
 10.8948 + *   - Using one of the Element.setAttributeXXX methods
 10.8949 + *   - Node.importNode an image
 10.8950 + *   - The initial creation and parsing of an <img> tag
 10.8951 + *
 10.8952 + * __onImageRequest__ is a function that handles eventing
 10.8953 + *  and dispatches to a user-callback.
 10.8954 + *
 10.8955 + */
 10.8956 +__loadImage__ = function(node, value) {
 10.8957 +    var event;
 10.8958 +    if (value && (!Envjs.loadImage ||
 10.8959 +                  (Envjs.loadImage &&
 10.8960 +                   Envjs.loadImage(node, value)))) {
 10.8961 +        // value has to be something (easy)
 10.8962 +        // if the user-land API doesn't exist
 10.8963 +        // Or if the API exists and it returns true, then ok:
 10.8964 +        event = document.createEvent('Events');
 10.8965 +        event.initEvent('load');
 10.8966 +    } else {
 10.8967 +        // oops
 10.8968 +        event = document.createEvent('Events');
 10.8969 +        event.initEvent('error');
 10.8970 +    }
 10.8971 +    node.dispatchEvent(event, false);
 10.8972 +};
 10.8973 +
 10.8974 +__extend__(HTMLImageElement.prototype, {
 10.8975 +    onload: function(event){
 10.8976 +        __eval__(this.getAttribute('onload') || '', this);
 10.8977 +    }
 10.8978 +});
 10.8979 +
 10.8980 +
 10.8981 +/*
 10.8982 + * Image Loading
 10.8983 + *
 10.8984 + * The difference between "owner.parsing" and "owner.fragment"
 10.8985 + *
 10.8986 + * If owner.parsing === true, then during the html5 parsing then,
 10.8987 + *  __elementPopped__ is called when a compete tag (with attrs and
 10.8988 + *  children) is full parsed and added the DOM.
 10.8989 + *
 10.8990 + *   For images, __elementPopped__ is called with everything the
 10.8991 + *    tag has.  which in turn looks for a "src" attr and calls
 10.8992 + *    __loadImage__
 10.8993 + *
 10.8994 + * If owner.parser === false (or non-existant), then we are not in
 10.8995 + * a parsing step.  For images, perhaps someone directly modified
 10.8996 + * a 'src' attribute of an existing image.
 10.8997 + *
 10.8998 + * 'innerHTML' is tricky since we first create a "fake document",
 10.8999 + *  parse it, then import the right parts.  This may call
 10.9000 + *  img.setAttributeNS twice.  once during the parse and once
 10.9001 + *  during the clone of the node.  We want event to trigger on the
 10.9002 + *  later and not during th fake doco.  "owner.fragment" is set by
 10.9003 + *  the fake doco parser to indicate that events should not be
 10.9004 + *  triggered on this.
 10.9005 + *
 10.9006 + * We coud make 'owner.parser' == [ 'none', 'full', 'fragment']
 10.9007 + * and just use one variable That was not done since the patch is
 10.9008 + * quite large as is.
 10.9009 + *
 10.9010 + * This same problem occurs with scripts.  innerHTML oddly does
 10.9011 + * not eval any <script> tags inside.
 10.9012 + */
 10.9013 +HTMLElement.registerSetAttribute('IMG', 'src', function(node, value) {
 10.9014 +    var owner = node.ownerDocument;
 10.9015 +    if (!owner.parsing && !owner.fragment) {
 10.9016 +        __loadImage__(node, value);
 10.9017 +    }
 10.9018 +});
 10.9019 +/**
 10.9020 + * HTMLInputElement
 10.9021 + *
 10.9022 + * HTML5: 4.10.5 The input element
 10.9023 + * http://dev.w3.org/html5/spec/Overview.html#the-input-element
 10.9024 + */
 10.9025 +HTMLInputElement = function(ownerDocument) {
 10.9026 +    HTMLInputAreaCommon.apply(this, arguments);
 10.9027 +    this._dirty = false;
 10.9028 +    this._checked = null;
 10.9029 +    this._value = null;
 10.9030 +};
 10.9031 +HTMLInputElement.prototype = new HTMLInputAreaCommon();
 10.9032 +__extend__(HTMLInputElement.prototype, {
 10.9033 +    get alt(){
 10.9034 +        return this.getAttribute('alt') || '';
 10.9035 +    },
 10.9036 +    set alt(value){
 10.9037 +        this.setAttribute('alt', value);
 10.9038 +    },
 10.9039 +
 10.9040 +    /**
 10.9041 +     * 'checked' returns state, NOT the value of the attribute
 10.9042 +     */
 10.9043 +    get checked(){
 10.9044 +        if (this._checked === null) {
 10.9045 +            this._checked = this.defaultChecked;
 10.9046 +        }
 10.9047 +        return this._checked;
 10.9048 +    },
 10.9049 +    set checked(value){
 10.9050 +        // force to boolean value
 10.9051 +        this._checked = (value) ? true : false;
 10.9052 +    },
 10.9053 +
 10.9054 +    /**
 10.9055 +     * 'defaultChecked' actually reflects if the 'checked' attribute
 10.9056 +     * is present or not
 10.9057 +     */
 10.9058 +    get defaultChecked(){
 10.9059 +        return this.hasAttribute('checked');
 10.9060 +    },
 10.9061 +    set defaultChecked(val){
 10.9062 +        if (val) {
 10.9063 +            this.setAttribute('checked', '');
 10.9064 +        } else {
 10.9065 +            if (this.defaultChecked) {
 10.9066 +                this.removeAttribute('checked');
 10.9067 +            }
 10.9068 +        }
 10.9069 +    },
 10.9070 +    get defaultValue() {
 10.9071 +        return this.getAttribute('value') || '';
 10.9072 +    },
 10.9073 +    set defaultValue(value) {
 10.9074 +        this._dirty = true;
 10.9075 +        this.setAttribute('value', value);
 10.9076 +    },
 10.9077 +    get value() {
 10.9078 +        return (this._value === null) ? this.defaultValue : this._value;
 10.9079 +    },
 10.9080 +    set value(newvalue) {
 10.9081 +        this._value = newvalue;
 10.9082 +    },
 10.9083 +    /**
 10.9084 +     * Height is a string
 10.9085 +     */
 10.9086 +    get height(){
 10.9087 +        // spec says it is a string
 10.9088 +        return this.getAttribute('height') || '';
 10.9089 +    },
 10.9090 +    set height(value){
 10.9091 +        this.setAttribute('height',value);
 10.9092 +    },
 10.9093 +
 10.9094 +    /**
 10.9095 +     * MaxLength is a number
 10.9096 +     */
 10.9097 +    get maxLength(){
 10.9098 +        return Number(this.getAttribute('maxlength')||'-1');
 10.9099 +    },
 10.9100 +    set maxLength(value){
 10.9101 +        this.setAttribute('maxlength', value);
 10.9102 +    },
 10.9103 +
 10.9104 +    /**
 10.9105 +     * Src is a URL string
 10.9106 +     */
 10.9107 +    get src(){
 10.9108 +        return this.getAttribute('src') || '';
 10.9109 +    },
 10.9110 +    set src(value){
 10.9111 +        // TODO: make absolute any relative URLS
 10.9112 +        this.setAttribute('src', value);
 10.9113 +    },
 10.9114 +
 10.9115 +    get type() {
 10.9116 +        return this.getAttribute('type') || 'text';
 10.9117 +    },
 10.9118 +    set type(value) {
 10.9119 +        this.setAttribute('type', value);
 10.9120 +    },
 10.9121 +
 10.9122 +    get useMap(){
 10.9123 +        return this.getAttribute('map') || '';
 10.9124 +    },
 10.9125 +
 10.9126 +    /**
 10.9127 +     * Width: spec says it is a string
 10.9128 +     */
 10.9129 +    get width(){
 10.9130 +        return this.getAttribute('width') || '';
 10.9131 +    },
 10.9132 +    set width(value){
 10.9133 +        this.setAttribute('width',value);
 10.9134 +    },
 10.9135 +    click:function(){
 10.9136 +        __click__(this);
 10.9137 +    },
 10.9138 +    toString: function() {
 10.9139 +        return '[object HTMLInputElement]';
 10.9140 +    }
 10.9141 +});
 10.9142 +
 10.9143 +//http://dev.w3.org/html5/spec/Overview.html#dom-input-value
 10.9144 +// if someone directly modifies the value attribute, then the input's value
 10.9145 +// also directly changes.
 10.9146 +HTMLElement.registerSetAttribute('INPUT', 'value', function(node, value) {
 10.9147 +    if (!node._dirty) {
 10.9148 +        node._value = value;
 10.9149 +        node._dirty = true;
 10.9150 +    }
 10.9151 +});
 10.9152 +
 10.9153 +/*
 10.9154 + *The checked content attribute is a boolean attribute that gives the
 10.9155 + *default checkedness of the input element. When the checked content
 10.9156 + *attribute is added, if the control does not have dirty checkedness,
 10.9157 + *the user agent must set the checkedness of the element to true; when
 10.9158 + *the checked content attribute is removed, if the control does not
 10.9159 + *have dirty checkedness, the user agent must set the checkedness of
 10.9160 + *the element to false.
 10.9161 + */
 10.9162 +// Named Element Support
 10.9163 +HTMLElement.registerSetAttribute('INPUT', 'name',
 10.9164 +                                 __updateFormForNamedElement__);
 10.9165 +
 10.9166 +/**
 10.9167 + * HTMLLabelElement - DOM Level 2
 10.9168 + * HTML5 4.10.4 The label element
 10.9169 + * http://dev.w3.org/html5/spec/Overview.html#the-label-element
 10.9170 + */
 10.9171 +HTMLLabelElement = function(ownerDocument) {
 10.9172 +    HTMLInputCommon.apply(this, arguments);
 10.9173 +};
 10.9174 +HTMLLabelElement.prototype = new HTMLInputCommon();
 10.9175 +__extend__(HTMLLabelElement.prototype, inputElements_dataProperties);
 10.9176 +__extend__(HTMLLabelElement.prototype, {
 10.9177 +    get htmlFor() {
 10.9178 +        return this.getAttribute('for');
 10.9179 +    },
 10.9180 +    set htmlFor(value) {
 10.9181 +        this.setAttribute('for',value);
 10.9182 +    },
 10.9183 +    get dataFormatAs() {
 10.9184 +        return this.getAttribute('dataFormatAs');
 10.9185 +    },
 10.9186 +    set dataFormatAs(value) {
 10.9187 +        this.setAttribute('dataFormatAs',value);
 10.9188 +    },
 10.9189 +    toString: function() {
 10.9190 +        return '[object HTMLLabelElement]';
 10.9191 +    }
 10.9192 +});
 10.9193 +
 10.9194 +/*
 10.9195 + * HTMLLIElement
 10.9196 + * HTML5: 4.5.8 The li Element
 10.9197 + * http://dev.w3.org/html5/spec/Overview.html#the-li-element
 10.9198 + */
 10.9199 +HTMLLIElement = function(ownerDocument) {
 10.9200 +    HTMLElement.apply(this, arguments);
 10.9201 +};
 10.9202 +
 10.9203 +HTMLLIElement.prototype = new HTMLElement();
 10.9204 +__extend__(HTMLLIElement.prototype, {
 10.9205 +
 10.9206 +    // TODO: attribute long value;
 10.9207 +
 10.9208 +    toString: function() {
 10.9209 +        return '[object HTMLLIElement]';
 10.9210 +    }
 10.9211 +});
 10.9212 +
 10.9213 +
 10.9214 +/*
 10.9215 + * HTMLLinkElement - DOM Level 2
 10.9216 + *
 10.9217 + * HTML5: 4.8.12 The map element
 10.9218 + * http://dev.w3.org/html5/spec/Overview.html#the-map-element
 10.9219 + */
 10.9220 +HTMLLinkElement = function(ownerDocument) {
 10.9221 +    HTMLElement.apply(this, arguments);
 10.9222 +};
 10.9223 +HTMLLinkElement.prototype = new HTMLElement();
 10.9224 +__extend__(HTMLLinkElement.prototype, {
 10.9225 +    get disabled(){
 10.9226 +        return this.getAttribute('disabled');
 10.9227 +    },
 10.9228 +    set disabled(value){
 10.9229 +        this.setAttribute('disabled',value);
 10.9230 +    },
 10.9231 +    get charset(){
 10.9232 +        return this.getAttribute('charset');
 10.9233 +    },
 10.9234 +    set charset(value){
 10.9235 +        this.setAttribute('charset',value);
 10.9236 +    },
 10.9237 +    get href(){
 10.9238 +        return this.getAttribute('href');
 10.9239 +    },
 10.9240 +    set href(value){
 10.9241 +        this.setAttribute('href',value);
 10.9242 +    },
 10.9243 +    get hreflang(){
 10.9244 +        return this.getAttribute('hreflang');
 10.9245 +    },
 10.9246 +    set hreflang(value){
 10.9247 +        this.setAttribute('hreflang',value);
 10.9248 +    },
 10.9249 +    get media(){
 10.9250 +        return this.getAttribute('media');
 10.9251 +    },
 10.9252 +    set media(value){
 10.9253 +        this.setAttribute('media',value);
 10.9254 +    },
 10.9255 +    get rel(){
 10.9256 +        return this.getAttribute('rel');
 10.9257 +    },
 10.9258 +    set rel(value){
 10.9259 +        this.setAttribute('rel',value);
 10.9260 +    },
 10.9261 +    get rev(){
 10.9262 +        return this.getAttribute('rev');
 10.9263 +    },
 10.9264 +    set rev(value){
 10.9265 +        this.setAttribute('rev',value);
 10.9266 +    },
 10.9267 +    get target(){
 10.9268 +        return this.getAttribute('target');
 10.9269 +    },
 10.9270 +    set target(value){
 10.9271 +        this.setAttribute('target',value);
 10.9272 +    },
 10.9273 +    get type(){
 10.9274 +        return this.getAttribute('type');
 10.9275 +    },
 10.9276 +    set type(value){
 10.9277 +        this.setAttribute('type',value);
 10.9278 +    },
 10.9279 +    toString: function() {
 10.9280 +        return '[object HTMLLinkElement]';
 10.9281 +    }
 10.9282 +});
 10.9283 +
 10.9284 +__loadLink__ = function(node, value) {
 10.9285 +    var event;
 10.9286 +    var owner = node.ownerDocument;
 10.9287 +
 10.9288 +    if (owner.fragment) {
 10.9289 +        /**
 10.9290 +         * if we are in an innerHTML fragment parsing step
 10.9291 +         * then ignore.  It will be handled once the fragment is
 10.9292 +         * added to the real doco
 10.9293 +         */
 10.9294 +        return;
 10.9295 +    }
 10.9296 +
 10.9297 +    if (node.parentNode === null) {
 10.9298 +        /*
 10.9299 +         * if a <link> is parentless (normally by create a new link
 10.9300 +         * via document.createElement('link'), then do *not* fire an
 10.9301 +         * event, even if it has a valid 'href' attribute.
 10.9302 +         */
 10.9303 +        return;
 10.9304 +    }
 10.9305 +    if (value != '' && (!Envjs.loadLink ||
 10.9306 +                        (Envjs.loadLink &&
 10.9307 +                         Envjs.loadLink(node, value)))) {
 10.9308 +        // value has to be something (easy)
 10.9309 +        // if the user-land API doesn't exist
 10.9310 +        // Or if the API exists and it returns true, then ok:
 10.9311 +        event = document.createEvent('Events');
 10.9312 +        event.initEvent('load');
 10.9313 +    } else {
 10.9314 +        // oops
 10.9315 +        event = document.createEvent('Events');
 10.9316 +        event.initEvent('error');
 10.9317 +    }
 10.9318 +    node.dispatchEvent(event, false);
 10.9319 +};
 10.9320 +
 10.9321 +
 10.9322 +HTMLElement.registerSetAttribute('LINK', 'href', function(node, value) {
 10.9323 +    __loadLink__(node, value);
 10.9324 +});
 10.9325 +
 10.9326 +/**
 10.9327 + * Event stuff, not sure where it goes
 10.9328 + */
 10.9329 +__extend__(HTMLLinkElement.prototype, {
 10.9330 +    onload: function(event){
 10.9331 +        __eval__(this.getAttribute('onload')||'', this);
 10.9332 +    },
 10.9333 +});
 10.9334 +
 10.9335 +/**
 10.9336 + * HTMLMapElement
 10.9337 + *
 10.9338 + * 4.8.12 The map element
 10.9339 + * http://dev.w3.org/html5/spec/Overview.html#the-map-element
 10.9340 + */
 10.9341 +HTMLMapElement = function(ownerDocument) {
 10.9342 +    HTMLElement.apply(this, arguments);
 10.9343 +};
 10.9344 +HTMLMapElement.prototype = new HTMLElement();
 10.9345 +__extend__(HTMLMapElement.prototype, {
 10.9346 +    get areas(){
 10.9347 +        return this.getElementsByTagName('area');
 10.9348 +    },
 10.9349 +    get name(){
 10.9350 +        return this.getAttribute('name') || '';
 10.9351 +    },
 10.9352 +    set name(value){
 10.9353 +        this.setAttribute('name',value);
 10.9354 +    },
 10.9355 +    toString: function() {
 10.9356 +        return '[object HTMLMapElement]';
 10.9357 +    }
 10.9358 +});
 10.9359 +
 10.9360 +/**
 10.9361 + * HTMLMetaElement - DOM Level 2
 10.9362 + * HTML5: 4.2.5 The meta element
 10.9363 + * http://dev.w3.org/html5/spec/Overview.html#meta
 10.9364 + */
 10.9365 +HTMLMetaElement = function(ownerDocument) {
 10.9366 +    HTMLElement.apply(this, arguments);
 10.9367 +};
 10.9368 +HTMLMetaElement.prototype = new HTMLElement();
 10.9369 +__extend__(HTMLMetaElement.prototype, {
 10.9370 +    get content() {
 10.9371 +        return this.getAttribute('content') || '';
 10.9372 +    },
 10.9373 +    set content(value){
 10.9374 +        this.setAttribute('content',value);
 10.9375 +    },
 10.9376 +    get httpEquiv(){
 10.9377 +        return this.getAttribute('http-equiv') || '';
 10.9378 +    },
 10.9379 +    set httpEquiv(value){
 10.9380 +        this.setAttribute('http-equiv',value);
 10.9381 +    },
 10.9382 +    get name(){
 10.9383 +        return this.getAttribute('name') || '';
 10.9384 +    },
 10.9385 +    set name(value){
 10.9386 +        this.setAttribute('name',value);
 10.9387 +    },
 10.9388 +    get scheme(){
 10.9389 +        return this.getAttribute('scheme');
 10.9390 +    },
 10.9391 +    set scheme(value){
 10.9392 +        this.setAttribute('scheme',value);
 10.9393 +    },
 10.9394 +    toString: function() {
 10.9395 +        return '[object HTMLMetaElement]';
 10.9396 +    }
 10.9397 +});
 10.9398 +
 10.9399 +
 10.9400 +/**
 10.9401 + * HTMLObjectElement - DOM Level 2
 10.9402 + * HTML5: 4.8.5 The object element
 10.9403 + * http://dev.w3.org/html5/spec/Overview.html#the-object-element
 10.9404 + */
 10.9405 +HTMLObjectElement = function(ownerDocument) {
 10.9406 +    HTMLElement.apply(this, arguments);
 10.9407 +};
 10.9408 +HTMLObjectElement.prototype = new HTMLElement();
 10.9409 +__extend__(HTMLObjectElement.prototype, {
 10.9410 +    get code(){
 10.9411 +        return this.getAttribute('code');
 10.9412 +    },
 10.9413 +    set code(value){
 10.9414 +        this.setAttribute('code',value);
 10.9415 +    },
 10.9416 +    get archive(){
 10.9417 +        return this.getAttribute('archive');
 10.9418 +    },
 10.9419 +    set archive(value){
 10.9420 +        this.setAttribute('archive',value);
 10.9421 +    },
 10.9422 +    get codeBase(){
 10.9423 +        return this.getAttribute('codebase');
 10.9424 +    },
 10.9425 +    set codeBase(value){
 10.9426 +        this.setAttribute('codebase',value);
 10.9427 +    },
 10.9428 +    get codeType(){
 10.9429 +        return this.getAttribute('codetype');
 10.9430 +    },
 10.9431 +    set codeType(value){
 10.9432 +        this.setAttribute('codetype',value);
 10.9433 +    },
 10.9434 +    get data(){
 10.9435 +        return this.getAttribute('data');
 10.9436 +    },
 10.9437 +    set data(value){
 10.9438 +        this.setAttribute('data',value);
 10.9439 +    },
 10.9440 +    get declare(){
 10.9441 +        return this.getAttribute('declare');
 10.9442 +    },
 10.9443 +    set declare(value){
 10.9444 +        this.setAttribute('declare',value);
 10.9445 +    },
 10.9446 +    get height(){
 10.9447 +        return this.getAttribute('height');
 10.9448 +    },
 10.9449 +    set height(value){
 10.9450 +        this.setAttribute('height',value);
 10.9451 +    },
 10.9452 +    get standby(){
 10.9453 +        return this.getAttribute('standby');
 10.9454 +    },
 10.9455 +    set standby(value){
 10.9456 +        this.setAttribute('standby',value);
 10.9457 +    },
 10.9458 +    /*get tabIndex(){
 10.9459 +      return this.getAttribute('tabindex');
 10.9460 +      },
 10.9461 +      set tabIndex(value){
 10.9462 +      this.setAttribute('tabindex',value);
 10.9463 +      },*/
 10.9464 +    get type(){
 10.9465 +        return this.getAttribute('type');
 10.9466 +    },
 10.9467 +    set type(value){
 10.9468 +        this.setAttribute('type',value);
 10.9469 +    },
 10.9470 +    get useMap(){
 10.9471 +        return this.getAttribute('usemap');
 10.9472 +    },
 10.9473 +    set useMap(value){
 10.9474 +        this.setAttribute('usemap',value);
 10.9475 +    },
 10.9476 +    get width(){
 10.9477 +        return this.getAttribute('width');
 10.9478 +    },
 10.9479 +    set width(value){
 10.9480 +        this.setAttribute('width',value);
 10.9481 +    },
 10.9482 +    get contentDocument(){
 10.9483 +        return this.ownerDocument;
 10.9484 +    },
 10.9485 +    toString: function() {
 10.9486 +        return '[object HTMLObjectElement]';
 10.9487 +    }
 10.9488 +});
 10.9489 +
 10.9490 +// Named Element Support
 10.9491 +HTMLElement.registerSetAttribute('OBJECT', 'name',
 10.9492 +                                 __updateFormForNamedElement__);
 10.9493 +
 10.9494 +/*
 10.9495 + * HTMLOListElement
 10.9496 + * HTML5: 4.5.6 The ol Element
 10.9497 + * http://dev.w3.org/html5/spec/Overview.html#the-ol-element
 10.9498 + */
 10.9499 +HTMLOListElement = function(ownerDocument) {
 10.9500 +    HTMLElement.apply(this, arguments);
 10.9501 +};
 10.9502 +
 10.9503 +HTMLOListElement.prototype = new HTMLElement();
 10.9504 +__extend__(HTMLOListElement.prototype, {
 10.9505 +
 10.9506 +    // TODO: attribute boolean reversed;
 10.9507 +    // TODO:  attribute long start;
 10.9508 +
 10.9509 +    toString: function() {
 10.9510 +        return '[object HTMLOListElement]';
 10.9511 +    }
 10.9512 +});
 10.9513 +
 10.9514 +
 10.9515 +/**
 10.9516 + * HTMLOptGroupElement - DOM Level 2
 10.9517 + * HTML 5: 4.10.9 The optgroup element
 10.9518 + * http://dev.w3.org/html5/spec/Overview.html#the-optgroup-element
 10.9519 + */
 10.9520 +HTMLOptGroupElement = function(ownerDocument) {
 10.9521 +    HTMLElement.apply(this, arguments);
 10.9522 +};
 10.9523 +HTMLOptGroupElement.prototype = new HTMLElement();
 10.9524 +__extend__(HTMLOptGroupElement.prototype, {
 10.9525 +    get disabled(){
 10.9526 +        return this.getAttribute('disabled');
 10.9527 +    },
 10.9528 +    set disabled(value){
 10.9529 +        this.setAttribute('disabled',value);
 10.9530 +    },
 10.9531 +    get label(){
 10.9532 +        return this.getAttribute('label');
 10.9533 +    },
 10.9534 +    set label(value){
 10.9535 +        this.setAttribute('label',value);
 10.9536 +    },
 10.9537 +    appendChild: function(node){
 10.9538 +        var i,
 10.9539 +        length,
 10.9540 +        selected = false;
 10.9541 +        //make sure at least one is selected by default
 10.9542 +        if(node.nodeType === Node.ELEMENT_NODE && node.tagName === 'OPTION'){
 10.9543 +            length = this.childNodes.length;
 10.9544 +            for(i=0;i<length;i++){
 10.9545 +                if(this.childNodes[i].nodeType === Node.ELEMENT_NODE &&
 10.9546 +                   this.childNodes[i].tagName === 'OPTION'){
 10.9547 +                    //check if it is selected
 10.9548 +                    if(this.selected){
 10.9549 +                        selected = true;
 10.9550 +                        break;
 10.9551 +                    }
 10.9552 +                }
 10.9553 +            }
 10.9554 +            if(!selected){
 10.9555 +                node.selected = true;
 10.9556 +                this.value = node.value?node.value:'';
 10.9557 +            }
 10.9558 +        }
 10.9559 +        return HTMLElement.prototype.appendChild.apply(this, [node]);
 10.9560 +    },
 10.9561 +    toString: function() {
 10.9562 +        return '[object HTMLOptGroupElement]';
 10.9563 +    }
 10.9564 +});
 10.9565 +
 10.9566 +/**
 10.9567 + * HTMLOptionElement, Option
 10.9568 + * HTML5: 4.10.10 The option element
 10.9569 + * http://dev.w3.org/html5/spec/Overview.html#the-option-element
 10.9570 + */
 10.9571 +HTMLOptionElement = function(ownerDocument) {
 10.9572 +    HTMLInputCommon.apply(this, arguments);
 10.9573 +    this._selected = null;
 10.9574 +};
 10.9575 +HTMLOptionElement.prototype = new HTMLInputCommon();
 10.9576 +__extend__(HTMLOptionElement.prototype, {
 10.9577 +
 10.9578 +    /**
 10.9579 +     * defaultSelected actually reflects the presence of the
 10.9580 +     * 'selected' attribute.
 10.9581 +     */
 10.9582 +    get defaultSelected() {
 10.9583 +        return this.hasAttribute('selected');
 10.9584 +    },
 10.9585 +    set defaultSelected(value) {
 10.9586 +        if (value) {
 10.9587 +            this.setAttribute('selected','');
 10.9588 +        } else {
 10.9589 +            if (this.hasAttribute('selected')) {
 10.9590 +                this.removeAttribute('selected');
 10.9591 +            }
 10.9592 +        }
 10.9593 +    },
 10.9594 +
 10.9595 +    /*
 10.9596 +     * HTML5: The form IDL attribute's behavior depends on whether the
 10.9597 +     * option element is in a select element or not. If the option has
 10.9598 +     * a select element as its parent, or has a colgroup element as
 10.9599 +     * its parent and that colgroup element has a select element as
 10.9600 +     * its parent, then the form IDL attribute must return the same
 10.9601 +     * value as the form IDL attribute on that select
 10.9602 +     * element. Otherwise, it must return null.
 10.9603 +     */
 10.9604 +    _selectparent: function() {
 10.9605 +        var parent = this.parentNode;
 10.9606 +        if (!parent) {
 10.9607 +            return null;
 10.9608 +        }
 10.9609 +
 10.9610 +        if (parent.tagName === 'SELECT') {
 10.9611 +            return parent;
 10.9612 +        }
 10.9613 +        if (parent.tagName === 'COLGROUP') {
 10.9614 +            parent = parent.parentNode;
 10.9615 +            if (parent && parent.tagName === 'SELECT') {
 10.9616 +                return parent;
 10.9617 +            }
 10.9618 +        }
 10.9619 +    },
 10.9620 +    _updateoptions: function() {
 10.9621 +        var parent = this._selectparent();
 10.9622 +        if (parent) {
 10.9623 +            // has side effects and updates owner select's options
 10.9624 +            parent.options;
 10.9625 +        }
 10.9626 +    },
 10.9627 +    get form() {
 10.9628 +        var parent = this._selectparent();
 10.9629 +        return parent ? parent.form : null;
 10.9630 +    },
 10.9631 +    get index() {
 10.9632 +        var options, i;
 10.9633 +
 10.9634 +        if (! this.parentNode) {
 10.9635 +            return -1;
 10.9636 +        }
 10.9637 +        options = this.parentNode.options;
 10.9638 +        for (i=0; i < options.length; ++i) {
 10.9639 +            if (this === options[i]) {
 10.9640 +                return i;
 10.9641 +            }
 10.9642 +        }
 10.9643 +        return 0;
 10.9644 +    },
 10.9645 +    get label() {
 10.9646 +        return this.getAttribute('label');
 10.9647 +    },
 10.9648 +    set label(value) {
 10.9649 +        this.setAttribute('label', value);
 10.9650 +    },
 10.9651 +
 10.9652 +    /*
 10.9653 +     * This is not in the spec, but safari and firefox both
 10.9654 +     * use this
 10.9655 +     */
 10.9656 +    get name() {
 10.9657 +        return this.getAttribute('name');
 10.9658 +    },
 10.9659 +    set name(value) {
 10.9660 +        this.setAttribute('name', value);
 10.9661 +    },
 10.9662 +
 10.9663 +    /**
 10.9664 +     *
 10.9665 +     */
 10.9666 +    get selected() {
 10.9667 +        // if disabled, return false, no matter what
 10.9668 +        if (this.disabled) {
 10.9669 +            return false;
 10.9670 +        }
 10.9671 +        if (this._selected === null) {
 10.9672 +            return this.defaultSelected;
 10.9673 +        }
 10.9674 +
 10.9675 +        return this._selected;
 10.9676 +    },
 10.9677 +    set selected(value) {
 10.9678 +        this._selected = (value) ? true : false;
 10.9679 +    },
 10.9680 +
 10.9681 +    get text() {
 10.9682 +        var val = this.nodeValue;
 10.9683 +        return (val === null || this.value === undefined) ?
 10.9684 +            this.innerHTML :
 10.9685 +            val;
 10.9686 +    },
 10.9687 +    get value() {
 10.9688 +        var val = this.getAttribute('value');
 10.9689 +        return (val === null || val === undefined) ?
 10.9690 +            this.textContent :
 10.9691 +            val;
 10.9692 +    },
 10.9693 +    set value(value) {
 10.9694 +        this.setAttribute('value', value);
 10.9695 +    },
 10.9696 +    toString: function() {
 10.9697 +        return '[object HTMLOptionElement]';
 10.9698 +    }
 10.9699 +});
 10.9700 +
 10.9701 +Option = function(text, value, defaultSelected, selected) {
 10.9702 +
 10.9703 +    // Not sure if this is correct:
 10.9704 +    //
 10.9705 +    // The element's document must be the active document of the
 10.9706 +    // browsing context of the Window object on which the interface
 10.9707 +    // object of the invoked constructor is found.
 10.9708 +    HTMLOptionElement.apply(this, [document]);
 10.9709 +    this.nodeName = 'OPTION';
 10.9710 +
 10.9711 +    if (arguments.length >= 1) {
 10.9712 +        this.appendChild(document.createTextNode('' + text));
 10.9713 +    }
 10.9714 +    if (arguments.length >= 2) {
 10.9715 +        this.value = value;
 10.9716 +    }
 10.9717 +    if (arguments.length >= 3) {
 10.9718 +        if (defaultSelected) {
 10.9719 +            this.defaultSelected = '';
 10.9720 +        }
 10.9721 +    }
 10.9722 +    if (arguments.length >= 4) {
 10.9723 +        this.selected = (selected) ? true : false;
 10.9724 +    }
 10.9725 +};
 10.9726 +
 10.9727 +Option.prototype = new HTMLOptionElement();
 10.9728 +
 10.9729 +// Named Element Support
 10.9730 +
 10.9731 +function updater(node, value) {
 10.9732 +    node._updateoptions();
 10.9733 +}
 10.9734 +HTMLElement.registerSetAttribute('OPTION', 'name', updater);
 10.9735 +HTMLElement.registerSetAttribute('OPTION', 'id', updater);
 10.9736 +
 10.9737 +/*
 10.9738 +* HTMLParagraphElement - DOM Level 2
 10.9739 +*/
 10.9740 +HTMLParagraphElement = function(ownerDocument) {
 10.9741 +    HTMLElement.apply(this, arguments);
 10.9742 +};
 10.9743 +HTMLParagraphElement.prototype = new HTMLElement();
 10.9744 +__extend__(HTMLParagraphElement.prototype, {
 10.9745 +    toString: function(){
 10.9746 +        return '[object HTMLParagraphElement]';
 10.9747 +    }
 10.9748 +});
 10.9749 +
 10.9750 +
 10.9751 +/**
 10.9752 + * HTMLParamElement
 10.9753 + *
 10.9754 + * HTML5: 4.8.6 The param element
 10.9755 + * http://dev.w3.org/html5/spec/Overview.html#the-param-element
 10.9756 + */
 10.9757 +HTMLParamElement = function(ownerDocument) {
 10.9758 +    HTMLElement.apply(this, arguments);
 10.9759 +};
 10.9760 +HTMLParamElement.prototype = new HTMLElement();
 10.9761 +__extend__(HTMLParamElement.prototype, {
 10.9762 +    get name() {
 10.9763 +        return this.getAttribute('name') || '';
 10.9764 +    },
 10.9765 +    set name(value) {
 10.9766 +        this.setAttribute('name', value);
 10.9767 +    },
 10.9768 +    get type(){
 10.9769 +        return this.getAttribute('type');
 10.9770 +    },
 10.9771 +    set type(value){
 10.9772 +        this.setAttribute('type',value);
 10.9773 +    },
 10.9774 +    get value(){
 10.9775 +        return this.getAttribute('value');
 10.9776 +    },
 10.9777 +    set value(value){
 10.9778 +        this.setAttribute('value',value);
 10.9779 +    },
 10.9780 +    get valueType(){
 10.9781 +        return this.getAttribute('valuetype');
 10.9782 +    },
 10.9783 +    set valueType(value){
 10.9784 +        this.setAttribute('valuetype',value);
 10.9785 +    },
 10.9786 +    toString: function() {
 10.9787 +        return '[object HTMLParamElement]';
 10.9788 +    }
 10.9789 +});
 10.9790 +
 10.9791 +
 10.9792 +/**
 10.9793 + * HTMLScriptElement - DOM Level 2
 10.9794 + *
 10.9795 + * HTML5: 4.3.1 The script element
 10.9796 + * http://dev.w3.org/html5/spec/Overview.html#script
 10.9797 + */
 10.9798 +HTMLScriptElement = function(ownerDocument) {
 10.9799 +    HTMLElement.apply(this, arguments);
 10.9800 +};
 10.9801 +HTMLScriptElement.prototype = new HTMLElement();
 10.9802 +__extend__(HTMLScriptElement.prototype, {
 10.9803 +
 10.9804 +    /**
 10.9805 +     * HTML5 spec @ http://dev.w3.org/html5/spec/Overview.html#script
 10.9806 +     *
 10.9807 +     * "The IDL attribute text must return a concatenation of the
 10.9808 +     * contents of all the text nodes that are direct children of the
 10.9809 +     * script element (ignoring any other nodes such as comments or
 10.9810 +     * elements), in tree order. On setting, it must act the same way
 10.9811 +     * as the textContent IDL attribute."
 10.9812 +     *
 10.9813 +     * AND... "The term text node refers to any Text node,
 10.9814 +     * including CDATASection nodes; specifically, any Node with node
 10.9815 +     * type TEXT_NODE (3) or CDATA_SECTION_NODE (4)"
 10.9816 +     */
 10.9817 +    get text() {
 10.9818 +        var kids = this.childNodes;
 10.9819 +        var kid;
 10.9820 +        var s = '';
 10.9821 +        var imax = kids.length;
 10.9822 +        for (var i = 0; i < imax; ++i) {
 10.9823 +            kid = kids[i];
 10.9824 +            if (kid.nodeType === Node.TEXT_NODE ||
 10.9825 +                kid.nodeType === Node.CDATA_SECTION_NODE) {
 10.9826 +                s += kid.nodeValue;
 10.9827 +            }
 10.9828 +        }
 10.9829 +        return s;
 10.9830 +    },
 10.9831 +
 10.9832 +    /**
 10.9833 +     * HTML5 spec "Can be set, to replace the element's children with
 10.9834 +     * the given value."
 10.9835 +     */
 10.9836 +    set text(value) {
 10.9837 +        // this deletes all children, and make a new single text node
 10.9838 +        // with value
 10.9839 +        this.textContent = value;
 10.9840 +
 10.9841 +        /* Currently we always execute, but this isn't quite right if
 10.9842 +         * the node has *not* been inserted into the document, then it
 10.9843 +         * should *not* fire.  The more detailed answer from the spec:
 10.9844 +         *
 10.9845 +         * When a script element that is neither marked as having
 10.9846 +         * "already started" nor marked as being "parser-inserted"
 10.9847 +         * experiences one of the events listed in the following list,
 10.9848 +         * the user agent must synchronously run the script element:
 10.9849 +         *
 10.9850 +         *   * The script element gets inserted into a document.
 10.9851 +         *   * The script element is in a Document and its child nodes
 10.9852 +         *     are changed.
 10.9853 +         *   * The script element is in a Document and has a src
 10.9854 +         *     attribute set where previously the element had no such
 10.9855 +         *     attribute.
 10.9856 +         *
 10.9857 +         * And no doubt there are other cases as well.
 10.9858 +         */
 10.9859 +        Envjs.loadInlineScript(this);
 10.9860 +    },
 10.9861 +
 10.9862 +    get htmlFor(){
 10.9863 +        return this.getAttribute('for');
 10.9864 +    },
 10.9865 +    set htmlFor(value){
 10.9866 +        this.setAttribute('for',value);
 10.9867 +    },
 10.9868 +    get event(){
 10.9869 +        return this.getAttribute('event');
 10.9870 +    },
 10.9871 +    set event(value){
 10.9872 +        this.setAttribute('event',value);
 10.9873 +    },
 10.9874 +    get charset(){
 10.9875 +        return this.getAttribute('charset');
 10.9876 +    },
 10.9877 +    set charset(value){
 10.9878 +        this.setAttribute('charset',value);
 10.9879 +    },
 10.9880 +    get defer(){
 10.9881 +        return this.getAttribute('defer');
 10.9882 +    },
 10.9883 +    set defer(value){
 10.9884 +        this.setAttribute('defer',value);
 10.9885 +    },
 10.9886 +    get src(){
 10.9887 +        return this.getAttribute('src')||'';
 10.9888 +    },
 10.9889 +    set src(value){
 10.9890 +        this.setAttribute('src',value);
 10.9891 +    },
 10.9892 +    get type(){
 10.9893 +        return this.getAttribute('type')||'';
 10.9894 +    },
 10.9895 +    set type(value){
 10.9896 +        this.setAttribute('type',value);
 10.9897 +    },
 10.9898 +    onload: HTMLEvents.prototype.onload,
 10.9899 +    onerror: HTMLEvents.prototype.onerror,
 10.9900 +    toString: function() {
 10.9901 +        return '[object HTMLScriptElement]';
 10.9902 +    }
 10.9903 +});
 10.9904 +
 10.9905 +
 10.9906 +/**
 10.9907 + * HTMLSelectElement
 10.9908 + * HTML5: http://dev.w3.org/html5/spec/Overview.html#the-select-element
 10.9909 + */
 10.9910 +HTMLSelectElement = function(ownerDocument) {
 10.9911 +    HTMLTypeValueInputs.apply(this, arguments);
 10.9912 +    this._oldIndex = -1;
 10.9913 +};
 10.9914 +
 10.9915 +HTMLSelectElement.prototype = new HTMLTypeValueInputs();
 10.9916 +__extend__(HTMLSelectElement.prototype, inputElements_dataProperties);
 10.9917 +__extend__(HTMLButtonElement.prototype, inputElements_size);
 10.9918 +__extend__(HTMLSelectElement.prototype, inputElements_onchange);
 10.9919 +__extend__(HTMLSelectElement.prototype, inputElements_focusEvents);
 10.9920 +__extend__(HTMLSelectElement.prototype, {
 10.9921 +
 10.9922 +    get value() {
 10.9923 +        var index = this.selectedIndex;
 10.9924 +        return (index === -1) ? '' : this.options[index].value;
 10.9925 +    },
 10.9926 +    set value(newValue) {
 10.9927 +        var options = this.options;
 10.9928 +        var imax = options.length;
 10.9929 +        for (var i=0; i< imax; ++i) {
 10.9930 +            if (options[i].value == newValue) {
 10.9931 +                this.setAttribute('value', newValue);
 10.9932 +                this.selectedIndex = i;
 10.9933 +                return;
 10.9934 +            }
 10.9935 +        }
 10.9936 +    },
 10.9937 +    get multiple() {
 10.9938 +        return this.hasAttribute('multiple');
 10.9939 +    },
 10.9940 +    set multiple(value) {
 10.9941 +        if (value) {
 10.9942 +            this.setAttribute('multiple', '');
 10.9943 +        } else {
 10.9944 +            if (this.hasAttribute('multiple')) {
 10.9945 +                this.removeAttribute('multiple');
 10.9946 +            }
 10.9947 +        }
 10.9948 +    },
 10.9949 +    // Returns HTMLOptionsCollection
 10.9950 +    get options() {
 10.9951 +        var nodes = this.getElementsByTagName('option');
 10.9952 +        var alist = [];
 10.9953 +        var i, tmp;
 10.9954 +        for (i = 0; i < nodes.length; ++i) {
 10.9955 +            alist.push(nodes[i]);
 10.9956 +            this[i] = nodes[i];
 10.9957 +            tmp = nodes[i].name;
 10.9958 +            if (tmp) {
 10.9959 +                this[tmp] = nodes[i];
 10.9960 +            }
 10.9961 +            tmp = nodes[i].id;
 10.9962 +            if (tmp) {
 10.9963 +                this[tmp] = nodes[i];
 10.9964 +            }
 10.9965 +        }
 10.9966 +        return new HTMLCollection(alist);
 10.9967 +    },
 10.9968 +    get length() {
 10.9969 +        return this.options.length;
 10.9970 +    },
 10.9971 +    item: function(idx) {
 10.9972 +        return this.options[idx];
 10.9973 +    },
 10.9974 +    namedItem: function(aname) {
 10.9975 +        return this.options[aname];
 10.9976 +    },
 10.9977 +
 10.9978 +    get selectedIndex() {
 10.9979 +        var options = this.options;
 10.9980 +        var imax = options.length;
 10.9981 +        for (var i=0; i < imax; ++i) {
 10.9982 +            if (options[i].selected) {
 10.9983 +                //console.log('select get selectedIndex %s', i);
 10.9984 +                return i;
 10.9985 +            }
 10.9986 +        }
 10.9987 +        //console.log('select get selectedIndex %s', -1);
 10.9988 +        return -1;
 10.9989 +    },
 10.9990 +
 10.9991 +    set selectedIndex(value) {
 10.9992 +        var options = this.options;
 10.9993 +        var num = Number(value);
 10.9994 +        var imax = options.length;
 10.9995 +        for (var i = 0; i < imax; ++i) {
 10.9996 +            options[i].selected = (i === num);
 10.9997 +        }
 10.9998 +    },
 10.9999 +    get type() {
10.10000 +        return this.multiple ? 'select-multiple' : 'select-one';
10.10001 +    },
10.10002 +
10.10003 +    add: function(element, before) {
10.10004 +        this.appendChild(element);
10.10005 +        //__add__(this);
10.10006 +    },
10.10007 +    remove: function() {
10.10008 +        __remove__(this);
10.10009 +    },
10.10010 +    toString: function() {
10.10011 +        return '[object HTMLSelectElement]';
10.10012 +    }
10.10013 +});
10.10014 +
10.10015 +// Named Element Support
10.10016 +HTMLElement.registerSetAttribute('SELECT', 'name',
10.10017 +                                 __updateFormForNamedElement__);
10.10018 +/**
10.10019 + * HTML 5: 4.6.22 The span element
10.10020 + * http://dev.w3.org/html5/spec/Overview.html#the-span-element
10.10021 + * 
10.10022 + */
10.10023 +HTMLSpanElement = function(ownerDocument) {
10.10024 +    HTMLElement.apply(this, arguments);
10.10025 +};
10.10026 +HTMLSpanElement.prototype = new HTMLElement();
10.10027 +__extend__(HTMLSpanElement.prototype, {
10.10028 +    toString: function(){
10.10029 +        return '[object HTMLSpanElement]';
10.10030 +    }
10.10031 +});
10.10032 +
10.10033 +
10.10034 +/**
10.10035 + * HTMLStyleElement - DOM Level 2
10.10036 + * HTML5 4.2.6 The style element
10.10037 + * http://dev.w3.org/html5/spec/Overview.html#the-style-element
10.10038 + */
10.10039 +HTMLStyleElement = function(ownerDocument) {
10.10040 +    HTMLElement.apply(this, arguments);
10.10041 +};
10.10042 +HTMLStyleElement.prototype = new HTMLElement();
10.10043 +__extend__(HTMLStyleElement.prototype, {
10.10044 +    get disabled(){
10.10045 +        return this.getAttribute('disabled');
10.10046 +    },
10.10047 +    set disabled(value){
10.10048 +        this.setAttribute('disabled',value);
10.10049 +    },
10.10050 +    get media(){
10.10051 +        return this.getAttribute('media');
10.10052 +    },
10.10053 +    set media(value){
10.10054 +        this.setAttribute('media',value);
10.10055 +    },
10.10056 +    get type(){
10.10057 +        return this.getAttribute('type');
10.10058 +    },
10.10059 +    set type(value){
10.10060 +        this.setAttribute('type',value);
10.10061 +    },
10.10062 +    toString: function() {
10.10063 +        return '[object HTMLStyleElement]';
10.10064 +    }
10.10065 +});
10.10066 +
10.10067 +/**
10.10068 + * HTMLTableElement - DOM Level 2
10.10069 + * Implementation Provided by Steven Wood
10.10070 + *
10.10071 + * HTML5: 4.9.1 The table element
10.10072 + * http://dev.w3.org/html5/spec/Overview.html#the-table-element
10.10073 + */
10.10074 +HTMLTableElement = function(ownerDocument) {
10.10075 +    HTMLElement.apply(this, arguments);
10.10076 +};
10.10077 +HTMLTableElement.prototype = new HTMLElement();
10.10078 +__extend__(HTMLTableElement.prototype, {
10.10079 +
10.10080 +    get tFoot() {
10.10081 +        //tFoot returns the table footer.
10.10082 +        return this.getElementsByTagName("tfoot")[0];
10.10083 +    },
10.10084 +
10.10085 +    createTFoot : function () {
10.10086 +        var tFoot = this.tFoot;
10.10087 +
10.10088 +        if (!tFoot) {
10.10089 +            tFoot = document.createElement("tfoot");
10.10090 +            this.appendChild(tFoot);
10.10091 +        }
10.10092 +
10.10093 +        return tFoot;
10.10094 +    },
10.10095 +
10.10096 +    deleteTFoot : function () {
10.10097 +        var foot = this.tFoot;
10.10098 +        if (foot) {
10.10099 +            foot.parentNode.removeChild(foot);
10.10100 +        }
10.10101 +    },
10.10102 +
10.10103 +    get tHead() {
10.10104 +        //tHead returns the table head.
10.10105 +        return this.getElementsByTagName("thead")[0];
10.10106 +    },
10.10107 +
10.10108 +    createTHead : function () {
10.10109 +        var tHead = this.tHead;
10.10110 +
10.10111 +        if (!tHead) {
10.10112 +            tHead = document.createElement("thead");
10.10113 +            this.insertBefore(tHead, this.firstChild);
10.10114 +        }
10.10115 +
10.10116 +        return tHead;
10.10117 +    },
10.10118 +
10.10119 +    deleteTHead : function () {
10.10120 +        var head = this.tHead;
10.10121 +        if (head) {
10.10122 +            head.parentNode.removeChild(head);
10.10123 +        }
10.10124 +    },
10.10125 +
10.10126 +    /*appendChild : function (child) {
10.10127 +
10.10128 +      var tagName;
10.10129 +      if(child&&child.nodeType==Node.ELEMENT_NODE){
10.10130 +      tagName = child.tagName.toLowerCase();
10.10131 +      if (tagName === "tr") {
10.10132 +      // need an implcit <tbody> to contain this...
10.10133 +      if (!this.currentBody) {
10.10134 +      this.currentBody = document.createElement("tbody");
10.10135 +
10.10136 +      Node.prototype.appendChild.apply(this, [this.currentBody]);
10.10137 +      }
10.10138 +
10.10139 +      return this.currentBody.appendChild(child);
10.10140 +
10.10141 +      } else if (tagName === "tbody" || tagName === "tfoot" && this.currentBody) {
10.10142 +      this.currentBody = child;
10.10143 +      return Node.prototype.appendChild.apply(this, arguments);
10.10144 +
10.10145 +      } else {
10.10146 +      return Node.prototype.appendChild.apply(this, arguments);
10.10147 +      }
10.10148 +      }else{
10.10149 +      //tables can still have text node from white space
10.10150 +      return Node.prototype.appendChild.apply(this, arguments);
10.10151 +      }
10.10152 +      },*/
10.10153 +
10.10154 +    get tBodies() {
10.10155 +        return new HTMLCollection(this.getElementsByTagName("tbody"));
10.10156 +
10.10157 +    },
10.10158 +
10.10159 +    get rows() {
10.10160 +        return new HTMLCollection(this.getElementsByTagName("tr"));
10.10161 +    },
10.10162 +
10.10163 +    insertRow : function (idx) {
10.10164 +        if (idx === undefined) {
10.10165 +            throw new Error("Index omitted in call to HTMLTableElement.insertRow ");
10.10166 +        }
10.10167 +
10.10168 +        var rows = this.rows,
10.10169 +            numRows = rows.length,
10.10170 +            node,
10.10171 +            inserted,
10.10172 +            lastRow;
10.10173 +
10.10174 +        if (idx > numRows) {
10.10175 +            throw new Error("Index > rows.length in call to HTMLTableElement.insertRow");
10.10176 +        }
10.10177 +
10.10178 +        inserted = document.createElement("tr");
10.10179 +        // If index is -1 or equal to the number of rows,
10.10180 +        // the row is appended as the last row. If index is omitted
10.10181 +        // or greater than the number of rows, an error will result
10.10182 +        if (idx === -1 || idx === numRows) {
10.10183 +            this.appendChild(inserted);
10.10184 +        } else {
10.10185 +            rows[idx].parentNode.insertBefore(inserted, rows[idx]);
10.10186 +        }
10.10187 +
10.10188 +        return inserted;
10.10189 +    },
10.10190 +
10.10191 +    deleteRow : function (idx) {
10.10192 +        var elem = this.rows[idx];
10.10193 +        elem.parentNode.removeChild(elem);
10.10194 +    },
10.10195 +
10.10196 +    get summary() {
10.10197 +        return this.getAttribute("summary");
10.10198 +    },
10.10199 +
10.10200 +    set summary(summary) {
10.10201 +        this.setAttribute("summary", summary);
10.10202 +    },
10.10203 +
10.10204 +    get align() {
10.10205 +        return this.getAttribute("align");
10.10206 +    },
10.10207 +
10.10208 +    set align(align) {
10.10209 +        this.setAttribute("align", align);
10.10210 +    },
10.10211 +
10.10212 +    get bgColor() {
10.10213 +        return this.getAttribute("bgColor");
10.10214 +    },
10.10215 +
10.10216 +    set bgColor(bgColor) {
10.10217 +        return this.setAttribute("bgColor", bgColor);
10.10218 +    },
10.10219 +
10.10220 +    get cellPadding() {
10.10221 +        return this.getAttribute("cellPadding");
10.10222 +    },
10.10223 +
10.10224 +    set cellPadding(cellPadding) {
10.10225 +        return this.setAttribute("cellPadding", cellPadding);
10.10226 +    },
10.10227 +
10.10228 +    get cellSpacing() {
10.10229 +        return this.getAttribute("cellSpacing");
10.10230 +    },
10.10231 +
10.10232 +    set cellSpacing(cellSpacing) {
10.10233 +        this.setAttribute("cellSpacing", cellSpacing);
10.10234 +    },
10.10235 +
10.10236 +    get frame() {
10.10237 +        return this.getAttribute("frame");
10.10238 +    },
10.10239 +
10.10240 +    set frame(frame) {
10.10241 +        this.setAttribute("frame", frame);
10.10242 +    },
10.10243 +
10.10244 +    get rules() {
10.10245 +        return this.getAttribute("rules");
10.10246 +    },
10.10247 +
10.10248 +    set rules(rules) {
10.10249 +        this.setAttribute("rules", rules);
10.10250 +    },
10.10251 +
10.10252 +    get width() {
10.10253 +        return this.getAttribute("width");
10.10254 +    },
10.10255 +
10.10256 +    set width(width) {
10.10257 +        this.setAttribute("width", width);
10.10258 +    },
10.10259 +    toString: function() {
10.10260 +        return '[object HTMLTableElement]';
10.10261 +    }
10.10262 +});
10.10263 +
10.10264 +/*
10.10265 + * HTMLxElement - DOM Level 2
10.10266 + * - Contributed by Steven Wood
10.10267 + *
10.10268 + * HTML5: 4.9.5 The tbody element
10.10269 + * http://dev.w3.org/html5/spec/Overview.html#the-tbody-element
10.10270 + * http://dev.w3.org/html5/spec/Overview.html#htmltablesectionelement
10.10271 + */
10.10272 +HTMLTableSectionElement = function(ownerDocument) {
10.10273 +    HTMLElement.apply(this, arguments);
10.10274 +};
10.10275 +HTMLTableSectionElement.prototype = new HTMLElement();
10.10276 +__extend__(HTMLTableSectionElement.prototype, {
10.10277 +
10.10278 +    /*appendChild : function (child) {
10.10279 +
10.10280 +    // disallow nesting of these elements.
10.10281 +    if (child.tagName.match(/TBODY|TFOOT|THEAD/)) {
10.10282 +    return this.parentNode.appendChild(child);
10.10283 +    } else {
10.10284 +    return Node.prototype.appendChild.apply(this, arguments);
10.10285 +    }
10.10286 +
10.10287 +    },*/
10.10288 +
10.10289 +    get align() {
10.10290 +        return this.getAttribute("align");
10.10291 +    },
10.10292 +
10.10293 +    get ch() {
10.10294 +        return this.getAttribute("ch");
10.10295 +    },
10.10296 +
10.10297 +    set ch(ch) {
10.10298 +        this.setAttribute("ch", ch);
10.10299 +    },
10.10300 +
10.10301 +    // ch gets or sets the alignment character for cells in a column.
10.10302 +    set chOff(chOff) {
10.10303 +        this.setAttribute("chOff", chOff);
10.10304 +    },
10.10305 +
10.10306 +    get chOff() {
10.10307 +        return this.getAttribute("chOff");
10.10308 +    },
10.10309 +
10.10310 +    get vAlign () {
10.10311 +        return this.getAttribute("vAlign");
10.10312 +    },
10.10313 +
10.10314 +    get rows() {
10.10315 +        return new HTMLCollection(this.getElementsByTagName("tr"));
10.10316 +    },
10.10317 +
10.10318 +    insertRow : function (idx) {
10.10319 +        if (idx === undefined) {
10.10320 +            throw new Error("Index omitted in call to HTMLTableSectionElement.insertRow ");
10.10321 +        }
10.10322 +
10.10323 +        var numRows = this.rows.length,
10.10324 +        node = null;
10.10325 +
10.10326 +        if (idx > numRows) {
10.10327 +            throw new Error("Index > rows.length in call to HTMLTableSectionElement.insertRow");
10.10328 +        }
10.10329 +
10.10330 +        var row = document.createElement("tr");
10.10331 +        // If index is -1 or equal to the number of rows,
10.10332 +        // the row is appended as the last row. If index is omitted
10.10333 +        // or greater than the number of rows, an error will result
10.10334 +        if (idx === -1 || idx === numRows) {
10.10335 +            this.appendChild(row);
10.10336 +        } else {
10.10337 +            node = this.firstChild;
10.10338 +
10.10339 +            for (var i=0; i<idx; i++) {
10.10340 +                node = node.nextSibling;
10.10341 +            }
10.10342 +        }
10.10343 +
10.10344 +        this.insertBefore(row, node);
10.10345 +
10.10346 +        return row;
10.10347 +    },
10.10348 +
10.10349 +    deleteRow : function (idx) {
10.10350 +        var elem = this.rows[idx];
10.10351 +        this.removeChild(elem);
10.10352 +    },
10.10353 +
10.10354 +    toString: function() {
10.10355 +        return '[object HTMLTableSectionElement]';
10.10356 +    }
10.10357 +});
10.10358 +
10.10359 +/**
10.10360 + * HTMLTableCellElement
10.10361 + * base interface for TD and TH
10.10362 + *
10.10363 + * HTML5: 4.9.11 Attributes common to td and th elements
10.10364 + * http://dev.w3.org/html5/spec/Overview.html#htmltablecellelement
10.10365 + */
10.10366 +HTMLTableCellElement = function(ownerDocument) {
10.10367 +    HTMLElement.apply(this, arguments);
10.10368 +};
10.10369 +HTMLTableCellElement.prototype = new HTMLElement();
10.10370 +__extend__(HTMLTableCellElement.prototype, {
10.10371 +
10.10372 +
10.10373 +    // TOOD: attribute unsigned long  colSpan;
10.10374 +    // TODO: attribute unsigned long  rowSpan;
10.10375 +    // TODO: attribute DOMString      headers;
10.10376 +    // TODO: readonly attribute long  cellIndex;
10.10377 +
10.10378 +    // Not really necessary but might be helpful in debugging
10.10379 +    toString: function() {
10.10380 +        return '[object HTMLTableCellElement]';
10.10381 +    }
10.10382 +
10.10383 +});
10.10384 +
10.10385 +/**
10.10386 + * HTMLTableDataCellElement
10.10387 + * HTML5: 4.9.9 The td Element
10.10388 + * http://dev.w3.org/html5/spec/Overview.html#the-td-element
10.10389 + */
10.10390 +HTMLTableDataCellElement = function(ownerDocument) {
10.10391 +    HTMLElement.apply(this, arguments);
10.10392 +};
10.10393 +HTMLTableDataCellElement.prototype = new HTMLTableCellElement();
10.10394 +__extend__(HTMLTableDataCellElement.prototype, {
10.10395 +
10.10396 +    // adds no new properties or methods
10.10397 +
10.10398 +    toString: function() {
10.10399 +        return '[object HTMLTableDataCellElement]';
10.10400 +    }
10.10401 +});
10.10402 +
10.10403 +/**
10.10404 + * HTMLTableHeaderCellElement
10.10405 + * HTML5: 4.9.10 The th Element
10.10406 + * http://dev.w3.org/html5/spec/Overview.html#the-th-element
10.10407 + */
10.10408 +HTMLTableHeaderCellElement = function(ownerDocument) {
10.10409 +    HTMLElement.apply(this, arguments);
10.10410 +};
10.10411 +HTMLTableHeaderCellElement.prototype = new HTMLTableCellElement();
10.10412 +__extend__(HTMLTableHeaderCellElement.prototype, {
10.10413 +
10.10414 +    // TODO:  attribute DOMString scope
10.10415 +
10.10416 +    toString: function() {
10.10417 +        return '[object HTMLTableHeaderCellElement]';
10.10418 +    }
10.10419 +});
10.10420 +
10.10421 +
10.10422 +/**
10.10423 + * HTMLTextAreaElement - DOM Level 2
10.10424 + * HTML5: 4.10.11 The textarea element
10.10425 + * http://dev.w3.org/html5/spec/Overview.html#the-textarea-element
10.10426 + */
10.10427 +HTMLTextAreaElement = function(ownerDocument) {
10.10428 +    HTMLInputAreaCommon.apply(this, arguments);
10.10429 +    this._rawvalue = null;
10.10430 +};
10.10431 +HTMLTextAreaElement.prototype = new HTMLInputAreaCommon();
10.10432 +__extend__(HTMLTextAreaElement.prototype, {
10.10433 +    get cols(){
10.10434 +        return Number(this.getAttribute('cols')||'-1');
10.10435 +    },
10.10436 +    set cols(value){
10.10437 +        this.setAttribute('cols', value);
10.10438 +    },
10.10439 +    get rows(){
10.10440 +        return Number(this.getAttribute('rows')||'-1');
10.10441 +    },
10.10442 +    set rows(value){
10.10443 +        this.setAttribute('rows', value);
10.10444 +    },
10.10445 +
10.10446 +    /*
10.10447 +     * read-only
10.10448 +     */
10.10449 +    get type() {
10.10450 +        return this.getAttribute('type') || 'textarea';
10.10451 +    },
10.10452 +
10.10453 +    /**
10.10454 +     * This modifies the text node under the widget
10.10455 +     */
10.10456 +    get defaultValue() {
10.10457 +        return this.textContent;
10.10458 +    },
10.10459 +    set defaultValue(value) {
10.10460 +        this.textContent = value;
10.10461 +    },
10.10462 +
10.10463 +    /**
10.10464 +     * http://dev.w3.org/html5/spec/Overview.html#concept-textarea-raw-value
10.10465 +     */
10.10466 +    get value() {
10.10467 +        return (this._rawvalue === null) ? this.defaultValue : this._rawvalue;
10.10468 +    },
10.10469 +    set value(value) {
10.10470 +        this._rawvalue = value;
10.10471 +    },
10.10472 +    toString: function() {
10.10473 +        return '[object HTMLTextAreaElement]';
10.10474 +    }
10.10475 +});
10.10476 +
10.10477 +// Named Element Support
10.10478 +HTMLElement.registerSetAttribute('TEXTAREA', 'name',
10.10479 +                                 __updateFormForNamedElement__);
10.10480 +
10.10481 +/**
10.10482 + * HTMLTitleElement - DOM Level 2
10.10483 + *
10.10484 + * HTML5: 4.2.2 The title element
10.10485 + * http://dev.w3.org/html5/spec/Overview.html#the-title-element-0
10.10486 + */
10.10487 +HTMLTitleElement = function(ownerDocument) {
10.10488 +    HTMLElement.apply(this, arguments);
10.10489 +};
10.10490 +HTMLTitleElement.prototype = new HTMLElement();
10.10491 +__extend__(HTMLTitleElement.prototype, {
10.10492 +    get text() {
10.10493 +        return this.innerText;
10.10494 +    },
10.10495 +
10.10496 +    set text(titleStr) {
10.10497 +        this.textContent = titleStr;
10.10498 +    },
10.10499 +    toString: function() {
10.10500 +        return '[object HTMLTitleElement]';
10.10501 +    }
10.10502 +});
10.10503 +
10.10504 +
10.10505 +
10.10506 +/**
10.10507 + * HTMLRowElement - DOM Level 2
10.10508 + * Implementation Provided by Steven Wood
10.10509 + *
10.10510 + * HTML5: 4.9.8 The tr element
10.10511 + * http://dev.w3.org/html5/spec/Overview.html#the-tr-element
10.10512 + */
10.10513 +HTMLTableRowElement = function(ownerDocument) {
10.10514 +    HTMLElement.apply(this, arguments);
10.10515 +};
10.10516 +HTMLTableRowElement.prototype = new HTMLElement();
10.10517 +__extend__(HTMLTableRowElement.prototype, {
10.10518 +
10.10519 +    /*appendChild : function (child) {
10.10520 +
10.10521 +      var retVal = Node.prototype.appendChild.apply(this, arguments);
10.10522 +      retVal.cellIndex = this.cells.length -1;
10.10523 +
10.10524 +      return retVal;
10.10525 +      },*/
10.10526 +    // align gets or sets the horizontal alignment of data within cells of the row.
10.10527 +    get align() {
10.10528 +        return this.getAttribute("align");
10.10529 +    },
10.10530 +
10.10531 +    get bgColor() {
10.10532 +        return this.getAttribute("bgcolor");
10.10533 +    },
10.10534 +
10.10535 +    get cells() {
10.10536 +        var nl = this.getElementsByTagName("td");
10.10537 +        return new HTMLCollection(nl);
10.10538 +    },
10.10539 +
10.10540 +    get ch() {
10.10541 +        return this.getAttribute("ch");
10.10542 +    },
10.10543 +
10.10544 +    set ch(ch) {
10.10545 +        this.setAttribute("ch", ch);
10.10546 +    },
10.10547 +
10.10548 +    // ch gets or sets the alignment character for cells in a column.
10.10549 +    set chOff(chOff) {
10.10550 +        this.setAttribute("chOff", chOff);
10.10551 +    },
10.10552 +
10.10553 +    get chOff() {
10.10554 +        return this.getAttribute("chOff");
10.10555 +    },
10.10556 +
10.10557 +    /**
10.10558 +     * http://dev.w3.org/html5/spec/Overview.html#dom-tr-rowindex
10.10559 +     */
10.10560 +    get rowIndex() {
10.10561 +        var nl = this.parentNode.childNodes;
10.10562 +        for (var i=0; i<nl.length; i++) {
10.10563 +            if (nl[i] === this) {
10.10564 +                return i;
10.10565 +            }
10.10566 +        }
10.10567 +        return -1;
10.10568 +    },
10.10569 +
10.10570 +    /**
10.10571 +     * http://dev.w3.org/html5/spec/Overview.html#dom-tr-sectionrowindex
10.10572 +     */
10.10573 +    get sectionRowIndex() {
10.10574 +        var nl = this.parentNode.getElementsByTagName(this.tagName);
10.10575 +        for (var i=0; i<nl.length; i++) {
10.10576 +            if (nl[i] === this) {
10.10577 +                return i;
10.10578 +            }
10.10579 +        }
10.10580 +        return -1;
10.10581 +    },
10.10582 +
10.10583 +    get vAlign () {
10.10584 +        return this.getAttribute("vAlign");
10.10585 +    },
10.10586 +
10.10587 +    insertCell : function (idx) {
10.10588 +        if (idx === undefined) {
10.10589 +            throw new Error("Index omitted in call to HTMLTableRow.insertCell");
10.10590 +        }
10.10591 +
10.10592 +        var numCells = this.cells.length,
10.10593 +        node = null;
10.10594 +
10.10595 +        if (idx > numCells) {
10.10596 +            throw new Error("Index > rows.length in call to HTMLTableRow.insertCell");
10.10597 +        }
10.10598 +
10.10599 +        var cell = document.createElement("td");
10.10600 +
10.10601 +        if (idx === -1 || idx === numCells) {
10.10602 +            this.appendChild(cell);
10.10603 +        } else {
10.10604 +
10.10605 +
10.10606 +            node = this.firstChild;
10.10607 +
10.10608 +            for (var i=0; i<idx; i++) {
10.10609 +                node = node.nextSibling;
10.10610 +            }
10.10611 +        }
10.10612 +
10.10613 +        this.insertBefore(cell, node);
10.10614 +        cell.cellIndex = idx;
10.10615 +
10.10616 +        return cell;
10.10617 +    },
10.10618 +    deleteCell : function (idx) {
10.10619 +        var elem = this.cells[idx];
10.10620 +        this.removeChild(elem);
10.10621 +    },
10.10622 +    toString: function() {
10.10623 +        return '[object HTMLTableRowElement]';
10.10624 +    }
10.10625 +
10.10626 +});
10.10627 +
10.10628 +/*
10.10629 + * HTMLUListElement
10.10630 + * HTML5: 4.5.7 The ul Element
10.10631 + * http://dev.w3.org/html5/spec/Overview.html#htmlhtmlelement
10.10632 + */
10.10633 +HTMLUListElement = function(ownerDocument) {
10.10634 +    HTMLElement.apply(this, arguments);
10.10635 +};
10.10636 +
10.10637 +HTMLUListElement.prototype = new HTMLElement();
10.10638 +__extend__(HTMLUListElement.prototype, {
10.10639 +
10.10640 +    // no additional properties or elements
10.10641 +
10.10642 +    toString: function() {
10.10643 +        return '[object HTMLUListElement]';
10.10644 +    }
10.10645 +});
10.10646 +
10.10647 +
10.10648 +/**
10.10649 + * HTMLUnknownElement DOM Level 2
10.10650 + */
10.10651 +HTMLUnknownElement = function(ownerDocument) {
10.10652 +    HTMLElement.apply(this, arguments);
10.10653 +};
10.10654 +HTMLUnknownElement.prototype = new HTMLElement();
10.10655 +__extend__(HTMLUnknownElement.prototype,{
10.10656 +    toString: function(){
10.10657 +        return '[object HTMLUnknownElement]';
10.10658 +    }
10.10659 +});
10.10660 +
10.10661 +/**
10.10662 + * @author john resig & the envjs team
10.10663 + * @uri http://www.envjs.com/
10.10664 + * @copyright 2008-2010
10.10665 + * @license MIT
10.10666 + */
10.10667 +//CLOSURE_END
10.10668 +}());
10.10669 +
10.10670 +/**
10.10671 + * DOM Style Level 2
10.10672 + */
10.10673 +var CSS2Properties,
10.10674 +    CSSRule,
10.10675 +    CSSStyleRule,
10.10676 +    CSSImportRule,
10.10677 +    CSSMediaRule,
10.10678 +    CSSFontFaceRule,
10.10679 +    CSSPageRule,
10.10680 +    CSSRuleList,
10.10681 +    CSSStyleSheet,
10.10682 +    StyleSheet,
10.10683 +    StyleSheetList;
10.10684 +;
10.10685 +
10.10686 +/*
10.10687 + * Envjs css.1.2.13 
10.10688 + * Pure JavaScript Browser Environment
10.10689 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.10690 + * Copyright 2008-2010 John Resig, under the MIT License
10.10691 + */
10.10692 +
10.10693 +//CLOSURE_START
10.10694 +(function(){
10.10695 +
10.10696 +
10.10697 +
10.10698 +
10.10699 +
10.10700 +/**
10.10701 + * @author john resig
10.10702 + */
10.10703 +// Helper method for extending one object with another.
10.10704 +function __extend__(a,b) {
10.10705 +    for ( var i in b ) {
10.10706 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.10707 +        if ( g || s ) {
10.10708 +            if ( g ) { a.__defineGetter__(i, g); }
10.10709 +            if ( s ) { a.__defineSetter__(i, s); }
10.10710 +        } else {
10.10711 +            a[i] = b[i];
10.10712 +        }
10.10713 +    } return a;
10.10714 +}
10.10715 +
10.10716 +/**
10.10717 + * @author john resig
10.10718 + */
10.10719 +//from jQuery
10.10720 +function __setArray__( target, array ) {
10.10721 +    // Resetting the length to 0, then using the native Array push
10.10722 +    // is a super-fast way to populate an object with array-like properties
10.10723 +    target.length = 0;
10.10724 +    Array.prototype.push.apply( target, array );
10.10725 +}
10.10726 +
10.10727 +/**
10.10728 + * @author ariel flesler
10.10729 + *    http://flesler.blogspot.com/2008/11/fast-trim-function-for-javascript.html
10.10730 + * @param {Object} str
10.10731 + */
10.10732 +function __trim__( str ){
10.10733 +    return (str || "").replace( /^\s+|\s+$/g, "" );
10.10734 +}
10.10735 +
10.10736 +/*
10.10737 + * Interface DocumentStyle (introduced in DOM Level 2)
10.10738 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/stylesheets.html#StyleSheets-StyleSheet-DocumentStyle
10.10739 + *
10.10740 + * interface DocumentStyle {
10.10741 + *   readonly attribute StyleSheetList   styleSheets;
10.10742 + * };
10.10743 + *
10.10744 + */
10.10745 +__extend__(Document.prototype, {
10.10746 +    get styleSheets() {
10.10747 +        if (! this._styleSheets) {
10.10748 +            this._styleSheets = new StyleSheetList();
10.10749 +        }
10.10750 +        return this._styleSheets;
10.10751 +    }
10.10752 +});
10.10753 +/*
10.10754 + * CSS2Properties - DOM Level 2 CSS
10.10755 + * Renamed to CSSStyleDeclaration??
10.10756 + */
10.10757 +
10.10758 +var __toCamelCase__ = function(name) {
10.10759 +    if (name) {
10.10760 +        return name.replace(/\-(\w)/g, function(all, letter) {
10.10761 +            return letter.toUpperCase();
10.10762 +        });
10.10763 +    }
10.10764 +    return name;
10.10765 +};
10.10766 +
10.10767 +var __toDashed__ = function(camelCaseName) {
10.10768 +    if (camelCaseName) {
10.10769 +        return camelCaseName.replace(/[A-Z]/g, function(all) {
10.10770 +            return '-' + all.toLowerCase();
10.10771 +        });
10.10772 +    }
10.10773 +    return camelCaseName;
10.10774 +};
10.10775 +
10.10776 +CSS2Properties = function(element){
10.10777 +    //console.log('css2properties %s', __cssproperties__++);
10.10778 +    this.styleIndex = __supportedStyles__;//non-standard
10.10779 +    this.type = element.tagName;//non-standard
10.10780 +    __setArray__(this, []);
10.10781 +    __cssTextToStyles__(this, element.cssText || '');
10.10782 +};
10.10783 +__extend__(CSS2Properties.prototype, {
10.10784 +    get cssText() {
10.10785 +        var i, css = [];
10.10786 +        for (i = 0; i < this.length; ++i) {
10.10787 +            css.push(this[i] + ': ' + this.getPropertyValue(this[i]) + ';');
10.10788 +        }
10.10789 +        return css.join(' ');
10.10790 +    },
10.10791 +    set cssText(cssText) {
10.10792 +        __cssTextToStyles__(this, cssText);
10.10793 +    },
10.10794 +    getPropertyCSSValue: function(name) {
10.10795 +        //?
10.10796 +    },
10.10797 +    getPropertyPriority: function() {
10.10798 +
10.10799 +    },
10.10800 +    getPropertyValue: function(name) {
10.10801 +        var index, cname = __toCamelCase__(name);
10.10802 +        if (cname in this.styleIndex) {
10.10803 +            return this[cname];
10.10804 +        } else {
10.10805 +            index = Array.prototype.indexOf.apply(this, [name]);
10.10806 +            if (index > -1) {
10.10807 +                return this[index];
10.10808 +            }
10.10809 +        }
10.10810 +        return null;
10.10811 +    },
10.10812 +    item: function(index) {
10.10813 +        return this[index];
10.10814 +    },
10.10815 +    removeProperty: function(name) {
10.10816 +        this.styleIndex[name] = null;
10.10817 +        name = __toDashed__(name);
10.10818 +        var index = Array.prototype.indexOf.apply(this, [name]);
10.10819 +        if (index > -1) {
10.10820 +            Array.prototype.splice.apply(this, [1,index]);
10.10821 +        }
10.10822 +    },
10.10823 +    setProperty: function(name, value, priority) {
10.10824 +        var nval;
10.10825 +        name = __toCamelCase__(name);
10.10826 +        if (value !== undefined && name in this.styleIndex) {
10.10827 +            // NOTE:  parseFloat('300px') ==> 300  no
10.10828 +            // NOTE:  Number('300px') ==> Nan      yes
10.10829 +            nval = Number(value);
10.10830 +            this.styleIndex[name] = isNaN(nval) ? value : nval;
10.10831 +            name = __toDashed__(name);
10.10832 +            if (Array.prototype.indexOf.apply(this, [name]) === -1 ){
10.10833 +                Array.prototype.push.apply(this,[name]);
10.10834 +            }
10.10835 +        }
10.10836 +    },
10.10837 +    toString: function() {
10.10838 +        return '[object CSS2Properties]';
10.10839 +    }
10.10840 +});
10.10841 +
10.10842 +
10.10843 +
10.10844 +var __cssTextToStyles__ = function(css2props, cssText) {
10.10845 +    //console.log('__cssTextToStyles__ %s %s', css2props, cssText);
10.10846 +    //var styleArray=[];
10.10847 +    var i, style, styles = cssText.split(';');
10.10848 +    for (i = 0; i < styles.length; ++i) {
10.10849 +        style = styles[i].split(':');
10.10850 +        if (style.length === 2) {
10.10851 +            css2props.setProperty(style[0].replace(' ', '', 'g'),
10.10852 +                                  style[1].replace(' ', '', 'g'));
10.10853 +        }
10.10854 +    }
10.10855 +};
10.10856 +
10.10857 +//Obviously these arent all supported but by commenting out various
10.10858 +//sections this provides a single location to configure what is
10.10859 +//exposed as supported.
10.10860 +var __supportedStyles__ = {
10.10861 +    azimuth:                null,
10.10862 +    background:             null,
10.10863 +    backgroundAttachment:   null,
10.10864 +    backgroundColor:        'rgb(0,0,0)',
10.10865 +    backgroundImage:        null,
10.10866 +    backgroundPosition:     null,
10.10867 +    backgroundRepeat:       null,
10.10868 +    border:                 null,
10.10869 +    borderBottom:           null,
10.10870 +    borderBottomColor:      null,
10.10871 +    borderBottomStyle:      null,
10.10872 +    borderBottomWidth:      null,
10.10873 +    borderCollapse:         null,
10.10874 +    borderColor:            null,
10.10875 +    borderLeft:             null,
10.10876 +    borderLeftColor:        null,
10.10877 +    borderLeftStyle:        null,
10.10878 +    borderLeftWidth:        null,
10.10879 +    borderRight:            null,
10.10880 +    borderRightColor:       null,
10.10881 +    borderRightStyle:       null,
10.10882 +    borderRightWidth:       null,
10.10883 +    borderSpacing:          null,
10.10884 +    borderStyle:            null,
10.10885 +    borderTop:              null,
10.10886 +    borderTopColor:         null,
10.10887 +    borderTopStyle:         null,
10.10888 +    borderTopWidth:         null,
10.10889 +    borderWidth:            null,
10.10890 +    bottom:                 null,
10.10891 +    captionSide:            null,
10.10892 +    clear:                  null,
10.10893 +    clip:                   null,
10.10894 +    color:                  null,
10.10895 +    content:                null,
10.10896 +    counterIncrement:       null,
10.10897 +    counterReset:           null,
10.10898 +    cssFloat:               null,
10.10899 +    cue:                    null,
10.10900 +    cueAfter:               null,
10.10901 +    cueBefore:              null,
10.10902 +    cursor:                 null,
10.10903 +    direction:              'ltr',
10.10904 +    display:                null,
10.10905 +    elevation:              null,
10.10906 +    emptyCells:             null,
10.10907 +    font:                   null,
10.10908 +    fontFamily:             null,
10.10909 +    fontSize:               '1em',
10.10910 +    fontSizeAdjust:         null,
10.10911 +    fontStretch:            null,
10.10912 +    fontStyle:              null,
10.10913 +    fontVariant:            null,
10.10914 +    fontWeight:             null,
10.10915 +    height:                 '',
10.10916 +    left:                   null,
10.10917 +    letterSpacing:          null,
10.10918 +    lineHeight:             null,
10.10919 +    listStyle:              null,
10.10920 +    listStyleImage:         null,
10.10921 +    listStylePosition:      null,
10.10922 +    listStyleType:          null,
10.10923 +    margin:                 null,
10.10924 +    marginBottom:           '0px',
10.10925 +    marginLeft:             '0px',
10.10926 +    marginRight:            '0px',
10.10927 +    marginTop:              '0px',
10.10928 +    markerOffset:           null,
10.10929 +    marks:                  null,
10.10930 +    maxHeight:              null,
10.10931 +    maxWidth:               null,
10.10932 +    minHeight:              null,
10.10933 +    minWidth:               null,
10.10934 +    opacity:                1,
10.10935 +    orphans:                null,
10.10936 +    outline:                null,
10.10937 +    outlineColor:           null,
10.10938 +    outlineOffset:          null,
10.10939 +    outlineStyle:           null,
10.10940 +    outlineWidth:           null,
10.10941 +    overflow:               null,
10.10942 +    overflowX:              null,
10.10943 +    overflowY:              null,
10.10944 +    padding:                null,
10.10945 +    paddingBottom:          '0px',
10.10946 +    paddingLeft:            '0px',
10.10947 +    paddingRight:           '0px',
10.10948 +    paddingTop:             '0px',
10.10949 +    page:                   null,
10.10950 +    pageBreakAfter:         null,
10.10951 +    pageBreakBefore:        null,
10.10952 +    pageBreakInside:        null,
10.10953 +    pause:                  null,
10.10954 +    pauseAfter:             null,
10.10955 +    pauseBefore:            null,
10.10956 +    pitch:                  null,
10.10957 +    pitchRange:             null,
10.10958 +    position:               null,
10.10959 +    quotes:                 null,
10.10960 +    richness:               null,
10.10961 +    right:                  null,
10.10962 +    size:                   null,
10.10963 +    speak:                  null,
10.10964 +    speakHeader:            null,
10.10965 +    speakNumeral:           null,
10.10966 +    speakPunctuation:       null,
10.10967 +    speechRate:             null,
10.10968 +    stress:                 null,
10.10969 +    tableLayout:            null,
10.10970 +    textAlign:              null,
10.10971 +    textDecoration:         null,
10.10972 +    textIndent:             null,
10.10973 +    textShadow:             null,
10.10974 +    textTransform:          null,
10.10975 +    top:                    null,
10.10976 +    unicodeBidi:            null,
10.10977 +    verticalAlign:          null,
10.10978 +    visibility:             '',
10.10979 +    voiceFamily:            null,
10.10980 +    volume:                 null,
10.10981 +    whiteSpace:             null,
10.10982 +    widows:                 null,
10.10983 +    width:                  '1px',
10.10984 +    wordSpacing:            null,
10.10985 +    zIndex:                 1
10.10986 +};
10.10987 +
10.10988 +var __displayMap__ = {
10.10989 +    DIV      : 'block',
10.10990 +    P        : 'block',
10.10991 +    A        : 'inline',
10.10992 +    CODE     : 'inline',
10.10993 +    PRE      : 'block',
10.10994 +    SPAN     : 'inline',
10.10995 +    TABLE    : 'table',
10.10996 +    THEAD    : 'table-header-group',
10.10997 +    TBODY    : 'table-row-group',
10.10998 +    TR       : 'table-row',
10.10999 +    TH       : 'table-cell',
10.11000 +    TD       : 'table-cell',
10.11001 +    UL       : 'block',
10.11002 +    LI       : 'list-item'
10.11003 +};
10.11004 +
10.11005 +for (var style in __supportedStyles__) {
10.11006 +    if (__supportedStyles__.hasOwnProperty(style)) {
10.11007 +        (function(name) {
10.11008 +            if (name === 'width' || name === 'height') {
10.11009 +                CSS2Properties.prototype.__defineGetter__(name, function() {
10.11010 +                    if (this.display === 'none'){
10.11011 +                        return '0px';
10.11012 +                    }
10.11013 +                    return this.styleIndex[name];
10.11014 +                });
10.11015 +            } else if (name === 'display') {
10.11016 +                //display will be set to a tagName specific value if ''
10.11017 +                CSS2Properties.prototype.__defineGetter__(name, function() {
10.11018 +                    var val = this.styleIndex[name];
10.11019 +                    val = val ? val :__displayMap__[this.type];
10.11020 +                    return val;
10.11021 +                });
10.11022 +            } else {
10.11023 +                CSS2Properties.prototype.__defineGetter__(name, function() {
10.11024 +                    return this.styleIndex[name];
10.11025 +                });
10.11026 +            }
10.11027 +            CSS2Properties.prototype.__defineSetter__(name, function(value) {
10.11028 +                this.setProperty(name, value);
10.11029 +            });
10.11030 +        }(style));
10.11031 +    }
10.11032 +}
10.11033 +
10.11034 +/*
10.11035 + * CSSRule - DOM Level 2
10.11036 + */
10.11037 +CSSRule = function(options) {
10.11038 +
10.11039 +
10.11040 +
10.11041 +    var $style,
10.11042 +    $selectorText = options.selectorText ? options.selectorText : '';
10.11043 +    $style = new CSS2Properties({
10.11044 +        cssText: options.cssText ? options.cssText : null
10.11045 +    });
10.11046 +
10.11047 +    return __extend__(this, {
10.11048 +        get style(){
10.11049 +            return $style;
10.11050 +        },
10.11051 +        get selectorText(){
10.11052 +            return $selectorText;
10.11053 +        },
10.11054 +        set selectorText(selectorText){
10.11055 +            $selectorText = selectorText;
10.11056 +        },
10.11057 +        toString : function(){
10.11058 +            return "[object CSSRule]";
10.11059 +        }
10.11060 +    });
10.11061 +};
10.11062 +CSSRule.STYLE_RULE     =  1;
10.11063 +CSSRule.IMPORT_RULE    =  3;
10.11064 +CSSRule.MEDIA_RULE     =  4;
10.11065 +CSSRule.FONT_FACE_RULE =  5;
10.11066 +CSSRule.PAGE_RULE      =  6;
10.11067 +//CSSRule.NAMESPACE_RULE = 10;
10.11068 +
10.11069 +
10.11070 +CSSStyleRule = function() {
10.11071 +
10.11072 +};
10.11073 +
10.11074 +CSSImportRule = function() {
10.11075 +
10.11076 +};
10.11077 +
10.11078 +CSSMediaRule = function() {
10.11079 +
10.11080 +};
10.11081 +
10.11082 +CSSFontFaceRule = function() {
10.11083 +
10.11084 +};
10.11085 +
10.11086 +CSSPageRule = function() {
10.11087 +
10.11088 +};
10.11089 +
10.11090 +
10.11091 +CSSRuleList = function(data) {
10.11092 +    this.length = 0;
10.11093 +    __setArray__(this, data);
10.11094 +};
10.11095 +
10.11096 +__extend__(CSSRuleList.prototype, {
10.11097 +    item : function(index) {
10.11098 +        if ((index >= 0) && (index < this.length)) {
10.11099 +            // bounds check
10.11100 +            return this[index];
10.11101 +        }
10.11102 +        return null;
10.11103 +    },
10.11104 +    toString: function() {
10.11105 +        return '[object CSSRuleList]';
10.11106 +    }
10.11107 +});
10.11108 +
10.11109 +/**
10.11110 + * StyleSheet
10.11111 + * http://dev.w3.org/csswg/cssom/#stylesheet
10.11112 + *
10.11113 + * interface StyleSheet {
10.11114 + *   readonly attribute DOMString type;
10.11115 + *   readonly attribute DOMString href;
10.11116 + *   readonly attribute Node ownerNode;
10.11117 + *   readonly attribute StyleSheet parentStyleSheet;
10.11118 + *   readonly attribute DOMString title;
10.11119 + *   [PutForwards=mediaText] readonly attribute MediaList media;
10.11120 + *          attribute boolean disabled;
10.11121 + * };
10.11122 + */
10.11123 +StyleSheet = function() {
10.11124 +}
10.11125 +
10.11126 +/*
10.11127 + * CSSStyleSheet
10.11128 + * http://dev.w3.org/csswg/cssom/#cssstylesheet
10.11129 + *
10.11130 + * interface CSSStyleSheet : StyleSheet {
10.11131 + *   readonly attribute CSSRule ownerRule;
10.11132 + *   readonly attribute CSSRuleList cssRules;
10.11133 + *   unsigned long insertRule(DOMString rule, unsigned long index);
10.11134 + *   void deleteRule(unsigned long index);
10.11135 + * };
10.11136 + */
10.11137 +CSSStyleSheet = function(options){
10.11138 +    var $cssRules,
10.11139 +        $disabled = options.disabled ? options.disabled : false,
10.11140 +        $href = options.href ? options.href : null,
10.11141 +        $parentStyleSheet = options.parentStyleSheet ? options.parentStyleSheet : null,
10.11142 +        $title = options.title ? options.title : "",
10.11143 +        $type = "text/css";
10.11144 +
10.11145 +    function parseStyleSheet(text){
10.11146 +        //$debug("parsing css");
10.11147 +        //this is pretty ugly, but text is the entire text of a stylesheet
10.11148 +        var cssRules = [];
10.11149 +        if (!text) {
10.11150 +            text = '';
10.11151 +        }
10.11152 +        text = __trim__(text.replace(/\/\*(\r|\n|.)*\*\//g,""));
10.11153 +        // TODO: @import
10.11154 +        var blocks = text.split("}");
10.11155 +        blocks.pop();
10.11156 +        var i, j, len = blocks.length;
10.11157 +        var definition_block, properties, selectors;
10.11158 +        for (i=0; i<len; i++) {
10.11159 +            definition_block = blocks[i].split("{");
10.11160 +            if (definition_block.length === 2) {
10.11161 +                selectors = definition_block[0].split(",");
10.11162 +                for (j=0; j<selectors.length; j++) {
10.11163 +                    cssRules.push(new CSSRule({
10.11164 +                        selectorText : __trim__(selectors[j]),
10.11165 +                        cssText      : definition_block[1]
10.11166 +                    }));
10.11167 +                }
10.11168 +            }
10.11169 +        }
10.11170 +        return cssRules;
10.11171 +    }
10.11172 +
10.11173 +    $cssRules = new CSSRuleList(parseStyleSheet(options.textContent));
10.11174 +
10.11175 +    return __extend__(this, {
10.11176 +        get cssRules(){
10.11177 +            return $cssRules;
10.11178 +        },
10.11179 +        get rule(){
10.11180 +            return $cssRules;
10.11181 +        },//IE - may be deprecated
10.11182 +        get href(){
10.11183 +            return $href;
10.11184 +        },
10.11185 +        get parentStyleSheet(){
10.11186 +            return $parentStyleSheet;
10.11187 +        },
10.11188 +        get title(){
10.11189 +            return $title;
10.11190 +        },
10.11191 +        get type(){
10.11192 +            return $type;
10.11193 +        },
10.11194 +        addRule: function(selector, style, index){/*TODO*/},
10.11195 +        deleteRule: function(index){/*TODO*/},
10.11196 +        insertRule: function(rule, index){/*TODO*/},
10.11197 +        //IE - may be deprecated
10.11198 +        removeRule: function(index){
10.11199 +            this.deleteRule(index);
10.11200 +        }
10.11201 +    });
10.11202 +};
10.11203 +
10.11204 +StyleSheetList = function() {
10.11205 +}
10.11206 +StyleSheetList.prototype = new Array();
10.11207 +__extend__(StyleSheetList.prototype, {
10.11208 +    item : function(index) {
10.11209 +        if ((index >= 0) && (index < this.length)) {
10.11210 +            // bounds check
10.11211 +            return this[index];
10.11212 +        }
10.11213 +        return null;
10.11214 +    },
10.11215 +    toString: function() {
10.11216 +        return '[object StyleSheetList]';
10.11217 +    }
10.11218 +});
10.11219 +/**
10.11220 + * This extends HTMLElement to handle CSS-specific interfaces.
10.11221 + *
10.11222 + * More work / research would be needed to extend just (DOM) Element
10.11223 + * for xml use and additional changes for just HTMLElement.
10.11224 + */
10.11225 +
10.11226 +
10.11227 +/**
10.11228 + * Replace or add  the getter for 'style'
10.11229 + *
10.11230 + * This could be wrapped in a closure
10.11231 + */
10.11232 +var $css2properties = [{}];
10.11233 +
10.11234 +__extend__(HTMLElement.prototype, {
10.11235 +    get style(){
10.11236 +        if ( !this.css2uuid ) {
10.11237 +            this.css2uuid = $css2properties.length;
10.11238 +            $css2properties[this.css2uuid] = new CSS2Properties(this);
10.11239 +        }
10.11240 +        return $css2properties[this.css2uuid];
10.11241 +    },
10.11242 +});
10.11243 +
10.11244 +/**
10.11245 + * Change for how 'setAttribute("style", ...)' works
10.11246 + *
10.11247 + * We are truly adding functionality to HtmlElement.setAttribute, not
10.11248 + * replacing it.  So we need to save the old one first, call it, then
10.11249 + * do our stuff.  If we need to do more hacks like this, HTMLElement
10.11250 + * (or regular Element) needs to have a hooks array or dispatch table
10.11251 + * for global changes.
10.11252 + *
10.11253 + * This could be wrapped in a closure if desired.
10.11254 + */
10.11255 +var updateCss2Props = function(elem, values) {
10.11256 +    //console.log('__updateCss2Props__ %s %s', elem, values);
10.11257 +    if ( !elem.css2uuid ) {
10.11258 +        elem.css2uuid = $css2properties.length;
10.11259 +        $css2properties[elem.css2uuid] = new CSS2Properties(elem);
10.11260 +    }
10.11261 +    __cssTextToStyles__($css2properties[elem.css2uuid], values);
10.11262 +}
10.11263 +
10.11264 +var origSetAttribute =  HTMLElement.prototype.setAttribute;
10.11265 +
10.11266 +HTMLElement.prototype.setAttribute = function(name, value) {
10.11267 +    //console.log("CSS set attribute: " + name + ", " + value);
10.11268 +    origSetAttribute.apply(this, arguments);
10.11269 +    if (name === "style") {
10.11270 +        updateCss2Props(this, value);
10.11271 +    }
10.11272 +}
10.11273 +
10.11274 +/**
10.11275 + * @author john resig & the envjs team
10.11276 + * @uri http://www.envjs.com/
10.11277 + * @copyright 2008-2010
10.11278 + * @license MIT
10.11279 + */
10.11280 +//CLOSURE_END
10.11281 +}());
10.11282 +
10.11283 +//these are both non-standard globals that
10.11284 +//provide static namespaces and functions
10.11285 +//to support the html 5 parser from nu.
10.11286 +var XMLParser = {},
10.11287 +    HTMLParser = {};
10.11288 +
10.11289 +    
10.11290 +/*
10.11291 + * Envjs parser.1.2.13 
10.11292 + * Pure JavaScript Browser Environment
10.11293 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.11294 + * Copyright 2008-2010 John Resig, under the MIT License
10.11295 + */
10.11296 +
10.11297 +//CLOSURE_START
10.11298 +(function(){
10.11299 +
10.11300 +
10.11301 +
10.11302 +
10.11303 +
10.11304 +/**
10.11305 + * @author john resig
10.11306 + */
10.11307 +// Helper method for extending one object with another.
10.11308 +function __extend__(a,b) {
10.11309 +    for ( var i in b ) {
10.11310 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.11311 +        if ( g || s ) {
10.11312 +            if ( g ) { a.__defineGetter__(i, g); }
10.11313 +            if ( s ) { a.__defineSetter__(i, s); }
10.11314 +        } else {
10.11315 +            a[i] = b[i];
10.11316 +        }
10.11317 +    } return a;
10.11318 +}
10.11319 +
10.11320 +/**
10.11321 + * @author john resig
10.11322 + */
10.11323 +//from jQuery
10.11324 +function __setArray__( target, array ) {
10.11325 +    // Resetting the length to 0, then using the native Array push
10.11326 +    // is a super-fast way to populate an object with array-like properties
10.11327 +    target.length = 0;
10.11328 +    Array.prototype.push.apply( target, array );
10.11329 +}
10.11330 +var __defineParser__;
10.11331 +(function () {var $gwt_version = "1.5.1";var $wnd = {};var $doc = {};var $moduleName, $moduleBase;var $stats = $wnd.__gwtStatsEvent ? function(a) {$wnd.__gwtStatsEvent(a)} : null;var _, N8000000000000000_longLit = [0, -9223372036854775808], P1000000_longLit = [16777216, 0], P7fffffffffffffff_longLit = [4294967295, 9223372032559808512];
10.11332 +function equals_1(other){
10.11333 +  return (this == null?null:this) === (other == null?null:other);
10.11334 +}
10.11335 +
10.11336 +function getClass_13(){
10.11337 +  return Ljava_lang_Object_2_classLit;
10.11338 +}
10.11339 +
10.11340 +function hashCode_2(){
10.11341 +  return this.$H || (this.$H = ++sNextHashId);
10.11342 +}
10.11343 +
10.11344 +function toString_3(){
10.11345 +  return (this.typeMarker$ == nullMethod || this.typeId$ == 2?this.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName + '@' + toPowerOfTwoString(this.typeMarker$ == nullMethod || this.typeId$ == 2?this.hashCode$():this.$H || (this.$H = ++sNextHashId), 4);
10.11346 +}
10.11347 +
10.11348 +function Object_0(){
10.11349 +}
10.11350 +
10.11351 +_ = Object_0.prototype = {};
10.11352 +_.equals$ = equals_1;
10.11353 +_.getClass$ = getClass_13;
10.11354 +_.hashCode$ = hashCode_2;
10.11355 +_.toString$ = toString_3;
10.11356 +_.toString = function(){
10.11357 +  return this.toString$();
10.11358 +}
10.11359 +;
10.11360 +_.typeMarker$ = nullMethod;
10.11361 +_.typeId$ = 1;
10.11362 +function $toString_1(this$static){
10.11363 +  var className, msg;
10.11364 +  className = this$static.getClass$().typeName;
10.11365 +  msg = this$static.getMessage();
10.11366 +  if (msg != null) {
10.11367 +    return className + ': ' + msg;
10.11368 +  }
10.11369 +   else {
10.11370 +    return className;
10.11371 +  }
10.11372 +}
10.11373 +
10.11374 +function getClass_19(){
10.11375 +  return Ljava_lang_Throwable_2_classLit;
10.11376 +}
10.11377 +
10.11378 +function getMessage(){
10.11379 +  return this.detailMessage;
10.11380 +}
10.11381 +
10.11382 +function toString_7(){
10.11383 +  return $toString_1(this);
10.11384 +}
10.11385 +
10.11386 +function Throwable(){
10.11387 +}
10.11388 +
10.11389 +_ = Throwable.prototype = new Object_0();
10.11390 +_.getClass$ = getClass_19;
10.11391 +_.getMessage = getMessage;
10.11392 +_.toString$ = toString_7;
10.11393 +_.typeId$ = 3;
10.11394 +_.detailMessage = null;
10.11395 +function $Exception(this$static, message){
10.11396 +  this$static.detailMessage = message;
10.11397 +  return this$static;
10.11398 +}
10.11399 +
10.11400 +function getClass_9(){
10.11401 +  return Ljava_lang_Exception_2_classLit;
10.11402 +}
10.11403 +
10.11404 +function Exception(){
10.11405 +}
10.11406 +
10.11407 +_ = Exception.prototype = new Throwable();
10.11408 +_.getClass$ = getClass_9;
10.11409 +_.typeId$ = 4;
10.11410 +function $RuntimeException(this$static, message){
10.11411 +  this$static.detailMessage = message;
10.11412 +  return this$static;
10.11413 +}
10.11414 +
10.11415 +function getClass_14(){
10.11416 +  return Ljava_lang_RuntimeException_2_classLit;
10.11417 +}
10.11418 +
10.11419 +function RuntimeException(){
10.11420 +}
10.11421 +
10.11422 +_ = RuntimeException.prototype = new Exception();
10.11423 +_.getClass$ = getClass_14;
10.11424 +_.typeId$ = 5;
10.11425 +function $JavaScriptException(this$static, e){
10.11426 +  $Exception(this$static, '(' + getName(e) + '): ' + getDescription(e) + (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)?getProperties0(dynamicCastJso(e)):''));
10.11427 +  getName(e);
10.11428 +  getDescription(e);
10.11429 +  getException(e);
10.11430 +  return this$static;
10.11431 +}
10.11432 +
10.11433 +function getClass_0(){
10.11434 +  return Lcom_google_gwt_core_client_JavaScriptException_2_classLit;
10.11435 +}
10.11436 +
10.11437 +function getDescription(e){
10.11438 +  if (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)) {
10.11439 +    return getDescription0(dynamicCastJso(e));
10.11440 +  }
10.11441 +   else {
10.11442 +    return e + '';
10.11443 +  }
10.11444 +}
10.11445 +
10.11446 +function getDescription0(e){
10.11447 +  return e == null?null:e.message;
10.11448 +}
10.11449 +
10.11450 +function getException(e){
10.11451 +  if (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)) {
10.11452 +    return dynamicCastJso(e);
10.11453 +  }
10.11454 +   else {
10.11455 +    return null;
10.11456 +  }
10.11457 +}
10.11458 +
10.11459 +function getName(e){
10.11460 +  if (e == null) {
10.11461 +    return 'null';
10.11462 +  }
10.11463 +   else if (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)) {
10.11464 +    return getName0(dynamicCastJso(e));
10.11465 +  }
10.11466 +   else if (e != null && canCast(e.typeId$, 1)) {
10.11467 +    return 'String';
10.11468 +  }
10.11469 +   else {
10.11470 +    return (e.typeMarker$ == nullMethod || e.typeId$ == 2?e.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
10.11471 +  }
10.11472 +}
10.11473 +
10.11474 +function getName0(e){
10.11475 +  return e == null?null:e.name;
10.11476 +}
10.11477 +
10.11478 +function getProperties0(e){
10.11479 +  var result = '';
10.11480 +  for (prop in e) {
10.11481 +    if (prop != 'name' && prop != 'message') {
10.11482 +      result += '\n ' + prop + ': ' + e[prop];
10.11483 +    }
10.11484 +  }
10.11485 +  return result;
10.11486 +}
10.11487 +
10.11488 +function JavaScriptException(){
10.11489 +}
10.11490 +
10.11491 +_ = JavaScriptException.prototype = new RuntimeException();
10.11492 +_.getClass$ = getClass_0;
10.11493 +_.typeId$ = 6;
10.11494 +function createFunction(){
10.11495 +  return function(){
10.11496 +  }
10.11497 +  ;
10.11498 +}
10.11499 +
10.11500 +function equals__devirtual$(this$static, other){
10.11501 +  return this$static.typeMarker$ == nullMethod || this$static.typeId$ == 2?this$static.equals$(other):(this$static == null?null:this$static) === (other == null?null:other);
10.11502 +}
10.11503 +
10.11504 +function hashCode__devirtual$(this$static){
10.11505 +  return this$static.typeMarker$ == nullMethod || this$static.typeId$ == 2?this$static.hashCode$():this$static.$H || (this$static.$H = ++sNextHashId);
10.11506 +}
10.11507 +
10.11508 +var sNextHashId = 0;
10.11509 +function createFromSeed(seedType, length){
10.11510 +  var seedArray = [null, 0, false, [0, 0]];
10.11511 +  var value = seedArray[seedType];
10.11512 +  var array = new Array(length);
10.11513 +  for (var i = 0; i < length; ++i) {
10.11514 +    array[i] = value;
10.11515 +  }
10.11516 +  return array;
10.11517 +}
10.11518 +
10.11519 +function getClass_2(){
10.11520 +  return this.arrayClass$;
10.11521 +}
10.11522 +
10.11523 +function initDim(arrayClass, typeId, queryId, length, seedType){
10.11524 +  var result;
10.11525 +  result = createFromSeed(seedType, length);
10.11526 +  initValues(arrayClass, typeId, queryId, result);
10.11527 +  return result;
10.11528 +}
10.11529 +
10.11530 +function initValues(arrayClass, typeId, queryId, array){
10.11531 +  if (!protoTypeArray_0) {
10.11532 +    protoTypeArray_0 = new Array_0();
10.11533 +  }
10.11534 +  wrapArray(array, protoTypeArray_0);
10.11535 +  array.arrayClass$ = arrayClass;
10.11536 +  array.typeId$ = typeId;
10.11537 +  array.queryId$ = queryId;
10.11538 +  return array;
10.11539 +}
10.11540 +
10.11541 +function setCheck(array, index, value){
10.11542 +  if (value != null) {
10.11543 +    if (array.queryId$ > 0 && !canCastUnsafe(value.typeId$, array.queryId$)) {
10.11544 +      throw new ArrayStoreException();
10.11545 +    }
10.11546 +    if (array.queryId$ < 0 && (value.typeMarker$ == nullMethod || value.typeId$ == 2)) {
10.11547 +      throw new ArrayStoreException();
10.11548 +    }
10.11549 +  }
10.11550 +  return array[index] = value;
10.11551 +}
10.11552 +
10.11553 +function wrapArray(array, protoTypeArray){
10.11554 +  for (var i in protoTypeArray) {
10.11555 +    var toCopy = protoTypeArray[i];
10.11556 +    if (toCopy) {
10.11557 +      array[i] = toCopy;
10.11558 +    }
10.11559 +  }
10.11560 +  return array;
10.11561 +}
10.11562 +
10.11563 +function Array_0(){
10.11564 +}
10.11565 +
10.11566 +_ = Array_0.prototype = new Object_0();
10.11567 +_.getClass$ = getClass_2;
10.11568 +_.typeId$ = 0;
10.11569 +_.arrayClass$ = null;
10.11570 +_.length = 0;
10.11571 +_.queryId$ = 0;
10.11572 +var protoTypeArray_0 = null;
10.11573 +function canCast(srcId, dstId){
10.11574 +  return srcId && !!typeIdArray[srcId][dstId];
10.11575 +}
10.11576 +
10.11577 +function canCastUnsafe(srcId, dstId){
10.11578 +  return srcId && typeIdArray[srcId][dstId];
10.11579 +}
10.11580 +
10.11581 +function dynamicCast(src, dstId){
10.11582 +  if (src != null && !canCastUnsafe(src.typeId$, dstId)) {
10.11583 +    throw new ClassCastException();
10.11584 +  }
10.11585 +  return src;
10.11586 +}
10.11587 +
10.11588 +function dynamicCastJso(src){
10.11589 +  if (src != null && (src.typeMarker$ == nullMethod || src.typeId$ == 2)) {
10.11590 +    throw new ClassCastException();
10.11591 +  }
10.11592 +  return src;
10.11593 +}
10.11594 +
10.11595 +function instanceOf(src, dstId){
10.11596 +  return src != null && canCast(src.typeId$, dstId);
10.11597 +}
10.11598 +
10.11599 +var typeIdArray = [{}, {}, {1:1, 6:1, 7:1, 8:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1, 19:1}, {4:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {6:1, 8:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {7:1}, {7:1}, {2:1, 6:1}, {2:1, 6:1}, {18:1}, {14:1}, {14:1}, {14:1}, {15:1}, {15:1}, {6:1, 15:1}, {6:1, 16:1}, {6:1, 15:1}, {2:1, 6:1, 17:1}, {6:1, 8:1}, {6:1, 8:1}, {6:1, 8:1}, {20:1}, {3:1}, {9:1}, {10:1}, {11:1}, {21:1}, {2:1, 6:1, 22:1}, {2:1, 6:1, 22:1}, {12:1}, {13:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}];
10.11600 +function caught(e){
10.11601 +  if (e != null && canCast(e.typeId$, 2)) {
10.11602 +    return e;
10.11603 +  }
10.11604 +  return $JavaScriptException(new JavaScriptException(), e);
10.11605 +}
10.11606 +
10.11607 +function create(valueLow, valueHigh){
10.11608 +  var diffHigh, diffLow;
10.11609 +  valueHigh %= 1.8446744073709552E19;
10.11610 +  valueLow %= 1.8446744073709552E19;
10.11611 +  diffHigh = valueHigh % 4294967296;
10.11612 +  diffLow = Math.floor(valueLow / 4294967296) * 4294967296;
10.11613 +  valueHigh = valueHigh - diffHigh + diffLow;
10.11614 +  valueLow = valueLow - diffLow + diffHigh;
10.11615 +  while (valueLow < 0) {
10.11616 +    valueLow += 4294967296;
10.11617 +    valueHigh -= 4294967296;
10.11618 +  }
10.11619 +  while (valueLow > 4294967295) {
10.11620 +    valueLow -= 4294967296;
10.11621 +    valueHigh += 4294967296;
10.11622 +  }
10.11623 +  valueHigh = valueHigh % 1.8446744073709552E19;
10.11624 +  while (valueHigh > 9223372032559808512) {
10.11625 +    valueHigh -= 1.8446744073709552E19;
10.11626 +  }
10.11627 +  while (valueHigh < -9223372036854775808) {
10.11628 +    valueHigh += 1.8446744073709552E19;
10.11629 +  }
10.11630 +  return [valueLow, valueHigh];
10.11631 +}
10.11632 +
10.11633 +function fromDouble(value){
10.11634 +  if (isNaN(value)) {
10.11635 +    return $clinit_7() , ZERO;
10.11636 +  }
10.11637 +  if (value < -9223372036854775808) {
10.11638 +    return $clinit_7() , MIN_VALUE;
10.11639 +  }
10.11640 +  if (value >= 9223372036854775807) {
10.11641 +    return $clinit_7() , MAX_VALUE;
10.11642 +  }
10.11643 +  if (value > 0) {
10.11644 +    return create(Math.floor(value), 0);
10.11645 +  }
10.11646 +   else {
10.11647 +    return create(Math.ceil(value), 0);
10.11648 +  }
10.11649 +}
10.11650 +
10.11651 +function fromInt(value){
10.11652 +  var rebase, result;
10.11653 +  if (value > -129 && value < 128) {
10.11654 +    rebase = value + 128;
10.11655 +    result = ($clinit_6() , boxedValues)[rebase];
10.11656 +    if (result == null) {
10.11657 +      result = boxedValues[rebase] = internalFromInt(value);
10.11658 +    }
10.11659 +    return result;
10.11660 +  }
10.11661 +  return internalFromInt(value);
10.11662 +}
10.11663 +
10.11664 +function internalFromInt(value){
10.11665 +  if (value >= 0) {
10.11666 +    return [value, 0];
10.11667 +  }
10.11668 +   else {
10.11669 +    return [value + 4294967296, -4294967296];
10.11670 +  }
10.11671 +}
10.11672 +
10.11673 +function $clinit_6(){
10.11674 +  $clinit_6 = nullMethod;
10.11675 +  boxedValues = initDim(_3_3D_classLit, 53, 13, 256, 0);
10.11676 +}
10.11677 +
10.11678 +var boxedValues;
10.11679 +function $clinit_7(){
10.11680 +  $clinit_7 = nullMethod;
10.11681 +  Math.log(2);
10.11682 +  MAX_VALUE = P7fffffffffffffff_longLit;
10.11683 +  MIN_VALUE = N8000000000000000_longLit;
10.11684 +  fromInt(-1);
10.11685 +  fromInt(1);
10.11686 +  fromInt(2);
10.11687 +  ZERO = fromInt(0);
10.11688 +}
10.11689 +
10.11690 +var MAX_VALUE, MIN_VALUE, ZERO;
10.11691 +function $clinit_12(){
10.11692 +  $clinit_12 = nullMethod;
10.11693 +  timers = $ArrayList(new ArrayList());
10.11694 +  addWindowCloseListener(new Timer$1());
10.11695 +}
10.11696 +
10.11697 +function $cancel(this$static){
10.11698 +  if (this$static.isRepeating) {
10.11699 +    clearInterval(this$static.timerId);
10.11700 +  }
10.11701 +   else {
10.11702 +    clearTimeout(this$static.timerId);
10.11703 +  }
10.11704 +  $remove_0(timers, this$static);
10.11705 +}
10.11706 +
10.11707 +function $fireImpl(this$static){
10.11708 +  if (!this$static.isRepeating) {
10.11709 +    $remove_0(timers, this$static);
10.11710 +  }
10.11711 +  $run(this$static);
10.11712 +}
10.11713 +
10.11714 +function $schedule(this$static, delayMillis){
10.11715 +  if (delayMillis <= 0) {
10.11716 +    throw $IllegalArgumentException(new IllegalArgumentException(), 'must be positive');
10.11717 +  }
10.11718 +  $cancel(this$static);
10.11719 +  this$static.isRepeating = false;
10.11720 +  this$static.timerId = createTimeout(this$static, delayMillis);
10.11721 +  $add(timers, this$static);
10.11722 +}
10.11723 +
10.11724 +function createTimeout(timer, delay){
10.11725 +  return setTimeout(function(){
10.11726 +    timer.fire();
10.11727 +  }
10.11728 +  , delay);
10.11729 +}
10.11730 +
10.11731 +function fire(){
10.11732 +  $fireImpl(this);
10.11733 +}
10.11734 +
10.11735 +function getClass_4(){
10.11736 +  return Lcom_google_gwt_user_client_Timer_2_classLit;
10.11737 +}
10.11738 +
10.11739 +function Timer(){
10.11740 +}
10.11741 +
10.11742 +_ = Timer.prototype = new Object_0();
10.11743 +_.fire = fire;
10.11744 +_.getClass$ = getClass_4;
10.11745 +_.typeId$ = 0;
10.11746 +_.isRepeating = false;
10.11747 +_.timerId = 0;
10.11748 +var timers;
10.11749 +function $onWindowClosed(){
10.11750 +  while (($clinit_12() , timers).size > 0) {
10.11751 +    $cancel(dynamicCast($get_0(timers, 0), 3));
10.11752 +  }
10.11753 +}
10.11754 +
10.11755 +function getClass_3(){
10.11756 +  return Lcom_google_gwt_user_client_Timer$1_2_classLit;
10.11757 +}
10.11758 +
10.11759 +function Timer$1(){
10.11760 +}
10.11761 +
10.11762 +_ = Timer$1.prototype = new Object_0();
10.11763 +_.getClass$ = getClass_3;
10.11764 +_.typeId$ = 7;
10.11765 +function addWindowCloseListener(listener){
10.11766 +  maybeInitializeHandlers();
10.11767 +  if (!closingListeners) {
10.11768 +    closingListeners = $ArrayList(new ArrayList());
10.11769 +  }
10.11770 +  $add(closingListeners, listener);
10.11771 +}
10.11772 +
10.11773 +function fireClosedImpl(){
10.11774 +  var listener$iterator;
10.11775 +  if (closingListeners) {
10.11776 +    for (listener$iterator = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), closingListeners); listener$iterator.i < listener$iterator.this$0.size_0();) {
10.11777 +      dynamicCast($next(listener$iterator), 4);
10.11778 +      $onWindowClosed();
10.11779 +    }
10.11780 +  }
10.11781 +}
10.11782 +
10.11783 +function fireClosingImpl(){
10.11784 +  var listener$iterator, ret;
10.11785 +  ret = null;
10.11786 +  if (closingListeners) {
10.11787 +    for (listener$iterator = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), closingListeners); listener$iterator.i < listener$iterator.this$0.size_0();) {
10.11788 +      dynamicCast($next(listener$iterator), 4);
10.11789 +      ret = null;
10.11790 +    }
10.11791 +  }
10.11792 +  return ret;
10.11793 +}
10.11794 +
10.11795 +function __init__xxx__(){
10.11796 +  __gwt_initHandlers(function(){
10.11797 +  }
10.11798 +  , function(){
10.11799 +    return fireClosingImpl();
10.11800 +  }
10.11801 +  , function(){
10.11802 +    fireClosedImpl();
10.11803 +  }
10.11804 +  );
10.11805 +}
10.11806 +
10.11807 +function maybeInitializeHandlers(){
10.11808 +  if (!handlersAreInitialized) {
10.11809 +    // __init__xxx__();
10.11810 +    handlersAreInitialized = true;
10.11811 +  }
10.11812 +}
10.11813 +
10.11814 +var closingListeners = null, handlersAreInitialized = false;
10.11815 +function $ArrayStoreException(this$static, message){
10.11816 +  this$static.detailMessage = message;
10.11817 +  return this$static;
10.11818 +}
10.11819 +
10.11820 +function getClass_5(){
10.11821 +  return Ljava_lang_ArrayStoreException_2_classLit;
10.11822 +}
10.11823 +
10.11824 +function ArrayStoreException(){
10.11825 +}
10.11826 +
10.11827 +_ = ArrayStoreException.prototype = new RuntimeException();
10.11828 +_.getClass$ = getClass_5;
10.11829 +_.typeId$ = 9;
10.11830 +function createForArray(packageName, className){
10.11831 +  var clazz;
10.11832 +  clazz = new Class();
10.11833 +  clazz.typeName = packageName + className;
10.11834 +  clazz.modifiers = 4;
10.11835 +  return clazz;
10.11836 +}
10.11837 +
10.11838 +function createForClass(packageName, className){
10.11839 +  var clazz;
10.11840 +  clazz = new Class();
10.11841 +  clazz.typeName = packageName + className;
10.11842 +  return clazz;
10.11843 +}
10.11844 +
10.11845 +function createForEnum(packageName, className){
10.11846 +  var clazz;
10.11847 +  clazz = new Class();
10.11848 +  clazz.typeName = packageName + className;
10.11849 +  clazz.modifiers = 8;
10.11850 +  return clazz;
10.11851 +}
10.11852 +
10.11853 +function getClass_7(){
10.11854 +  return Ljava_lang_Class_2_classLit;
10.11855 +}
10.11856 +
10.11857 +function toString_1(){
10.11858 +  return ((this.modifiers & 2) != 0?'interface ':(this.modifiers & 1) != 0?'':'class ') + this.typeName;
10.11859 +}
10.11860 +
10.11861 +function Class(){
10.11862 +}
10.11863 +
10.11864 +_ = Class.prototype = new Object_0();
10.11865 +_.getClass$ = getClass_7;
10.11866 +_.toString$ = toString_1;
10.11867 +_.typeId$ = 0;
10.11868 +_.modifiers = 0;
10.11869 +_.typeName = null;
10.11870 +function getClass_6(){
10.11871 +  return Ljava_lang_ClassCastException_2_classLit;
10.11872 +}
10.11873 +
10.11874 +function ClassCastException(){
10.11875 +}
10.11876 +
10.11877 +_ = ClassCastException.prototype = new RuntimeException();
10.11878 +_.getClass$ = getClass_6;
10.11879 +_.typeId$ = 12;
10.11880 +function compareTo(other){
10.11881 +  return this.ordinal - other.ordinal;
10.11882 +}
10.11883 +
10.11884 +function equals_0(other){
10.11885 +  return (this == null?null:this) === (other == null?null:other);
10.11886 +}
10.11887 +
10.11888 +function getClass_8(){
10.11889 +  return Ljava_lang_Enum_2_classLit;
10.11890 +}
10.11891 +
10.11892 +function hashCode_1(){
10.11893 +  return this.$H || (this.$H = ++sNextHashId);
10.11894 +}
10.11895 +
10.11896 +function toString_2(){
10.11897 +  return this.name_0;
10.11898 +}
10.11899 +
10.11900 +function Enum(){
10.11901 +}
10.11902 +
10.11903 +_ = Enum.prototype = new Object_0();
10.11904 +_.compareTo$ = compareTo;
10.11905 +_.equals$ = equals_0;
10.11906 +_.getClass$ = getClass_8;
10.11907 +_.hashCode$ = hashCode_1;
10.11908 +_.toString$ = toString_2;
10.11909 +_.typeId$ = 13;
10.11910 +_.name_0 = null;
10.11911 +_.ordinal = 0;
10.11912 +function $IllegalArgumentException(this$static, message){
10.11913 +  this$static.detailMessage = message;
10.11914 +  return this$static;
10.11915 +}
10.11916 +
10.11917 +function getClass_10(){
10.11918 +  return Ljava_lang_IllegalArgumentException_2_classLit;
10.11919 +}
10.11920 +
10.11921 +function IllegalArgumentException(){
10.11922 +}
10.11923 +
10.11924 +_ = IllegalArgumentException.prototype = new RuntimeException();
10.11925 +_.getClass$ = getClass_10;
10.11926 +_.typeId$ = 14;
10.11927 +function $IndexOutOfBoundsException(this$static, message){
10.11928 +  this$static.detailMessage = message;
10.11929 +  return this$static;
10.11930 +}
10.11931 +
10.11932 +function getClass_11(){
10.11933 +  return Ljava_lang_IndexOutOfBoundsException_2_classLit;
10.11934 +}
10.11935 +
10.11936 +function IndexOutOfBoundsException(){
10.11937 +}
10.11938 +
10.11939 +_ = IndexOutOfBoundsException.prototype = new RuntimeException();
10.11940 +_.getClass$ = getClass_11;
10.11941 +_.typeId$ = 15;
10.11942 +function toPowerOfTwoString(value, shift){
10.11943 +  var bitMask, buf, bufSize, pos;
10.11944 +  bufSize = ~~(32 / shift);
10.11945 +  bitMask = (1 << shift) - 1;
10.11946 +  buf = initDim(_3C_classLit, 42, -1, bufSize, 1);
10.11947 +  pos = bufSize - 1;
10.11948 +  if (value >= 0) {
10.11949 +    while (value > bitMask) {
10.11950 +      buf[pos--] = ($clinit_31() , digits)[value & bitMask];
10.11951 +      value >>= shift;
10.11952 +    }
10.11953 +  }
10.11954 +   else {
10.11955 +    while (pos > 0) {
10.11956 +      buf[pos--] = ($clinit_31() , digits)[value & bitMask];
10.11957 +      value >>= shift;
10.11958 +    }
10.11959 +  }
10.11960 +  buf[pos] = ($clinit_31() , digits)[value & bitMask];
10.11961 +  return __valueOf(buf, pos, bufSize);
10.11962 +}
10.11963 +
10.11964 +function getClass_12(){
10.11965 +  return Ljava_lang_NullPointerException_2_classLit;
10.11966 +}
10.11967 +
10.11968 +function NullPointerException(){
10.11969 +}
10.11970 +
10.11971 +_ = NullPointerException.prototype = new RuntimeException();
10.11972 +_.getClass$ = getClass_12;
10.11973 +_.typeId$ = 16;
10.11974 +function $clinit_31(){
10.11975 +  $clinit_31 = nullMethod;
10.11976 +  digits = initValues(_3C_classLit, 42, -1, [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122]);
10.11977 +}
10.11978 +
10.11979 +var digits;
10.11980 +function $equals_0(this$static, other){
10.11981 +  if (!(other != null && canCast(other.typeId$, 1))) {
10.11982 +    return false;
10.11983 +  }
10.11984 +  return String(this$static) == other;
10.11985 +}
10.11986 +
10.11987 +function $getChars_0(this$static, srcBegin, srcEnd, dst, dstBegin){
10.11988 +  var srcIdx;
10.11989 +  for (srcIdx = srcBegin; srcIdx < srcEnd; ++srcIdx) {
10.11990 +    dst[dstBegin++] = this$static.charCodeAt(srcIdx);
10.11991 +  }
10.11992 +}
10.11993 +
10.11994 +function $toCharArray(this$static){
10.11995 +  var charArr, n;
10.11996 +  n = this$static.length;
10.11997 +  charArr = initDim(_3C_classLit, 42, -1, n, 1);
10.11998 +  $getChars_0(this$static, 0, n, charArr, 0);
10.11999 +  return charArr;
10.12000 +}
10.12001 +
10.12002 +function __checkBounds(legalCount, start, end){
10.12003 +  if (start < 0) {
10.12004 +    throw $StringIndexOutOfBoundsException(new StringIndexOutOfBoundsException(), start);
10.12005 +  }
10.12006 +  if (end < start) {
10.12007 +    throw $StringIndexOutOfBoundsException(new StringIndexOutOfBoundsException(), end - start);
10.12008 +  }
10.12009 +  if (end > legalCount) {
10.12010 +    throw $StringIndexOutOfBoundsException(new StringIndexOutOfBoundsException(), end);
10.12011 +  }
10.12012 +}
10.12013 +
10.12014 +function __valueOf(x, start, end){
10.12015 +  x = x.slice(start, end);
10.12016 +  return String.fromCharCode.apply(null, x);
10.12017 +}
10.12018 +
10.12019 +function compareTo_1(thisStr, otherStr){
10.12020 +  thisStr = String(thisStr);
10.12021 +  if (thisStr == otherStr) {
10.12022 +    return 0;
10.12023 +  }
10.12024 +  return thisStr < otherStr?-1:1;
10.12025 +}
10.12026 +
10.12027 +function compareTo_0(other){
10.12028 +  return compareTo_1(this, other);
10.12029 +}
10.12030 +
10.12031 +function equals_2(other){
10.12032 +  return $equals_0(this, other);
10.12033 +}
10.12034 +
10.12035 +function getClass_18(){
10.12036 +  return Ljava_lang_String_2_classLit;
10.12037 +}
10.12038 +
10.12039 +function hashCode_3(){
10.12040 +  return getHashCode_0(this);
10.12041 +}
10.12042 +
10.12043 +function toString_6(){
10.12044 +  return this;
10.12045 +}
10.12046 +
10.12047 +function valueOf_1(x, offset, count){
10.12048 +  var end;
10.12049 +  end = offset + count;
10.12050 +  __checkBounds(x.length, offset, end);
10.12051 +  return __valueOf(x, offset, end);
10.12052 +}
10.12053 +
10.12054 +_ = String.prototype;
10.12055 +_.compareTo$ = compareTo_0;
10.12056 +_.equals$ = equals_2;
10.12057 +_.getClass$ = getClass_18;
10.12058 +_.hashCode$ = hashCode_3;
10.12059 +_.toString$ = toString_6;
10.12060 +_.typeId$ = 2;
10.12061 +function $clinit_35(){
10.12062 +  $clinit_35 = nullMethod;
10.12063 +  back = {};
10.12064 +  front = {};
10.12065 +}
10.12066 +
10.12067 +function compute(str){
10.12068 +  var hashCode, i, inc, n;
10.12069 +  n = str.length;
10.12070 +  inc = n < 64?1:~~(n / 32);
10.12071 +  hashCode = 0;
10.12072 +  for (i = 0; i < n; i += inc) {
10.12073 +    hashCode <<= 1;
10.12074 +    hashCode += str.charCodeAt(i);
10.12075 +  }
10.12076 +  hashCode |= 0;
10.12077 +  return hashCode;
10.12078 +}
10.12079 +
10.12080 +function getHashCode_0(str){
10.12081 +  $clinit_35();
10.12082 +  var key = ':' + str;
10.12083 +  var result = front[key];
10.12084 +  if (result != null) {
10.12085 +    return result;
10.12086 +  }
10.12087 +  result = back[key];
10.12088 +  if (result == null) {
10.12089 +    result = compute(str);
10.12090 +  }
10.12091 +  increment();
10.12092 +  return front[key] = result;
10.12093 +}
10.12094 +
10.12095 +function increment(){
10.12096 +  if (count_0 == 256) {
10.12097 +    back = front;
10.12098 +    front = {};
10.12099 +    count_0 = 0;
10.12100 +  }
10.12101 +  ++count_0;
10.12102 +}
10.12103 +
10.12104 +var back, count_0 = 0, front;
10.12105 +function $StringBuffer(this$static){
10.12106 +  this$static.builder = $StringBuilder(new StringBuilder());
10.12107 +  return this$static;
10.12108 +}
10.12109 +
10.12110 +function $append(this$static, toAppend){
10.12111 +  $append_0(this$static.builder, toAppend);
10.12112 +  return this$static;
10.12113 +}
10.12114 +
10.12115 +function getClass_15(){
10.12116 +  return Ljava_lang_StringBuffer_2_classLit;
10.12117 +}
10.12118 +
10.12119 +function toString_4(){
10.12120 +  return $toString_0(this.builder);
10.12121 +}
10.12122 +
10.12123 +function StringBuffer(){
10.12124 +}
10.12125 +
10.12126 +_ = StringBuffer.prototype = new Object_0();
10.12127 +_.getClass$ = getClass_15;
10.12128 +_.toString$ = toString_4;
10.12129 +_.typeId$ = 17;
10.12130 +function $StringBuilder(this$static){
10.12131 +  this$static.stringArray = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 0, 0);
10.12132 +  return this$static;
10.12133 +}
10.12134 +
10.12135 +function $append_0(this$static, toAppend){
10.12136 +  var appendLength;
10.12137 +  if (toAppend == null) {
10.12138 +    toAppend = 'null';
10.12139 +  }
10.12140 +  appendLength = toAppend.length;
10.12141 +  if (appendLength > 0) {
10.12142 +    this$static.stringArray[this$static.arrayLen++] = toAppend;
10.12143 +    this$static.stringLength += appendLength;
10.12144 +    if (this$static.arrayLen > 1024) {
10.12145 +      $toString_0(this$static);
10.12146 +      this$static.stringArray.length = 1024;
10.12147 +    }
10.12148 +  }
10.12149 +  return this$static;
10.12150 +}
10.12151 +
10.12152 +function $getChars(this$static, srcStart, srcEnd, dst, dstStart){
10.12153 +  var s;
10.12154 +  __checkBounds(this$static.stringLength, srcStart, srcEnd);
10.12155 +  __checkBounds(dst.length, dstStart, dstStart + (srcEnd - srcStart));
10.12156 +  s = $toString_0(this$static);
10.12157 +  while (srcStart < srcEnd) {
10.12158 +    dst[dstStart++] = s.charCodeAt(srcStart++);
10.12159 +  }
10.12160 +}
10.12161 +
10.12162 +function $setLength(this$static, newLength){
10.12163 +  var oldLength, s;
10.12164 +  oldLength = this$static.stringLength;
10.12165 +  if (newLength < oldLength) {
10.12166 +    s = $toString_0(this$static);
10.12167 +    this$static.stringArray = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [s.substr(0, newLength - 0), '', s.substr(oldLength, s.length - oldLength)]);
10.12168 +    this$static.arrayLen = 3;
10.12169 +    this$static.stringLength += ''.length - (oldLength - newLength);
10.12170 +  }
10.12171 +   else if (newLength > oldLength) {
10.12172 +    $append_0(this$static, String.fromCharCode.apply(null, initDim(_3C_classLit, 42, -1, newLength - oldLength, 1)));
10.12173 +  }
10.12174 +}
10.12175 +
10.12176 +function $toString_0(this$static){
10.12177 +  var s;
10.12178 +  if (this$static.arrayLen != 1) {
10.12179 +    this$static.stringArray.length = this$static.arrayLen;
10.12180 +    s = this$static.stringArray.join('');
10.12181 +    this$static.stringArray = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [s]);
10.12182 +    this$static.arrayLen = 1;
10.12183 +  }
10.12184 +  return this$static.stringArray[0];
10.12185 +}
10.12186 +
10.12187 +function getClass_16(){
10.12188 +  return Ljava_lang_StringBuilder_2_classLit;
10.12189 +}
10.12190 +
10.12191 +function toString_5(){
10.12192 +  return $toString_0(this);
10.12193 +}
10.12194 +
10.12195 +function StringBuilder(){
10.12196 +}
10.12197 +
10.12198 +_ = StringBuilder.prototype = new Object_0();
10.12199 +_.getClass$ = getClass_16;
10.12200 +_.toString$ = toString_5;
10.12201 +_.typeId$ = 18;
10.12202 +_.arrayLen = 0;
10.12203 +_.stringLength = 0;
10.12204 +function $StringIndexOutOfBoundsException(this$static, index){
10.12205 +  this$static.detailMessage = 'String index out of range: ' + index;
10.12206 +  return this$static;
10.12207 +}
10.12208 +
10.12209 +function getClass_17(){
10.12210 +  return Ljava_lang_StringIndexOutOfBoundsException_2_classLit;
10.12211 +}
10.12212 +
10.12213 +function StringIndexOutOfBoundsException(){
10.12214 +}
10.12215 +
10.12216 +_ = StringIndexOutOfBoundsException.prototype = new IndexOutOfBoundsException();
10.12217 +_.getClass$ = getClass_17;
10.12218 +_.typeId$ = 19;
10.12219 +function arraycopy(src, srcOfs, dest, destOfs, len){
10.12220 +  var destArray, destEnd, destTypeName, destlen, srcArray, srcTypeName, srclen;
10.12221 +  if (src == null || dest == null) {
10.12222 +    throw new NullPointerException();
10.12223 +  }
10.12224 +  srcTypeName = (src.typeMarker$ == nullMethod || src.typeId$ == 2?src.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
10.12225 +  destTypeName = (dest.typeMarker$ == nullMethod || dest.typeId$ == 2?dest.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
10.12226 +  if (srcTypeName.charCodeAt(0) != 91 || destTypeName.charCodeAt(0) != 91) {
10.12227 +    throw $ArrayStoreException(new ArrayStoreException(), 'Must be array types');
10.12228 +  }
10.12229 +  if (srcTypeName.charCodeAt(1) != destTypeName.charCodeAt(1)) {
10.12230 +    throw $ArrayStoreException(new ArrayStoreException(), 'Array types must match');
10.12231 +  }
10.12232 +  srclen = src.length;
10.12233 +  destlen = dest.length;
10.12234 +  if (srcOfs < 0 || destOfs < 0 || len < 0 || srcOfs + len > srclen || destOfs + len > destlen) {
10.12235 +    throw new IndexOutOfBoundsException();
10.12236 +  }
10.12237 +  if ((srcTypeName.charCodeAt(1) == 76 || srcTypeName.charCodeAt(1) == 91) && !$equals_0(srcTypeName, destTypeName)) {
10.12238 +    srcArray = dynamicCast(src, 5);
10.12239 +    destArray = dynamicCast(dest, 5);
10.12240 +    if ((src == null?null:src) === (dest == null?null:dest) && srcOfs < destOfs) {
10.12241 +      srcOfs += len;
10.12242 +      for (destEnd = destOfs + len; destEnd-- > destOfs;) {
10.12243 +        setCheck(destArray, destEnd, srcArray[--srcOfs]);
10.12244 +      }
10.12245 +    }
10.12246 +     else {
10.12247 +      for (destEnd = destOfs + len; destOfs < destEnd;) {
10.12248 +        setCheck(destArray, destOfs++, srcArray[srcOfs++]);
10.12249 +      }
10.12250 +    }
10.12251 +  }
10.12252 +   else {
10.12253 +    Array.prototype.splice.apply(dest, [destOfs, len].concat(src.slice(srcOfs, srcOfs + len)));
10.12254 +  }
10.12255 +}
10.12256 +
10.12257 +function $UnsupportedOperationException(this$static, message){
10.12258 +  this$static.detailMessage = message;
10.12259 +  return this$static;
10.12260 +}
10.12261 +
10.12262 +function getClass_20(){
10.12263 +  return Ljava_lang_UnsupportedOperationException_2_classLit;
10.12264 +}
10.12265 +
10.12266 +function UnsupportedOperationException(){
10.12267 +}
10.12268 +
10.12269 +_ = UnsupportedOperationException.prototype = new RuntimeException();
10.12270 +_.getClass$ = getClass_20;
10.12271 +_.typeId$ = 20;
10.12272 +function $advanceToFind(iter, o){
10.12273 +  var t;
10.12274 +  while (iter.hasNext()) {
10.12275 +    t = iter.next_0();
10.12276 +    if (o == null?t == null:equals__devirtual$(o, t)) {
10.12277 +      return iter;
10.12278 +    }
10.12279 +  }
10.12280 +  return null;
10.12281 +}
10.12282 +
10.12283 +function add(o){
10.12284 +  throw $UnsupportedOperationException(new UnsupportedOperationException(), 'Add not supported on this collection');
10.12285 +}
10.12286 +
10.12287 +function contains(o){
10.12288 +  var iter;
10.12289 +  iter = $advanceToFind(this.iterator(), o);
10.12290 +  return !!iter;
10.12291 +}
10.12292 +
10.12293 +function getClass_21(){
10.12294 +  return Ljava_util_AbstractCollection_2_classLit;
10.12295 +}
10.12296 +
10.12297 +function toString_8(){
10.12298 +  var comma, iter, sb;
10.12299 +  sb = $StringBuffer(new StringBuffer());
10.12300 +  comma = null;
10.12301 +  $append_0(sb.builder, '[');
10.12302 +  iter = this.iterator();
10.12303 +  while (iter.hasNext()) {
10.12304 +    if (comma != null) {
10.12305 +      $append_0(sb.builder, comma);
10.12306 +    }
10.12307 +     else {
10.12308 +      comma = ', ';
10.12309 +    }
10.12310 +    $append(sb, '' + iter.next_0());
10.12311 +  }
10.12312 +  $append_0(sb.builder, ']');
10.12313 +  return $toString_0(sb.builder);
10.12314 +}
10.12315 +
10.12316 +function AbstractCollection(){
10.12317 +}
10.12318 +
10.12319 +_ = AbstractCollection.prototype = new Object_0();
10.12320 +_.add_1 = add;
10.12321 +_.contains = contains;
10.12322 +_.getClass$ = getClass_21;
10.12323 +_.toString$ = toString_8;
10.12324 +_.typeId$ = 0;
10.12325 +function equals_5(obj){
10.12326 +  var entry, entry$iterator, otherKey, otherMap, otherValue;
10.12327 +  if ((obj == null?null:obj) === (this == null?null:this)) {
10.12328 +    return true;
10.12329 +  }
10.12330 +  if (!(obj != null && canCast(obj.typeId$, 16))) {
10.12331 +    return false;
10.12332 +  }
10.12333 +  otherMap = dynamicCast(obj, 16);
10.12334 +  if (dynamicCast(this, 16).size != otherMap.size) {
10.12335 +    return false;
10.12336 +  }
10.12337 +  for (entry$iterator = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), $AbstractHashMap$EntrySet(new AbstractHashMap$EntrySet(), otherMap).this$0); $hasNext(entry$iterator.iter);) {
10.12338 +    entry = dynamicCast($next(entry$iterator.iter), 14);
10.12339 +    otherKey = entry.getKey();
10.12340 +    otherValue = entry.getValue();
10.12341 +    if (!(otherKey == null?dynamicCast(this, 16).nullSlotLive:otherKey != null?$hasStringValue(dynamicCast(this, 16), otherKey):$hasHashValue(dynamicCast(this, 16), otherKey, ~~getHashCode_0(otherKey)))) {
10.12342 +      return false;
10.12343 +    }
10.12344 +    if (!equalsWithNullCheck(otherValue, otherKey == null?dynamicCast(this, 16).nullSlot:otherKey != null?dynamicCast(this, 16).stringMap[':' + otherKey]:$getHashValue(dynamicCast(this, 16), otherKey, ~~getHashCode_0(otherKey)))) {
10.12345 +      return false;
10.12346 +    }
10.12347 +  }
10.12348 +  return true;
10.12349 +}
10.12350 +
10.12351 +function getClass_31(){
10.12352 +  return Ljava_util_AbstractMap_2_classLit;
10.12353 +}
10.12354 +
10.12355 +function hashCode_6(){
10.12356 +  var entry, entry$iterator, hashCode;
10.12357 +  hashCode = 0;
10.12358 +  for (entry$iterator = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), $AbstractHashMap$EntrySet(new AbstractHashMap$EntrySet(), dynamicCast(this, 16)).this$0); $hasNext(entry$iterator.iter);) {
10.12359 +    entry = dynamicCast($next(entry$iterator.iter), 14);
10.12360 +    hashCode += entry.hashCode$();
10.12361 +    hashCode = ~~hashCode;
10.12362 +  }
10.12363 +  return hashCode;
10.12364 +}
10.12365 +
10.12366 +function toString_10(){
10.12367 +  var comma, entry, iter, s;
10.12368 +  s = '{';
10.12369 +  comma = false;
10.12370 +  for (iter = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), $AbstractHashMap$EntrySet(new AbstractHashMap$EntrySet(), dynamicCast(this, 16)).this$0); $hasNext(iter.iter);) {
10.12371 +    entry = dynamicCast($next(iter.iter), 14);
10.12372 +    if (comma) {
10.12373 +      s += ', ';
10.12374 +    }
10.12375 +     else {
10.12376 +      comma = true;
10.12377 +    }
10.12378 +    s += '' + entry.getKey();
10.12379 +    s += '=';
10.12380 +    s += '' + entry.getValue();
10.12381 +  }
10.12382 +  return s + '}';
10.12383 +}
10.12384 +
10.12385 +function AbstractMap(){
10.12386 +}
10.12387 +
10.12388 +_ = AbstractMap.prototype = new Object_0();
10.12389 +_.equals$ = equals_5;
10.12390 +_.getClass$ = getClass_31;
10.12391 +_.hashCode$ = hashCode_6;
10.12392 +_.toString$ = toString_10;
10.12393 +_.typeId$ = 0;
10.12394 +function $addAllHashEntries(this$static, dest){
10.12395 +  var hashCodeMap = this$static.hashCodeMap;
10.12396 +  for (var hashCode in hashCodeMap) {
10.12397 +    if (hashCode == parseInt(hashCode)) {
10.12398 +      var array = hashCodeMap[hashCode];
10.12399 +      for (var i = 0, c = array.length; i < c; ++i) {
10.12400 +        dest.add_1(array[i]);
10.12401 +      }
10.12402 +    }
10.12403 +  }
10.12404 +}
10.12405 +
10.12406 +function $addAllStringEntries(this$static, dest){
10.12407 +  var stringMap = this$static.stringMap;
10.12408 +  for (var key in stringMap) {
10.12409 +    if (key.charCodeAt(0) == 58) {
10.12410 +      var entry = new_$(this$static, key.substring(1));
10.12411 +      dest.add_1(entry);
10.12412 +    }
10.12413 +  }
10.12414 +}
10.12415 +
10.12416 +function $clearImpl(this$static){
10.12417 +  this$static.hashCodeMap = [];
10.12418 +  this$static.stringMap = {};
10.12419 +  this$static.nullSlotLive = false;
10.12420 +  this$static.nullSlot = null;
10.12421 +  this$static.size = 0;
10.12422 +}
10.12423 +
10.12424 +function $containsKey(this$static, key){
10.12425 +  return key == null?this$static.nullSlotLive:key != null?':' + key in this$static.stringMap:$hasHashValue(this$static, key, ~~getHashCode_0(key));
10.12426 +}
10.12427 +
10.12428 +function $get(this$static, key){
10.12429 +  return key == null?this$static.nullSlot:key != null?this$static.stringMap[':' + key]:$getHashValue(this$static, key, ~~getHashCode_0(key));
10.12430 +}
10.12431 +
10.12432 +function $getHashValue(this$static, key, hashCode){
10.12433 +  var array = this$static.hashCodeMap[hashCode];
10.12434 +  if (array) {
10.12435 +    for (var i = 0, c = array.length; i < c; ++i) {
10.12436 +      var entry = array[i];
10.12437 +      var entryKey = entry.getKey();
10.12438 +      if (this$static.equalsBridge(key, entryKey)) {
10.12439 +        return entry.getValue();
10.12440 +      }
10.12441 +    }
10.12442 +  }
10.12443 +  return null;
10.12444 +}
10.12445 +
10.12446 +function $hasHashValue(this$static, key, hashCode){
10.12447 +  var array = this$static.hashCodeMap[hashCode];
10.12448 +  if (array) {
10.12449 +    for (var i = 0, c = array.length; i < c; ++i) {
10.12450 +      var entry = array[i];
10.12451 +      var entryKey = entry.getKey();
10.12452 +      if (this$static.equalsBridge(key, entryKey)) {
10.12453 +        return true;
10.12454 +      }
10.12455 +    }
10.12456 +  }
10.12457 +  return false;
10.12458 +}
10.12459 +
10.12460 +function $hasStringValue(this$static, key){
10.12461 +  return ':' + key in this$static.stringMap;
10.12462 +}
10.12463 +
10.12464 +function equalsBridge(value1, value2){
10.12465 +  return (value1 == null?null:value1) === (value2 == null?null:value2) || value1 != null && equals__devirtual$(value1, value2);
10.12466 +}
10.12467 +
10.12468 +function getClass_26(){
10.12469 +  return Ljava_util_AbstractHashMap_2_classLit;
10.12470 +}
10.12471 +
10.12472 +function AbstractHashMap(){
10.12473 +}
10.12474 +
10.12475 +_ = AbstractHashMap.prototype = new AbstractMap();
10.12476 +_.equalsBridge = equalsBridge;
10.12477 +_.getClass$ = getClass_26;
10.12478 +_.typeId$ = 0;
10.12479 +_.hashCodeMap = null;
10.12480 +_.nullSlot = null;
10.12481 +_.nullSlotLive = false;
10.12482 +_.size = 0;
10.12483 +_.stringMap = null;
10.12484 +function equals_6(o){
10.12485 +  var iter, other, otherItem;
10.12486 +  if ((o == null?null:o) === (this == null?null:this)) {
10.12487 +    return true;
10.12488 +  }
10.12489 +  if (!(o != null && canCast(o.typeId$, 18))) {
10.12490 +    return false;
10.12491 +  }
10.12492 +  other = dynamicCast(o, 18);
10.12493 +  if (other.this$0.size != this.size_0()) {
10.12494 +    return false;
10.12495 +  }
10.12496 +  for (iter = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), other.this$0); $hasNext(iter.iter);) {
10.12497 +    otherItem = dynamicCast($next(iter.iter), 14);
10.12498 +    if (!this.contains(otherItem)) {
10.12499 +      return false;
10.12500 +    }
10.12501 +  }
10.12502 +  return true;
10.12503 +}
10.12504 +
10.12505 +function getClass_33(){
10.12506 +  return Ljava_util_AbstractSet_2_classLit;
10.12507 +}
10.12508 +
10.12509 +function hashCode_7(){
10.12510 +  var hashCode, iter, next;
10.12511 +  hashCode = 0;
10.12512 +  for (iter = this.iterator(); iter.hasNext();) {
10.12513 +    next = iter.next_0();
10.12514 +    if (next != null) {
10.12515 +      hashCode += hashCode__devirtual$(next);
10.12516 +      hashCode = ~~hashCode;
10.12517 +    }
10.12518 +  }
10.12519 +  return hashCode;
10.12520 +}
10.12521 +
10.12522 +function AbstractSet(){
10.12523 +}
10.12524 +
10.12525 +_ = AbstractSet.prototype = new AbstractCollection();
10.12526 +_.equals$ = equals_6;
10.12527 +_.getClass$ = getClass_33;
10.12528 +_.hashCode$ = hashCode_7;
10.12529 +_.typeId$ = 0;
10.12530 +function $AbstractHashMap$EntrySet(this$static, this$0){
10.12531 +  this$static.this$0 = this$0;
10.12532 +  return this$static;
10.12533 +}
10.12534 +
10.12535 +function contains_0(o){
10.12536 +  var entry, key, value;
10.12537 +  if (o != null && canCast(o.typeId$, 14)) {
10.12538 +    entry = dynamicCast(o, 14);
10.12539 +    key = entry.getKey();
10.12540 +    if ($containsKey(this.this$0, key)) {
10.12541 +      value = $get(this.this$0, key);
10.12542 +      return $equals_1(entry.getValue(), value);
10.12543 +    }
10.12544 +  }
10.12545 +  return false;
10.12546 +}
10.12547 +
10.12548 +function getClass_23(){
10.12549 +  return Ljava_util_AbstractHashMap$EntrySet_2_classLit;
10.12550 +}
10.12551 +
10.12552 +function iterator(){
10.12553 +  return $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), this.this$0);
10.12554 +}
10.12555 +
10.12556 +function size_0(){
10.12557 +  return this.this$0.size;
10.12558 +}
10.12559 +
10.12560 +function AbstractHashMap$EntrySet(){
10.12561 +}
10.12562 +
10.12563 +_ = AbstractHashMap$EntrySet.prototype = new AbstractSet();
10.12564 +_.contains = contains_0;
10.12565 +_.getClass$ = getClass_23;
10.12566 +_.iterator = iterator;
10.12567 +_.size_0 = size_0;
10.12568 +_.typeId$ = 21;
10.12569 +_.this$0 = null;
10.12570 +function $AbstractHashMap$EntrySetIterator(this$static, this$0){
10.12571 +  var list;
10.12572 +  this$static.this$0 = this$0;
10.12573 +  list = $ArrayList(new ArrayList());
10.12574 +  if (this$static.this$0.nullSlotLive) {
10.12575 +    $add(list, $AbstractHashMap$MapEntryNull(new AbstractHashMap$MapEntryNull(), this$static.this$0));
10.12576 +  }
10.12577 +  $addAllStringEntries(this$static.this$0, list);
10.12578 +  $addAllHashEntries(this$static.this$0, list);
10.12579 +  this$static.iter = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), list);
10.12580 +  return this$static;
10.12581 +}
10.12582 +
10.12583 +function getClass_22(){
10.12584 +  return Ljava_util_AbstractHashMap$EntrySetIterator_2_classLit;
10.12585 +}
10.12586 +
10.12587 +function hasNext(){
10.12588 +  return $hasNext(this.iter);
10.12589 +}
10.12590 +
10.12591 +function next_0(){
10.12592 +  return dynamicCast($next(this.iter), 14);
10.12593 +}
10.12594 +
10.12595 +function AbstractHashMap$EntrySetIterator(){
10.12596 +}
10.12597 +
10.12598 +_ = AbstractHashMap$EntrySetIterator.prototype = new Object_0();
10.12599 +_.getClass$ = getClass_22;
10.12600 +_.hasNext = hasNext;
10.12601 +_.next_0 = next_0;
10.12602 +_.typeId$ = 0;
10.12603 +_.iter = null;
10.12604 +_.this$0 = null;
10.12605 +function equals_4(other){
10.12606 +  var entry;
10.12607 +  if (other != null && canCast(other.typeId$, 14)) {
10.12608 +    entry = dynamicCast(other, 14);
10.12609 +    if (equalsWithNullCheck(this.getKey(), entry.getKey()) && equalsWithNullCheck(this.getValue(), entry.getValue())) {
10.12610 +      return true;
10.12611 +    }
10.12612 +  }
10.12613 +  return false;
10.12614 +}
10.12615 +
10.12616 +function getClass_30(){
10.12617 +  return Ljava_util_AbstractMapEntry_2_classLit;
10.12618 +}
10.12619 +
10.12620 +function hashCode_5(){
10.12621 +  var keyHash, valueHash;
10.12622 +  keyHash = 0;
10.12623 +  valueHash = 0;
10.12624 +  if (this.getKey() != null) {
10.12625 +    keyHash = getHashCode_0(this.getKey());
10.12626 +  }
10.12627 +  if (this.getValue() != null) {
10.12628 +    valueHash = hashCode__devirtual$(this.getValue());
10.12629 +  }
10.12630 +  return keyHash ^ valueHash;
10.12631 +}
10.12632 +
10.12633 +function toString_9(){
10.12634 +  return this.getKey() + '=' + this.getValue();
10.12635 +}
10.12636 +
10.12637 +function AbstractMapEntry(){
10.12638 +}
10.12639 +
10.12640 +_ = AbstractMapEntry.prototype = new Object_0();
10.12641 +_.equals$ = equals_4;
10.12642 +_.getClass$ = getClass_30;
10.12643 +_.hashCode$ = hashCode_5;
10.12644 +_.toString$ = toString_9;
10.12645 +_.typeId$ = 22;
10.12646 +function $AbstractHashMap$MapEntryNull(this$static, this$0){
10.12647 +  this$static.this$0 = this$0;
10.12648 +  return this$static;
10.12649 +}
10.12650 +
10.12651 +function getClass_24(){
10.12652 +  return Ljava_util_AbstractHashMap$MapEntryNull_2_classLit;
10.12653 +}
10.12654 +
10.12655 +function getKey(){
10.12656 +  return null;
10.12657 +}
10.12658 +
10.12659 +function getValue(){
10.12660 +  return this.this$0.nullSlot;
10.12661 +}
10.12662 +
10.12663 +function AbstractHashMap$MapEntryNull(){
10.12664 +}
10.12665 +
10.12666 +_ = AbstractHashMap$MapEntryNull.prototype = new AbstractMapEntry();
10.12667 +_.getClass$ = getClass_24;
10.12668 +_.getKey = getKey;
10.12669 +_.getValue = getValue;
10.12670 +_.typeId$ = 23;
10.12671 +_.this$0 = null;
10.12672 +function $AbstractHashMap$MapEntryString(this$static, key, this$0){
10.12673 +  this$static.this$0 = this$0;
10.12674 +  this$static.key = key;
10.12675 +  return this$static;
10.12676 +}
10.12677 +
10.12678 +function getClass_25(){
10.12679 +  return Ljava_util_AbstractHashMap$MapEntryString_2_classLit;
10.12680 +}
10.12681 +
10.12682 +function getKey_0(){
10.12683 +  return this.key;
10.12684 +}
10.12685 +
10.12686 +function getValue_0(){
10.12687 +  return this.this$0.stringMap[':' + this.key];
10.12688 +}
10.12689 +
10.12690 +function new_$(this$outer, key){
10.12691 +  return $AbstractHashMap$MapEntryString(new AbstractHashMap$MapEntryString(), key, this$outer);
10.12692 +}
10.12693 +
10.12694 +function AbstractHashMap$MapEntryString(){
10.12695 +}
10.12696 +
10.12697 +_ = AbstractHashMap$MapEntryString.prototype = new AbstractMapEntry();
10.12698 +_.getClass$ = getClass_25;
10.12699 +_.getKey = getKey_0;
10.12700 +_.getValue = getValue_0;
10.12701 +_.typeId$ = 24;
10.12702 +_.key = null;
10.12703 +_.this$0 = null;
10.12704 +function add_1(obj){
10.12705 +  this.add_0(this.size_0(), obj);
10.12706 +  return true;
10.12707 +}
10.12708 +
10.12709 +function add_0(index, element){
10.12710 +  throw $UnsupportedOperationException(new UnsupportedOperationException(), 'Add not supported on this list');
10.12711 +}
10.12712 +
10.12713 +function checkIndex(index, size){
10.12714 +  if (index < 0 || index >= size) {
10.12715 +    indexOutOfBounds(index, size);
10.12716 +  }
10.12717 +}
10.12718 +
10.12719 +function equals_3(o){
10.12720 +  var elem, elemOther, iter, iterOther, other;
10.12721 +  if ((o == null?null:o) === (this == null?null:this)) {
10.12722 +    return true;
10.12723 +  }
10.12724 +  if (!(o != null && canCast(o.typeId$, 15))) {
10.12725 +    return false;
10.12726 +  }
10.12727 +  other = dynamicCast(o, 15);
10.12728 +  if (this.size_0() != other.size_0()) {
10.12729 +    return false;
10.12730 +  }
10.12731 +  iter = this.iterator();
10.12732 +  iterOther = other.iterator();
10.12733 +  while (iter.i < iter.this$0.size_0()) {
10.12734 +    elem = $next(iter);
10.12735 +    elemOther = $next(iterOther);
10.12736 +    if (!(elem == null?elemOther == null:equals__devirtual$(elem, elemOther))) {
10.12737 +      return false;
10.12738 +    }
10.12739 +  }
10.12740 +  return true;
10.12741 +}
10.12742 +
10.12743 +function getClass_29(){
10.12744 +  return Ljava_util_AbstractList_2_classLit;
10.12745 +}
10.12746 +
10.12747 +function hashCode_4(){
10.12748 +  var iter, k, obj;
10.12749 +  k = 1;
10.12750 +  iter = this.iterator();
10.12751 +  while (iter.i < iter.this$0.size_0()) {
10.12752 +    obj = $next(iter);
10.12753 +    k = 31 * k + (obj == null?0:hashCode__devirtual$(obj));
10.12754 +    k = ~~k;
10.12755 +  }
10.12756 +  return k;
10.12757 +}
10.12758 +
10.12759 +function indexOutOfBounds(index, size){
10.12760 +  throw $IndexOutOfBoundsException(new IndexOutOfBoundsException(), 'Index: ' + index + ', Size: ' + size);
10.12761 +}
10.12762 +
10.12763 +function iterator_0(){
10.12764 +  return $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), this);
10.12765 +}
10.12766 +
10.12767 +function AbstractList(){
10.12768 +}
10.12769 +
10.12770 +_ = AbstractList.prototype = new AbstractCollection();
10.12771 +_.add_1 = add_1;
10.12772 +_.add_0 = add_0;
10.12773 +_.equals$ = equals_3;
10.12774 +_.getClass$ = getClass_29;
10.12775 +_.hashCode$ = hashCode_4;
10.12776 +_.iterator = iterator_0;
10.12777 +_.typeId$ = 25;
10.12778 +function $AbstractList$IteratorImpl(this$static, this$0){
10.12779 +  this$static.this$0 = this$0;
10.12780 +  return this$static;
10.12781 +}
10.12782 +
10.12783 +function $hasNext(this$static){
10.12784 +  return this$static.i < this$static.this$0.size_0();
10.12785 +}
10.12786 +
10.12787 +function $next(this$static){
10.12788 +  if (this$static.i >= this$static.this$0.size_0()) {
10.12789 +    throw new NoSuchElementException();
10.12790 +  }
10.12791 +  return this$static.this$0.get(this$static.i++);
10.12792 +}
10.12793 +
10.12794 +function getClass_27(){
10.12795 +  return Ljava_util_AbstractList$IteratorImpl_2_classLit;
10.12796 +}
10.12797 +
10.12798 +function hasNext_0(){
10.12799 +  return this.i < this.this$0.size_0();
10.12800 +}
10.12801 +
10.12802 +function next_1(){
10.12803 +  return $next(this);
10.12804 +}
10.12805 +
10.12806 +function AbstractList$IteratorImpl(){
10.12807 +}
10.12808 +
10.12809 +_ = AbstractList$IteratorImpl.prototype = new Object_0();
10.12810 +_.getClass$ = getClass_27;
10.12811 +_.hasNext = hasNext_0;
10.12812 +_.next_0 = next_1;
10.12813 +_.typeId$ = 0;
10.12814 +_.i = 0;
10.12815 +_.this$0 = null;
10.12816 +function $AbstractList$ListIteratorImpl(this$static, this$0){
10.12817 +  this$static.this$0 = this$0;
10.12818 +  return this$static;
10.12819 +}
10.12820 +
10.12821 +function getClass_28(){
10.12822 +  return Ljava_util_AbstractList$ListIteratorImpl_2_classLit;
10.12823 +}
10.12824 +
10.12825 +function AbstractList$ListIteratorImpl(){
10.12826 +}
10.12827 +
10.12828 +_ = AbstractList$ListIteratorImpl.prototype = new AbstractList$IteratorImpl();
10.12829 +_.getClass$ = getClass_28;
10.12830 +_.typeId$ = 0;
10.12831 +function add_2(index, element){
10.12832 +  var iter;
10.12833 +  iter = $listIterator(this, index);
10.12834 +  $addBefore(iter.this$0, element, iter.currentNode);
10.12835 +  ++iter.currentIndex;
10.12836 +  iter.lastNode = null;
10.12837 +}
10.12838 +
10.12839 +function get(index){
10.12840 +  var $e0, iter;
10.12841 +  iter = $listIterator(this, index);
10.12842 +  try {
10.12843 +    return $next_0(iter);
10.12844 +  }
10.12845 +   catch ($e0) {
10.12846 +    $e0 = caught($e0);
10.12847 +    if (instanceOf($e0, 17)) {
10.12848 +      throw $IndexOutOfBoundsException(new IndexOutOfBoundsException(), "Can't get element " + index);
10.12849 +    }
10.12850 +     else 
10.12851 +      throw $e0;
10.12852 +  }
10.12853 +}
10.12854 +
10.12855 +function getClass_32(){
10.12856 +  return Ljava_util_AbstractSequentialList_2_classLit;
10.12857 +}
10.12858 +
10.12859 +function iterator_1(){
10.12860 +  return $AbstractList$ListIteratorImpl(new AbstractList$ListIteratorImpl(), this);
10.12861 +}
10.12862 +
10.12863 +function AbstractSequentialList(){
10.12864 +}
10.12865 +
10.12866 +_ = AbstractSequentialList.prototype = new AbstractList();
10.12867 +_.add_0 = add_2;
10.12868 +_.get = get;
10.12869 +_.getClass$ = getClass_32;
10.12870 +_.iterator = iterator_1;
10.12871 +_.typeId$ = 26;
10.12872 +function $ArrayList(this$static){
10.12873 +  this$static.array = initDim(_3Ljava_lang_Object_2_classLit, 47, 0, 0, 0);
10.12874 +  this$static.size = 0;
10.12875 +  return this$static;
10.12876 +}
10.12877 +
10.12878 +function $add(this$static, o){
10.12879 +  setCheck(this$static.array, this$static.size++, o);
10.12880 +  return true;
10.12881 +}
10.12882 +
10.12883 +function $get_0(this$static, index){
10.12884 +  checkIndex(index, this$static.size);
10.12885 +  return this$static.array[index];
10.12886 +}
10.12887 +
10.12888 +function $indexOf_0(this$static, o, index){
10.12889 +  for (; index < this$static.size; ++index) {
10.12890 +    if (equalsWithNullCheck(o, this$static.array[index])) {
10.12891 +      return index;
10.12892 +    }
10.12893 +  }
10.12894 +  return -1;
10.12895 +}
10.12896 +
10.12897 +function $remove_0(this$static, o){
10.12898 +  var i, previous;
10.12899 +  i = $indexOf_0(this$static, o, 0);
10.12900 +  if (i == -1) {
10.12901 +    return false;
10.12902 +  }
10.12903 +  previous = (checkIndex(i, this$static.size) , this$static.array[i]);
10.12904 +  this$static.array.splice(i, 1);
10.12905 +  --this$static.size;
10.12906 +  return true;
10.12907 +}
10.12908 +
10.12909 +function add_4(o){
10.12910 +  return setCheck(this.array, this.size++, o) , true;
10.12911 +}
10.12912 +
10.12913 +function add_3(index, o){
10.12914 +  if (index < 0 || index > this.size) {
10.12915 +    indexOutOfBounds(index, this.size);
10.12916 +  }
10.12917 +  this.array.splice(index, 0, o);
10.12918 +  ++this.size;
10.12919 +}
10.12920 +
10.12921 +function contains_1(o){
10.12922 +  return $indexOf_0(this, o, 0) != -1;
10.12923 +}
10.12924 +
10.12925 +function get_0(index){
10.12926 +  return checkIndex(index, this.size) , this.array[index];
10.12927 +}
10.12928 +
10.12929 +function getClass_34(){
10.12930 +  return Ljava_util_ArrayList_2_classLit;
10.12931 +}
10.12932 +
10.12933 +function size_1(){
10.12934 +  return this.size;
10.12935 +}
10.12936 +
10.12937 +function ArrayList(){
10.12938 +}
10.12939 +
10.12940 +_ = ArrayList.prototype = new AbstractList();
10.12941 +_.add_1 = add_4;
10.12942 +_.add_0 = add_3;
10.12943 +_.contains = contains_1;
10.12944 +_.get = get_0;
10.12945 +_.getClass$ = getClass_34;
10.12946 +_.size_0 = size_1;
10.12947 +_.typeId$ = 27;
10.12948 +_.array = null;
10.12949 +_.size = 0;
10.12950 +function binarySearch(sortedArray, key){
10.12951 +  var high, low, mid, midVal;
10.12952 +  low = 0;
10.12953 +  high = sortedArray.length - 1;
10.12954 +  while (low <= high) {
10.12955 +    mid = low + (high - low >> 1);
10.12956 +    midVal = sortedArray[mid];
10.12957 +    if (midVal < key) {
10.12958 +      low = mid + 1;
10.12959 +    }
10.12960 +     else if (midVal > key) {
10.12961 +      high = mid - 1;
10.12962 +    }
10.12963 +     else {
10.12964 +      return mid;
10.12965 +    }
10.12966 +  }
10.12967 +  return -low - 1;
10.12968 +}
10.12969 +
10.12970 +function binarySearch_0(sortedArray, key, comparator){
10.12971 +  var compareResult, high, low, mid, midVal;
10.12972 +  if (!comparator) {
10.12973 +    comparator = ($clinit_61() , NATURAL);
10.12974 +  }
10.12975 +  low = 0;
10.12976 +  high = sortedArray.length - 1;
10.12977 +  while (low <= high) {
10.12978 +    mid = low + (high - low >> 1);
10.12979 +    midVal = sortedArray[mid];
10.12980 +    compareResult = midVal.compareTo$(key);
10.12981 +    if (compareResult < 0) {
10.12982 +      low = mid + 1;
10.12983 +    }
10.12984 +     else if (compareResult > 0) {
10.12985 +      high = mid - 1;
10.12986 +    }
10.12987 +     else {
10.12988 +      return mid;
10.12989 +    }
10.12990 +  }
10.12991 +  return -low - 1;
10.12992 +}
10.12993 +
10.12994 +function $clinit_61(){
10.12995 +  $clinit_61 = nullMethod;
10.12996 +  NATURAL = new Comparators$1();
10.12997 +}
10.12998 +
10.12999 +var NATURAL;
10.13000 +function getClass_35(){
10.13001 +  return Ljava_util_Comparators$1_2_classLit;
10.13002 +}
10.13003 +
10.13004 +function Comparators$1(){
10.13005 +}
10.13006 +
10.13007 +_ = Comparators$1.prototype = new Object_0();
10.13008 +_.getClass$ = getClass_35;
10.13009 +_.typeId$ = 0;
10.13010 +function $HashMap(this$static){
10.13011 +  $clearImpl(this$static);
10.13012 +  return this$static;
10.13013 +}
10.13014 +
10.13015 +function $equals_1(value1, value2){
10.13016 +  return (value1 == null?null:value1) === (value2 == null?null:value2) || value1 != null && equals__devirtual$(value1, value2);
10.13017 +}
10.13018 +
10.13019 +function getClass_36(){
10.13020 +  return Ljava_util_HashMap_2_classLit;
10.13021 +}
10.13022 +
10.13023 +function HashMap(){
10.13024 +}
10.13025 +
10.13026 +_ = HashMap.prototype = new AbstractHashMap();
10.13027 +_.getClass$ = getClass_36;
10.13028 +_.typeId$ = 28;
10.13029 +function $LinkedList(this$static){
10.13030 +  this$static.header = $LinkedList$Node(new LinkedList$Node());
10.13031 +  this$static.size = 0;
10.13032 +  return this$static;
10.13033 +}
10.13034 +
10.13035 +function $addBefore(this$static, o, target){
10.13036 +  $LinkedList$Node_0(new LinkedList$Node(), o, target);
10.13037 +  ++this$static.size;
10.13038 +}
10.13039 +
10.13040 +function $addLast(this$static, o){
10.13041 +  $LinkedList$Node_0(new LinkedList$Node(), o, this$static.header);
10.13042 +  ++this$static.size;
10.13043 +}
10.13044 +
10.13045 +function $clear(this$static){
10.13046 +  this$static.header = $LinkedList$Node(new LinkedList$Node());
10.13047 +  this$static.size = 0;
10.13048 +}
10.13049 +
10.13050 +function $getLast(this$static){
10.13051 +  $throwEmptyException(this$static);
10.13052 +  return this$static.header.prev.value;
10.13053 +}
10.13054 +
10.13055 +function $listIterator(this$static, index){
10.13056 +  var i, node;
10.13057 +  if (index < 0 || index > this$static.size) {
10.13058 +    indexOutOfBounds(index, this$static.size);
10.13059 +  }
10.13060 +  if (index >= this$static.size >> 1) {
10.13061 +    node = this$static.header;
10.13062 +    for (i = this$static.size; i > index; --i) {
10.13063 +      node = node.prev;
10.13064 +    }
10.13065 +  }
10.13066 +   else {
10.13067 +    node = this$static.header.next;
10.13068 +    for (i = 0; i < index; ++i) {
10.13069 +      node = node.next;
10.13070 +    }
10.13071 +  }
10.13072 +  return $LinkedList$ListIteratorImpl(new LinkedList$ListIteratorImpl(), index, node, this$static);
10.13073 +}
10.13074 +
10.13075 +function $removeLast(this$static){
10.13076 +  var node;
10.13077 +  $throwEmptyException(this$static);
10.13078 +  --this$static.size;
10.13079 +  node = this$static.header.prev;
10.13080 +  node.next.prev = node.prev;
10.13081 +  node.prev.next = node.next;
10.13082 +  node.next = node.prev = node;
10.13083 +  return node.value;
10.13084 +}
10.13085 +
10.13086 +function $throwEmptyException(this$static){
10.13087 +  if (this$static.size == 0) {
10.13088 +    throw new NoSuchElementException();
10.13089 +  }
10.13090 +}
10.13091 +
10.13092 +function add_5(o){
10.13093 +  $LinkedList$Node_0(new LinkedList$Node(), o, this.header);
10.13094 +  ++this.size;
10.13095 +  return true;
10.13096 +}
10.13097 +
10.13098 +function getClass_39(){
10.13099 +  return Ljava_util_LinkedList_2_classLit;
10.13100 +}
10.13101 +
10.13102 +function size_2(){
10.13103 +  return this.size;
10.13104 +}
10.13105 +
10.13106 +function LinkedList(){
10.13107 +}
10.13108 +
10.13109 +_ = LinkedList.prototype = new AbstractSequentialList();
10.13110 +_.add_1 = add_5;
10.13111 +_.getClass$ = getClass_39;
10.13112 +_.size_0 = size_2;
10.13113 +_.typeId$ = 29;
10.13114 +_.header = null;
10.13115 +_.size = 0;
10.13116 +function $LinkedList$ListIteratorImpl(this$static, index, startNode, this$0){
10.13117 +  this$static.this$0 = this$0;
10.13118 +  this$static.currentNode = startNode;
10.13119 +  this$static.currentIndex = index;
10.13120 +  return this$static;
10.13121 +}
10.13122 +
10.13123 +function $next_0(this$static){
10.13124 +  if (this$static.currentNode == this$static.this$0.header) {
10.13125 +    throw new NoSuchElementException();
10.13126 +  }
10.13127 +  this$static.lastNode = this$static.currentNode;
10.13128 +  this$static.currentNode = this$static.currentNode.next;
10.13129 +  ++this$static.currentIndex;
10.13130 +  return this$static.lastNode.value;
10.13131 +}
10.13132 +
10.13133 +function getClass_37(){
10.13134 +  return Ljava_util_LinkedList$ListIteratorImpl_2_classLit;
10.13135 +}
10.13136 +
10.13137 +function hasNext_1(){
10.13138 +  return this.currentNode != this.this$0.header;
10.13139 +}
10.13140 +
10.13141 +function next_2(){
10.13142 +  return $next_0(this);
10.13143 +}
10.13144 +
10.13145 +function LinkedList$ListIteratorImpl(){
10.13146 +}
10.13147 +
10.13148 +_ = LinkedList$ListIteratorImpl.prototype = new Object_0();
10.13149 +_.getClass$ = getClass_37;
10.13150 +_.hasNext = hasNext_1;
10.13151 +_.next_0 = next_2;
10.13152 +_.typeId$ = 0;
10.13153 +_.currentIndex = 0;
10.13154 +_.currentNode = null;
10.13155 +_.lastNode = null;
10.13156 +_.this$0 = null;
10.13157 +function $LinkedList$Node(this$static){
10.13158 +  this$static.next = this$static.prev = this$static;
10.13159 +  return this$static;
10.13160 +}
10.13161 +
10.13162 +function $LinkedList$Node_0(this$static, value, nextNode){
10.13163 +  this$static.value = value;
10.13164 +  this$static.next = nextNode;
10.13165 +  this$static.prev = nextNode.prev;
10.13166 +  nextNode.prev.next = this$static;
10.13167 +  nextNode.prev = this$static;
10.13168 +  return this$static;
10.13169 +}
10.13170 +
10.13171 +function getClass_38(){
10.13172 +  return Ljava_util_LinkedList$Node_2_classLit;
10.13173 +}
10.13174 +
10.13175 +function LinkedList$Node(){
10.13176 +}
10.13177 +
10.13178 +_ = LinkedList$Node.prototype = new Object_0();
10.13179 +_.getClass$ = getClass_38;
10.13180 +_.typeId$ = 0;
10.13181 +_.next = null;
10.13182 +_.prev = null;
10.13183 +_.value = null;
10.13184 +function getClass_40(){
10.13185 +  return Ljava_util_NoSuchElementException_2_classLit;
10.13186 +}
10.13187 +
10.13188 +function NoSuchElementException(){
10.13189 +}
10.13190 +
10.13191 +_ = NoSuchElementException.prototype = new RuntimeException();
10.13192 +_.getClass$ = getClass_40;
10.13193 +_.typeId$ = 30;
10.13194 +function equalsWithNullCheck(a, b){
10.13195 +  return (a == null?null:a) === (b == null?null:b) || a != null && equals__devirtual$(a, b);
10.13196 +}
10.13197 +
10.13198 +function $clinit_77(){
10.13199 +  $clinit_77 = nullMethod;
10.13200 +  HTML = $DoctypeExpectation(new DoctypeExpectation(), 'HTML', 0);
10.13201 +  $DoctypeExpectation(new DoctypeExpectation(), 'HTML401_TRANSITIONAL', 1);
10.13202 +  $DoctypeExpectation(new DoctypeExpectation(), 'HTML401_STRICT', 2);
10.13203 +  $DoctypeExpectation(new DoctypeExpectation(), 'AUTO', 3);
10.13204 +  $DoctypeExpectation(new DoctypeExpectation(), 'NO_DOCTYPE_ERRORS', 4);
10.13205 +}
10.13206 +
10.13207 +function $DoctypeExpectation(this$static, enum$name, enum$ordinal){
10.13208 +  $clinit_77();
10.13209 +  this$static.name_0 = enum$name;
10.13210 +  this$static.ordinal = enum$ordinal;
10.13211 +  return this$static;
10.13212 +}
10.13213 +
10.13214 +function getClass_41(){
10.13215 +  return Lnu_validator_htmlparser_common_DoctypeExpectation_2_classLit;
10.13216 +}
10.13217 +
10.13218 +function DoctypeExpectation(){
10.13219 +}
10.13220 +
10.13221 +_ = DoctypeExpectation.prototype = new Enum();
10.13222 +_.getClass$ = getClass_41;
10.13223 +_.typeId$ = 31;
10.13224 +var HTML;
10.13225 +function $clinit_78(){
10.13226 +  $clinit_78 = nullMethod;
10.13227 +  STANDARDS_MODE = $DocumentMode(new DocumentMode(), 'STANDARDS_MODE', 0);
10.13228 +  ALMOST_STANDARDS_MODE = $DocumentMode(new DocumentMode(), 'ALMOST_STANDARDS_MODE', 1);
10.13229 +  QUIRKS_MODE = $DocumentMode(new DocumentMode(), 'QUIRKS_MODE', 2);
10.13230 +}
10.13231 +
10.13232 +function $DocumentMode(this$static, enum$name, enum$ordinal){
10.13233 +  $clinit_78();
10.13234 +  this$static.name_0 = enum$name;
10.13235 +  this$static.ordinal = enum$ordinal;
10.13236 +  return this$static;
10.13237 +}
10.13238 +
10.13239 +function getClass_42(){
10.13240 +  return Lnu_validator_htmlparser_common_DocumentMode_2_classLit;
10.13241 +}
10.13242 +
10.13243 +function DocumentMode(){
10.13244 +}
10.13245 +
10.13246 +_ = DocumentMode.prototype = new Enum();
10.13247 +_.getClass$ = getClass_42;
10.13248 +_.typeId$ = 32;
10.13249 +var ALMOST_STANDARDS_MODE, QUIRKS_MODE, STANDARDS_MODE;
10.13250 +function $clinit_80(){
10.13251 +  $clinit_80 = nullMethod;
10.13252 +  ALLOW = $XmlViolationPolicy(new XmlViolationPolicy(), 'ALLOW', 0);
10.13253 +  FATAL = $XmlViolationPolicy(new XmlViolationPolicy(), 'FATAL', 1);
10.13254 +  ALTER_INFOSET = $XmlViolationPolicy(new XmlViolationPolicy(), 'ALTER_INFOSET', 2);
10.13255 +}
10.13256 +
10.13257 +function $XmlViolationPolicy(this$static, enum$name, enum$ordinal){
10.13258 +  $clinit_80();
10.13259 +  this$static.name_0 = enum$name;
10.13260 +  this$static.ordinal = enum$ordinal;
10.13261 +  return this$static;
10.13262 +}
10.13263 +
10.13264 +function getClass_43(){
10.13265 +  return Lnu_validator_htmlparser_common_XmlViolationPolicy_2_classLit;
10.13266 +}
10.13267 +
10.13268 +function XmlViolationPolicy(){
10.13269 +}
10.13270 +
10.13271 +_ = XmlViolationPolicy.prototype = new Enum();
10.13272 +_.getClass$ = getClass_43;
10.13273 +_.typeId$ = 33;
10.13274 +var ALLOW, ALTER_INFOSET, FATAL;
10.13275 +function $clinit_98(){
10.13276 +  $clinit_98 = nullMethod;
10.13277 +  ISINDEX_PROMPT = $toCharArray('This is a searchable index. Insert your search keywords here: ');
10.13278 +  HTML4_PUBLIC_IDS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['-//W3C//DTD HTML 4.0 Frameset//EN', '-//W3C//DTD HTML 4.0 Transitional//EN', '-//W3C//DTD HTML 4.0//EN', '-//W3C//DTD HTML 4.01 Frameset//EN', '-//W3C//DTD HTML 4.01 Transitional//EN', '-//W3C//DTD HTML 4.01//EN']);
10.13279 +  QUIRKY_PUBLIC_IDS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['+//silmaril//dtd html pro v0r11 19970101//', '-//advasoft ltd//dtd html 3.0 aswedit + extensions//', '-//as//dtd html 3.0 aswedit + extensions//', '-//ietf//dtd html 2.0 level 1//', '-//ietf//dtd html 2.0 level 2//', '-//ietf//dtd html 2.0 strict level 1//', '-//ietf//dtd html 2.0 strict level 2//', '-//ietf//dtd html 2.0 strict//', '-//ietf//dtd html 2.0//', '-//ietf//dtd html 2.1e//', '-//ietf//dtd html 3.0//', '-//ietf//dtd html 3.2 final//', '-//ietf//dtd html 3.2//', '-//ietf//dtd html 3//', '-//ietf//dtd html level 0//', '-//ietf//dtd html level 1//', '-//ietf//dtd html level 2//', '-//ietf//dtd html level 3//', '-//ietf//dtd html strict level 0//', '-//ietf//dtd html strict level 1//', '-//ietf//dtd html strict level 2//', '-//ietf//dtd html strict level 3//', '-//ietf//dtd html strict//', '-//ietf//dtd html//', '-//metrius//dtd metrius presentational//', '-//microsoft//dtd internet explorer 2.0 html strict//', '-//microsoft//dtd internet explorer 2.0 html//', '-//microsoft//dtd internet explorer 2.0 tables//', '-//microsoft//dtd internet explorer 3.0 html strict//', '-//microsoft//dtd internet explorer 3.0 html//', '-//microsoft//dtd internet explorer 3.0 tables//', '-//netscape comm. corp.//dtd html//', '-//netscape comm. corp.//dtd strict html//', "-//o'reilly and associates//dtd html 2.0//", "-//o'reilly and associates//dtd html extended 1.0//", "-//o'reilly and associates//dtd html extended relaxed 1.0//", '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//', '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//', '-//spyglass//dtd html 2.0 extended//', '-//sq//dtd html 2.0 hotmetal + extensions//', '-//sun microsystems corp.//dtd hotjava html//', '-//sun microsystems corp.//dtd hotjava strict html//', '-//w3c//dtd html 3 1995-03-24//', '-//w3c//dtd html 3.2 draft//', '-//w3c//dtd html 3.2 final//', '-//w3c//dtd html 3.2//', '-//w3c//dtd html 3.2s draft//', '-//w3c//dtd html 4.0 frameset//', '-//w3c//dtd html 4.0 transitional//', '-//w3c//dtd html experimental 19960712//', '-//w3c//dtd html experimental 970421//', '-//w3c//dtd w3 html//', '-//w3o//dtd w3 html 3.0//', '-//webtechs//dtd mozilla html 2.0//', '-//webtechs//dtd mozilla html//']);
10.13280 +}
10.13281 +
10.13282 +function $accumulateCharacter(this$static, c){
10.13283 +  var newBuf, newLen;
10.13284 +  newLen = this$static.charBufferLen + 1;
10.13285 +  if (newLen > this$static.charBuffer.length) {
10.13286 +    newBuf = initDim(_3C_classLit, 42, -1, newLen, 1);
10.13287 +    arraycopy(this$static.charBuffer, 0, newBuf, 0, this$static.charBufferLen);
10.13288 +    this$static.charBuffer = newBuf;
10.13289 +  }
10.13290 +  this$static.charBuffer[this$static.charBufferLen] = c;
10.13291 +  this$static.charBufferLen = newLen;
10.13292 +}
10.13293 +
10.13294 +function $addAttributesToBody(this$static, attributes){
10.13295 +  var body;
10.13296 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13297 +  if (this$static.currentPtr >= 1) {
10.13298 +    body = this$static.stack[1];
10.13299 +    if (body.group == 3) {
10.13300 +      $addAttributesToElement(this$static, body.node, attributes);
10.13301 +    }
10.13302 +  }
10.13303 +}
10.13304 +
10.13305 +function $adoptionAgencyEndTag(this$static, name){
10.13306 +  var bookmark, clone, commonAncestor, formattingClone, formattingElt, formattingEltListPos, formattingEltStackPos, furthestBlock, furthestBlockPos, inScope, lastNode, listNode, newNode, node, nodeListPos, nodePos;
10.13307 +  $flushCharacters(this$static);
10.13308 +  for (;;) {
10.13309 +    formattingEltListPos = this$static.listPtr;
10.13310 +    while (formattingEltListPos > -1) {
10.13311 +      listNode = this$static.listOfActiveFormattingElements[formattingEltListPos];
10.13312 +      if (!listNode) {
10.13313 +        formattingEltListPos = -1;
10.13314 +        break;
10.13315 +      }
10.13316 +       else if (listNode.name_0 == name) {
10.13317 +        break;
10.13318 +      }
10.13319 +      --formattingEltListPos;
10.13320 +    }
10.13321 +    if (formattingEltListPos == -1) {
10.13322 +      return;
10.13323 +    }
10.13324 +    formattingElt = this$static.listOfActiveFormattingElements[formattingEltListPos];
10.13325 +    formattingEltStackPos = this$static.currentPtr;
10.13326 +    inScope = true;
10.13327 +    while (formattingEltStackPos > -1) {
10.13328 +      node = this$static.stack[formattingEltStackPos];
10.13329 +      if (node == formattingElt) {
10.13330 +        break;
10.13331 +      }
10.13332 +       else if (node.scoping) {
10.13333 +        inScope = false;
10.13334 +      }
10.13335 +      --formattingEltStackPos;
10.13336 +    }
10.13337 +    if (formattingEltStackPos == -1) {
10.13338 +      $removeFromListOfActiveFormattingElements(this$static, formattingEltListPos);
10.13339 +      return;
10.13340 +    }
10.13341 +    if (!inScope) {
10.13342 +      return;
10.13343 +    }
10.13344 +    furthestBlockPos = formattingEltStackPos + 1;
10.13345 +    while (furthestBlockPos <= this$static.currentPtr) {
10.13346 +      node = this$static.stack[furthestBlockPos];
10.13347 +      if (node.scoping || node.special) {
10.13348 +        break;
10.13349 +      }
10.13350 +      ++furthestBlockPos;
10.13351 +    }
10.13352 +    if (furthestBlockPos > this$static.currentPtr) {
10.13353 +      while (this$static.currentPtr >= formattingEltStackPos) {
10.13354 +        $pop(this$static);
10.13355 +      }
10.13356 +      $removeFromListOfActiveFormattingElements(this$static, formattingEltListPos);
10.13357 +      return;
10.13358 +    }
10.13359 +    commonAncestor = this$static.stack[formattingEltStackPos - 1];
10.13360 +    furthestBlock = this$static.stack[furthestBlockPos];
10.13361 +    bookmark = formattingEltListPos;
10.13362 +    nodePos = furthestBlockPos;
10.13363 +    lastNode = furthestBlock;
10.13364 +    for (;;) {
10.13365 +      --nodePos;
10.13366 +      node = this$static.stack[nodePos];
10.13367 +      nodeListPos = $findInListOfActiveFormattingElements(this$static, node);
10.13368 +      if (nodeListPos == -1) {
10.13369 +        $removeFromStack(this$static, nodePos);
10.13370 +        --furthestBlockPos;
10.13371 +        continue;
10.13372 +      }
10.13373 +      if (nodePos == formattingEltStackPos) {
10.13374 +        break;
10.13375 +      }
10.13376 +      if (nodePos == furthestBlockPos) {
10.13377 +        bookmark = nodeListPos + 1;
10.13378 +      }
10.13379 +      clone = $createElement(this$static, 'http://www.w3.org/1999/xhtml', node.name_0, $cloneAttributes(node.attributes));
10.13380 +      newNode = $StackNode(new StackNode(), node.group, node.ns, node.name_0, clone, node.scoping, node.special, node.fosterParenting, node.popName, node.attributes);
10.13381 +      node.attributes = null;
10.13382 +      this$static.stack[nodePos] = newNode;
10.13383 +      ++newNode.refcount;
10.13384 +      this$static.listOfActiveFormattingElements[nodeListPos] = newNode;
10.13385 +      --node.refcount;
10.13386 +      --node.refcount;
10.13387 +      node = newNode;
10.13388 +      $detachFromParent(this$static, lastNode.node);
10.13389 +      $appendElement(this$static, lastNode.node, node.node);
10.13390 +      lastNode = node;
10.13391 +    }
10.13392 +    if (commonAncestor.fosterParenting) {
10.13393 +      $detachFromParent(this$static, lastNode.node);
10.13394 +      $insertIntoFosterParent(this$static, lastNode.node);
10.13395 +    }
10.13396 +     else {
10.13397 +      $detachFromParent(this$static, lastNode.node);
10.13398 +      $appendElement(this$static, lastNode.node, commonAncestor.node);
10.13399 +    }
10.13400 +    clone = $createElement(this$static, 'http://www.w3.org/1999/xhtml', formattingElt.name_0, $cloneAttributes(formattingElt.attributes));
10.13401 +    formattingClone = $StackNode(new StackNode(), formattingElt.group, formattingElt.ns, formattingElt.name_0, clone, formattingElt.scoping, formattingElt.special, formattingElt.fosterParenting, formattingElt.popName, formattingElt.attributes);
10.13402 +    formattingElt.attributes = null;
10.13403 +    $appendChildrenToNewParent(this$static, furthestBlock.node, clone);
10.13404 +    $appendElement(this$static, clone, furthestBlock.node);
10.13405 +    $removeFromListOfActiveFormattingElements(this$static, formattingEltListPos);
10.13406 +    $insertIntoListOfActiveFormattingElements(this$static, formattingClone, bookmark);
10.13407 +    $removeFromStack(this$static, formattingEltStackPos);
10.13408 +    $insertIntoStack(this$static, formattingClone, furthestBlockPos);
10.13409 +  }
10.13410 +}
10.13411 +
10.13412 +function $append_1(this$static, node){
10.13413 +  var newList;
10.13414 +  ++this$static.listPtr;
10.13415 +  if (this$static.listPtr == this$static.listOfActiveFormattingElements.length) {
10.13416 +    newList = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, this$static.listOfActiveFormattingElements.length + 64, 0);
10.13417 +    arraycopy(this$static.listOfActiveFormattingElements, 0, newList, 0, this$static.listOfActiveFormattingElements.length);
10.13418 +    this$static.listOfActiveFormattingElements = newList;
10.13419 +  }
10.13420 +  this$static.listOfActiveFormattingElements[this$static.listPtr] = node;
10.13421 +}
10.13422 +
10.13423 +function $appendHtmlElementToDocumentAndPush(this$static, attributes){
10.13424 +  var elt, node;
10.13425 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13426 +  elt = $createHtmlElementSetAsRoot(this$static, attributes);
10.13427 +  node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HTML_0), elt);
10.13428 +  $push_0(this$static, node);
10.13429 +}
10.13430 +
10.13431 +function $appendToCurrentNodeAndPushElement(this$static, ns, elementName, attributes){
10.13432 +  var elt, node;
10.13433 +  $flushCharacters(this$static);
10.13434 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13435 +  elt = $createElement(this$static, ns, elementName.name_0, attributes);
10.13436 +  $appendElement(this$static, elt, this$static.stack[this$static.currentPtr].node);
10.13437 +  node = $StackNode_0(new StackNode(), ns, elementName, elt);
10.13438 +  $push_0(this$static, node);
10.13439 +}
10.13440 +
10.13441 +function $appendToCurrentNodeAndPushElementMayFoster(this$static, ns, elementName, attributes){
10.13442 +  var current, elt, node, popName;
10.13443 +  $flushCharacters(this$static);
10.13444 +  popName = elementName.name_0;
10.13445 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13446 +  if (elementName.custom) {
10.13447 +    popName = $checkPopName(this$static, popName);
10.13448 +  }
10.13449 +  elt = $createElement(this$static, ns, popName, attributes);
10.13450 +  current = this$static.stack[this$static.currentPtr];
10.13451 +  if (current.fosterParenting) {
10.13452 +    $insertIntoFosterParent(this$static, elt);
10.13453 +  }
10.13454 +   else {
10.13455 +    $appendElement(this$static, elt, current.node);
10.13456 +  }
10.13457 +  node = $StackNode_1(new StackNode(), ns, elementName, elt, popName);
10.13458 +  $push_0(this$static, node);
10.13459 +}
10.13460 +
10.13461 +function $appendToCurrentNodeAndPushElementMayFoster_0(this$static, ns, elementName, attributes){
10.13462 +  var current, elt, node;
10.13463 +  $flushCharacters(this$static);
10.13464 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13465 +  elt = $createElement_0(this$static, ns, elementName.name_0, attributes);
10.13466 +  current = this$static.stack[this$static.currentPtr];
10.13467 +  if (current.fosterParenting) {
10.13468 +    $insertIntoFosterParent(this$static, elt);
10.13469 +  }
10.13470 +   else {
10.13471 +    $appendElement(this$static, elt, current.node);
10.13472 +  }
10.13473 +  node = $StackNode_0(new StackNode(), ns, elementName, elt);
10.13474 +  $push_0(this$static, node);
10.13475 +}
10.13476 +
10.13477 +function $appendToCurrentNodeAndPushElementMayFosterCamelCase(this$static, ns, elementName, attributes){
10.13478 +  var current, elt, node, popName;
10.13479 +  $flushCharacters(this$static);
10.13480 +  popName = elementName.camelCaseName;
10.13481 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13482 +  if (elementName.custom) {
10.13483 +    popName = $checkPopName(this$static, popName);
10.13484 +  }
10.13485 +  elt = $createElement(this$static, ns, popName, attributes);
10.13486 +  current = this$static.stack[this$static.currentPtr];
10.13487 +  if (current.fosterParenting) {
10.13488 +    $insertIntoFosterParent(this$static, elt);
10.13489 +  }
10.13490 +   else {
10.13491 +    $appendElement(this$static, elt, current.node);
10.13492 +  }
10.13493 +  node = $StackNode_2(new StackNode(), ns, elementName, elt, popName, ($clinit_89() , FOREIGNOBJECT) == elementName);
10.13494 +  $push_0(this$static, node);
10.13495 +}
10.13496 +
10.13497 +function $appendToCurrentNodeAndPushElementMayFosterNoScoping(this$static, ns, elementName, attributes){
10.13498 +  var current, elt, node, popName;
10.13499 +  $flushCharacters(this$static);
10.13500 +  popName = elementName.name_0;
10.13501 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13502 +  if (elementName.custom) {
10.13503 +    popName = $checkPopName(this$static, popName);
10.13504 +  }
10.13505 +  elt = $createElement(this$static, ns, popName, attributes);
10.13506 +  current = this$static.stack[this$static.currentPtr];
10.13507 +  if (current.fosterParenting) {
10.13508 +    $insertIntoFosterParent(this$static, elt);
10.13509 +  }
10.13510 +   else {
10.13511 +    $appendElement(this$static, elt, current.node);
10.13512 +  }
10.13513 +  node = $StackNode_2(new StackNode(), ns, elementName, elt, popName, false);
10.13514 +  $push_0(this$static, node);
10.13515 +}
10.13516 +
10.13517 +function $appendToCurrentNodeAndPushFormElementMayFoster(this$static, attributes){
10.13518 +  var current, elt, node;
10.13519 +  $flushCharacters(this$static);
10.13520 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13521 +  elt = $createElement(this$static, 'http://www.w3.org/1999/xhtml', 'form', attributes);
10.13522 +  this$static.formPointer = elt;
10.13523 +  current = this$static.stack[this$static.currentPtr];
10.13524 +  if (current.fosterParenting) {
10.13525 +    $insertIntoFosterParent(this$static, elt);
10.13526 +  }
10.13527 +   else {
10.13528 +    $appendElement(this$static, elt, current.node);
10.13529 +  }
10.13530 +  node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , FORM_0), elt);
10.13531 +  $push_0(this$static, node);
10.13532 +}
10.13533 +
10.13534 +function $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, ns, elementName, attributes){
10.13535 +  var current, elt, node;
10.13536 +  $flushCharacters(this$static);
10.13537 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13538 +  elt = $createElement(this$static, ns, elementName.name_0, attributes);
10.13539 +  current = this$static.stack[this$static.currentPtr];
10.13540 +  if (current.fosterParenting) {
10.13541 +    $insertIntoFosterParent(this$static, elt);
10.13542 +  }
10.13543 +   else {
10.13544 +    $appendElement(this$static, elt, current.node);
10.13545 +  }
10.13546 +  node = $StackNode_3(new StackNode(), ns, elementName, elt, $cloneAttributes(attributes));
10.13547 +  $push_0(this$static, node);
10.13548 +  $append_1(this$static, node);
10.13549 +  ++node.refcount;
10.13550 +}
10.13551 +
10.13552 +function $appendToCurrentNodeAndPushHeadElement(this$static, attributes){
10.13553 +  var elt, node;
10.13554 +  $flushCharacters(this$static);
10.13555 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13556 +  elt = $createElement(this$static, 'http://www.w3.org/1999/xhtml', 'head', attributes);
10.13557 +  $appendElement(this$static, elt, this$static.stack[this$static.currentPtr].node);
10.13558 +  this$static.headPointer = elt;
10.13559 +  node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HEAD), elt);
10.13560 +  $push_0(this$static, node);
10.13561 +}
10.13562 +
10.13563 +function $appendVoidElementToCurrentMayFoster(this$static, ns, name, attributes){
10.13564 +  var current, elt;
10.13565 +  $flushCharacters(this$static);
10.13566 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13567 +  elt = $createElement_0(this$static, ns, name, attributes);
10.13568 +  current = this$static.stack[this$static.currentPtr];
10.13569 +  if (current.fosterParenting) {
10.13570 +    $insertIntoFosterParent(this$static, elt);
10.13571 +  }
10.13572 +   else {
10.13573 +    $appendElement(this$static, elt, current.node);
10.13574 +  }
10.13575 +  $elementPopped(this$static, ns, name, elt);
10.13576 +}
10.13577 +
10.13578 +function $appendVoidElementToCurrentMayFoster_0(this$static, ns, elementName, attributes){
10.13579 +  var current, elt, popName;
10.13580 +  $flushCharacters(this$static);
10.13581 +  popName = elementName.name_0;
10.13582 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13583 +  if (elementName.custom) {
10.13584 +    popName = $checkPopName(this$static, popName);
10.13585 +  }
10.13586 +  elt = $createElement(this$static, ns, popName, attributes);
10.13587 +  current = this$static.stack[this$static.currentPtr];
10.13588 +  if (current.fosterParenting) {
10.13589 +    $insertIntoFosterParent(this$static, elt);
10.13590 +  }
10.13591 +   else {
10.13592 +    $appendElement(this$static, elt, current.node);
10.13593 +  }
10.13594 +  $elementPopped(this$static, ns, popName, elt);
10.13595 +}
10.13596 +
10.13597 +function $appendVoidElementToCurrentMayFosterCamelCase(this$static, ns, elementName, attributes){
10.13598 +  var current, elt, popName;
10.13599 +  $flushCharacters(this$static);
10.13600 +  popName = elementName.camelCaseName;
10.13601 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13602 +  if (elementName.custom) {
10.13603 +    popName = $checkPopName(this$static, popName);
10.13604 +  }
10.13605 +  elt = $createElement(this$static, ns, popName, attributes);
10.13606 +  current = this$static.stack[this$static.currentPtr];
10.13607 +  if (current.fosterParenting) {
10.13608 +    $insertIntoFosterParent(this$static, elt);
10.13609 +  }
10.13610 +   else {
10.13611 +    $appendElement(this$static, elt, current.node);
10.13612 +  }
10.13613 +  $elementPopped(this$static, ns, popName, elt);
10.13614 +}
10.13615 +
10.13616 +function $charBufferContainsNonWhitespace(this$static){
10.13617 +  var i;
10.13618 +  for (i = 0; i < this$static.charBufferLen; ++i) {
10.13619 +    switch (this$static.charBuffer[i]) {
10.13620 +      case 32:
10.13621 +      case 9:
10.13622 +      case 10:
10.13623 +      case 12:
10.13624 +        continue;
10.13625 +      default:return true;
10.13626 +    }
10.13627 +  }
10.13628 +  return false;
10.13629 +}
10.13630 +
10.13631 +function $characters(this$static, buf, start, length){
10.13632 +  var end, i;
10.13633 +  if (this$static.needToDropLF) {
10.13634 +    if (buf[start] == 10) {
10.13635 +      ++start;
10.13636 +      --length;
10.13637 +      if (length == 0) {
10.13638 +        return;
10.13639 +      }
10.13640 +    }
10.13641 +    this$static.needToDropLF = false;
10.13642 +  }
10.13643 +  switch (this$static.mode) {
10.13644 +    case 6:
10.13645 +    case 12:
10.13646 +    case 8:
10.13647 +      $reconstructTheActiveFormattingElements(this$static);
10.13648 +    case 20:
10.13649 +      $accumulateCharacters(this$static, buf, start, length);
10.13650 +      return;
10.13651 +    default:end = start + length;
10.13652 +      charactersloop: for (i = start; i < end; ++i) {
10.13653 +        switch (buf[i]) {
10.13654 +          case 32:
10.13655 +          case 9:
10.13656 +          case 10:
10.13657 +          case 12:
10.13658 +            switch (this$static.mode) {
10.13659 +              case 0:
10.13660 +              case 1:
10.13661 +              case 2:
10.13662 +                start = i + 1;
10.13663 +                continue;
10.13664 +              case 21:
10.13665 +              case 3:
10.13666 +              case 4:
10.13667 +              case 5:
10.13668 +              case 9:
10.13669 +              case 16:
10.13670 +              case 17:
10.13671 +                continue;
10.13672 +              case 6:
10.13673 +              case 12:
10.13674 +              case 8:
10.13675 +                if (start < i) {
10.13676 +                  $accumulateCharacters(this$static, buf, start, i - start);
10.13677 +                  start = i;
10.13678 +                }
10.13679 +
10.13680 +                $reconstructTheActiveFormattingElements(this$static);
10.13681 +                break charactersloop;
10.13682 +              case 7:
10.13683 +              case 10:
10.13684 +              case 11:
10.13685 +                $reconstructTheActiveFormattingElements(this$static);
10.13686 +                $accumulateCharacter(this$static, buf[i]);
10.13687 +                start = i + 1;
10.13688 +                continue;
10.13689 +              case 15:
10.13690 +                if (start < i) {
10.13691 +                  $accumulateCharacters(this$static, buf, start, i - start);
10.13692 +                  start = i;
10.13693 +                }
10.13694 +
10.13695 +                $reconstructTheActiveFormattingElements(this$static);
10.13696 +                continue;
10.13697 +              case 18:
10.13698 +              case 19:
10.13699 +                if (start < i) {
10.13700 +                  $accumulateCharacters(this$static, buf, start, i - start);
10.13701 +                  start = i;
10.13702 +                }
10.13703 +
10.13704 +                $reconstructTheActiveFormattingElements(this$static);
10.13705 +                continue;
10.13706 +            }
10.13707 +
10.13708 +          default:switch (this$static.mode) {
10.13709 +              case 0:
10.13710 +                $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.13711 +                this$static.mode = 1;
10.13712 +                --i;
10.13713 +                continue;
10.13714 +              case 1:
10.13715 +                $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
10.13716 +                this$static.mode = 2;
10.13717 +                --i;
10.13718 +                continue;
10.13719 +              case 2:
10.13720 +                if (start < i) {
10.13721 +                  $accumulateCharacters(this$static, buf, start, i - start);
10.13722 +                  start = i;
10.13723 +                }
10.13724 +
10.13725 +                $appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
10.13726 +                this$static.mode = 3;
10.13727 +                --i;
10.13728 +                continue;
10.13729 +              case 3:
10.13730 +                if (start < i) {
10.13731 +                  $accumulateCharacters(this$static, buf, start, i - start);
10.13732 +                  start = i;
10.13733 +                }
10.13734 +
10.13735 +                $pop(this$static);
10.13736 +                this$static.mode = 5;
10.13737 +                --i;
10.13738 +                continue;
10.13739 +              case 4:
10.13740 +                if (start < i) {
10.13741 +                  $accumulateCharacters(this$static, buf, start, i - start);
10.13742 +                  start = i;
10.13743 +                }
10.13744 +
10.13745 +                $pop(this$static);
10.13746 +                this$static.mode = 3;
10.13747 +                --i;
10.13748 +                continue;
10.13749 +              case 5:
10.13750 +                if (start < i) {
10.13751 +                  $accumulateCharacters(this$static, buf, start, i - start);
10.13752 +                  start = i;
10.13753 +                }
10.13754 +
10.13755 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
10.13756 +                this$static.mode = 21;
10.13757 +                --i;
10.13758 +                continue;
10.13759 +              case 21:
10.13760 +                this$static.mode = 6;
10.13761 +                --i;
10.13762 +                continue;
10.13763 +              case 6:
10.13764 +              case 12:
10.13765 +              case 8:
10.13766 +                if (start < i) {
10.13767 +                  $accumulateCharacters(this$static, buf, start, i - start);
10.13768 +                  start = i;
10.13769 +                }
10.13770 +
10.13771 +                $reconstructTheActiveFormattingElements(this$static);
10.13772 +                break charactersloop;
10.13773 +              case 7:
10.13774 +              case 10:
10.13775 +              case 11:
10.13776 +                $reconstructTheActiveFormattingElements(this$static);
10.13777 +                $accumulateCharacter(this$static, buf[i]);
10.13778 +                start = i + 1;
10.13779 +                continue;
10.13780 +              case 9:
10.13781 +                if (start < i) {
10.13782 +                  $accumulateCharacters(this$static, buf, start, i - start);
10.13783 +                  start = i;
10.13784 +                }
10.13785 +
10.13786 +                if (this$static.currentPtr == 0) {
10.13787 +                  start = i + 1;
10.13788 +                  continue;
10.13789 +                }
10.13790 +
10.13791 +                $pop(this$static);
10.13792 +                this$static.mode = 7;
10.13793 +                --i;
10.13794 +                continue;
10.13795 +                break charactersloop;
10.13796 +              case 15:
10.13797 +                this$static.mode = 6;
10.13798 +                --i;
10.13799 +                continue;
10.13800 +              case 16:
10.13801 +                if (start < i) {
10.13802 +                  $accumulateCharacters(this$static, buf, start, i - start);
10.13803 +                  start = i;
10.13804 +                }
10.13805 +
10.13806 +                start = i + 1;
10.13807 +                continue;
10.13808 +              case 17:
10.13809 +                if (start < i) {
10.13810 +                  $accumulateCharacters(this$static, buf, start, i - start);
10.13811 +                  start = i;
10.13812 +                }
10.13813 +
10.13814 +                start = i + 1;
10.13815 +                continue;
10.13816 +              case 18:
10.13817 +                this$static.mode = 6;
10.13818 +                --i;
10.13819 +                continue;
10.13820 +              case 19:
10.13821 +                this$static.mode = 16;
10.13822 +                --i;
10.13823 +                continue;
10.13824 +            }
10.13825 +
10.13826 +        }
10.13827 +      }
10.13828 +
10.13829 +      if (start < end) {
10.13830 +        $accumulateCharacters(this$static, buf, start, end - start);
10.13831 +      }
10.13832 +
10.13833 +  }
10.13834 +}
10.13835 +
10.13836 +function $checkMetaCharset(this$static, attributes){
10.13837 +  var content, internalCharsetHtml5, internalCharsetLegacy;
10.13838 +  content = $getValue_0(attributes, ($clinit_87() , CONTENT));
10.13839 +  internalCharsetLegacy = null;
10.13840 +  if (content != null) {
10.13841 +    internalCharsetLegacy = extractCharsetFromContent(content);
10.13842 +  }
10.13843 +  if (internalCharsetLegacy == null) {
10.13844 +    internalCharsetHtml5 = $getValue_0(attributes, CHARSET);
10.13845 +    if (internalCharsetHtml5 != null) {
10.13846 +      this$static.tokenizer.shouldSuspend = true;
10.13847 +    }
10.13848 +  }
10.13849 +   else {
10.13850 +    this$static.tokenizer.shouldSuspend = true;
10.13851 +  }
10.13852 +}
10.13853 +
10.13854 +function $checkPopName(this$static, name){
10.13855 +  if (isNCName(name)) {
10.13856 +    return name;
10.13857 +  }
10.13858 +   else {
10.13859 +    switch (this$static.namePolicy.ordinal) {
10.13860 +      case 0:
10.13861 +        return name;
10.13862 +      case 2:
10.13863 +        return escapeName(name);
10.13864 +      case 1:
10.13865 +        $fatal_1(this$static, 'Element name \u201C' + name + '\u201D cannot be represented as XML 1.0.');
10.13866 +    }
10.13867 +  }
10.13868 +  return null;
10.13869 +}
10.13870 +
10.13871 +function $clearStackBackTo(this$static, eltPos){
10.13872 +  while (this$static.currentPtr > eltPos) {
10.13873 +    $pop(this$static);
10.13874 +  }
10.13875 +}
10.13876 +
10.13877 +function $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static){
10.13878 +  while (this$static.listPtr > -1) {
10.13879 +    if (!this$static.listOfActiveFormattingElements[this$static.listPtr]) {
10.13880 +      --this$static.listPtr;
10.13881 +      return;
10.13882 +    }
10.13883 +    --this$static.listOfActiveFormattingElements[this$static.listPtr].refcount;
10.13884 +    --this$static.listPtr;
10.13885 +  }
10.13886 +}
10.13887 +
10.13888 +function $closeTheCell(this$static, eltPos){
10.13889 +  $generateImpliedEndTags(this$static);
10.13890 +  while (this$static.currentPtr >= eltPos) {
10.13891 +    $pop(this$static);
10.13892 +  }
10.13893 +  $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.13894 +  this$static.mode = 11;
10.13895 +  return;
10.13896 +}
10.13897 +
10.13898 +function $comment(this$static, buf, start, length){
10.13899 +  var end, end_0, end_1;
10.13900 +  this$static.needToDropLF = false;
10.13901 +  if (!this$static.wantingComments) {
10.13902 +    return;
10.13903 +  }
10.13904 +  commentloop: for (;;) {
10.13905 +    switch (this$static.foreignFlag) {
10.13906 +      case 0:
10.13907 +        break commentloop;
10.13908 +      default:switch (this$static.mode) {
10.13909 +          case 0:
10.13910 +          case 1:
10.13911 +          case 18:
10.13912 +          case 19:
10.13913 +            $appendCommentToDocument(this$static, (end = start + length , __checkBounds(buf.length, start, end) , __valueOf(buf, start, end)));
10.13914 +            return;
10.13915 +          case 15:
10.13916 +            $flushCharacters(this$static);
10.13917 +            $appendComment(this$static, this$static.stack[0].node, (end_0 = start + length , __checkBounds(buf.length, start, end_0) , __valueOf(buf, start, end_0)));
10.13918 +            return;
10.13919 +          default:break commentloop;
10.13920 +        }
10.13921 +
10.13922 +    }
10.13923 +  }
10.13924 +  $flushCharacters(this$static);
10.13925 +  $appendComment(this$static, this$static.stack[this$static.currentPtr].node, (end_1 = start + length , __checkBounds(buf.length, start, end_1) , __valueOf(buf, start, end_1)));
10.13926 +  return;
10.13927 +}
10.13928 +
10.13929 +function $doctype(this$static, name, publicIdentifier, systemIdentifier, forceQuirks){
10.13930 +  this$static.needToDropLF = false;
10.13931 +  doctypeloop: for (;;) {
10.13932 +    switch (this$static.foreignFlag) {
10.13933 +      case 0:
10.13934 +        break doctypeloop;
10.13935 +      default:switch (this$static.mode) {
10.13936 +          case 0:
10.13937 +            switch (this$static.doctypeExpectation.ordinal) {
10.13938 +              case 0:
10.13939 +                if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
10.13940 +                  $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.13941 +                }
10.13942 +                 else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
10.13943 +                  $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
10.13944 +                }
10.13945 +                 else {
10.13946 +                  if ($equals_0('-//W3C//DTD HTML 4.0//EN', publicIdentifier) && (systemIdentifier == null || $equals_0('http://www.w3.org/TR/REC-html40/strict.dtd', systemIdentifier)) || $equals_0('-//W3C//DTD HTML 4.01//EN', publicIdentifier) && (systemIdentifier == null || $equals_0('http://www.w3.org/TR/html4/strict.dtd', systemIdentifier)) || $equals_0('-//W3C//DTD XHTML 1.0 Strict//EN', publicIdentifier) && $equals_0('http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd', systemIdentifier) || $equals_0('-//W3C//DTD XHTML 1.1//EN', publicIdentifier) && $equals_0('http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd', systemIdentifier)) {
10.13947 +                  }
10.13948 +                   else 
10.13949 +                    !((systemIdentifier == null || $equals_0('about:legacy-compat', systemIdentifier)) && publicIdentifier == null);
10.13950 +                  $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
10.13951 +                }
10.13952 +
10.13953 +                break;
10.13954 +              case 2:
10.13955 +                this$static.html4 = true;
10.13956 +                this$static.tokenizer.html4 = true;
10.13957 +                if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
10.13958 +                  $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.13959 +                }
10.13960 +                 else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
10.13961 +                  $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
10.13962 +                }
10.13963 +                 else {
10.13964 +                  if ($equals_0('-//W3C//DTD HTML 4.01//EN', publicIdentifier)) {
10.13965 +                    !$equals_0('http://www.w3.org/TR/html4/strict.dtd', systemIdentifier);
10.13966 +                  }
10.13967 +                   else {
10.13968 +                  }
10.13969 +                  $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
10.13970 +                }
10.13971 +
10.13972 +                break;
10.13973 +              case 1:
10.13974 +                this$static.html4 = true;
10.13975 +                this$static.tokenizer.html4 = true;
10.13976 +                if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
10.13977 +                  $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.13978 +                }
10.13979 +                 else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
10.13980 +                  if ($equals_0('-//W3C//DTD HTML 4.01 Transitional//EN', publicIdentifier) && systemIdentifier != null) {
10.13981 +                    !$equals_0('http://www.w3.org/TR/html4/loose.dtd', systemIdentifier);
10.13982 +                  }
10.13983 +                   else {
10.13984 +                  }
10.13985 +                  $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
10.13986 +                }
10.13987 +                 else {
10.13988 +                  $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
10.13989 +                }
10.13990 +
10.13991 +                break;
10.13992 +              case 3:
10.13993 +                this$static.html4 = $isHtml4Doctype(publicIdentifier);
10.13994 +                if (this$static.html4) {
10.13995 +                  this$static.tokenizer.html4 = true;
10.13996 +                }
10.13997 +
10.13998 +                if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
10.13999 +                  $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.14000 +                }
10.14001 +                 else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
10.14002 +                  if ($equals_0('-//W3C//DTD HTML 4.01 Transitional//EN', publicIdentifier)) {
10.14003 +                    !$equals_0('http://www.w3.org/TR/html4/loose.dtd', systemIdentifier);
10.14004 +                  }
10.14005 +                   else {
10.14006 +                  }
10.14007 +                  $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
10.14008 +                }
10.14009 +                 else {
10.14010 +                  if ($equals_0('-//W3C//DTD HTML 4.01//EN', publicIdentifier)) {
10.14011 +                    !$equals_0('http://www.w3.org/TR/html4/strict.dtd', systemIdentifier);
10.14012 +                  }
10.14013 +                   else {
10.14014 +                  }
10.14015 +                  $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
10.14016 +                }
10.14017 +
10.14018 +                break;
10.14019 +              case 4:
10.14020 +                if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
10.14021 +                  $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.14022 +                }
10.14023 +                 else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
10.14024 +                  $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
10.14025 +                }
10.14026 +                 else {
10.14027 +                  $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
10.14028 +                }
10.14029 +
10.14030 +            }
10.14031 +
10.14032 +            this$static.mode = 1;
10.14033 +            return;
10.14034 +          default:break doctypeloop;
10.14035 +        }
10.14036 +
10.14037 +    }
10.14038 +  }
10.14039 +  return;
10.14040 +}
10.14041 +
10.14042 +function $documentModeInternal(this$static, m){
10.14043 +  this$static.quirks = m == ($clinit_78() , QUIRKS_MODE);
10.14044 +}
10.14045 +
10.14046 +function $endSelect(this$static){
10.14047 +  var eltPos;
10.14048 +  eltPos = $findLastInTableScope(this$static, 'select');
10.14049 +  if (eltPos == 2147483647) {
10.14050 +    return;
10.14051 +  }
10.14052 +  while (this$static.currentPtr >= eltPos) {
10.14053 +    $pop(this$static);
10.14054 +  }
10.14055 +  $resetTheInsertionMode(this$static);
10.14056 +}
10.14057 +
10.14058 +function $endTag(this$static, elementName){
10.14059 +  var eltPos, group, name, node;
10.14060 +  this$static.needToDropLF = false;
10.14061 +  endtagloop: for (;;) {
10.14062 +    group = elementName.group;
10.14063 +    name = elementName.name_0;
10.14064 +    switch (this$static.mode) {
10.14065 +      case 11:
10.14066 +        switch (group) {
10.14067 +          case 37:
10.14068 +            eltPos = $findLastOrRoot(this$static, 37);
10.14069 +            if (eltPos == 0) {
10.14070 +              break endtagloop;
10.14071 +            }
10.14072 +
10.14073 +            $clearStackBackTo(this$static, eltPos);
10.14074 +            $pop(this$static);
10.14075 +            this$static.mode = 10;
10.14076 +            break endtagloop;
10.14077 +          case 34:
10.14078 +            eltPos = $findLastOrRoot(this$static, 37);
10.14079 +            if (eltPos == 0) {
10.14080 +              break endtagloop;
10.14081 +            }
10.14082 +
10.14083 +            $clearStackBackTo(this$static, eltPos);
10.14084 +            $pop(this$static);
10.14085 +            this$static.mode = 10;
10.14086 +            continue;
10.14087 +          case 39:
10.14088 +            if ($findLastInTableScope(this$static, name) == 2147483647) {
10.14089 +              break endtagloop;
10.14090 +            }
10.14091 +
10.14092 +            eltPos = $findLastOrRoot(this$static, 37);
10.14093 +            if (eltPos == 0) {
10.14094 +              break endtagloop;
10.14095 +            }
10.14096 +
10.14097 +            $clearStackBackTo(this$static, eltPos);
10.14098 +            $pop(this$static);
10.14099 +            this$static.mode = 10;
10.14100 +            continue;
10.14101 +            break endtagloop;
10.14102 +        }
10.14103 +
10.14104 +      case 10:
10.14105 +        switch (group) {
10.14106 +          case 39:
10.14107 +            eltPos = $findLastOrRoot_0(this$static, name);
10.14108 +            if (eltPos == 0) {
10.14109 +              break endtagloop;
10.14110 +            }
10.14111 +
10.14112 +            $clearStackBackTo(this$static, eltPos);
10.14113 +            $pop(this$static);
10.14114 +            this$static.mode = 7;
10.14115 +            break endtagloop;
10.14116 +          case 34:
10.14117 +            eltPos = $findLastInTableScopeOrRootTbodyTheadTfoot(this$static);
10.14118 +            if (eltPos == 0) {
10.14119 +              break endtagloop;
10.14120 +            }
10.14121 +
10.14122 +            $clearStackBackTo(this$static, eltPos);
10.14123 +            $pop(this$static);
10.14124 +            this$static.mode = 7;
10.14125 +            continue;
10.14126 +            break endtagloop;
10.14127 +        }
10.14128 +
10.14129 +      case 7:
10.14130 +        switch (group) {
10.14131 +          case 34:
10.14132 +            eltPos = $findLast(this$static, 'table');
10.14133 +            if (eltPos == 2147483647) {
10.14134 +              break endtagloop;
10.14135 +            }
10.14136 +
10.14137 +            while (this$static.currentPtr >= eltPos) {
10.14138 +              $pop(this$static);
10.14139 +            }
10.14140 +
10.14141 +            $resetTheInsertionMode(this$static);
10.14142 +            break endtagloop;
10.14143 +        }
10.14144 +
10.14145 +      case 8:
10.14146 +        switch (group) {
10.14147 +          case 6:
10.14148 +            eltPos = $findLastInTableScope(this$static, 'caption');
10.14149 +            if (eltPos == 2147483647) {
10.14150 +              break endtagloop;
10.14151 +            }
10.14152 +
10.14153 +            $generateImpliedEndTags(this$static);
10.14154 +            while (this$static.currentPtr >= eltPos) {
10.14155 +              $pop(this$static);
10.14156 +            }
10.14157 +
10.14158 +            $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.14159 +            this$static.mode = 7;
10.14160 +            break endtagloop;
10.14161 +          case 34:
10.14162 +            eltPos = $findLastInTableScope(this$static, 'caption');
10.14163 +            if (eltPos == 2147483647) {
10.14164 +              break endtagloop;
10.14165 +            }
10.14166 +
10.14167 +            $generateImpliedEndTags(this$static);
10.14168 +            while (this$static.currentPtr >= eltPos) {
10.14169 +              $pop(this$static);
10.14170 +            }
10.14171 +
10.14172 +            $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.14173 +            this$static.mode = 7;
10.14174 +            continue;
10.14175 +            break endtagloop;
10.14176 +        }
10.14177 +
10.14178 +      case 12:
10.14179 +        switch (group) {
10.14180 +          case 40:
10.14181 +            eltPos = $findLastInTableScope(this$static, name);
10.14182 +            if (eltPos == 2147483647) {
10.14183 +              break endtagloop;
10.14184 +            }
10.14185 +
10.14186 +            $generateImpliedEndTags(this$static);
10.14187 +            while (this$static.currentPtr >= eltPos) {
10.14188 +              $pop(this$static);
10.14189 +            }
10.14190 +
10.14191 +            $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.14192 +            this$static.mode = 11;
10.14193 +            break endtagloop;
10.14194 +          case 34:
10.14195 +          case 39:
10.14196 +          case 37:
10.14197 +            if ($findLastInTableScope(this$static, name) == 2147483647) {
10.14198 +              break endtagloop;
10.14199 +            }
10.14200 +
10.14201 +            $closeTheCell(this$static, $findLastInTableScopeTdTh(this$static));
10.14202 +            continue;
10.14203 +            break endtagloop;
10.14204 +        }
10.14205 +
10.14206 +      case 21:
10.14207 +      case 6:
10.14208 +        switch (group) {
10.14209 +          case 3:
10.14210 +            if (!(this$static.currentPtr >= 1 && this$static.stack[1].group == 3)) {
10.14211 +              break endtagloop;
10.14212 +            }
10.14213 +
10.14214 +            this$static.mode = 15;
10.14215 +            break endtagloop;
10.14216 +          case 23:
10.14217 +            if (!(this$static.currentPtr >= 1 && this$static.stack[1].group == 3)) {
10.14218 +              break endtagloop;
10.14219 +            }
10.14220 +
10.14221 +            this$static.mode = 15;
10.14222 +            continue;
10.14223 +          case 50:
10.14224 +          case 46:
10.14225 +          case 44:
10.14226 +          case 61:
10.14227 +          case 51:
10.14228 +            eltPos = $findLastInScope(this$static, name);
10.14229 +            if (eltPos == 2147483647) {
10.14230 +            }
10.14231 +             else {
10.14232 +              $generateImpliedEndTags(this$static);
10.14233 +              while (this$static.currentPtr >= eltPos) {
10.14234 +                $pop(this$static);
10.14235 +              }
10.14236 +            }
10.14237 +
10.14238 +            break endtagloop;
10.14239 +          case 9:
10.14240 +            if (!this$static.formPointer) {
10.14241 +              break endtagloop;
10.14242 +            }
10.14243 +
10.14244 +            this$static.formPointer = null;
10.14245 +            eltPos = $findLastInScope(this$static, name);
10.14246 +            if (eltPos == 2147483647) {
10.14247 +              break endtagloop;
10.14248 +            }
10.14249 +
10.14250 +            $generateImpliedEndTags(this$static);
10.14251 +            $removeFromStack(this$static, eltPos);
10.14252 +            break endtagloop;
10.14253 +          case 29:
10.14254 +            eltPos = $findLastInScope(this$static, 'p');
10.14255 +            if (eltPos == 2147483647) {
10.14256 +              if (this$static.foreignFlag == 0) {
10.14257 +                while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
10.14258 +                  $pop(this$static);
10.14259 +                }
10.14260 +                this$static.foreignFlag = 1;
10.14261 +              }
10.14262 +              $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, ($clinit_91() , EMPTY_ATTRIBUTES));
10.14263 +              break endtagloop;
10.14264 +            }
10.14265 +
10.14266 +            $generateImpliedEndTagsExceptFor(this$static, 'p');
10.14267 +            while (this$static.currentPtr >= eltPos) {
10.14268 +              $pop(this$static);
10.14269 +            }
10.14270 +
10.14271 +            break endtagloop;
10.14272 +          case 41:
10.14273 +          case 15:
10.14274 +            eltPos = $findLastInScope(this$static, name);
10.14275 +            if (eltPos == 2147483647) {
10.14276 +            }
10.14277 +             else {
10.14278 +              $generateImpliedEndTagsExceptFor(this$static, name);
10.14279 +              while (this$static.currentPtr >= eltPos) {
10.14280 +                $pop(this$static);
10.14281 +              }
10.14282 +            }
10.14283 +
10.14284 +            break endtagloop;
10.14285 +          case 42:
10.14286 +            eltPos = $findLastInScopeHn(this$static);
10.14287 +            if (eltPos == 2147483647) {
10.14288 +            }
10.14289 +             else {
10.14290 +              $generateImpliedEndTags(this$static);
10.14291 +              while (this$static.currentPtr >= eltPos) {
10.14292 +                $pop(this$static);
10.14293 +              }
10.14294 +            }
10.14295 +
10.14296 +            break endtagloop;
10.14297 +          case 1:
10.14298 +          case 45:
10.14299 +          case 64:
10.14300 +          case 24:
10.14301 +            $adoptionAgencyEndTag(this$static, name);
10.14302 +            break endtagloop;
10.14303 +          case 5:
10.14304 +          case 63:
10.14305 +          case 43:
10.14306 +            eltPos = $findLastInScope(this$static, name);
10.14307 +            if (eltPos == 2147483647) {
10.14308 +            }
10.14309 +             else {
10.14310 +              $generateImpliedEndTags(this$static);
10.14311 +              while (this$static.currentPtr >= eltPos) {
10.14312 +                $pop(this$static);
10.14313 +              }
10.14314 +              $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.14315 +            }
10.14316 +
10.14317 +            break endtagloop;
10.14318 +          case 4:
10.14319 +            if (this$static.foreignFlag == 0) {
10.14320 +              while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
10.14321 +                $pop(this$static);
10.14322 +              }
10.14323 +              this$static.foreignFlag = 1;
10.14324 +            }
10.14325 +
10.14326 +            $reconstructTheActiveFormattingElements(this$static);
10.14327 +            $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, ($clinit_91() , EMPTY_ATTRIBUTES));
10.14328 +            break endtagloop;
10.14329 +          case 49:
10.14330 +          case 55:
10.14331 +          case 48:
10.14332 +          case 12:
10.14333 +          case 13:
10.14334 +          case 65:
10.14335 +          case 22:
10.14336 +          case 14:
10.14337 +          case 47:
10.14338 +          case 60:
10.14339 +          case 25:
10.14340 +          case 32:
10.14341 +          case 34:
10.14342 +          case 35:
10.14343 +            break endtagloop;
10.14344 +          case 26:
10.14345 +          default:if (name == this$static.stack[this$static.currentPtr].name_0) {
10.14346 +              $pop(this$static);
10.14347 +              break endtagloop;
10.14348 +            }
10.14349 +
10.14350 +            eltPos = this$static.currentPtr;
10.14351 +            for (;;) {
10.14352 +              node = this$static.stack[eltPos];
10.14353 +              if (node.name_0 == name) {
10.14354 +                $generateImpliedEndTags(this$static);
10.14355 +                while (this$static.currentPtr >= eltPos) {
10.14356 +                  $pop(this$static);
10.14357 +                }
10.14358 +                break endtagloop;
10.14359 +              }
10.14360 +               else if (node.scoping || node.special) {
10.14361 +                break endtagloop;
10.14362 +              }
10.14363 +              --eltPos;
10.14364 +            }
10.14365 +
10.14366 +        }
10.14367 +
10.14368 +      case 9:
10.14369 +        switch (group) {
10.14370 +          case 8:
10.14371 +            if (this$static.currentPtr == 0) {
10.14372 +              break endtagloop;
10.14373 +            }
10.14374 +
10.14375 +            $pop(this$static);
10.14376 +            this$static.mode = 7;
10.14377 +            break endtagloop;
10.14378 +          case 7:
10.14379 +            break endtagloop;
10.14380 +          default:if (this$static.currentPtr == 0) {
10.14381 +              break endtagloop;
10.14382 +            }
10.14383 +
10.14384 +            $pop(this$static);
10.14385 +            this$static.mode = 7;
10.14386 +            continue;
10.14387 +        }
10.14388 +
10.14389 +      case 14:
10.14390 +        switch (group) {
10.14391 +          case 6:
10.14392 +          case 34:
10.14393 +          case 39:
10.14394 +          case 37:
10.14395 +          case 40:
10.14396 +            if ($findLastInTableScope(this$static, name) != 2147483647) {
10.14397 +              $endSelect(this$static);
10.14398 +              continue;
10.14399 +            }
10.14400 +             else {
10.14401 +              break endtagloop;
10.14402 +            }
10.14403 +
10.14404 +        }
10.14405 +
10.14406 +      case 13:
10.14407 +        switch (group) {
10.14408 +          case 28:
10.14409 +            if ('option' == this$static.stack[this$static.currentPtr].name_0) {
10.14410 +              $pop(this$static);
10.14411 +              break endtagloop;
10.14412 +            }
10.14413 +             else {
10.14414 +              break endtagloop;
10.14415 +            }
10.14416 +
10.14417 +          case 27:
10.14418 +            if ('option' == this$static.stack[this$static.currentPtr].name_0 && 'optgroup' == this$static.stack[this$static.currentPtr - 1].name_0) {
10.14419 +              $pop(this$static);
10.14420 +            }
10.14421 +
10.14422 +            if ('optgroup' == this$static.stack[this$static.currentPtr].name_0) {
10.14423 +              $pop(this$static);
10.14424 +            }
10.14425 +             else {
10.14426 +            }
10.14427 +
10.14428 +            break endtagloop;
10.14429 +          case 32:
10.14430 +            $endSelect(this$static);
10.14431 +            break endtagloop;
10.14432 +          default:break endtagloop;
10.14433 +        }
10.14434 +
10.14435 +      case 15:
10.14436 +        switch (group) {
10.14437 +          case 23:
10.14438 +            if (this$static.fragment) {
10.14439 +              break endtagloop;
10.14440 +            }
10.14441 +             else {
10.14442 +              this$static.mode = 18;
10.14443 +              break endtagloop;
10.14444 +            }
10.14445 +
10.14446 +          default:this$static.mode = 6;
10.14447 +            continue;
10.14448 +        }
10.14449 +
10.14450 +      case 16:
10.14451 +        switch (group) {
10.14452 +          case 11:
10.14453 +            if (this$static.currentPtr == 0) {
10.14454 +              break endtagloop;
10.14455 +            }
10.14456 +
10.14457 +            $pop(this$static);
10.14458 +            if (!this$static.fragment && 'frameset' != this$static.stack[this$static.currentPtr].name_0) {
10.14459 +              this$static.mode = 17;
10.14460 +            }
10.14461 +
10.14462 +            break endtagloop;
10.14463 +          default:break endtagloop;
10.14464 +        }
10.14465 +
10.14466 +      case 17:
10.14467 +        switch (group) {
10.14468 +          case 23:
10.14469 +            this$static.mode = 19;
10.14470 +            break endtagloop;
10.14471 +          default:break endtagloop;
10.14472 +        }
10.14473 +
10.14474 +      case 0:
10.14475 +        $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.14476 +        this$static.mode = 1;
10.14477 +        continue;
10.14478 +      case 1:
10.14479 +        $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
10.14480 +        this$static.mode = 2;
10.14481 +        continue;
10.14482 +      case 2:
10.14483 +        switch (group) {
10.14484 +          case 20:
10.14485 +          case 4:
10.14486 +          case 23:
10.14487 +          case 3:
10.14488 +            $appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
10.14489 +            this$static.mode = 3;
10.14490 +            continue;
10.14491 +          default:break endtagloop;
10.14492 +        }
10.14493 +
10.14494 +      case 3:
10.14495 +        switch (group) {
10.14496 +          case 20:
10.14497 +            $pop(this$static);
10.14498 +            this$static.mode = 5;
10.14499 +            break endtagloop;
10.14500 +          case 4:
10.14501 +          case 23:
10.14502 +          case 3:
10.14503 +            $pop(this$static);
10.14504 +            this$static.mode = 5;
10.14505 +            continue;
10.14506 +          default:break endtagloop;
10.14507 +        }
10.14508 +
10.14509 +      case 4:
10.14510 +        switch (group) {
10.14511 +          case 26:
10.14512 +            $pop(this$static);
10.14513 +            this$static.mode = 3;
10.14514 +            break endtagloop;
10.14515 +          case 4:
10.14516 +            $pop(this$static);
10.14517 +            this$static.mode = 3;
10.14518 +            continue;
10.14519 +          default:break endtagloop;
10.14520 +        }
10.14521 +
10.14522 +      case 5:
10.14523 +        switch (group) {
10.14524 +          case 23:
10.14525 +          case 3:
10.14526 +          case 4:
10.14527 +            $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
10.14528 +            this$static.mode = 21;
10.14529 +            continue;
10.14530 +          default:break endtagloop;
10.14531 +        }
10.14532 +
10.14533 +      case 18:
10.14534 +        this$static.mode = 6;
10.14535 +        continue;
10.14536 +      case 19:
10.14537 +        this$static.mode = 16;
10.14538 +        continue;
10.14539 +      case 20:
10.14540 +        if (this$static.originalMode == 5) {
10.14541 +          $pop(this$static);
10.14542 +        }
10.14543 +
10.14544 +        $pop(this$static);
10.14545 +        this$static.mode = this$static.originalMode;
10.14546 +        break endtagloop;
10.14547 +    }
10.14548 +  }
10.14549 +  if (this$static.foreignFlag == 0 && !$hasForeignInScope(this$static)) {
10.14550 +    this$static.foreignFlag = 1;
10.14551 +  }
10.14552 +}
10.14553 +
10.14554 +function $endTokenization(this$static){
10.14555 +  this$static.formPointer = null;
10.14556 +  this$static.headPointer = null;
10.14557 +  while (this$static.currentPtr > -1) {
10.14558 +    --this$static.stack[this$static.currentPtr].refcount;
10.14559 +    --this$static.currentPtr;
10.14560 +  }
10.14561 +  this$static.stack = null;
10.14562 +  while (this$static.listPtr > -1) {
10.14563 +    if (this$static.listOfActiveFormattingElements[this$static.listPtr]) {
10.14564 +      --this$static.listOfActiveFormattingElements[this$static.listPtr].refcount;
10.14565 +    }
10.14566 +    --this$static.listPtr;
10.14567 +  }
10.14568 +  this$static.listOfActiveFormattingElements = null;
10.14569 +  $clearImpl(this$static.idLocations);
10.14570 +  this$static.charBuffer = null;
10.14571 +}
10.14572 +
10.14573 +function $eof_0(this$static){
10.14574 +  var group, i;
10.14575 +  $flushCharacters(this$static);
10.14576 +  switch (this$static.foreignFlag) {
10.14577 +    case 0:
10.14578 +      while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
10.14579 +        $popOnEof(this$static);
10.14580 +      }
10.14581 +
10.14582 +      this$static.foreignFlag = 1;
10.14583 +  }
10.14584 +  eofloop: for (;;) {
10.14585 +    switch (this$static.mode) {
10.14586 +      case 0:
10.14587 +        $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.14588 +        this$static.mode = 1;
10.14589 +        continue;
10.14590 +      case 1:
10.14591 +        $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
10.14592 +        this$static.mode = 2;
10.14593 +        continue;
10.14594 +      case 2:
10.14595 +        $appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
10.14596 +        this$static.mode = 3;
10.14597 +        continue;
10.14598 +      case 3:
10.14599 +        while (this$static.currentPtr > 0) {
10.14600 +          $popOnEof(this$static);
10.14601 +        }
10.14602 +
10.14603 +        this$static.mode = 5;
10.14604 +        continue;
10.14605 +      case 4:
10.14606 +        while (this$static.currentPtr > 1) {
10.14607 +          $popOnEof(this$static);
10.14608 +        }
10.14609 +
10.14610 +        this$static.mode = 3;
10.14611 +        continue;
10.14612 +      case 5:
10.14613 +        $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
10.14614 +        this$static.mode = 6;
10.14615 +        continue;
10.14616 +      case 9:
10.14617 +        if (this$static.currentPtr == 0) {
10.14618 +          break eofloop;
10.14619 +        }
10.14620 +         else {
10.14621 +          $popOnEof(this$static);
10.14622 +          this$static.mode = 7;
10.14623 +          continue;
10.14624 +        }
10.14625 +
10.14626 +      case 21:
10.14627 +      case 8:
10.14628 +      case 12:
10.14629 +      case 6:
10.14630 +        openelementloop: for (i = this$static.currentPtr; i >= 0; --i) {
10.14631 +          group = this$static.stack[i].group;
10.14632 +          switch (group) {
10.14633 +            case 41:
10.14634 +            case 15:
10.14635 +            case 29:
10.14636 +            case 39:
10.14637 +            case 40:
10.14638 +            case 3:
10.14639 +            case 23:
10.14640 +              break;
10.14641 +            default:break openelementloop;
10.14642 +          }
10.14643 +        }
10.14644 +
10.14645 +        break eofloop;
10.14646 +      case 20:
10.14647 +        if (this$static.originalMode == 5) {
10.14648 +          $popOnEof(this$static);
10.14649 +        }
10.14650 +
10.14651 +        $popOnEof(this$static);
10.14652 +        this$static.mode = this$static.originalMode;
10.14653 +        continue;
10.14654 +      case 10:
10.14655 +      case 11:
10.14656 +      case 7:
10.14657 +      case 13:
10.14658 +      case 14:
10.14659 +      case 16:
10.14660 +        break eofloop;
10.14661 +      case 15:
10.14662 +      case 17:
10.14663 +      case 18:
10.14664 +      case 19:
10.14665 +      default:if (this$static.currentPtr == 0) {
10.14666 +          fromDouble((new Date()).getTime());
10.14667 +        }
10.14668 +
10.14669 +        break eofloop;
10.14670 +    }
10.14671 +  }
10.14672 +  while (this$static.currentPtr > 0) {
10.14673 +    $popOnEof(this$static);
10.14674 +  }
10.14675 +  if (!this$static.fragment) {
10.14676 +    $popOnEof(this$static);
10.14677 +  }
10.14678 +}
10.14679 +
10.14680 +function $fatal_0(this$static, e){
10.14681 +  var spe;
10.14682 +  spe = $SAXParseException_0(new SAXParseException(), e.detailMessage, this$static.tokenizer, e);
10.14683 +  throw spe;
10.14684 +}
10.14685 +
10.14686 +function $fatal_1(this$static, s){
10.14687 +  var spe;
10.14688 +  spe = $SAXParseException(new SAXParseException(), s, this$static.tokenizer);
10.14689 +  throw spe;
10.14690 +}
10.14691 +
10.14692 +function $findInListOfActiveFormattingElements(this$static, node){
10.14693 +  var i;
10.14694 +  for (i = this$static.listPtr; i >= 0; --i) {
10.14695 +    if (node == this$static.listOfActiveFormattingElements[i]) {
10.14696 +      return i;
10.14697 +    }
10.14698 +  }
10.14699 +  return -1;
10.14700 +}
10.14701 +
10.14702 +function $findInListOfActiveFormattingElementsContainsBetweenEndAndLastMarker(this$static, name){
10.14703 +  var i, node;
10.14704 +  for (i = this$static.listPtr; i >= 0; --i) {
10.14705 +    node = this$static.listOfActiveFormattingElements[i];
10.14706 +    if (!node) {
10.14707 +      return -1;
10.14708 +    }
10.14709 +     else if (node.name_0 == name) {
10.14710 +      return i;
10.14711 +    }
10.14712 +  }
10.14713 +  return -1;
10.14714 +}
10.14715 +
10.14716 +function $findLast(this$static, name){
10.14717 +  var i;
10.14718 +  for (i = this$static.currentPtr; i > 0; --i) {
10.14719 +    if (this$static.stack[i].name_0 == name) {
10.14720 +      return i;
10.14721 +    }
10.14722 +  }
10.14723 +  return 2147483647;
10.14724 +}
10.14725 +
10.14726 +function $findLastInScope(this$static, name){
10.14727 +  var i;
10.14728 +  for (i = this$static.currentPtr; i > 0; --i) {
10.14729 +    if (this$static.stack[i].name_0 == name) {
10.14730 +      return i;
10.14731 +    }
10.14732 +     else if (this$static.stack[i].scoping) {
10.14733 +      return 2147483647;
10.14734 +    }
10.14735 +  }
10.14736 +  return 2147483647;
10.14737 +}
10.14738 +
10.14739 +function $findLastInScopeHn(this$static){
10.14740 +  var i;
10.14741 +  for (i = this$static.currentPtr; i > 0; --i) {
10.14742 +    if (this$static.stack[i].group == 42) {
10.14743 +      return i;
10.14744 +    }
10.14745 +     else if (this$static.stack[i].scoping) {
10.14746 +      return 2147483647;
10.14747 +    }
10.14748 +  }
10.14749 +  return 2147483647;
10.14750 +}
10.14751 +
10.14752 +function $findLastInTableScope(this$static, name){
10.14753 +  var i;
10.14754 +  for (i = this$static.currentPtr; i > 0; --i) {
10.14755 +    if (this$static.stack[i].name_0 == name) {
10.14756 +      return i;
10.14757 +    }
10.14758 +     else if (this$static.stack[i].name_0 == 'table') {
10.14759 +      return 2147483647;
10.14760 +    }
10.14761 +  }
10.14762 +  return 2147483647;
10.14763 +}
10.14764 +
10.14765 +function $findLastInTableScopeOrRootTbodyTheadTfoot(this$static){
10.14766 +  var i;
10.14767 +  for (i = this$static.currentPtr; i > 0; --i) {
10.14768 +    if (this$static.stack[i].group == 39) {
10.14769 +      return i;
10.14770 +    }
10.14771 +  }
10.14772 +  return 0;
10.14773 +}
10.14774 +
10.14775 +function $findLastInTableScopeTdTh(this$static){
10.14776 +  var i, name;
10.14777 +  for (i = this$static.currentPtr; i > 0; --i) {
10.14778 +    name = this$static.stack[i].name_0;
10.14779 +    if ('td' == name || 'th' == name) {
10.14780 +      return i;
10.14781 +    }
10.14782 +     else if (name == 'table') {
10.14783 +      return 2147483647;
10.14784 +    }
10.14785 +  }
10.14786 +  return 2147483647;
10.14787 +}
10.14788 +
10.14789 +function $findLastOrRoot_0(this$static, name){
10.14790 +  var i;
10.14791 +  for (i = this$static.currentPtr; i > 0; --i) {
10.14792 +    if (this$static.stack[i].name_0 == name) {
10.14793 +      return i;
10.14794 +    }
10.14795 +  }
10.14796 +  return 0;
10.14797 +}
10.14798 +
10.14799 +function $findLastOrRoot(this$static, group){
10.14800 +  var i;
10.14801 +  for (i = this$static.currentPtr; i > 0; --i) {
10.14802 +    if (this$static.stack[i].group == group) {
10.14803 +      return i;
10.14804 +    }
10.14805 +  }
10.14806 +  return 0;
10.14807 +}
10.14808 +
10.14809 +function $flushCharacters(this$static){
10.14810 +  var current, elt, eltPos, node;
10.14811 +  if (this$static.charBufferLen > 0) {
10.14812 +    current = this$static.stack[this$static.currentPtr];
10.14813 +    if (current.fosterParenting && $charBufferContainsNonWhitespace(this$static)) {
10.14814 +      eltPos = $findLastOrRoot(this$static, 34);
10.14815 +      node = this$static.stack[eltPos];
10.14816 +      elt = node.node;
10.14817 +      if (eltPos == 0) {
10.14818 +        $appendCharacters(this$static, elt, valueOf_1(this$static.charBuffer, 0, this$static.charBufferLen));
10.14819 +        this$static.charBufferLen = 0;
10.14820 +        return;
10.14821 +      }
10.14822 +      $insertFosterParentedCharacters_0(this$static, this$static.charBuffer, 0, this$static.charBufferLen, elt, this$static.stack[eltPos - 1].node);
10.14823 +      this$static.charBufferLen = 0;
10.14824 +      return;
10.14825 +    }
10.14826 +    $appendCharacters(this$static, this$static.stack[this$static.currentPtr].node, valueOf_1(this$static.charBuffer, 0, this$static.charBufferLen));
10.14827 +    this$static.charBufferLen = 0;
10.14828 +  }
10.14829 +}
10.14830 +
10.14831 +function $generateImpliedEndTags(this$static){
10.14832 +  for (;;) {
10.14833 +    switch (this$static.stack[this$static.currentPtr].group) {
10.14834 +      case 29:
10.14835 +      case 15:
10.14836 +      case 41:
10.14837 +      case 28:
10.14838 +      case 27:
10.14839 +      case 53:
10.14840 +        $pop(this$static);
10.14841 +        continue;
10.14842 +      default:return;
10.14843 +    }
10.14844 +  }
10.14845 +}
10.14846 +
10.14847 +function $generateImpliedEndTagsExceptFor(this$static, name){
10.14848 +  var node;
10.14849 +  for (;;) {
10.14850 +    node = this$static.stack[this$static.currentPtr];
10.14851 +    switch (node.group) {
10.14852 +      case 29:
10.14853 +      case 15:
10.14854 +      case 41:
10.14855 +      case 28:
10.14856 +      case 27:
10.14857 +      case 53:
10.14858 +        if (node.name_0 == name) {
10.14859 +          return;
10.14860 +        }
10.14861 +
10.14862 +        $pop(this$static);
10.14863 +        continue;
10.14864 +      default:return;
10.14865 +    }
10.14866 +  }
10.14867 +}
10.14868 +
10.14869 +function $hasForeignInScope(this$static){
10.14870 +  var i;
10.14871 +  for (i = this$static.currentPtr; i > 0; --i) {
10.14872 +    if (this$static.stack[i].ns != 'http://www.w3.org/1999/xhtml') {
10.14873 +      return true;
10.14874 +    }
10.14875 +     else if (this$static.stack[i].scoping) {
10.14876 +      return false;
10.14877 +    }
10.14878 +  }
10.14879 +  return false;
10.14880 +}
10.14881 +
10.14882 +function $implicitlyCloseP(this$static){
10.14883 +  var eltPos;
10.14884 +  eltPos = $findLastInScope(this$static, 'p');
10.14885 +  if (eltPos == 2147483647) {
10.14886 +    return;
10.14887 +  }
10.14888 +  $generateImpliedEndTagsExceptFor(this$static, 'p');
10.14889 +  while (this$static.currentPtr >= eltPos) {
10.14890 +    $pop(this$static);
10.14891 +  }
10.14892 +}
10.14893 +
10.14894 +function $insertIntoFosterParent(this$static, child){
10.14895 +  var elt, eltPos, node;
10.14896 +  eltPos = $findLastOrRoot(this$static, 34);
10.14897 +  node = this$static.stack[eltPos];
10.14898 +  elt = node.node;
10.14899 +  if (eltPos == 0) {
10.14900 +    $appendElement(this$static, child, elt);
10.14901 +    return;
10.14902 +  }
10.14903 +  $insertFosterParentedChild(this$static, child, elt, this$static.stack[eltPos - 1].node);
10.14904 +}
10.14905 +
10.14906 +function $insertIntoListOfActiveFormattingElements(this$static, formattingClone, bookmark){
10.14907 +  ++formattingClone.refcount;
10.14908 +  if (bookmark <= this$static.listPtr) {
10.14909 +    arraycopy(this$static.listOfActiveFormattingElements, bookmark, this$static.listOfActiveFormattingElements, bookmark + 1, this$static.listPtr - bookmark + 1);
10.14910 +  }
10.14911 +  ++this$static.listPtr;
10.14912 +  this$static.listOfActiveFormattingElements[bookmark] = formattingClone;
10.14913 +}
10.14914 +
10.14915 +function $insertIntoStack(this$static, node, position){
10.14916 +  if (position == this$static.currentPtr + 1) {
10.14917 +    $flushCharacters(this$static);
10.14918 +    $push_0(this$static, node);
10.14919 +  }
10.14920 +   else {
10.14921 +    arraycopy(this$static.stack, position, this$static.stack, position + 1, this$static.currentPtr - position + 1);
10.14922 +    ++this$static.currentPtr;
10.14923 +    this$static.stack[position] = node;
10.14924 +  }
10.14925 +}
10.14926 +
10.14927 +function $isAlmostStandards(publicIdentifier, systemIdentifier){
10.14928 +  if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd xhtml 1.0 transitional//en', publicIdentifier)) {
10.14929 +    return true;
10.14930 +  }
10.14931 +  if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd xhtml 1.0 frameset//en', publicIdentifier)) {
10.14932 +    return true;
10.14933 +  }
10.14934 +  if (systemIdentifier != null) {
10.14935 +    if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 transitional//en', publicIdentifier)) {
10.14936 +      return true;
10.14937 +    }
10.14938 +    if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 frameset//en', publicIdentifier)) {
10.14939 +      return true;
10.14940 +    }
10.14941 +  }
10.14942 +  return false;
10.14943 +}
10.14944 +
10.14945 +function $isHtml4Doctype(publicIdentifier){
10.14946 +  if (publicIdentifier != null && binarySearch_0(HTML4_PUBLIC_IDS, publicIdentifier, ($clinit_61() , NATURAL)) > -1) {
10.14947 +    return true;
10.14948 +  }
10.14949 +  return false;
10.14950 +}
10.14951 +
10.14952 +function $isInStack(this$static, node){
10.14953 +  var i;
10.14954 +  for (i = this$static.currentPtr; i >= 0; --i) {
10.14955 +    if (this$static.stack[i] == node) {
10.14956 +      return true;
10.14957 +    }
10.14958 +  }
10.14959 +  return false;
10.14960 +}
10.14961 +
10.14962 +function $isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks){
10.14963 +  var i;
10.14964 +  if (forceQuirks) {
10.14965 +    return true;
10.14966 +  }
10.14967 +  if (name != 'html') {
10.14968 +    return true;
10.14969 +  }
10.14970 +  if (publicIdentifier != null) {
10.14971 +    for (i = 0; i < QUIRKY_PUBLIC_IDS.length; ++i) {
10.14972 +      if (lowerCaseLiteralIsPrefixOfIgnoreAsciiCaseString(QUIRKY_PUBLIC_IDS[i], publicIdentifier)) {
10.14973 +        return true;
10.14974 +      }
10.14975 +    }
10.14976 +    if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3o//dtd w3 html strict 3.0//en//', publicIdentifier) || lowerCaseLiteralEqualsIgnoreAsciiCaseString('-/w3c/dtd html 4.0 transitional/en', publicIdentifier) || lowerCaseLiteralEqualsIgnoreAsciiCaseString('html', publicIdentifier)) {
10.14977 +      return true;
10.14978 +    }
10.14979 +  }
10.14980 +  if (systemIdentifier == null) {
10.14981 +    if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 transitional//en', publicIdentifier)) {
10.14982 +      return true;
10.14983 +    }
10.14984 +     else if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 frameset//en', publicIdentifier)) {
10.14985 +      return true;
10.14986 +    }
10.14987 +  }
10.14988 +   else if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd', systemIdentifier)) {
10.14989 +    return true;
10.14990 +  }
10.14991 +  return false;
10.14992 +}
10.14993 +
10.14994 +function $pop(this$static){
10.14995 +  var node;
10.14996 +  $flushCharacters(this$static);
10.14997 +  node = this$static.stack[this$static.currentPtr];
10.14998 +  --this$static.currentPtr;
10.14999 +  $elementPopped(this$static, node.ns, node.popName, node.node);
10.15000 +  --node.refcount;
10.15001 +}
10.15002 +
10.15003 +function $popOnEof(this$static){
10.15004 +  var node;
10.15005 +  $flushCharacters(this$static);
10.15006 +  node = this$static.stack[this$static.currentPtr];
10.15007 +  --this$static.currentPtr;
10.15008 +  $elementPopped(this$static, node.ns, node.popName, node.node);
10.15009 +  --node.refcount;
10.15010 +}
10.15011 +
10.15012 +function $push_0(this$static, node){
10.15013 +  var newStack;
10.15014 +  ++this$static.currentPtr;
10.15015 +  if (this$static.currentPtr == this$static.stack.length) {
10.15016 +    newStack = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, this$static.stack.length + 64, 0);
10.15017 +    arraycopy(this$static.stack, 0, newStack, 0, this$static.stack.length);
10.15018 +    this$static.stack = newStack;
10.15019 +  }
10.15020 +  this$static.stack[this$static.currentPtr] = node;
10.15021 +}
10.15022 +
10.15023 +function $pushHeadPointerOntoStack(this$static){
10.15024 +  $flushCharacters(this$static);
10.15025 +  if (!this$static.headPointer) {
10.15026 +    $push_0(this$static, this$static.stack[this$static.currentPtr]);
10.15027 +  }
10.15028 +   else {
10.15029 +    $push_0(this$static, $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HEAD), this$static.headPointer));
10.15030 +  }
10.15031 +}
10.15032 +
10.15033 +function $reconstructTheActiveFormattingElements(this$static){
10.15034 +  var clone, currentNode, entry, entryClone, entryPos, mostRecent;
10.15035 +  if (this$static.listPtr == -1) {
10.15036 +    return;
10.15037 +  }
10.15038 +  mostRecent = this$static.listOfActiveFormattingElements[this$static.listPtr];
10.15039 +  if (!mostRecent || $isInStack(this$static, mostRecent)) {
10.15040 +    return;
10.15041 +  }
10.15042 +  entryPos = this$static.listPtr;
10.15043 +  for (;;) {
10.15044 +    --entryPos;
10.15045 +    if (entryPos == -1) {
10.15046 +      break;
10.15047 +    }
10.15048 +    if (!this$static.listOfActiveFormattingElements[entryPos]) {
10.15049 +      break;
10.15050 +    }
10.15051 +    if ($isInStack(this$static, this$static.listOfActiveFormattingElements[entryPos])) {
10.15052 +      break;
10.15053 +    }
10.15054 +  }
10.15055 +  if (entryPos < this$static.listPtr) {
10.15056 +    $flushCharacters(this$static);
10.15057 +  }
10.15058 +  while (entryPos < this$static.listPtr) {
10.15059 +    ++entryPos;
10.15060 +    entry = this$static.listOfActiveFormattingElements[entryPos];
10.15061 +    clone = $createElement(this$static, 'http://www.w3.org/1999/xhtml', entry.name_0, $cloneAttributes(entry.attributes));
10.15062 +    entryClone = $StackNode(new StackNode(), entry.group, entry.ns, entry.name_0, clone, entry.scoping, entry.special, entry.fosterParenting, entry.popName, entry.attributes);
10.15063 +    entry.attributes = null;
10.15064 +    currentNode = this$static.stack[this$static.currentPtr];
10.15065 +    if (currentNode.fosterParenting) {
10.15066 +      $insertIntoFosterParent(this$static, clone);
10.15067 +    }
10.15068 +     else {
10.15069 +      $appendElement(this$static, clone, currentNode.node);
10.15070 +    }
10.15071 +    $push_0(this$static, entryClone);
10.15072 +    this$static.listOfActiveFormattingElements[entryPos] = entryClone;
10.15073 +    --entry.refcount;
10.15074 +    ++entryClone.refcount;
10.15075 +  }
10.15076 +}
10.15077 +
10.15078 +function $removeFromListOfActiveFormattingElements(this$static, pos){
10.15079 +  --this$static.listOfActiveFormattingElements[pos].refcount;
10.15080 +  if (pos == this$static.listPtr) {
10.15081 +    --this$static.listPtr;
10.15082 +    return;
10.15083 +  }
10.15084 +  arraycopy(this$static.listOfActiveFormattingElements, pos + 1, this$static.listOfActiveFormattingElements, pos, this$static.listPtr - pos);
10.15085 +  --this$static.listPtr;
10.15086 +}
10.15087 +
10.15088 +function $removeFromStack(this$static, pos){
10.15089 +  if (this$static.currentPtr == pos) {
10.15090 +    $pop(this$static);
10.15091 +  }
10.15092 +   else {
10.15093 +    --this$static.stack[pos].refcount;
10.15094 +    arraycopy(this$static.stack, pos + 1, this$static.stack, pos, this$static.currentPtr - pos);
10.15095 +    --this$static.currentPtr;
10.15096 +  }
10.15097 +}
10.15098 +
10.15099 +function $removeFromStack_0(this$static, node){
10.15100 +  var pos;
10.15101 +  if (this$static.stack[this$static.currentPtr] == node) {
10.15102 +    $pop(this$static);
10.15103 +  }
10.15104 +   else {
10.15105 +    pos = this$static.currentPtr - 1;
10.15106 +    while (pos >= 0 && this$static.stack[pos] != node) {
10.15107 +      --pos;
10.15108 +    }
10.15109 +    if (pos == -1) {
10.15110 +      return;
10.15111 +    }
10.15112 +    --node.refcount;
10.15113 +    arraycopy(this$static.stack, pos + 1, this$static.stack, pos, this$static.currentPtr - pos);
10.15114 +    --this$static.currentPtr;
10.15115 +  }
10.15116 +}
10.15117 +
10.15118 +function $resetTheInsertionMode(this$static){
10.15119 +  var i, name, node;
10.15120 +  this$static.foreignFlag = 1;
10.15121 +  for (i = this$static.currentPtr; i >= 0; --i) {
10.15122 +    node = this$static.stack[i];
10.15123 +    name = node.name_0;
10.15124 +    if (i == 0) {
10.15125 +      if (this$static.contextNamespace == 'http://www.w3.org/1999/xhtml' && (this$static.contextName == 'td' || this$static.contextName == 'th')) {
10.15126 +        this$static.mode = 6;
10.15127 +        return;
10.15128 +      }
10.15129 +       else {
10.15130 +        name = this$static.contextName;
10.15131 +      }
10.15132 +    }
10.15133 +    if ('select' == name) {
10.15134 +      this$static.mode = 13;
10.15135 +      return;
10.15136 +    }
10.15137 +     else if ('td' == name || 'th' == name) {
10.15138 +      this$static.mode = 12;
10.15139 +      return;
10.15140 +    }
10.15141 +     else if ('tr' == name) {
10.15142 +      this$static.mode = 11;
10.15143 +      return;
10.15144 +    }
10.15145 +     else if ('tbody' == name || 'thead' == name || 'tfoot' == name) {
10.15146 +      this$static.mode = 10;
10.15147 +      return;
10.15148 +    }
10.15149 +     else if ('caption' == name) {
10.15150 +      this$static.mode = 8;
10.15151 +      return;
10.15152 +    }
10.15153 +     else if ('colgroup' == name) {
10.15154 +      this$static.mode = 9;
10.15155 +      return;
10.15156 +    }
10.15157 +     else if ('table' == name) {
10.15158 +      this$static.mode = 7;
10.15159 +      return;
10.15160 +    }
10.15161 +     else if ('http://www.w3.org/1999/xhtml' != node.ns) {
10.15162 +      this$static.foreignFlag = 0;
10.15163 +      this$static.mode = 6;
10.15164 +      return;
10.15165 +    }
10.15166 +     else if ('head' == name) {
10.15167 +      this$static.mode = 6;
10.15168 +      return;
10.15169 +    }
10.15170 +     else if ('body' == name) {
10.15171 +      this$static.mode = 6;
10.15172 +      return;
10.15173 +    }
10.15174 +     else if ('frameset' == name) {
10.15175 +      this$static.mode = 16;
10.15176 +      return;
10.15177 +    }
10.15178 +     else if ('html' == name) {
10.15179 +      if (!this$static.headPointer) {
10.15180 +        this$static.mode = 2;
10.15181 +      }
10.15182 +       else {
10.15183 +        this$static.mode = 5;
10.15184 +      }
10.15185 +      return;
10.15186 +    }
10.15187 +     else if (i == 0) {
10.15188 +      this$static.mode = 6;
10.15189 +      return;
10.15190 +    }
10.15191 +  }
10.15192 +}
10.15193 +
10.15194 +function $setFragmentContext(this$static, context){
10.15195 +  this$static.contextName = context;
10.15196 +  this$static.contextNamespace = 'http://www.w3.org/1999/xhtml';
10.15197 +  this$static.fragment = false;
10.15198 +  this$static.quirks = false;
10.15199 +}
10.15200 +
10.15201 +function $startTag(this$static, elementName, attributes, selfClosing){
10.15202 +  var actionIndex, activeA, activeAPos, attributeQName, currGroup, currNs, currentNode, eltPos, formAttrs, group, i, inputAttributes, name, needsPostProcessing, node, prompt, promptIndex, current, elt_53;
10.15203 +  this$static.needToDropLF = false;
10.15204 +  needsPostProcessing = false;
10.15205 +  starttagloop: for (;;) {
10.15206 +    group = elementName.group;
10.15207 +    name = elementName.name_0;
10.15208 +    switch (this$static.foreignFlag) {
10.15209 +      case 0:
10.15210 +        currentNode = this$static.stack[this$static.currentPtr];
10.15211 +        currNs = currentNode.ns;
10.15212 +        currGroup = currentNode.group;
10.15213 +        if ('http://www.w3.org/1999/xhtml' == currNs || 'http://www.w3.org/1998/Math/MathML' == currNs && (56 != group && 57 == currGroup || 19 == group && 58 == currGroup) || 'http://www.w3.org/2000/svg' == currNs && (36 == currGroup || 59 == currGroup)) {
10.15214 +          needsPostProcessing = true;
10.15215 +        }
10.15216 +         else {
10.15217 +          switch (group) {
10.15218 +            case 45:
10.15219 +            case 50:
10.15220 +            case 3:
10.15221 +            case 4:
10.15222 +            case 52:
10.15223 +            case 41:
10.15224 +            case 46:
10.15225 +            case 48:
10.15226 +            case 42:
10.15227 +            case 20:
10.15228 +            case 22:
10.15229 +            case 15:
10.15230 +            case 18:
10.15231 +            case 24:
10.15232 +            case 29:
10.15233 +            case 44:
10.15234 +            case 34:
10.15235 +              while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
10.15236 +                $pop(this$static);
10.15237 +              }
10.15238 +
10.15239 +              this$static.foreignFlag = 1;
10.15240 +              continue starttagloop;
10.15241 +            case 64:
10.15242 +              if ($contains(attributes, ($clinit_87() , COLOR)) || $contains(attributes, FACE) || $contains(attributes, SIZE)) {
10.15243 +                while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
10.15244 +                  $pop(this$static);
10.15245 +                }
10.15246 +                this$static.foreignFlag = 1;
10.15247 +                continue starttagloop;
10.15248 +              }
10.15249 +
10.15250 +            default:if ('http://www.w3.org/2000/svg' == currNs) {
10.15251 +                attributes.mode = 2;
10.15252 +                if (selfClosing) {
10.15253 +                  $appendVoidElementToCurrentMayFosterCamelCase(this$static, currNs, elementName, attributes);
10.15254 +                  selfClosing = false;
10.15255 +                }
10.15256 +                 else {
10.15257 +                  $appendToCurrentNodeAndPushElementMayFosterCamelCase(this$static, currNs, elementName, attributes);
10.15258 +                }
10.15259 +                attributes = null;
10.15260 +                break starttagloop;
10.15261 +              }
10.15262 +               else {
10.15263 +                attributes.mode = 1;
10.15264 +                if (selfClosing) {
10.15265 +                  $appendVoidElementToCurrentMayFoster_0(this$static, currNs, elementName, attributes);
10.15266 +                  selfClosing = false;
10.15267 +                }
10.15268 +                 else {
10.15269 +                  $appendToCurrentNodeAndPushElementMayFosterNoScoping(this$static, currNs, elementName, attributes);
10.15270 +                }
10.15271 +                attributes = null;
10.15272 +                break starttagloop;
10.15273 +              }
10.15274 +
10.15275 +          }
10.15276 +        }
10.15277 +
10.15278 +      default:switch (this$static.mode) {
10.15279 +          case 10:
10.15280 +            switch (group) {
10.15281 +              case 37:
10.15282 +                $clearStackBackTo(this$static, $findLastInTableScopeOrRootTbodyTheadTfoot(this$static));
10.15283 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15284 +                this$static.mode = 11;
10.15285 +                attributes = null;
10.15286 +                break starttagloop;
10.15287 +              case 40:
10.15288 +                $clearStackBackTo(this$static, $findLastInTableScopeOrRootTbodyTheadTfoot(this$static));
10.15289 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , TR), ($clinit_91() , EMPTY_ATTRIBUTES));
10.15290 +                this$static.mode = 11;
10.15291 +                continue;
10.15292 +              case 6:
10.15293 +              case 7:
10.15294 +              case 8:
10.15295 +              case 39:
10.15296 +                eltPos = $findLastInTableScopeOrRootTbodyTheadTfoot(this$static);
10.15297 +                if (eltPos == 0) {
10.15298 +                  break starttagloop;
10.15299 +                }
10.15300 +                 else {
10.15301 +                  $clearStackBackTo(this$static, eltPos);
10.15302 +                  $pop(this$static);
10.15303 +                  this$static.mode = 7;
10.15304 +                  continue;
10.15305 +                }
10.15306 +
10.15307 +            }
10.15308 +
10.15309 +          case 11:
10.15310 +            switch (group) {
10.15311 +              case 40:
10.15312 +                $clearStackBackTo(this$static, $findLastOrRoot(this$static, 37));
10.15313 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15314 +                this$static.mode = 12;
10.15315 +                $append_1(this$static, null);
10.15316 +                attributes = null;
10.15317 +                break starttagloop;
10.15318 +              case 6:
10.15319 +              case 7:
10.15320 +              case 8:
10.15321 +              case 39:
10.15322 +              case 37:
10.15323 +                eltPos = $findLastOrRoot(this$static, 37);
10.15324 +                if (eltPos == 0) {
10.15325 +                  break starttagloop;
10.15326 +                }
10.15327 +
10.15328 +                $clearStackBackTo(this$static, eltPos);
10.15329 +                $pop(this$static);
10.15330 +                this$static.mode = 10;
10.15331 +                continue;
10.15332 +            }
10.15333 +
10.15334 +          case 7:
10.15335 +            intableloop: for (;;) {
10.15336 +              switch (group) {
10.15337 +                case 6:
10.15338 +                  $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
10.15339 +                  $append_1(this$static, null);
10.15340 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15341 +                  this$static.mode = 8;
10.15342 +                  attributes = null;
10.15343 +                  break starttagloop;
10.15344 +                case 8:
10.15345 +                  $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
10.15346 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15347 +                  this$static.mode = 9;
10.15348 +                  attributes = null;
10.15349 +                  break starttagloop;
10.15350 +                case 7:
10.15351 +                  $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
10.15352 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , COLGROUP), ($clinit_91() , EMPTY_ATTRIBUTES));
10.15353 +                  this$static.mode = 9;
10.15354 +                  continue starttagloop;
10.15355 +                case 39:
10.15356 +                  $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
10.15357 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15358 +                  this$static.mode = 10;
10.15359 +                  attributes = null;
10.15360 +                  break starttagloop;
10.15361 +                case 37:
10.15362 +                case 40:
10.15363 +                  $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
10.15364 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , TBODY), ($clinit_91() , EMPTY_ATTRIBUTES));
10.15365 +                  this$static.mode = 10;
10.15366 +                  continue starttagloop;
10.15367 +                case 34:
10.15368 +                  eltPos = $findLastInTableScope(this$static, name);
10.15369 +                  if (eltPos == 2147483647) {
10.15370 +                    break starttagloop;
10.15371 +                  }
10.15372 +
10.15373 +                  $generateImpliedEndTags(this$static);
10.15374 +                  while (this$static.currentPtr >= eltPos) {
10.15375 +                    $pop(this$static);
10.15376 +                  }
10.15377 +
10.15378 +                  $resetTheInsertionMode(this$static);
10.15379 +                  continue starttagloop;
10.15380 +                case 31:
10.15381 +                case 33:
10.15382 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15383 +                  this$static.originalMode = this$static.mode;
10.15384 +                  this$static.mode = 20;
10.15385 +                  $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.15386 +                  attributes = null;
10.15387 +                  break starttagloop;
10.15388 +                case 13:
10.15389 +                  if (!lowerCaseLiteralEqualsIgnoreAsciiCaseString('hidden', $getValue_0(attributes, ($clinit_87() , TYPE)))) {
10.15390 +                    break intableloop;
10.15391 +                  }
10.15392 +
10.15393 +                  $flushCharacters(this$static);
10.15394 +                  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.15395 +                  elt_53 = $createElement_0(this$static, 'http://www.w3.org/1999/xhtml', name, attributes);
10.15396 +                  current = this$static.stack[this$static.currentPtr];
10.15397 +                  $appendElement(this$static, elt_53, current.node);
10.15398 +                  $elementPopped(this$static, 'http://www.w3.org/1999/xhtml', name, elt_53);
10.15399 +                  selfClosing = false;
10.15400 +                  attributes = null;
10.15401 +                  break starttagloop;
10.15402 +                default:break intableloop;
10.15403 +              }
10.15404 +            }
10.15405 +
10.15406 +          case 8:
10.15407 +            switch (group) {
10.15408 +              case 6:
10.15409 +              case 7:
10.15410 +              case 8:
10.15411 +              case 39:
10.15412 +              case 37:
10.15413 +              case 40:
10.15414 +                eltPos = $findLastInTableScope(this$static, 'caption');
10.15415 +                if (eltPos == 2147483647) {
10.15416 +                  break starttagloop;
10.15417 +                }
10.15418 +
10.15419 +                $generateImpliedEndTags(this$static);
10.15420 +                while (this$static.currentPtr >= eltPos) {
10.15421 +                  $pop(this$static);
10.15422 +                }
10.15423 +
10.15424 +                $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.15425 +                this$static.mode = 7;
10.15426 +                continue;
10.15427 +            }
10.15428 +
10.15429 +          case 12:
10.15430 +            switch (group) {
10.15431 +              case 6:
10.15432 +              case 7:
10.15433 +              case 8:
10.15434 +              case 39:
10.15435 +              case 37:
10.15436 +              case 40:
10.15437 +                eltPos = $findLastInTableScopeTdTh(this$static);
10.15438 +                if (eltPos == 2147483647) {
10.15439 +                  break starttagloop;
10.15440 +                }
10.15441 +                 else {
10.15442 +                  $closeTheCell(this$static, eltPos);
10.15443 +                  continue;
10.15444 +                }
10.15445 +
10.15446 +            }
10.15447 +
10.15448 +          case 21:
10.15449 +            switch (group) {
10.15450 +              case 11:
10.15451 +                if (this$static.mode == 21) {
10.15452 +                  if (this$static.currentPtr == 0 || this$static.stack[1].group != 3) {
10.15453 +                    break starttagloop;
10.15454 +                  }
10.15455 +                   else {
10.15456 +                    $detachFromParent(this$static, this$static.stack[1].node);
10.15457 +                    while (this$static.currentPtr > 0) {
10.15458 +                      $pop(this$static);
10.15459 +                    }
10.15460 +                    $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15461 +                    this$static.mode = 16;
10.15462 +                    attributes = null;
10.15463 +                    break starttagloop;
10.15464 +                  }
10.15465 +                }
10.15466 +                 else {
10.15467 +                  break starttagloop;
10.15468 +                }
10.15469 +
10.15470 +              case 44:
10.15471 +              case 15:
10.15472 +              case 41:
10.15473 +              case 5:
10.15474 +              case 43:
10.15475 +              case 63:
10.15476 +              case 34:
10.15477 +              case 49:
10.15478 +              case 4:
10.15479 +              case 48:
10.15480 +              case 13:
10.15481 +              case 65:
10.15482 +              case 22:
10.15483 +              case 35:
10.15484 +              case 38:
10.15485 +              case 47:
10.15486 +              case 32:
10.15487 +                if (this$static.mode == 21) {
10.15488 +                  this$static.mode = 6;
10.15489 +                }
10.15490 +
10.15491 +            }
10.15492 +
10.15493 +          case 6:
10.15494 +            inbodyloop: for (;;) {
10.15495 +              switch (group) {
10.15496 +                case 23:
10.15497 +                  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.15498 +                  $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.15499 +                  attributes = null;
10.15500 +                  break starttagloop;
10.15501 +                case 2:
10.15502 +                case 16:
10.15503 +                case 18:
10.15504 +                case 33:
10.15505 +                case 31:
10.15506 +                case 36:
10.15507 +                case 54:
10.15508 +                  break inbodyloop;
10.15509 +                case 3:
10.15510 +                  $addAttributesToBody(this$static, attributes);
10.15511 +                  attributes = null;
10.15512 +                  break starttagloop;
10.15513 +                case 29:
10.15514 +                case 50:
10.15515 +                case 46:
10.15516 +                case 51:
10.15517 +                  $implicitlyCloseP(this$static);
10.15518 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15519 +                  attributes = null;
10.15520 +                  break starttagloop;
10.15521 +                case 42:
10.15522 +                  $implicitlyCloseP(this$static);
10.15523 +                  if (this$static.stack[this$static.currentPtr].group == 42) {
10.15524 +                    $pop(this$static);
10.15525 +                  }
10.15526 +
10.15527 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15528 +                  attributes = null;
10.15529 +                  break starttagloop;
10.15530 +                case 61:
10.15531 +                  $implicitlyCloseP(this$static);
10.15532 +                  $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15533 +                  attributes = null;
10.15534 +                  break starttagloop;
10.15535 +                case 44:
10.15536 +                  $implicitlyCloseP(this$static);
10.15537 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15538 +                  this$static.needToDropLF = true;
10.15539 +                  attributes = null;
10.15540 +                  break starttagloop;
10.15541 +                case 9:
10.15542 +                  if (this$static.formPointer) {
10.15543 +                    break starttagloop;
10.15544 +                  }
10.15545 +                   else {
10.15546 +                    $implicitlyCloseP(this$static);
10.15547 +                    $appendToCurrentNodeAndPushFormElementMayFoster(this$static, attributes);
10.15548 +                    attributes = null;
10.15549 +                    break starttagloop;
10.15550 +                  }
10.15551 +
10.15552 +                case 15:
10.15553 +                case 41:
10.15554 +                  eltPos = this$static.currentPtr;
10.15555 +                  for (;;) {
10.15556 +                    node = this$static.stack[eltPos];
10.15557 +                    if (node.group == group) {
10.15558 +                      $generateImpliedEndTagsExceptFor(this$static, node.name_0);
10.15559 +                      while (this$static.currentPtr >= eltPos) {
10.15560 +                        $pop(this$static);
10.15561 +                      }
10.15562 +                      break;
10.15563 +                    }
10.15564 +                     else if (node.scoping || node.special && node.name_0 != 'p' && node.name_0 != 'address' && node.name_0 != 'div') {
10.15565 +                      break;
10.15566 +                    }
10.15567 +                    --eltPos;
10.15568 +                  }
10.15569 +
10.15570 +                  $implicitlyCloseP(this$static);
10.15571 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15572 +                  attributes = null;
10.15573 +                  break starttagloop;
10.15574 +                case 30:
10.15575 +                  $implicitlyCloseP(this$static);
10.15576 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15577 +                  $setContentModelFlag_0(this$static.tokenizer, 3, elementName);
10.15578 +                  attributes = null;
10.15579 +                  break starttagloop;
10.15580 +                case 1:
10.15581 +                  activeAPos = $findInListOfActiveFormattingElementsContainsBetweenEndAndLastMarker(this$static, 'a');
10.15582 +                  if (activeAPos != -1) {
10.15583 +                    activeA = this$static.listOfActiveFormattingElements[activeAPos];
10.15584 +                    ++activeA.refcount;
10.15585 +                    $adoptionAgencyEndTag(this$static, 'a');
10.15586 +                    $removeFromStack_0(this$static, activeA);
10.15587 +                    activeAPos = $findInListOfActiveFormattingElements(this$static, activeA);
10.15588 +                    if (activeAPos != -1) {
10.15589 +                      $removeFromListOfActiveFormattingElements(this$static, activeAPos);
10.15590 +                    }
10.15591 +                    --activeA.refcount;
10.15592 +                  }
10.15593 +
10.15594 +                  $reconstructTheActiveFormattingElements(this$static);
10.15595 +                  $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15596 +                  attributes = null;
10.15597 +                  break starttagloop;
10.15598 +                case 45:
10.15599 +                case 64:
10.15600 +                  $reconstructTheActiveFormattingElements(this$static);
10.15601 +                  $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15602 +                  attributes = null;
10.15603 +                  break starttagloop;
10.15604 +                case 24:
10.15605 +                  $reconstructTheActiveFormattingElements(this$static);
10.15606 +                  if (2147483647 != $findLastInScope(this$static, 'nobr')) {
10.15607 +                    $adoptionAgencyEndTag(this$static, 'nobr');
10.15608 +                  }
10.15609 +
10.15610 +                  $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15611 +                  attributes = null;
10.15612 +                  break starttagloop;
10.15613 +                case 5:
10.15614 +                  eltPos = $findLastInScope(this$static, name);
10.15615 +                  if (eltPos != 2147483647) {
10.15616 +                    $generateImpliedEndTags(this$static);
10.15617 +                    while (this$static.currentPtr >= eltPos) {
10.15618 +                      $pop(this$static);
10.15619 +                    }
10.15620 +                    $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.15621 +                    continue starttagloop;
10.15622 +                  }
10.15623 +                   else {
10.15624 +                    $reconstructTheActiveFormattingElements(this$static);
10.15625 +                    $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15626 +                    $append_1(this$static, null);
10.15627 +                    attributes = null;
10.15628 +                    break starttagloop;
10.15629 +                  }
10.15630 +
10.15631 +                case 63:
10.15632 +                  $reconstructTheActiveFormattingElements(this$static);
10.15633 +                  $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15634 +                  $append_1(this$static, null);
10.15635 +                  attributes = null;
10.15636 +                  break starttagloop;
10.15637 +                case 43:
10.15638 +                  $reconstructTheActiveFormattingElements(this$static);
10.15639 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15640 +                  $append_1(this$static, null);
10.15641 +                  attributes = null;
10.15642 +                  break starttagloop;
10.15643 +                case 38:
10.15644 +                  $reconstructTheActiveFormattingElements(this$static);
10.15645 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15646 +                  this$static.originalMode = this$static.mode;
10.15647 +                  this$static.mode = 20;
10.15648 +                  $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.15649 +                  attributes = null;
10.15650 +                  break starttagloop;
10.15651 +                case 34:
10.15652 +                  if (!this$static.quirks) {
10.15653 +                    $implicitlyCloseP(this$static);
10.15654 +                  }
10.15655 +
10.15656 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15657 +                  this$static.mode = 7;
10.15658 +                  attributes = null;
10.15659 +                  break starttagloop;
10.15660 +                case 4:
10.15661 +                case 48:
10.15662 +                case 49:
10.15663 +                  $reconstructTheActiveFormattingElements(this$static);
10.15664 +                case 55:
10.15665 +                  $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15666 +                  selfClosing = false;
10.15667 +                  attributes = null;
10.15668 +                  break starttagloop;
10.15669 +                case 22:
10.15670 +                  $implicitlyCloseP(this$static);
10.15671 +                  $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15672 +                  selfClosing = false;
10.15673 +                  attributes = null;
10.15674 +                  break starttagloop;
10.15675 +                case 12:
10.15676 +                  elementName = ($clinit_89() , IMG);
10.15677 +                  continue starttagloop;
10.15678 +                case 65:
10.15679 +                case 13:
10.15680 +                  $reconstructTheActiveFormattingElements(this$static);
10.15681 +                  $appendVoidElementToCurrentMayFoster(this$static, 'http://www.w3.org/1999/xhtml', name, attributes);
10.15682 +                  selfClosing = false;
10.15683 +                  attributes = null;
10.15684 +                  break starttagloop;
10.15685 +                case 14:
10.15686 +                  if (this$static.formPointer) {
10.15687 +                    break starttagloop;
10.15688 +                  }
10.15689 +
10.15690 +                  $implicitlyCloseP(this$static);
10.15691 +                  formAttrs = $HtmlAttributes(new HtmlAttributes(), 0);
10.15692 +                  actionIndex = $getIndex(attributes, ($clinit_87() , ACTION));
10.15693 +                  if (actionIndex > -1) {
10.15694 +                    $addAttribute(formAttrs, ACTION, $getValue(attributes, actionIndex), ($clinit_80() , ALLOW));
10.15695 +                  }
10.15696 +
10.15697 +                  $appendToCurrentNodeAndPushFormElementMayFoster(this$static, formAttrs);
10.15698 +                  $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , HR), ($clinit_91() , EMPTY_ATTRIBUTES));
10.15699 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', P, EMPTY_ATTRIBUTES);
10.15700 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', LABEL_0, EMPTY_ATTRIBUTES);
10.15701 +                  promptIndex = $getIndex(attributes, PROMPT);
10.15702 +                  if (promptIndex > -1) {
10.15703 +                    prompt = $toCharArray($getValue(attributes, promptIndex));
10.15704 +                    $appendCharacters(this$static, this$static.stack[this$static.currentPtr].node, valueOf_1(prompt, 0, prompt.length));
10.15705 +                  }
10.15706 +                   else {
10.15707 +                    $appendCharacters(this$static, this$static.stack[this$static.currentPtr].node, valueOf_1(ISINDEX_PROMPT, 0, ISINDEX_PROMPT.length));
10.15708 +                  }
10.15709 +
10.15710 +                  inputAttributes = $HtmlAttributes(new HtmlAttributes(), 0);
10.15711 +                  $addAttribute(inputAttributes, NAME, 'isindex', ($clinit_80() , ALLOW));
10.15712 +                  for (i = 0; i < attributes.length_0; ++i) {
10.15713 +                    attributeQName = $getAttributeName(attributes, i);
10.15714 +                    if (NAME == attributeQName || PROMPT == attributeQName) {
10.15715 +                    }
10.15716 +                     else if (ACTION != attributeQName) {
10.15717 +                      $addAttribute(inputAttributes, attributeQName, $getValue(attributes, i), ALLOW);
10.15718 +                    }
10.15719 +                  }
10.15720 +
10.15721 +                  $clearWithoutReleasingContents(attributes);
10.15722 +                  $appendVoidElementToCurrentMayFoster(this$static, 'http://www.w3.org/1999/xhtml', 'input', inputAttributes);
10.15723 +                  $pop(this$static);
10.15724 +                  $pop(this$static);
10.15725 +                  $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', HR, EMPTY_ATTRIBUTES);
10.15726 +                  $pop(this$static);
10.15727 +                  selfClosing = false;
10.15728 +                  attributes = null;
10.15729 +                  break starttagloop;
10.15730 +                case 35:
10.15731 +                  $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15732 +                  $setContentModelFlag_0(this$static.tokenizer, 1, elementName);
10.15733 +                  this$static.originalMode = this$static.mode;
10.15734 +                  this$static.mode = 20;
10.15735 +                  this$static.needToDropLF = true;
10.15736 +                  attributes = null;
10.15737 +                  break starttagloop;
10.15738 +                case 26:
10.15739 +                  {
10.15740 +                    $reconstructTheActiveFormattingElements(this$static);
10.15741 +                    $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15742 +                    attributes = null;
10.15743 +                    break starttagloop;
10.15744 +                  }
10.15745 +
10.15746 +                case 25:
10.15747 +                case 47:
10.15748 +                case 60:
10.15749 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15750 +                  this$static.originalMode = this$static.mode;
10.15751 +                  this$static.mode = 20;
10.15752 +                  $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.15753 +                  attributes = null;
10.15754 +                  break starttagloop;
10.15755 +                case 32:
10.15756 +                  $reconstructTheActiveFormattingElements(this$static);
10.15757 +                  $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15758 +                  switch (this$static.mode) {
10.15759 +                    case 7:
10.15760 +                    case 8:
10.15761 +                    case 9:
10.15762 +                    case 10:
10.15763 +                    case 11:
10.15764 +                    case 12:
10.15765 +                      this$static.mode = 14;
10.15766 +                      break;
10.15767 +                    default:this$static.mode = 13;
10.15768 +                  }
10.15769 +
10.15770 +                  attributes = null;
10.15771 +                  break starttagloop;
10.15772 +                case 27:
10.15773 +                case 28:
10.15774 +                  if ($findLastInScope(this$static, 'option') != 2147483647) {
10.15775 +                    optionendtagloop: for (;;) {
10.15776 +                      if ('option' == this$static.stack[this$static.currentPtr].name_0) {
10.15777 +                        $pop(this$static);
10.15778 +                        break optionendtagloop;
10.15779 +                      }
10.15780 +                      eltPos = this$static.currentPtr;
10.15781 +                      for (;;) {
10.15782 +                        if (this$static.stack[eltPos].name_0 == 'option') {
10.15783 +                          $generateImpliedEndTags(this$static);
10.15784 +                          while (this$static.currentPtr >= eltPos) {
10.15785 +                            $pop(this$static);
10.15786 +                          }
10.15787 +                          break optionendtagloop;
10.15788 +                        }
10.15789 +                        --eltPos;
10.15790 +                      }
10.15791 +                    }
10.15792 +                  }
10.15793 +
10.15794 +                  $reconstructTheActiveFormattingElements(this$static);
10.15795 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15796 +                  attributes = null;
10.15797 +                  break starttagloop;
10.15798 +                case 53:
10.15799 +                  eltPos = $findLastInScope(this$static, 'ruby');
10.15800 +                  if (eltPos != 2147483647) {
10.15801 +                    $generateImpliedEndTags(this$static);
10.15802 +                  }
10.15803 +
10.15804 +                  if (eltPos != this$static.currentPtr) {
10.15805 +                    while (this$static.currentPtr > eltPos) {
10.15806 +                      $pop(this$static);
10.15807 +                    }
10.15808 +                  }
10.15809 +
10.15810 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15811 +                  attributes = null;
10.15812 +                  break starttagloop;
10.15813 +                case 17:
10.15814 +                  $reconstructTheActiveFormattingElements(this$static);
10.15815 +                  attributes.mode = 1;
10.15816 +                  if (selfClosing) {
10.15817 +                    $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1998/Math/MathML', elementName, attributes);
10.15818 +                    selfClosing = false;
10.15819 +                  }
10.15820 +                   else {
10.15821 +                    $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1998/Math/MathML', elementName, attributes);
10.15822 +                    this$static.foreignFlag = 0;
10.15823 +                  }
10.15824 +
10.15825 +                  attributes = null;
10.15826 +                  break starttagloop;
10.15827 +                case 19:
10.15828 +                  $reconstructTheActiveFormattingElements(this$static);
10.15829 +                  attributes.mode = 2;
10.15830 +                  if (selfClosing) {
10.15831 +                    $appendVoidElementToCurrentMayFosterCamelCase(this$static, 'http://www.w3.org/2000/svg', elementName, attributes);
10.15832 +                    selfClosing = false;
10.15833 +                  }
10.15834 +                   else {
10.15835 +                    $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/2000/svg', elementName, attributes);
10.15836 +                    this$static.foreignFlag = 0;
10.15837 +                  }
10.15838 +
10.15839 +                  attributes = null;
10.15840 +                  break starttagloop;
10.15841 +                case 6:
10.15842 +                case 7:
10.15843 +                case 8:
10.15844 +                case 39:
10.15845 +                case 37:
10.15846 +                case 40:
10.15847 +                case 10:
10.15848 +                case 11:
10.15849 +                case 20:
10.15850 +                  break starttagloop;
10.15851 +                case 62:
10.15852 +                  $reconstructTheActiveFormattingElements(this$static);
10.15853 +                  $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15854 +                  attributes = null;
10.15855 +                  break starttagloop;
10.15856 +                default:$reconstructTheActiveFormattingElements(this$static);
10.15857 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15858 +                  attributes = null;
10.15859 +                  break starttagloop;
10.15860 +              }
10.15861 +            }
10.15862 +
10.15863 +          case 3:
10.15864 +            inheadloop: for (;;) {
10.15865 +              switch (group) {
10.15866 +                case 23:
10.15867 +                  $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.15868 +                  $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.15869 +                  attributes = null;
10.15870 +                  break starttagloop;
10.15871 +                case 2:
10.15872 +                case 54:
10.15873 +                  $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15874 +                  selfClosing = false;
10.15875 +                  attributes = null;
10.15876 +                  break starttagloop;
10.15877 +                case 18:
10.15878 +                case 16:
10.15879 +                  break inheadloop;
10.15880 +                case 36:
10.15881 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15882 +                  this$static.originalMode = this$static.mode;
10.15883 +                  this$static.mode = 20;
10.15884 +                  $setContentModelFlag_0(this$static.tokenizer, 1, elementName);
10.15885 +                  attributes = null;
10.15886 +                  break starttagloop;
10.15887 +                case 26:
10.15888 +                  {
10.15889 +                    $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15890 +                    this$static.mode = 4;
10.15891 +                  }
10.15892 +
10.15893 +                  attributes = null;
10.15894 +                  break starttagloop;
10.15895 +                case 31:
10.15896 +                case 33:
10.15897 +                case 25:
10.15898 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15899 +                  this$static.originalMode = this$static.mode;
10.15900 +                  this$static.mode = 20;
10.15901 +                  $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.15902 +                  attributes = null;
10.15903 +                  break starttagloop;
10.15904 +                case 20:
10.15905 +                  break starttagloop;
10.15906 +                default:$pop(this$static);
10.15907 +                  this$static.mode = 5;
10.15908 +                  continue starttagloop;
10.15909 +              }
10.15910 +            }
10.15911 +
10.15912 +          case 4:
10.15913 +            switch (group) {
10.15914 +              case 23:
10.15915 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.15916 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.15917 +                attributes = null;
10.15918 +                break starttagloop;
10.15919 +              case 16:
10.15920 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15921 +                selfClosing = false;
10.15922 +                attributes = null;
10.15923 +                break starttagloop;
10.15924 +              case 18:
10.15925 +                $checkMetaCharset(this$static, attributes);
10.15926 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15927 +                selfClosing = false;
10.15928 +                attributes = null;
10.15929 +                break starttagloop;
10.15930 +              case 33:
10.15931 +              case 25:
10.15932 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15933 +                this$static.originalMode = this$static.mode;
10.15934 +                this$static.mode = 20;
10.15935 +                $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.15936 +                attributes = null;
10.15937 +                break starttagloop;
10.15938 +              case 20:
10.15939 +                break starttagloop;
10.15940 +              case 26:
10.15941 +                break starttagloop;
10.15942 +              default:$pop(this$static);
10.15943 +                this$static.mode = 3;
10.15944 +                continue;
10.15945 +            }
10.15946 +
10.15947 +          case 9:
10.15948 +            switch (group) {
10.15949 +              case 23:
10.15950 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.15951 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.15952 +                attributes = null;
10.15953 +                break starttagloop;
10.15954 +              case 7:
10.15955 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15956 +                selfClosing = false;
10.15957 +                attributes = null;
10.15958 +                break starttagloop;
10.15959 +              default:if (this$static.currentPtr == 0) {
10.15960 +                  break starttagloop;
10.15961 +                }
10.15962 +
10.15963 +                $pop(this$static);
10.15964 +                this$static.mode = 7;
10.15965 +                continue;
10.15966 +            }
10.15967 +
10.15968 +          case 14:
10.15969 +            switch (group) {
10.15970 +              case 6:
10.15971 +              case 39:
10.15972 +              case 37:
10.15973 +              case 40:
10.15974 +              case 34:
10.15975 +                $endSelect(this$static);
10.15976 +                continue;
10.15977 +            }
10.15978 +
10.15979 +          case 13:
10.15980 +            switch (group) {
10.15981 +              case 23:
10.15982 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.15983 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.15984 +                attributes = null;
10.15985 +                break starttagloop;
10.15986 +              case 28:
10.15987 +                if ('option' == this$static.stack[this$static.currentPtr].name_0) {
10.15988 +                  $pop(this$static);
10.15989 +                }
10.15990 +
10.15991 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15992 +                attributes = null;
10.15993 +                break starttagloop;
10.15994 +              case 27:
10.15995 +                if ('option' == this$static.stack[this$static.currentPtr].name_0) {
10.15996 +                  $pop(this$static);
10.15997 +                }
10.15998 +
10.15999 +                if ('optgroup' == this$static.stack[this$static.currentPtr].name_0) {
10.16000 +                  $pop(this$static);
10.16001 +                }
10.16002 +
10.16003 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16004 +                attributes = null;
10.16005 +                break starttagloop;
10.16006 +              case 32:
10.16007 +                eltPos = $findLastInTableScope(this$static, name);
10.16008 +                if (eltPos == 2147483647) {
10.16009 +                  break starttagloop;
10.16010 +                }
10.16011 +                 else {
10.16012 +                  while (this$static.currentPtr >= eltPos) {
10.16013 +                    $pop(this$static);
10.16014 +                  }
10.16015 +                  $resetTheInsertionMode(this$static);
10.16016 +                  break starttagloop;
10.16017 +                }
10.16018 +
10.16019 +              case 13:
10.16020 +              case 35:
10.16021 +                $endSelect(this$static);
10.16022 +                continue;
10.16023 +              case 31:
10.16024 +                $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16025 +                this$static.originalMode = this$static.mode;
10.16026 +                this$static.mode = 20;
10.16027 +                $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.16028 +                attributes = null;
10.16029 +                break starttagloop;
10.16030 +              default:break starttagloop;
10.16031 +            }
10.16032 +
10.16033 +          case 15:
10.16034 +            switch (group) {
10.16035 +              case 23:
10.16036 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.16037 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.16038 +                attributes = null;
10.16039 +                break starttagloop;
10.16040 +              default:this$static.mode = 6;
10.16041 +                continue;
10.16042 +            }
10.16043 +
10.16044 +          case 16:
10.16045 +            switch (group) {
10.16046 +              case 11:
10.16047 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16048 +                attributes = null;
10.16049 +                break starttagloop;
10.16050 +              case 10:
10.16051 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16052 +                selfClosing = false;
10.16053 +                attributes = null;
10.16054 +                break starttagloop;
10.16055 +            }
10.16056 +
10.16057 +          case 17:
10.16058 +            switch (group) {
10.16059 +              case 23:
10.16060 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.16061 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.16062 +                attributes = null;
10.16063 +                break starttagloop;
10.16064 +              case 25:
10.16065 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16066 +                this$static.originalMode = this$static.mode;
10.16067 +                this$static.mode = 20;
10.16068 +                $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.16069 +                attributes = null;
10.16070 +                break starttagloop;
10.16071 +              default:break starttagloop;
10.16072 +            }
10.16073 +
10.16074 +          case 0:
10.16075 +            $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.16076 +            this$static.mode = 1;
10.16077 +            continue;
10.16078 +          case 1:
10.16079 +            switch (group) {
10.16080 +              case 23:
10.16081 +                if (attributes == ($clinit_91() , EMPTY_ATTRIBUTES)) {
10.16082 +                  $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
10.16083 +                }
10.16084 +                 else {
10.16085 +                  $appendHtmlElementToDocumentAndPush(this$static, attributes);
10.16086 +                }
10.16087 +
10.16088 +                this$static.mode = 2;
10.16089 +                attributes = null;
10.16090 +                break starttagloop;
10.16091 +              default:$appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
10.16092 +                this$static.mode = 2;
10.16093 +                continue;
10.16094 +            }
10.16095 +
10.16096 +          case 2:
10.16097 +            switch (group) {
10.16098 +              case 23:
10.16099 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.16100 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.16101 +                attributes = null;
10.16102 +                break starttagloop;
10.16103 +              case 20:
10.16104 +                $appendToCurrentNodeAndPushHeadElement(this$static, attributes);
10.16105 +                this$static.mode = 3;
10.16106 +                attributes = null;
10.16107 +                break starttagloop;
10.16108 +              default:$appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
10.16109 +                this$static.mode = 3;
10.16110 +                continue;
10.16111 +            }
10.16112 +
10.16113 +          case 5:
10.16114 +            switch (group) {
10.16115 +              case 23:
10.16116 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.16117 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.16118 +                attributes = null;
10.16119 +                break starttagloop;
10.16120 +              case 3:
10.16121 +                if (attributes.length_0 == 0) {
10.16122 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
10.16123 +                }
10.16124 +                 else {
10.16125 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), attributes);
10.16126 +                }
10.16127 +
10.16128 +                this$static.mode = 21;
10.16129 +                attributes = null;
10.16130 +                break starttagloop;
10.16131 +              case 11:
10.16132 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16133 +                this$static.mode = 16;
10.16134 +                attributes = null;
10.16135 +                break starttagloop;
10.16136 +              case 2:
10.16137 +                $pushHeadPointerOntoStack(this$static);
10.16138 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16139 +                selfClosing = false;
10.16140 +                $pop(this$static);
10.16141 +                attributes = null;
10.16142 +                break starttagloop;
10.16143 +              case 16:
10.16144 +                $pushHeadPointerOntoStack(this$static);
10.16145 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16146 +                selfClosing = false;
10.16147 +                $pop(this$static);
10.16148 +                attributes = null;
10.16149 +                break starttagloop;
10.16150 +              case 18:
10.16151 +                $checkMetaCharset(this$static, attributes);
10.16152 +                $pushHeadPointerOntoStack(this$static);
10.16153 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16154 +                selfClosing = false;
10.16155 +                $pop(this$static);
10.16156 +                attributes = null;
10.16157 +                break starttagloop;
10.16158 +              case 31:
10.16159 +                $pushHeadPointerOntoStack(this$static);
10.16160 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16161 +                this$static.originalMode = this$static.mode;
10.16162 +                this$static.mode = 20;
10.16163 +                $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.16164 +                attributes = null;
10.16165 +                break starttagloop;
10.16166 +              case 33:
10.16167 +              case 25:
10.16168 +                $pushHeadPointerOntoStack(this$static);
10.16169 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16170 +                this$static.originalMode = this$static.mode;
10.16171 +                this$static.mode = 20;
10.16172 +                $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.16173 +                attributes = null;
10.16174 +                break starttagloop;
10.16175 +              case 36:
10.16176 +                $pushHeadPointerOntoStack(this$static);
10.16177 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16178 +                this$static.originalMode = this$static.mode;
10.16179 +                this$static.mode = 20;
10.16180 +                $setContentModelFlag_0(this$static.tokenizer, 1, elementName);
10.16181 +                attributes = null;
10.16182 +                break starttagloop;
10.16183 +              case 20:
10.16184 +                break starttagloop;
10.16185 +              default:$appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
10.16186 +                this$static.mode = 21;
10.16187 +                continue;
10.16188 +            }
10.16189 +
10.16190 +          case 18:
10.16191 +            switch (group) {
10.16192 +              case 23:
10.16193 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.16194 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.16195 +                attributes = null;
10.16196 +                break starttagloop;
10.16197 +              default:this$static.mode = 6;
10.16198 +                continue;
10.16199 +            }
10.16200 +
10.16201 +          case 19:
10.16202 +            switch (group) {
10.16203 +              case 25:
10.16204 +                $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16205 +                this$static.originalMode = this$static.mode;
10.16206 +                this$static.mode = 20;
10.16207 +                $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.16208 +                attributes = null;
10.16209 +                break starttagloop;
10.16210 +              default:break starttagloop;
10.16211 +            }
10.16212 +
10.16213 +        }
10.16214 +
10.16215 +    }
10.16216 +  }
10.16217 +  if (needsPostProcessing && this$static.foreignFlag == 0 && !$hasForeignInScope(this$static)) {
10.16218 +    this$static.foreignFlag = 1;
10.16219 +  }
10.16220 +  attributes != ($clinit_91() , EMPTY_ATTRIBUTES);
10.16221 +}
10.16222 +
10.16223 +function $startTokenization(this$static, self){
10.16224 +  var elt, node;
10.16225 +  this$static.tokenizer = self;
10.16226 +  this$static.stack = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, 64, 0);
10.16227 +  this$static.listOfActiveFormattingElements = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, 64, 0);
10.16228 +  this$static.needToDropLF = false;
10.16229 +  this$static.originalMode = 0;
10.16230 +  this$static.currentPtr = -1;
10.16231 +  this$static.listPtr = -1;
10.16232 +  this$static.formPointer = null;
10.16233 +  this$static.headPointer = null;
10.16234 +  this$static.html4 = false;
10.16235 +  $clearImpl(this$static.idLocations);
10.16236 +  this$static.wantingComments = this$static.wantingComments;
10.16237 +  this$static.script = null;
10.16238 +  this$static.placeholder = null;
10.16239 +  this$static.readyToRun = false;
10.16240 +  this$static.charBufferLen = 0;
10.16241 +  this$static.charBuffer = initDim(_3C_classLit, 42, -1, 1024, 1);
10.16242 +  if (this$static.fragment) {
10.16243 +    elt = $createHtmlElementSetAsRoot(this$static, $emptyAttributes(this$static.tokenizer));
10.16244 +    node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HTML_0), elt);
10.16245 +    ++this$static.currentPtr;
10.16246 +    this$static.stack[this$static.currentPtr] = node;
10.16247 +    $resetTheInsertionMode(this$static);
10.16248 +    if ('title' == this$static.contextName || 'textarea' == this$static.contextName) {
10.16249 +      $setContentModelFlag(this$static.tokenizer, 1);
10.16250 +    }
10.16251 +     else if ('style' == this$static.contextName || 'script' == this$static.contextName || 'xmp' == this$static.contextName || 'iframe' == this$static.contextName || 'noembed' == this$static.contextName || 'noframes' == this$static.contextName) {
10.16252 +      $setContentModelFlag(this$static.tokenizer, 2);
10.16253 +    }
10.16254 +     else if ('plaintext' == this$static.contextName) {
10.16255 +      $setContentModelFlag(this$static.tokenizer, 3);
10.16256 +    }
10.16257 +     else {
10.16258 +      $setContentModelFlag(this$static.tokenizer, 0);
10.16259 +    }
10.16260 +    this$static.contextName = null;
10.16261 +  }
10.16262 +   else {
10.16263 +    this$static.mode = 0;
10.16264 +    this$static.foreignFlag = 1;
10.16265 +  }
10.16266 +}
10.16267 +
10.16268 +function extractCharsetFromContent(attributeValue){
10.16269 +  var buffer, c, charset, charsetState, end, i, start;
10.16270 +  charsetState = 0;
10.16271 +  start = -1;
10.16272 +  end = -1;
10.16273 +  buffer = $toCharArray(attributeValue);
10.16274 +  charsetloop: for (i = 0; i < buffer.length; ++i) {
10.16275 +    c = buffer[i];
10.16276 +    switch (charsetState) {
10.16277 +      case 0:
10.16278 +        switch (c) {
10.16279 +          case 99:
10.16280 +          case 67:
10.16281 +            charsetState = 1;
10.16282 +            continue;
10.16283 +          default:continue;
10.16284 +        }
10.16285 +
10.16286 +      case 1:
10.16287 +        switch (c) {
10.16288 +          case 104:
10.16289 +          case 72:
10.16290 +            charsetState = 2;
10.16291 +            continue;
10.16292 +          default:charsetState = 0;
10.16293 +            continue;
10.16294 +        }
10.16295 +
10.16296 +      case 2:
10.16297 +        switch (c) {
10.16298 +          case 97:
10.16299 +          case 65:
10.16300 +            charsetState = 3;
10.16301 +            continue;
10.16302 +          default:charsetState = 0;
10.16303 +            continue;
10.16304 +        }
10.16305 +
10.16306 +      case 3:
10.16307 +        switch (c) {
10.16308 +          case 114:
10.16309 +          case 82:
10.16310 +            charsetState = 4;
10.16311 +            continue;
10.16312 +          default:charsetState = 0;
10.16313 +            continue;
10.16314 +        }
10.16315 +
10.16316 +      case 4:
10.16317 +        switch (c) {
10.16318 +          case 115:
10.16319 +          case 83:
10.16320 +            charsetState = 5;
10.16321 +            continue;
10.16322 +          default:charsetState = 0;
10.16323 +            continue;
10.16324 +        }
10.16325 +
10.16326 +      case 5:
10.16327 +        switch (c) {
10.16328 +          case 101:
10.16329 +          case 69:
10.16330 +            charsetState = 6;
10.16331 +            continue;
10.16332 +          default:charsetState = 0;
10.16333 +            continue;
10.16334 +        }
10.16335 +
10.16336 +      case 6:
10.16337 +        switch (c) {
10.16338 +          case 116:
10.16339 +          case 84:
10.16340 +            charsetState = 7;
10.16341 +            continue;
10.16342 +          default:charsetState = 0;
10.16343 +            continue;
10.16344 +        }
10.16345 +
10.16346 +      case 7:
10.16347 +        switch (c) {
10.16348 +          case 9:
10.16349 +          case 10:
10.16350 +          case 12:
10.16351 +          case 13:
10.16352 +          case 32:
10.16353 +            continue;
10.16354 +          case 61:
10.16355 +            charsetState = 8;
10.16356 +            continue;
10.16357 +          default:return null;
10.16358 +        }
10.16359 +
10.16360 +      case 8:
10.16361 +        switch (c) {
10.16362 +          case 9:
10.16363 +          case 10:
10.16364 +          case 12:
10.16365 +          case 13:
10.16366 +          case 32:
10.16367 +            continue;
10.16368 +          case 39:
10.16369 +            start = i + 1;
10.16370 +            charsetState = 9;
10.16371 +            continue;
10.16372 +          case 34:
10.16373 +            start = i + 1;
10.16374 +            charsetState = 10;
10.16375 +            continue;
10.16376 +          default:start = i;
10.16377 +            charsetState = 11;
10.16378 +            continue;
10.16379 +        }
10.16380 +
10.16381 +      case 9:
10.16382 +        switch (c) {
10.16383 +          case 39:
10.16384 +            end = i;
10.16385 +            break charsetloop;
10.16386 +          default:continue;
10.16387 +        }
10.16388 +
10.16389 +      case 10:
10.16390 +        switch (c) {
10.16391 +          case 34:
10.16392 +            end = i;
10.16393 +            break charsetloop;
10.16394 +          default:continue;
10.16395 +        }
10.16396 +
10.16397 +      case 11:
10.16398 +        switch (c) {
10.16399 +          case 9:
10.16400 +          case 10:
10.16401 +          case 12:
10.16402 +          case 13:
10.16403 +          case 32:
10.16404 +          case 59:
10.16405 +            end = i;
10.16406 +            break charsetloop;
10.16407 +          default:continue;
10.16408 +        }
10.16409 +
10.16410 +    }
10.16411 +  }
10.16412 +  charset = null;
10.16413 +  if (start != -1) {
10.16414 +    if (end == -1) {
10.16415 +      end = buffer.length;
10.16416 +    }
10.16417 +    charset = valueOf_1(buffer, start, end - start);
10.16418 +  }
10.16419 +  return charset;
10.16420 +}
10.16421 +
10.16422 +function getClass_57(){
10.16423 +  return Lnu_validator_htmlparser_impl_TreeBuilder_2_classLit;
10.16424 +}
10.16425 +
10.16426 +function TreeBuilder(){
10.16427 +}
10.16428 +
10.16429 +_ = TreeBuilder.prototype = new Object_0();
10.16430 +_.getClass$ = getClass_57;
10.16431 +_.typeId$ = 0;
10.16432 +_.charBuffer = null;
10.16433 +_.charBufferLen = 0;
10.16434 +_.contextName = null;
10.16435 +_.contextNamespace = null;
10.16436 +_.currentPtr = -1;
10.16437 +_.foreignFlag = 1;
10.16438 +_.formPointer = null;
10.16439 +_.fragment = false;
10.16440 +_.headPointer = null;
10.16441 +_.html4 = false;
10.16442 +_.listOfActiveFormattingElements = null;
10.16443 +_.listPtr = -1;
10.16444 +_.mode = 0;
10.16445 +_.needToDropLF = false;
10.16446 +_.originalMode = 0;
10.16447 +_.quirks = false;
10.16448 +_.stack = null;
10.16449 +_.tokenizer = null;
10.16450 +_.wantingComments = false;
10.16451 +var HTML4_PUBLIC_IDS, ISINDEX_PROMPT, QUIRKY_PUBLIC_IDS;
10.16452 +function $clinit_88(){
10.16453 +  $clinit_88 = nullMethod;
10.16454 +  $clinit_98();
10.16455 +}
10.16456 +
10.16457 +function $accumulateCharacters(this$static, buf, start, length){
10.16458 +  var newBuf, newLen;
10.16459 +  newLen = this$static.charBufferLen + length;
10.16460 +  if (newLen > this$static.charBuffer.length) {
10.16461 +    newBuf = initDim(_3C_classLit, 42, -1, newLen, 1);
10.16462 +    arraycopy(this$static.charBuffer, 0, newBuf, 0, this$static.charBufferLen);
10.16463 +    this$static.charBuffer = newBuf;
10.16464 +  }
10.16465 +  arraycopy(buf, start, this$static.charBuffer, this$static.charBufferLen, length);
10.16466 +  this$static.charBufferLen = newLen;
10.16467 +}
10.16468 +
10.16469 +function $insertFosterParentedCharacters_0(this$static, buf, start, length, table, stackParent){
10.16470 +  var end;
10.16471 +  $insertFosterParentedCharacters(this$static, (end = start + length , __checkBounds(buf.length, start, end) , __valueOf(buf, start, end)), table, stackParent);
10.16472 +}
10.16473 +
10.16474 +function getClass_50(){
10.16475 +  return Lnu_validator_htmlparser_impl_CoalescingTreeBuilder_2_classLit;
10.16476 +}
10.16477 +
10.16478 +function CoalescingTreeBuilder(){
10.16479 +}
10.16480 +
10.16481 +_ = CoalescingTreeBuilder.prototype = new TreeBuilder();
10.16482 +_.getClass$ = getClass_50;
10.16483 +_.typeId$ = 0;
10.16484 +function $clinit_82(){
10.16485 +  $clinit_82 = nullMethod;
10.16486 +  $clinit_88();
10.16487 +}
10.16488 +
10.16489 +function $BrowserTreeBuilder(this$static, document_0){
10.16490 +  $clinit_82();
10.16491 +  this$static.doctypeExpectation = ($clinit_77() , HTML);
10.16492 +  this$static.namePolicy = ($clinit_80() , ALTER_INFOSET);
10.16493 +  this$static.idLocations = $HashMap(new HashMap());
10.16494 +  this$static.fragment = false;
10.16495 +  this$static.scriptStack = $LinkedList(new LinkedList());
10.16496 +  this$static.document_0 = document_0;
10.16497 +  installExplorerCreateElementNS(document_0);
10.16498 +  return this$static;
10.16499 +}
10.16500 +
10.16501 +function $addAttributesToElement(this$static, element, attributes){
10.16502 +  var $e0, e, i, localName, uri;
10.16503 +  try {
10.16504 +    for (i = 0; i < attributes.length_0; ++i) {
10.16505 +      localName = $getLocalName(attributes, i);
10.16506 +      uri = $getURI(attributes, i);
10.16507 +      if (!element.hasAttributeNS(uri, localName)) {
10.16508 +        element.setAttributeNS(uri, localName, $getValue(attributes, i));
10.16509 +      }
10.16510 +    }
10.16511 +  }
10.16512 +   catch ($e0) {
10.16513 +    $e0 = caught($e0);
10.16514 +    if (instanceOf($e0, 19)) {
10.16515 +      e = $e0;
10.16516 +      $fatal_0(this$static, e);
10.16517 +    }
10.16518 +     else 
10.16519 +      throw $e0;
10.16520 +  }
10.16521 +}
10.16522 +
10.16523 +function $appendCharacters(this$static, parent, text){
10.16524 +  var $e0, e;
10.16525 +  try {
10.16526 +    if (parent == this$static.placeholder) {
10.16527 +      this$static.script.appendChild(this$static.document_0.createTextNode(text));
10.16528 +    }
10.16529 +    parent.appendChild(this$static.document_0.createTextNode(text));
10.16530 +  }
10.16531 +   catch ($e0) {
10.16532 +    $e0 = caught($e0);
10.16533 +    if (instanceOf($e0, 19)) {
10.16534 +      e = $e0;
10.16535 +      $fatal_0(this$static, e);
10.16536 +    }
10.16537 +     else 
10.16538 +      throw $e0;
10.16539 +  }
10.16540 +}
10.16541 +
10.16542 +function $appendChildrenToNewParent(this$static, oldParent, newParent){
10.16543 +  var $e0, e;
10.16544 +  try {
10.16545 +    while (oldParent.hasChildNodes()) {
10.16546 +      newParent.appendChild(oldParent.firstChild);
10.16547 +    }
10.16548 +  }
10.16549 +   catch ($e0) {
10.16550 +    $e0 = caught($e0);
10.16551 +    if (instanceOf($e0, 19)) {
10.16552 +      e = $e0;
10.16553 +      $fatal_0(this$static, e);
10.16554 +    }
10.16555 +     else 
10.16556 +      throw $e0;
10.16557 +  }
10.16558 +}
10.16559 +
10.16560 +function $appendComment(this$static, parent, comment){
10.16561 +  var $e0, e;
10.16562 +  try {
10.16563 +    if (parent == this$static.placeholder) {
10.16564 +      this$static.script.appendChild(this$static.document_0.createComment(comment));
10.16565 +    }
10.16566 +    parent.appendChild(this$static.document_0.createComment(comment));
10.16567 +  }
10.16568 +   catch ($e0) {
10.16569 +    $e0 = caught($e0);
10.16570 +    if (instanceOf($e0, 19)) {
10.16571 +      e = $e0;
10.16572 +      $fatal_0(this$static, e);
10.16573 +    }
10.16574 +     else 
10.16575 +      throw $e0;
10.16576 +  }
10.16577 +}
10.16578 +
10.16579 +function $appendCommentToDocument(this$static, comment){
10.16580 +  var $e0, e;
10.16581 +  try {
10.16582 +    this$static.document_0.appendChild(this$static.document_0.createComment(comment));
10.16583 +  }
10.16584 +   catch ($e0) {
10.16585 +    $e0 = caught($e0);
10.16586 +    if (instanceOf($e0, 19)) {
10.16587 +      e = $e0;
10.16588 +      $fatal_0(this$static, e);
10.16589 +    }
10.16590 +     else 
10.16591 +      throw $e0;
10.16592 +  }
10.16593 +}
10.16594 +
10.16595 +function $appendElement(this$static, child, newParent){
10.16596 +  var $e0, e;
10.16597 +  try {
10.16598 +    if (newParent == this$static.placeholder) {
10.16599 +      this$static.script.appendChild(child.cloneNode(true));
10.16600 +    }
10.16601 +    newParent.appendChild(child);
10.16602 +  }
10.16603 +   catch ($e0) {
10.16604 +    $e0 = caught($e0);
10.16605 +    if (instanceOf($e0, 19)) {
10.16606 +      e = $e0;
10.16607 +      $fatal_0(this$static, e);
10.16608 +    }
10.16609 +     else 
10.16610 +      throw $e0;
10.16611 +  }
10.16612 +}
10.16613 +
10.16614 +function $createElement(this$static, ns, name, attributes){
10.16615 +  var $e0, e, i, rv;
10.16616 +  try {
10.16617 +    rv = this$static.document_0.createElementNS(ns, name);
10.16618 +    for (i = 0; i < attributes.length_0; ++i) {
10.16619 +      rv.setAttributeNS($getURI(attributes, i), $getLocalName(attributes, i), $getValue(attributes, i));
10.16620 +    }
10.16621 +    if ('script' == name) {
10.16622 +      if (this$static.placeholder) {
10.16623 +        $addLast(this$static.scriptStack, $BrowserTreeBuilder$ScriptHolder(new BrowserTreeBuilder$ScriptHolder(), this$static.script, this$static.placeholder));
10.16624 +      }
10.16625 +      this$static.script = rv;
10.16626 +      this$static.placeholder = this$static.document_0.createElementNS('http://n.validator.nu/placeholder/', 'script');
10.16627 +      rv = this$static.placeholder;
10.16628 +      for (i = 0; i < attributes.length_0; ++i) {
10.16629 +        rv.setAttributeNS($getURI(attributes, i), $getLocalName(attributes, i), $getValue(attributes, i));
10.16630 +      }
10.16631 +    }
10.16632 +    return rv;
10.16633 +  }
10.16634 +   catch ($e0) {
10.16635 +    $e0 = caught($e0);
10.16636 +    if (instanceOf($e0, 19)) {
10.16637 +      e = $e0;
10.16638 +      $fatal_0(this$static, e);
10.16639 +      throw $RuntimeException(new RuntimeException(), 'Unreachable');
10.16640 +    }
10.16641 +     else 
10.16642 +      throw $e0;
10.16643 +  }
10.16644 +}
10.16645 +
10.16646 +function $createElement_0(this$static, ns, name, attributes){
10.16647 +  var $e0, e, rv;
10.16648 +  try {
10.16649 +    rv = $createElement(this$static, ns, name, attributes);
10.16650 +    return rv;
10.16651 +  }
10.16652 +   catch ($e0) {
10.16653 +    $e0 = caught($e0);
10.16654 +    if (instanceOf($e0, 19)) {
10.16655 +      e = $e0;
10.16656 +      $fatal_0(this$static, e);
10.16657 +      return null;
10.16658 +    }
10.16659 +     else 
10.16660 +      throw $e0;
10.16661 +  }
10.16662 +}
10.16663 +
10.16664 +function $createHtmlElementSetAsRoot(this$static, attributes){
10.16665 +  var $e0, e, i, rv;
10.16666 +  try {
10.16667 +    rv = this$static.document_0.createElementNS('http://www.w3.org/1999/xhtml', 'html');
10.16668 +    for (i = 0; i < attributes.length_0; ++i) {
10.16669 +      rv.setAttributeNS($getURI(attributes, i), $getLocalName(attributes, i), $getValue(attributes, i));
10.16670 +    }
10.16671 +    this$static.document_0.appendChild(rv);
10.16672 +    return rv;
10.16673 +  }
10.16674 +   catch ($e0) {
10.16675 +    $e0 = caught($e0);
10.16676 +    if (instanceOf($e0, 19)) {
10.16677 +      e = $e0;
10.16678 +      $fatal_0(this$static, e);
10.16679 +      throw $RuntimeException(new RuntimeException(), 'Unreachable');
10.16680 +    }
10.16681 +     else 
10.16682 +      throw $e0;
10.16683 +  }
10.16684 +}
10.16685 +
10.16686 +function $detachFromParent(this$static, element){
10.16687 +  var $e0, e, parent;
10.16688 +  try {
10.16689 +    parent = element.parentNode;
10.16690 +    if (parent) {
10.16691 +      parent.removeChild(element);
10.16692 +    }
10.16693 +  }
10.16694 +   catch ($e0) {
10.16695 +    $e0 = caught($e0);
10.16696 +    if (instanceOf($e0, 19)) {
10.16697 +      e = $e0;
10.16698 +      $fatal_0(this$static, e);
10.16699 +    }
10.16700 +     else 
10.16701 +      throw $e0;
10.16702 +  }
10.16703 +}
10.16704 +
10.16705 +function $elementPopped(this$static, ns, name, node){
10.16706 +  if (node == this$static.placeholder) {
10.16707 +    this$static.readyToRun = true;
10.16708 +    this$static.tokenizer.shouldSuspend = true;
10.16709 +  }
10.16710 +  __elementPopped__(ns, name, node);
10.16711 +}
10.16712 +
10.16713 +function $getDocument(this$static){
10.16714 +  var rv;
10.16715 +  rv = this$static.document_0;
10.16716 +  this$static.document_0 = null;
10.16717 +  return rv;
10.16718 +}
10.16719 +
10.16720 +function $insertFosterParentedCharacters(this$static, text, table, stackParent){
10.16721 +  var $e0, child, e, parent;
10.16722 +  try {
10.16723 +    child = this$static.document_0.createTextNode(text);
10.16724 +    parent = table.parentNode;
10.16725 +    if (!!parent && parent.nodeType == 1) {
10.16726 +      parent.insertBefore(child, table);
10.16727 +    }
10.16728 +     else {
10.16729 +      stackParent.appendChild(child);
10.16730 +    }
10.16731 +  }
10.16732 +   catch ($e0) {
10.16733 +    $e0 = caught($e0);
10.16734 +    if (instanceOf($e0, 19)) {
10.16735 +      e = $e0;
10.16736 +      $fatal_0(this$static, e);
10.16737 +    }
10.16738 +     else 
10.16739 +      throw $e0;
10.16740 +  }
10.16741 +}
10.16742 +
10.16743 +function $insertFosterParentedChild(this$static, child, table, stackParent){
10.16744 +  var $e0, e, parent;
10.16745 +  parent = table.parentNode;
10.16746 +  try {
10.16747 +    if (!!parent && parent.nodeType == 1) {
10.16748 +      parent.insertBefore(child, table);
10.16749 +    }
10.16750 +     else {
10.16751 +      stackParent.appendChild(child);
10.16752 +    }
10.16753 +  }
10.16754 +   catch ($e0) {
10.16755 +    $e0 = caught($e0);
10.16756 +    if (instanceOf($e0, 19)) {
10.16757 +      e = $e0;
10.16758 +      $fatal_0(this$static, e);
10.16759 +    }
10.16760 +     else 
10.16761 +      throw $e0;
10.16762 +  }
10.16763 +}
10.16764 +
10.16765 +function $maybeRunScript(this$static){
10.16766 +  var scriptHolder;
10.16767 +  if (this$static.readyToRun) {
10.16768 +    this$static.readyToRun = false;
10.16769 +    replace_0(this$static.placeholder, this$static.script);
10.16770 +    if (this$static.scriptStack.size == 0) {
10.16771 +      this$static.script = null;
10.16772 +      this$static.placeholder = null;
10.16773 +    }
10.16774 +     else {
10.16775 +      scriptHolder = dynamicCast($removeLast(this$static.scriptStack), 20);
10.16776 +      this$static.script = scriptHolder.script;
10.16777 +      this$static.placeholder = scriptHolder.placeholder;
10.16778 +    }
10.16779 +  }
10.16780 +}
10.16781 +
10.16782 +function getClass_45(){
10.16783 +  return Lnu_validator_htmlparser_gwt_BrowserTreeBuilder_2_classLit;
10.16784 +}
10.16785 +
10.16786 +function installExplorerCreateElementNS(doc){
10.16787 +  if (!doc.createElementNS) {
10.16788 +    doc.createElementNS = function(uri, local){
10.16789 +      if ('http://www.w3.org/1999/xhtml' == uri) {
10.16790 +        return doc.createElement(local);
10.16791 +      }
10.16792 +       else if ('http://www.w3.org/1998/Math/MathML' == uri) {
10.16793 +        if (!doc.mathplayerinitialized) {
10.16794 +          var obj = document.createElement('object');
10.16795 +          obj.setAttribute('id', 'mathplayer');
10.16796 +          obj.setAttribute('classid', 'clsid:32F66A20-7614-11D4-BD11-00104BD3F987');
10.16797 +          document.getElementsByTagName('head')[0].appendChild(obj);
10.16798 +          document.namespaces.add('m', 'http://www.w3.org/1998/Math/MathML', '#mathplayer');
10.16799 +          doc.mathplayerinitialized = true;
10.16800 +        }
10.16801 +        return doc.createElement('m:' + local);
10.16802 +      }
10.16803 +       else if ('http://www.w3.org/2000/svg' == uri) {
10.16804 +        if (!doc.renesisinitialized) {
10.16805 +          var obj = document.createElement('object');
10.16806 +          obj.setAttribute('id', 'renesis');
10.16807 +          obj.setAttribute('classid', 'clsid:AC159093-1683-4BA2-9DCF-0C350141D7F2');
10.16808 +          document.getElementsByTagName('head')[0].appendChild(obj);
10.16809 +          document.namespaces.add('s', 'http://www.w3.org/2000/svg', '#renesis');
10.16810 +          doc.renesisinitialized = true;
10.16811 +        }
10.16812 +        return doc.createElement('s:' + local);
10.16813 +      }
10.16814 +       else {
10.16815 +      }
10.16816 +    }
10.16817 +    ;
10.16818 +  }
10.16819 +}
10.16820 +
10.16821 +function replace_0(oldNode, newNode){
10.16822 +  oldNode.parentNode.replaceChild(newNode, oldNode);
10.16823 +  __elementPopped__('', newNode.nodeName, newNode);
10.16824 +}
10.16825 +
10.16826 +function BrowserTreeBuilder(){
10.16827 +}
10.16828 +
10.16829 +_ = BrowserTreeBuilder.prototype = new CoalescingTreeBuilder();
10.16830 +_.getClass$ = getClass_45;
10.16831 +_.typeId$ = 0;
10.16832 +_.document_0 = null;
10.16833 +_.placeholder = null;
10.16834 +_.readyToRun = false;
10.16835 +_.script = null;
10.16836 +function $BrowserTreeBuilder$ScriptHolder(this$static, script, placeholder){
10.16837 +  this$static.script = script;
10.16838 +  this$static.placeholder = placeholder;
10.16839 +  return this$static;
10.16840 +}
10.16841 +
10.16842 +function getClass_44(){
10.16843 +  return Lnu_validator_htmlparser_gwt_BrowserTreeBuilder$ScriptHolder_2_classLit;
10.16844 +}
10.16845 +
10.16846 +function BrowserTreeBuilder$ScriptHolder(){
10.16847 +}
10.16848 +
10.16849 +_ = BrowserTreeBuilder$ScriptHolder.prototype = new Object_0();
10.16850 +_.getClass$ = getClass_44;
10.16851 +_.typeId$ = 34;
10.16852 +_.placeholder = null;
10.16853 +_.script = null;
10.16854 +function $HtmlParser(this$static, document_0){
10.16855 +  this$static.documentWriteBuffer = $StringBuilder(new StringBuilder());
10.16856 +  this$static.bufferStack = $LinkedList(new LinkedList());
10.16857 +  this$static.domTreeBuilder = $BrowserTreeBuilder(new BrowserTreeBuilder(), document_0);
10.16858 +  this$static.tokenizer = $ErrorReportingTokenizer(new ErrorReportingTokenizer(), this$static.domTreeBuilder);
10.16859 +  this$static.domTreeBuilder.namePolicy = ($clinit_80() , ALTER_INFOSET);
10.16860 +  this$static.tokenizer.commentPolicy = ALTER_INFOSET;
10.16861 +  this$static.tokenizer.contentNonXmlCharPolicy = ALTER_INFOSET;
10.16862 +  this$static.tokenizer.contentSpacePolicy = ALTER_INFOSET;
10.16863 +  this$static.tokenizer.namePolicy = ALTER_INFOSET;
10.16864 +  $setXmlnsPolicy(this$static.tokenizer, ALTER_INFOSET);
10.16865 +  return this$static;
10.16866 +}
10.16867 +
10.16868 +function $parse(this$static, source, useSetTimeouts, callback){
10.16869 +  this$static.parseEndListener = callback;
10.16870 +  $setFragmentContext(this$static.domTreeBuilder, null);
10.16871 +  this$static.lastWasCR = false;
10.16872 +  this$static.ending = false;
10.16873 +  $setLength(this$static.documentWriteBuffer, 0);
10.16874 +  this$static.streamLength = source.length;
10.16875 +  this$static.stream = $UTF16Buffer(new UTF16Buffer(), $toCharArray(source), 0, this$static.streamLength < 512?this$static.streamLength:512);
10.16876 +  $clear(this$static.bufferStack);
10.16877 +  $addLast(this$static.bufferStack, this$static.stream);
10.16878 +  $setFragmentContext(this$static.domTreeBuilder, null);
10.16879 +  $start_0(this$static.tokenizer);
10.16880 +  $pump(this$static, useSetTimeouts);
10.16881 +}
10.16882 +
10.16883 +function $pump(this$static, useSetTimeouts){
10.16884 +  var $e0, buffer, docWriteLen, newBuf, newEnd, timer;
10.16885 +  if (this$static.ending) {
10.16886 +    $end(this$static.tokenizer);
10.16887 +    $getDocument(this$static.domTreeBuilder);
10.16888 +    this$static.parseEndListener.callback();
10.16889 +    return;
10.16890 +  }
10.16891 +  docWriteLen = this$static.documentWriteBuffer.stringLength;
10.16892 +  if (docWriteLen > 0) {
10.16893 +    newBuf = initDim(_3C_classLit, 42, -1, docWriteLen, 1);
10.16894 +    $getChars(this$static.documentWriteBuffer, 0, docWriteLen, newBuf, 0);
10.16895 +    $addLast(this$static.bufferStack, $UTF16Buffer(new UTF16Buffer(), newBuf, 0, docWriteLen));
10.16896 +    $setLength(this$static.documentWriteBuffer, 0);
10.16897 +  }
10.16898 +  for (;;) {
10.16899 +    buffer = dynamicCast($getLast(this$static.bufferStack), 21);
10.16900 +    if (buffer.start >= buffer.end) {
10.16901 +      if (buffer == this$static.stream) {
10.16902 +        if (buffer.end == this$static.streamLength) {
10.16903 +          $eof(this$static.tokenizer);
10.16904 +          this$static.ending = true;
10.16905 +          break;
10.16906 +        }
10.16907 +         else {
10.16908 +          newEnd = buffer.start + 512;
10.16909 +          buffer.end = newEnd < this$static.streamLength?newEnd:this$static.streamLength;
10.16910 +          continue;
10.16911 +        }
10.16912 +      }
10.16913 +       else {
10.16914 +        dynamicCast($removeLast(this$static.bufferStack), 21);
10.16915 +        continue;
10.16916 +      }
10.16917 +    }
10.16918 +    $adjust(buffer, this$static.lastWasCR);
10.16919 +    this$static.lastWasCR = false;
10.16920 +    if (buffer.start < buffer.end) {
10.16921 +      this$static.lastWasCR = $tokenizeBuffer(this$static.tokenizer, buffer);
10.16922 +      $maybeRunScript(this$static.domTreeBuilder);
10.16923 +      break;
10.16924 +    }
10.16925 +     else {
10.16926 +      continue;
10.16927 +    }
10.16928 +  }
10.16929 +  if (useSetTimeouts) {
10.16930 +    timer = $HtmlParser$1(new HtmlParser$1(), this$static);
10.16931 +    $schedule(timer, 1);
10.16932 +  }
10.16933 +   else {
10.16934 +    try {
10.16935 +      $pump(this$static, false);
10.16936 +    }
10.16937 +     catch ($e0) {
10.16938 +      $e0 = caught($e0);
10.16939 +      if (instanceOf($e0, 22)) {
10.16940 +        this$static.ending = true;
10.16941 +      }
10.16942 +       else 
10.16943 +        throw $e0;
10.16944 +    }
10.16945 +  }
10.16946 +}
10.16947 +
10.16948 +function documentWrite(text){
10.16949 +  var buffer;
10.16950 +  buffer = $UTF16Buffer(new UTF16Buffer(), $toCharArray(text), 0, text.length);
10.16951 +  while (buffer.start < buffer.end) {
10.16952 +    $adjust(buffer, this.lastWasCR);
10.16953 +    this.lastWasCR = false;
10.16954 +    if (buffer.start < buffer.end) {
10.16955 +      this.lastWasCR = $tokenizeBuffer(this.tokenizer, buffer);
10.16956 +      $maybeRunScript(this.domTreeBuilder);
10.16957 +    }
10.16958 +  }
10.16959 +}
10.16960 +
10.16961 +function getClass_47(){
10.16962 +  return Lnu_validator_htmlparser_gwt_HtmlParser_2_classLit;
10.16963 +}
10.16964 +
10.16965 +function HtmlParser(){
10.16966 +}
10.16967 +
10.16968 +_ = HtmlParser.prototype = new Object_0();
10.16969 +_.documentWrite = documentWrite;
10.16970 +_.getClass$ = getClass_47;
10.16971 +_.typeId$ = 0;
10.16972 +_.domTreeBuilder = null;
10.16973 +_.ending = false;
10.16974 +_.lastWasCR = false;
10.16975 +_.parseEndListener = null;
10.16976 +_.stream = null;
10.16977 +_.streamLength = 0;
10.16978 +_.tokenizer = null;
10.16979 +function $clinit_83(){
10.16980 +  $clinit_83 = nullMethod;
10.16981 +  $clinit_12();
10.16982 +}
10.16983 +
10.16984 +function $HtmlParser$1(this$static, this$0){
10.16985 +  $clinit_83();
10.16986 +  this$static.this$0 = this$0;
10.16987 +  return this$static;
10.16988 +}
10.16989 +
10.16990 +function $run(this$static){
10.16991 +  var $e0;
10.16992 +  // try {
10.16993 +    $pump(this$static.this$0, true);
10.16994 +  /*}
10.16995 +   catch ($e0) {
10.16996 +    $e0 = caught($e0);
10.16997 +    if (instanceOf($e0, 22)) {
10.16998 +      this$static.this$0.ending = true;
10.16999 +    }
10.17000 +     else 
10.17001 +      throw $e0;
10.17002 +  } */
10.17003 +}
10.17004 +
10.17005 +function getClass_46(){
10.17006 +  return Lnu_validator_htmlparser_gwt_HtmlParser$1_2_classLit;
10.17007 +}
10.17008 +
10.17009 +function HtmlParser$1(){
10.17010 +}
10.17011 +
10.17012 +_ = HtmlParser$1.prototype = new Timer();
10.17013 +_.getClass$ = getClass_46;
10.17014 +_.typeId$ = 35;
10.17015 +_.this$0 = null;
10.17016 +function installDocWrite(doc, parser){
10.17017 +  doc.write = function(){
10.17018 +    if (arguments.length == 0) {
10.17019 +      return;
10.17020 +    }
10.17021 +    var text = arguments[0];
10.17022 +    for (var i = 1; i < arguments.length; i++) {
10.17023 +      text += arguments[i];
10.17024 +    }
10.17025 +    parser.documentWrite(text);
10.17026 +  }
10.17027 +  ;
10.17028 +  doc.writeln = function(){
10.17029 +    if (arguments.length == 0) {
10.17030 +      parser.documentWrite('\n');
10.17031 +      return;
10.17032 +    }
10.17033 +    var text = arguments[0];
10.17034 +    for (var i = 1; i < arguments.length; i++) {
10.17035 +      text += arguments[i];
10.17036 +    }
10.17037 +    text += '\n';
10.17038 +    parser.documentWrite(text);
10.17039 +  }
10.17040 +  ;
10.17041 +}
10.17042 +
10.17043 +function parseHtmlDocument(source, document_0, useSetTimeouts, readyCallback, errorHandler){
10.17044 +  var parser;
10.17045 +  if (!readyCallback) {
10.17046 +    readyCallback = createFunction();
10.17047 +  }
10.17048 +  zapChildren(document_0);
10.17049 +  parser = $HtmlParser(new HtmlParser(), document_0);
10.17050 +  installDocWrite(document_0, parser);
10.17051 +  $parse(parser, source, useSetTimeouts, $ParseEndListener(new ParseEndListener(), readyCallback));
10.17052 +}
10.17053 +
10.17054 +function zapChildren(node){
10.17055 +  while (node.hasChildNodes()) {
10.17056 +    node.removeChild(node.lastChild);
10.17057 +  }
10.17058 +}
10.17059 +
10.17060 +function $ParseEndListener(this$static, callback){
10.17061 +  this$static.callback = callback;
10.17062 +  return this$static;
10.17063 +}
10.17064 +
10.17065 +function getClass_48(){
10.17066 +  return Lnu_validator_htmlparser_gwt_ParseEndListener_2_classLit;
10.17067 +}
10.17068 +
10.17069 +function ParseEndListener(){
10.17070 +}
10.17071 +
10.17072 +_ = ParseEndListener.prototype = new Object_0();
10.17073 +_.getClass$ = getClass_48;
10.17074 +_.typeId$ = 0;
10.17075 +_.callback = null;
10.17076 +function $clinit_87(){
10.17077 +  var arr_32;
10.17078 +  $clinit_87 = nullMethod;
10.17079 +  ALL_NO_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', '', '', '']);
10.17080 +  XMLNS_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', 'http://www.w3.org/2000/xmlns/', 'http://www.w3.org/2000/xmlns/', '']);
10.17081 +  XML_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', 'http://www.w3.org/XML/1998/namespace', 'http://www.w3.org/XML/1998/namespace', '']);
10.17082 +  XLINK_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', 'http://www.w3.org/1999/xlink', 'http://www.w3.org/1999/xlink', '']);
10.17083 +  LANG_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', '', '', 'http://www.w3.org/XML/1998/namespace']);
10.17084 +  ALL_NO_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, null, null, null]);
10.17085 +  XMLNS_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, 'xmlns', 'xmlns', null]);
10.17086 +  XLINK_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, 'xlink', 'xlink', null]);
10.17087 +  XML_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, 'xml', 'xml', null]);
10.17088 +  LANG_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, null, null, 'xml']);
10.17089 +  ALL_NCNAME = initValues(_3Z_classLit, 0, -1, [true, true, true, true]);
10.17090 +  ALL_NO_NCNAME = initValues(_3Z_classLit, 0, -1, [false, false, false, false]);
10.17091 +  D = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('d'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17092 +  K = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17093 +  R = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('r'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17094 +  X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17095 +  Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('y'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17096 +  Z = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('z'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17097 +  BY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('by'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17098 +  CX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cx'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17099 +  CY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17100 +  DX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dx'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17101 +  DY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17102 +  G2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('g2'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17103 +  G1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('g1'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17104 +  FX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fx'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17105 +  FY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17106 +  K4 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k4'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17107 +  K2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k2'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17108 +  K3 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k3'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17109 +  K1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k1'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17110 +  ID = $AttributeName_0(new AttributeName(), ALL_NO_NS, SAME_LOCAL('id'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17111 +  IN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('in'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17112 +  U2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('u2'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17113 +  U1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('u1'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17114 +  RT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rt'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17115 +  RX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rx'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17116 +  RY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ry'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17117 +  TO = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('to'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17118 +  Y2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('y2'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17119 +  Y1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('y1'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17120 +  X1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x1'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17121 +  X2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x2'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17122 +  ALT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alt'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17123 +  DIR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dir'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17124 +  DUR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dur'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17125 +  END = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('end'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17126 +  FOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('for'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17127 +  IN2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('in2'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17128 +  MAX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('max'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17129 +  MIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('min'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17130 +  LOW = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('low'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17131 +  REL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rel'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17132 +  REV = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rev'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17133 +  SRC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('src'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17134 +  AXIS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('axis'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17135 +  ABBR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('abbr'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17136 +  BBOX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bbox'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17137 +  CITE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cite'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17138 +  CODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('code'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17139 +  BIAS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bias'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17140 +  COLS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cols'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17141 +  CLIP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clip'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17142 +  CHAR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('char'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17143 +  BASE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('base'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17144 +  EDGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('edge'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17145 +  DATA = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('data'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17146 +  FILL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fill'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17147 +  FROM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('from'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17148 +  FORM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('form'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17149 +  FACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('face'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17150 +  HIGH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('high'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17151 +  HREF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('href'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17152 +  OPEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('open'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17153 +  ICON = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('icon'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17154 +  NAME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('name'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17155 +  MODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mode'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17156 +  MASK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mask'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17157 +  LINK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('link'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17158 +  LANG = $AttributeName(new AttributeName(), LANG_NS, SAME_LOCAL('lang'), LANG_PREFIX, ALL_NCNAME, false);
10.17159 +  LIST = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('list'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17160 +  TYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('type'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17161 +  WHEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('when'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17162 +  WRAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('wrap'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17163 +  TEXT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17164 +  PATH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('path'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17165 +  PING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ping'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17166 +  REFX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('refx', 'refX'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17167 +  REFY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('refy', 'refY'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17168 +  SIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('size'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17169 +  SEED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('seed'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17170 +  ROWS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rows'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17171 +  SPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('span'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17172 +  STEP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('step'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17173 +  ROLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('role'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17174 +  XREF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('xref'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17175 +  ASYNC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('async'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17176 +  ALINK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alink'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17177 +  ALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('align'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17178 +  CLOSE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('close'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17179 +  COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17180 +  CLASS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('class'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17181 +  CLEAR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clear'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17182 +  BEGIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('begin'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17183 +  DEPTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('depth'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17184 +  DEFER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('defer'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17185 +  FENCE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fence'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17186 +  FRAME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('frame'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17187 +  ISMAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ismap'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17188 +  ONEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onend'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17189 +  INDEX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('index'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17190 +  ORDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('order'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17191 +  OTHER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('other'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17192 +  ONCUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncut'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17193 +  NARGS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('nargs'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17194 +  MEDIA = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('media'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17195 +  LABEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('label'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17196 +  LOCAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('local'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17197 +  WIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('width'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17198 +  TITLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('title'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17199 +  VLINK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vlink'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17200 +  VALUE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('value'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17201 +  SLOPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('slope'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17202 +  SHAPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('shape'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17203 +  SCOPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scope'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17204 +  SCALE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scale'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17205 +  SPEED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('speed'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17206 +  STYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('style'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17207 +  RULES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rules'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17208 +  STEMH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stemh'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17209 +  STEMV = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stemv'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17210 +  START = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('start'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17211 +  XMLNS = $AttributeName(new AttributeName(), XMLNS_NS, SAME_LOCAL('xmlns'), ALL_NO_PREFIX, initValues(_3Z_classLit, 0, -1, [false, false, false, false]), true);
10.17212 +  ACCEPT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accept'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17213 +  ACCENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accent'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17214 +  ASCENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ascent'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17215 +  ACTIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('active'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17216 +  ALTIMG = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('altimg'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17217 +  ACTION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('action'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17218 +  BORDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('border'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17219 +  CURSOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cursor'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17220 +  COORDS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('coords'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17221 +  FILTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('filter'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17222 +  FORMAT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('format'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17223 +  HIDDEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hidden'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17224 +  HSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17225 +  HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('height'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17226 +  ONMOVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmove'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17227 +  ONLOAD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onload'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17228 +  ONDRAG = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondrag'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17229 +  ORIGIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('origin'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17230 +  ONZOOM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onzoom'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17231 +  ONHELP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onhelp'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17232 +  ONSTOP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onstop'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17233 +  ONDROP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondrop'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17234 +  ONBLUR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onblur'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17235 +  OBJECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('object'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17236 +  OFFSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('offset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17237 +  ORIENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('orient'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17238 +  ONCOPY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncopy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17239 +  NOWRAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('nowrap'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17240 +  NOHREF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('nohref'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17241 +  MACROS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('macros'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17242 +  METHOD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('method'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17243 +  LOWSRC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lowsrc'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17244 +  LSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17245 +  LQUOTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lquote'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17246 +  USEMAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('usemap'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17247 +  WIDTHS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('widths'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17248 +  TARGET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('target'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17249 +  VALUES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('values'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17250 +  VALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('valign'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17251 +  VSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17252 +  POSTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('poster'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17253 +  POINTS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('points'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17254 +  PROMPT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('prompt'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17255 +  SCOPED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scoped'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17256 +  STRING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('string'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17257 +  SCHEME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scheme'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17258 +  STROKE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17259 +  RADIUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('radius'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17260 +  RESULT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('result'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17261 +  REPEAT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17262 +  RSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17263 +  ROTATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rotate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17264 +  RQUOTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rquote'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17265 +  ALTTEXT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alttext'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17266 +  ARCHIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('archive'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17267 +  AZIMUTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('azimuth'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17268 +  CLOSURE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('closure'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17269 +  CHECKED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('checked'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17270 +  CLASSID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('classid'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17271 +  CHAROFF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('charoff'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17272 +  BGCOLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bgcolor'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17273 +  COLSPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('colspan'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17274 +  CHARSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('charset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17275 +  COMPACT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('compact'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17276 +  CONTENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('content'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17277 +  ENCTYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('enctype'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17278 +  DATASRC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('datasrc'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17279 +  DATAFLD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('datafld'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17280 +  DECLARE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('declare'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17281 +  DISPLAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('display'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17282 +  DIVISOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('divisor'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17283 +  DEFAULT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('default'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17284 +  DESCENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('descent'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17285 +  KERNING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('kerning'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17286 +  HANGING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hanging'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17287 +  HEADERS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('headers'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17288 +  ONPASTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onpaste'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17289 +  ONCLICK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onclick'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17290 +  OPTIMUM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('optimum'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17291 +  ONBEGIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbegin'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17292 +  ONKEYUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onkeyup'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17293 +  ONFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17294 +  ONERROR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onerror'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17295 +  ONINPUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oninput'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17296 +  ONABORT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onabort'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17297 +  ONSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17298 +  ONRESET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onreset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17299 +  OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17300 +  NOSHADE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('noshade'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17301 +  MINSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('minsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17302 +  MAXSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('maxsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17303 +  LOOPEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('loopend'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17304 +  LARGEOP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('largeop'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17305 +  UNICODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unicode'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17306 +  TARGETX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('targetx', 'targetX'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17307 +  TARGETY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('targety', 'targetY'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17308 +  VIEWBOX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('viewbox', 'viewBox'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17309 +  VERSION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('version'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17310 +  PATTERN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('pattern'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17311 +  PROFILE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('profile'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17312 +  SPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('spacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17313 +  RESTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('restart'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17314 +  ROWSPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowspan'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17315 +  SANDBOX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('sandbox'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17316 +  SUMMARY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('summary'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17317 +  STANDBY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('standby'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17318 +  REPLACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('replace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17319 +  AUTOPLAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autoplay'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17320 +  ADDITIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('additive'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17321 +  CALCMODE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('calcmode', 'calcMode'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17322 +  CODETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('codetype'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17323 +  CODEBASE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('codebase'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17324 +  CONTROLS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('controls'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17325 +  BEVELLED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bevelled'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17326 +  BASELINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('baseline'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17327 +  EXPONENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('exponent'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17328 +  EDGEMODE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('edgemode', 'edgeMode'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17329 +  ENCODING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('encoding'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17330 +  GLYPHREF = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('glyphref', 'glyphRef'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17331 +  DATETIME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('datetime'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17332 +  DISABLED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('disabled'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17333 +  FONTSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17334 +  KEYTIMES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('keytimes', 'keyTimes'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17335 +  PANOSE_1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('panose-1'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17336 +  HREFLANG = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hreflang'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17337 +  ONRESIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onresize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17338 +  ONCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17339 +  ONBOUNCE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbounce'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17340 +  ONUNLOAD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onunload'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17341 +  ONFINISH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfinish'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17342 +  ONSCROLL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onscroll'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17343 +  OPERATOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('operator'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17344 +  OVERFLOW = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('overflow'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17345 +  ONSUBMIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onsubmit'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17346 +  ONREPEAT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrepeat'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17347 +  ONSELECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onselect'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17348 +  NOTATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('notation'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17349 +  NORESIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('noresize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17350 +  MANIFEST = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('manifest'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17351 +  MATHSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17352 +  MULTIPLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('multiple'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17353 +  LONGDESC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('longdesc'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17354 +  LANGUAGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('language'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17355 +  TEMPLATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('template'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17356 +  TABINDEX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('tabindex'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17357 +  READONLY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('readonly'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17358 +  SELECTED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('selected'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17359 +  ROWLINES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowlines'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17360 +  SEAMLESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('seamless'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17361 +  ROWALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowalign'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17362 +  STRETCHY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stretchy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17363 +  REQUIRED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('required'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17364 +  XML_BASE = $AttributeName(new AttributeName(), XML_NS, COLONIFIED_LOCAL('xml:base', 'base'), XML_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17365 +  XML_LANG = $AttributeName(new AttributeName(), XML_NS, COLONIFIED_LOCAL('xml:lang', 'lang'), XML_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17366 +  X_HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x-height'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17367 +  ARIA_OWNS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-owns'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17368 +  AUTOFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autofocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17369 +  ARIA_SORT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-sort'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17370 +  ACCESSKEY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accesskey'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17371 +  ARIA_BUSY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-busy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17372 +  ARIA_GRAB = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-grab'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17373 +  AMPLITUDE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('amplitude'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17374 +  ARIA_LIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-live'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17375 +  CLIP_RULE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clip-rule'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17376 +  CLIP_PATH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clip-path'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17377 +  EQUALROWS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('equalrows'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17378 +  ELEVATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('elevation'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17379 +  DIRECTION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('direction'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17380 +  DRAGGABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('draggable'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17381 +  FILTERRES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('filterres', 'filterRes'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17382 +  FILL_RULE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fill-rule'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17383 +  FONTSTYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontstyle'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17384 +  FONT_SIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-size'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17385 +  KEYPOINTS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('keypoints', 'keyPoints'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17386 +  HIDEFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hidefocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17387 +  ONMESSAGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmessage'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17388 +  INTERCEPT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('intercept'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17389 +  ONDRAGEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragend'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17390 +  ONMOVEEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmoveend'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17391 +  ONINVALID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oninvalid'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17392 +  ONKEYDOWN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onkeydown'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17393 +  ONFOCUSIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfocusin'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17394 +  ONMOUSEUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseup'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17395 +  INPUTMODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('inputmode'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17396 +  ONROWEXIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowexit'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17397 +  MATHCOLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathcolor'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17398 +  MASKUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('maskunits', 'maskUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17399 +  MAXLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('maxlength'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17400 +  LINEBREAK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('linebreak'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17401 +  LOOPSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('loopstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17402 +  TRANSFORM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('transform'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17403 +  V_HANGING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-hanging'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17404 +  VALUETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('valuetype'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17405 +  POINTSATZ = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pointsatz', 'pointsAtZ'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17406 +  POINTSATX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pointsatx', 'pointsAtX'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17407 +  POINTSATY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pointsaty', 'pointsAtY'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17408 +  PLAYCOUNT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('playcount'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17409 +  SYMMETRIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('symmetric'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17410 +  SCROLLING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scrolling'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17411 +  REPEATDUR = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('repeatdur', 'repeatDur'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17412 +  SELECTION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('selection'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17413 +  SEPARATOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('separator'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17414 +  XML_SPACE = $AttributeName(new AttributeName(), XML_NS, COLONIFIED_LOCAL('xml:space', 'space'), XML_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17415 +  AUTOSUBMIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autosubmit'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17416 +  ALPHABETIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alphabetic'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17417 +  ACTIONTYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('actiontype'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17418 +  ACCUMULATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accumulate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17419 +  ARIA_LEVEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-level'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17420 +  COLUMNSPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnspan'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17421 +  CAP_HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cap-height'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17422 +  BACKGROUND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('background'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17423 +  GLYPH_NAME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('glyph-name'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17424 +  GROUPALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('groupalign'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17425 +  FONTFAMILY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontfamily'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17426 +  FONTWEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontweight'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17427 +  FONT_STYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-style'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17428 +  KEYSPLINES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('keysplines', 'keySplines'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17429 +  HTTP_EQUIV = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('http-equiv'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17430 +  ONACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17431 +  OCCURRENCE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('occurrence'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17432 +  IRRELEVANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('irrelevant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17433 +  ONDBLCLICK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondblclick'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17434 +  ONDRAGDROP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragdrop'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17435 +  ONKEYPRESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onkeypress'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17436 +  ONROWENTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowenter'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17437 +  ONDRAGOVER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragover'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17438 +  ONFOCUSOUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfocusout'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17439 +  ONMOUSEOUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseout'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17440 +  NUMOCTAVES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('numoctaves', 'numOctaves'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17441 +  MARKER_MID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marker-mid'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17442 +  MARKER_END = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marker-end'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17443 +  TEXTLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('textlength', 'textLength'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17444 +  VISIBILITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('visibility'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17445 +  VIEWTARGET = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('viewtarget', 'viewTarget'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17446 +  VERT_ADV_Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vert-adv-y'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17447 +  PATHLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pathlength', 'pathLength'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17448 +  REPEAT_MAX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-max'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17449 +  RADIOGROUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('radiogroup'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17450 +  STOP_COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stop-color'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17451 +  SEPARATORS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('separators'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17452 +  REPEAT_MIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-min'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17453 +  ROWSPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowspacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17454 +  ZOOMANDPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('zoomandpan', 'zoomAndPan'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17455 +  XLINK_TYPE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:type', 'type'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17456 +  XLINK_ROLE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:role', 'role'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17457 +  XLINK_HREF = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:href', 'href'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17458 +  XLINK_SHOW = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:show', 'show'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17459 +  ACCENTUNDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accentunder'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17460 +  ARIA_SECRET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-secret'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17461 +  ARIA_ATOMIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-atomic'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17462 +  ARIA_HIDDEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-hidden'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17463 +  ARIA_FLOWTO = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-flowto'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17464 +  ARABIC_FORM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('arabic-form'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17465 +  CELLPADDING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cellpadding'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17466 +  CELLSPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cellspacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17467 +  COLUMNWIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnwidth'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17468 +  COLUMNALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnalign'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17469 +  COLUMNLINES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnlines'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17470 +  CONTEXTMENU = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('contextmenu'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17471 +  BASEPROFILE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('baseprofile', 'baseProfile'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17472 +  FONT_FAMILY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-family'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17473 +  FRAMEBORDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('frameborder'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17474 +  FILTERUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('filterunits', 'filterUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17475 +  FLOOD_COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('flood-color'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17476 +  FONT_WEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-weight'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17477 +  HORIZ_ADV_X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('horiz-adv-x'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17478 +  ONDRAGLEAVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragleave'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17479 +  ONMOUSEMOVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmousemove'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17480 +  ORIENTATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('orientation'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17481 +  ONMOUSEDOWN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmousedown'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17482 +  ONMOUSEOVER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseover'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17483 +  ONDRAGENTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragenter'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17484 +  IDEOGRAPHIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ideographic'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17485 +  ONBEFORECUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforecut'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17486 +  ONFORMINPUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onforminput'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17487 +  ONDRAGSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17488 +  ONMOVESTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmovestart'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17489 +  MARKERUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('markerunits', 'markerUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17490 +  MATHVARIANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathvariant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17491 +  MARGINWIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marginwidth'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17492 +  MARKERWIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('markerwidth', 'markerWidth'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17493 +  TEXT_ANCHOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text-anchor'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17494 +  TABLEVALUES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('tablevalues', 'tableValues'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17495 +  SCRIPTLEVEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scriptlevel'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17496 +  REPEATCOUNT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('repeatcount', 'repeatCount'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17497 +  STITCHTILES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('stitchtiles', 'stitchTiles'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17498 +  STARTOFFSET = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('startoffset', 'startOffset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17499 +  SCROLLDELAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scrolldelay'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17500 +  XMLNS_XLINK = $AttributeName(new AttributeName(), XMLNS_NS, COLONIFIED_LOCAL('xmlns:xlink', 'xlink'), XMLNS_PREFIX, initValues(_3Z_classLit, 0, -1, [false, false, false, false]), true);
10.17501 +  XLINK_TITLE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:title', 'title'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17502 +  ARIA_INVALID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-invalid'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17503 +  ARIA_PRESSED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-pressed'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17504 +  ARIA_CHECKED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-checked'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17505 +  AUTOCOMPLETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autocomplete'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17506 +  ARIA_SETSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-setsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17507 +  ARIA_CHANNEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-channel'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17508 +  EQUALCOLUMNS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('equalcolumns'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17509 +  DISPLAYSTYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('displaystyle'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17510 +  DATAFORMATAS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dataformatas'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17511 +  FILL_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fill-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17512 +  FONT_VARIANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-variant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17513 +  FONT_STRETCH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-stretch'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17514 +  FRAMESPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('framespacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17515 +  KERNELMATRIX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('kernelmatrix', 'kernelMatrix'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17516 +  ONDEACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondeactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17517 +  ONROWSDELETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowsdelete'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17518 +  ONMOUSELEAVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseleave'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17519 +  ONFORMCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onformchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17520 +  ONCELLCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncellchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17521 +  ONMOUSEWHEEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmousewheel'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17522 +  ONMOUSEENTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseenter'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17523 +  ONAFTERPRINT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onafterprint'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17524 +  ONBEFORECOPY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforecopy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17525 +  MARGINHEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marginheight'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17526 +  MARKERHEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('markerheight', 'markerHeight'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17527 +  MARKER_START = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marker-start'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17528 +  MATHEMATICAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathematical'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17529 +  LENGTHADJUST = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('lengthadjust', 'lengthAdjust'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17530 +  UNSELECTABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unselectable'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17531 +  UNICODE_BIDI = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unicode-bidi'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17532 +  UNITS_PER_EM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('units-per-em'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17533 +  WORD_SPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('word-spacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17534 +  WRITING_MODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('writing-mode'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17535 +  V_ALPHABETIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-alphabetic'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17536 +  PATTERNUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('patternunits', 'patternUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17537 +  SPREADMETHOD = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('spreadmethod', 'spreadMethod'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17538 +  SURFACESCALE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('surfacescale', 'surfaceScale'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17539 +  STROKE_WIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-width'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17540 +  REPEAT_START = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-start'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17541 +  STDDEVIATION = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('stddeviation', 'stdDeviation'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17542 +  STOP_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stop-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17543 +  ARIA_CONTROLS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-controls'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17544 +  ARIA_HASPOPUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-haspopup'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17545 +  ACCENT_HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accent-height'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17546 +  ARIA_VALUENOW = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-valuenow'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17547 +  ARIA_RELEVANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-relevant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17548 +  ARIA_POSINSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-posinset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17549 +  ARIA_VALUEMAX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-valuemax'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17550 +  ARIA_READONLY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-readonly'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17551 +  ARIA_SELECTED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-selected'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17552 +  ARIA_REQUIRED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-required'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17553 +  ARIA_EXPANDED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-expanded'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17554 +  ARIA_DISABLED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-disabled'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17555 +  ATTRIBUTETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('attributetype', 'attributeType'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17556 +  ATTRIBUTENAME = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('attributename', 'attributeName'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17557 +  ARIA_DATATYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-datatype'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17558 +  ARIA_VALUEMIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-valuemin'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17559 +  BASEFREQUENCY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('basefrequency', 'baseFrequency'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17560 +  COLUMNSPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnspacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17561 +  COLOR_PROFILE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-profile'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17562 +  CLIPPATHUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('clippathunits', 'clipPathUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17563 +  DEFINITIONURL = $AttributeName(new AttributeName(), ALL_NO_NS, (arr_32 = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0) , arr_32[0] = 'definitionurl' , arr_32[1] = 'definitionURL' , arr_32[2] = 'definitionurl' , arr_32[3] = 'definitionurl' , arr_32), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17564 +  GRADIENTUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('gradientunits', 'gradientUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17565 +  FLOOD_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('flood-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17566 +  ONAFTERUPDATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onafterupdate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17567 +  ONERRORUPDATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onerrorupdate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17568 +  ONBEFOREPASTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforepaste'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17569 +  ONLOSECAPTURE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onlosecapture'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17570 +  ONCONTEXTMENU = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncontextmenu'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17571 +  ONSELECTSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onselectstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17572 +  ONBEFOREPRINT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeprint'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17573 +  MOVABLELIMITS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('movablelimits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17574 +  LINETHICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('linethickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17575 +  UNICODE_RANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unicode-range'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17576 +  THINMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('thinmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17577 +  VERT_ORIGIN_X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vert-origin-x'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17578 +  VERT_ORIGIN_Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vert-origin-y'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17579 +  V_IDEOGRAPHIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-ideographic'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17580 +  PRESERVEALPHA = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('preservealpha', 'preserveAlpha'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17581 +  SCRIPTMINSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scriptminsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17582 +  SPECIFICATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('specification'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17583 +  XLINK_ACTUATE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:actuate', 'actuate'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17584 +  XLINK_ARCROLE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:arcrole', 'arcrole'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17585 +  ACCEPT_CHARSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accept-charset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17586 +  ALIGNMENTSCOPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alignmentscope'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17587 +  ARIA_MULTILINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-multiline'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17588 +  BASELINE_SHIFT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('baseline-shift'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17589 +  HORIZ_ORIGIN_X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('horiz-origin-x'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17590 +  HORIZ_ORIGIN_Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('horiz-origin-y'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17591 +  ONBEFOREUPDATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeupdate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17592 +  ONFILTERCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfilterchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17593 +  ONROWSINSERTED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowsinserted'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17594 +  ONBEFOREUNLOAD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeunload'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17595 +  MATHBACKGROUND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathbackground'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17596 +  LETTER_SPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('letter-spacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17597 +  LIGHTING_COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lighting-color'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17598 +  THICKMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('thickmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17599 +  TEXT_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17600 +  V_MATHEMATICAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-mathematical'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17601 +  POINTER_EVENTS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('pointer-events'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17602 +  PRIMITIVEUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('primitiveunits', 'primitiveUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17603 +  SYSTEMLANGUAGE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('systemlanguage', 'systemLanguage'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17604 +  STROKE_LINECAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-linecap'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17605 +  SUBSCRIPTSHIFT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('subscriptshift'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17606 +  STROKE_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17607 +  ARIA_DROPEFFECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-dropeffect'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17608 +  ARIA_LABELLEDBY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-labelledby'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17609 +  ARIA_TEMPLATEID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-templateid'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17610 +  COLOR_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17611 +  CONTENTEDITABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('contenteditable'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17612 +  DIFFUSECONSTANT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('diffuseconstant', 'diffuseConstant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17613 +  ONDATAAVAILABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondataavailable'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17614 +  ONCONTROLSELECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncontrolselect'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17615 +  IMAGE_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('image-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17616 +  MEDIUMMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mediummathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17617 +  TEXT_DECORATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text-decoration'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17618 +  SHAPE_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('shape-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17619 +  STROKE_LINEJOIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-linejoin'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17620 +  REPEAT_TEMPLATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-template'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17621 +  ARIA_DESCRIBEDBY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-describedby'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17622 +  CONTENTSTYLETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('contentstyletype', 'contentStyleType'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17623 +  FONT_SIZE_ADJUST = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-size-adjust'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17624 +  KERNELUNITLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('kernelunitlength', 'kernelUnitLength'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17625 +  ONBEFOREACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17626 +  ONPROPERTYCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onpropertychange'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17627 +  ONDATASETCHANGED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondatasetchanged'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17628 +  MASKCONTENTUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('maskcontentunits', 'maskContentUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17629 +  PATTERNTRANSFORM = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('patterntransform', 'patternTransform'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17630 +  REQUIREDFEATURES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('requiredfeatures', 'requiredFeatures'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17631 +  RENDERING_INTENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rendering-intent'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17632 +  SPECULAREXPONENT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('specularexponent', 'specularExponent'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17633 +  SPECULARCONSTANT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('specularconstant', 'specularConstant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17634 +  SUPERSCRIPTSHIFT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('superscriptshift'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17635 +  STROKE_DASHARRAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-dasharray'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17636 +  XCHANNELSELECTOR = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('xchannelselector', 'xChannelSelector'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17637 +  YCHANNELSELECTOR = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('ychannelselector', 'yChannelSelector'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17638 +  ARIA_AUTOCOMPLETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-autocomplete'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17639 +  CONTENTSCRIPTTYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('contentscripttype', 'contentScriptType'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17640 +  ENABLE_BACKGROUND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('enable-background'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17641 +  DOMINANT_BASELINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dominant-baseline'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17642 +  GRADIENTTRANSFORM = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('gradienttransform', 'gradientTransform'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17643 +  ONBEFORDEACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbefordeactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17644 +  ONDATASETCOMPLETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondatasetcomplete'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17645 +  OVERLINE_POSITION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('overline-position'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17646 +  ONBEFOREEDITFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeeditfocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17647 +  LIMITINGCONEANGLE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('limitingconeangle', 'limitingConeAngle'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17648 +  VERYTHINMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('verythinmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17649 +  STROKE_DASHOFFSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-dashoffset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17650 +  STROKE_MITERLIMIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-miterlimit'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17651 +  ALIGNMENT_BASELINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alignment-baseline'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17652 +  ONREADYSTATECHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onreadystatechange'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17653 +  OVERLINE_THICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('overline-thickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17654 +  UNDERLINE_POSITION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('underline-position'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17655 +  VERYTHICKMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('verythickmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17656 +  REQUIREDEXTENSIONS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('requiredextensions', 'requiredExtensions'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17657 +  COLOR_INTERPOLATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-interpolation'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17658 +  UNDERLINE_THICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('underline-thickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17659 +  PRESERVEASPECTRATIO = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('preserveaspectratio', 'preserveAspectRatio'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17660 +  PATTERNCONTENTUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('patterncontentunits', 'patternContentUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17661 +  ARIA_MULTISELECTABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-multiselectable'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17662 +  SCRIPTSIZEMULTIPLIER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scriptsizemultiplier'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17663 +  ARIA_ACTIVEDESCENDANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-activedescendant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17664 +  VERYVERYTHINMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('veryverythinmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17665 +  VERYVERYTHICKMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('veryverythickmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17666 +  STRIKETHROUGH_POSITION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('strikethrough-position'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17667 +  STRIKETHROUGH_THICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('strikethrough-thickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17668 +  EXTERNALRESOURCESREQUIRED = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('externalresourcesrequired', 'externalResourcesRequired'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17669 +  GLYPH_ORIENTATION_VERTICAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('glyph-orientation-vertical'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17670 +  COLOR_INTERPOLATION_FILTERS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-interpolation-filters'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17671 +  GLYPH_ORIENTATION_HORIZONTAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('glyph-orientation-horizontal'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17672 +  ATTRIBUTE_NAMES = initValues(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, [D, K, R, X, Y, Z, BY, CX, CY, DX, DY, G2, G1, FX, FY, K4, K2, K3, K1, ID, IN, U2, U1, RT, RX, RY, TO, Y2, Y1, X1, X2, ALT, DIR, DUR, END, FOR, IN2, MAX, MIN, LOW, REL, REV, SRC, AXIS, ABBR, BBOX, CITE, CODE, BIAS, COLS, CLIP, CHAR, BASE, EDGE, DATA, FILL, FROM, FORM, FACE, HIGH, HREF, OPEN, ICON, NAME, MODE, MASK, LINK, LANG, LIST, TYPE, WHEN, WRAP, TEXT, PATH, PING, REFX, REFY, SIZE, SEED, ROWS, SPAN, STEP, ROLE, XREF, ASYNC, ALINK, ALIGN, CLOSE, COLOR, CLASS, CLEAR, BEGIN, DEPTH, DEFER, FENCE, FRAME, ISMAP, ONEND, INDEX, ORDER, OTHER, ONCUT, NARGS, MEDIA, LABEL, LOCAL, WIDTH, TITLE, VLINK, VALUE, SLOPE, SHAPE, SCOPE, SCALE, SPEED, STYLE, RULES, STEMH, STEMV, START, XMLNS, ACCEPT, ACCENT, ASCENT, ACTIVE, ALTIMG, ACTION, BORDER, CURSOR, COORDS, FILTER, FORMAT, HIDDEN, HSPACE, HEIGHT, ONMOVE, ONLOAD, ONDRAG, ORIGIN, ONZOOM, ONHELP, ONSTOP, ONDROP, ONBLUR, OBJECT, OFFSET, ORIENT, ONCOPY, NOWRAP, NOHREF, MACROS, METHOD, LOWSRC, LSPACE, LQUOTE, USEMAP, WIDTHS, TARGET, VALUES, VALIGN, VSPACE, POSTER, POINTS, PROMPT, SCOPED, STRING, SCHEME, STROKE, RADIUS, RESULT, REPEAT, RSPACE, ROTATE, RQUOTE, ALTTEXT, ARCHIVE, AZIMUTH, CLOSURE, CHECKED, CLASSID, CHAROFF, BGCOLOR, COLSPAN, CHARSET, COMPACT, CONTENT, ENCTYPE, DATASRC, DATAFLD, DECLARE, DISPLAY, DIVISOR, DEFAULT, DESCENT, KERNING, HANGING, HEADERS, ONPASTE, ONCLICK, OPTIMUM, ONBEGIN, ONKEYUP, ONFOCUS, ONERROR, ONINPUT, ONABORT, ONSTART, ONRESET, OPACITY, NOSHADE, MINSIZE, MAXSIZE, LOOPEND, LARGEOP, UNICODE, TARGETX, TARGETY, VIEWBOX, VERSION, PATTERN, PROFILE, SPACING, RESTART, ROWSPAN, SANDBOX, SUMMARY, STANDBY, REPLACE, AUTOPLAY, ADDITIVE, CALCMODE, CODETYPE, CODEBASE, CONTROLS, BEVELLED, BASELINE, EXPONENT, EDGEMODE, ENCODING, GLYPHREF, DATETIME, DISABLED, FONTSIZE, KEYTIMES, PANOSE_1, HREFLANG, ONRESIZE, ONCHANGE, ONBOUNCE, ONUNLOAD, ONFINISH, ONSCROLL, OPERATOR, OVERFLOW, ONSUBMIT, ONREPEAT, ONSELECT, NOTATION, NORESIZE, MANIFEST, MATHSIZE, MULTIPLE, LONGDESC, LANGUAGE, TEMPLATE, TABINDEX, READONLY, SELECTED, ROWLINES, SEAMLESS, ROWALIGN, STRETCHY, REQUIRED, XML_BASE, XML_LANG, X_HEIGHT, ARIA_OWNS, AUTOFOCUS, ARIA_SORT, ACCESSKEY, ARIA_BUSY, ARIA_GRAB, AMPLITUDE, ARIA_LIVE, CLIP_RULE, CLIP_PATH, EQUALROWS, ELEVATION, DIRECTION, DRAGGABLE, FILTERRES, FILL_RULE, FONTSTYLE, FONT_SIZE, KEYPOINTS, HIDEFOCUS, ONMESSAGE, INTERCEPT, ONDRAGEND, ONMOVEEND, ONINVALID, ONKEYDOWN, ONFOCUSIN, ONMOUSEUP, INPUTMODE, ONROWEXIT, MATHCOLOR, MASKUNITS, MAXLENGTH, LINEBREAK, LOOPSTART, TRANSFORM, V_HANGING, VALUETYPE, POINTSATZ, POINTSATX, POINTSATY, PLAYCOUNT, SYMMETRIC, SCROLLING, REPEATDUR, SELECTION, SEPARATOR, XML_SPACE, AUTOSUBMIT, ALPHABETIC, ACTIONTYPE, ACCUMULATE, ARIA_LEVEL, COLUMNSPAN, CAP_HEIGHT, BACKGROUND, GLYPH_NAME, GROUPALIGN, FONTFAMILY, FONTWEIGHT, FONT_STYLE, KEYSPLINES, HTTP_EQUIV, ONACTIVATE, OCCURRENCE, IRRELEVANT, ONDBLCLICK, ONDRAGDROP, ONKEYPRESS, ONROWENTER, ONDRAGOVER, ONFOCUSOUT, ONMOUSEOUT, NUMOCTAVES, MARKER_MID, MARKER_END, TEXTLENGTH, VISIBILITY, VIEWTARGET, VERT_ADV_Y, PATHLENGTH, REPEAT_MAX, RADIOGROUP, STOP_COLOR, SEPARATORS, REPEAT_MIN, ROWSPACING, ZOOMANDPAN, XLINK_TYPE, XLINK_ROLE, XLINK_HREF, XLINK_SHOW, ACCENTUNDER, ARIA_SECRET, ARIA_ATOMIC, ARIA_HIDDEN, ARIA_FLOWTO, ARABIC_FORM, CELLPADDING, CELLSPACING, COLUMNWIDTH, COLUMNALIGN, COLUMNLINES, CONTEXTMENU, BASEPROFILE, FONT_FAMILY, FRAMEBORDER, FILTERUNITS, FLOOD_COLOR, FONT_WEIGHT, HORIZ_ADV_X, ONDRAGLEAVE, ONMOUSEMOVE, ORIENTATION, ONMOUSEDOWN, ONMOUSEOVER, ONDRAGENTER, IDEOGRAPHIC, ONBEFORECUT, ONFORMINPUT, ONDRAGSTART, ONMOVESTART, MARKERUNITS, MATHVARIANT, MARGINWIDTH, MARKERWIDTH, TEXT_ANCHOR, TABLEVALUES, SCRIPTLEVEL, REPEATCOUNT, STITCHTILES, STARTOFFSET, SCROLLDELAY, XMLNS_XLINK, XLINK_TITLE, ARIA_INVALID, ARIA_PRESSED, ARIA_CHECKED, AUTOCOMPLETE, ARIA_SETSIZE, ARIA_CHANNEL, EQUALCOLUMNS, DISPLAYSTYLE, DATAFORMATAS, FILL_OPACITY, FONT_VARIANT, FONT_STRETCH, FRAMESPACING, KERNELMATRIX, ONDEACTIVATE, ONROWSDELETE, ONMOUSELEAVE, ONFORMCHANGE, ONCELLCHANGE, ONMOUSEWHEEL, ONMOUSEENTER, ONAFTERPRINT, ONBEFORECOPY, MARGINHEIGHT, MARKERHEIGHT, MARKER_START, MATHEMATICAL, LENGTHADJUST, UNSELECTABLE, UNICODE_BIDI, UNITS_PER_EM, WORD_SPACING, WRITING_MODE, V_ALPHABETIC, PATTERNUNITS, SPREADMETHOD, SURFACESCALE, STROKE_WIDTH, REPEAT_START, STDDEVIATION, STOP_OPACITY, ARIA_CONTROLS, ARIA_HASPOPUP, ACCENT_HEIGHT, ARIA_VALUENOW, ARIA_RELEVANT, ARIA_POSINSET, ARIA_VALUEMAX, ARIA_READONLY, ARIA_SELECTED, ARIA_REQUIRED, ARIA_EXPANDED, ARIA_DISABLED, ATTRIBUTETYPE, ATTRIBUTENAME, ARIA_DATATYPE, ARIA_VALUEMIN, BASEFREQUENCY, COLUMNSPACING, COLOR_PROFILE, CLIPPATHUNITS, DEFINITIONURL, GRADIENTUNITS, FLOOD_OPACITY, ONAFTERUPDATE, ONERRORUPDATE, ONBEFOREPASTE, ONLOSECAPTURE, ONCONTEXTMENU, ONSELECTSTART, ONBEFOREPRINT, MOVABLELIMITS, LINETHICKNESS, UNICODE_RANGE, THINMATHSPACE, VERT_ORIGIN_X, VERT_ORIGIN_Y, V_IDEOGRAPHIC, PRESERVEALPHA, SCRIPTMINSIZE, SPECIFICATION, XLINK_ACTUATE, XLINK_ARCROLE, ACCEPT_CHARSET, ALIGNMENTSCOPE, ARIA_MULTILINE, BASELINE_SHIFT, HORIZ_ORIGIN_X, HORIZ_ORIGIN_Y, ONBEFOREUPDATE, ONFILTERCHANGE, ONROWSINSERTED, ONBEFOREUNLOAD, MATHBACKGROUND, LETTER_SPACING, LIGHTING_COLOR, THICKMATHSPACE, TEXT_RENDERING, V_MATHEMATICAL, POINTER_EVENTS, PRIMITIVEUNITS, SYSTEMLANGUAGE, STROKE_LINECAP, SUBSCRIPTSHIFT, STROKE_OPACITY, ARIA_DROPEFFECT, ARIA_LABELLEDBY, ARIA_TEMPLATEID, COLOR_RENDERING, CONTENTEDITABLE, DIFFUSECONSTANT, ONDATAAVAILABLE, ONCONTROLSELECT, IMAGE_RENDERING, MEDIUMMATHSPACE, TEXT_DECORATION, SHAPE_RENDERING, STROKE_LINEJOIN, REPEAT_TEMPLATE, ARIA_DESCRIBEDBY, CONTENTSTYLETYPE, FONT_SIZE_ADJUST, KERNELUNITLENGTH, ONBEFOREACTIVATE, ONPROPERTYCHANGE, ONDATASETCHANGED, MASKCONTENTUNITS, PATTERNTRANSFORM, REQUIREDFEATURES, RENDERING_INTENT, SPECULAREXPONENT, SPECULARCONSTANT, SUPERSCRIPTSHIFT, STROKE_DASHARRAY, XCHANNELSELECTOR, YCHANNELSELECTOR, ARIA_AUTOCOMPLETE, CONTENTSCRIPTTYPE, ENABLE_BACKGROUND, DOMINANT_BASELINE, GRADIENTTRANSFORM, ONBEFORDEACTIVATE, ONDATASETCOMPLETE, OVERLINE_POSITION, ONBEFOREEDITFOCUS, LIMITINGCONEANGLE, VERYTHINMATHSPACE, STROKE_DASHOFFSET, STROKE_MITERLIMIT, ALIGNMENT_BASELINE, ONREADYSTATECHANGE, OVERLINE_THICKNESS, UNDERLINE_POSITION, VERYTHICKMATHSPACE, REQUIREDEXTENSIONS, COLOR_INTERPOLATION, UNDERLINE_THICKNESS, PRESERVEASPECTRATIO, PATTERNCONTENTUNITS, ARIA_MULTISELECTABLE, SCRIPTSIZEMULTIPLIER, ARIA_ACTIVEDESCENDANT, VERYVERYTHINMATHSPACE, VERYVERYTHICKMATHSPACE, STRIKETHROUGH_POSITION, STRIKETHROUGH_THICKNESS, EXTERNALRESOURCESREQUIRED, GLYPH_ORIENTATION_VERTICAL, COLOR_INTERPOLATION_FILTERS, GLYPH_ORIENTATION_HORIZONTAL]);
10.17673 +  ATTRIBUTE_HASHES = initValues(_3I_classLit, 0, -1, [1153, 1383, 1601, 1793, 1827, 1857, 68600, 69146, 69177, 70237, 70270, 71572, 71669, 72415, 72444, 74846, 74904, 74943, 75001, 75276, 75590, 84742, 84839, 85575, 85963, 85992, 87204, 88074, 88171, 89130, 89163, 3207892, 3283895, 3284791, 3338752, 3358197, 3369562, 3539124, 3562402, 3574260, 3670335, 3696933, 3721879, 135280021, 135346322, 136317019, 136475749, 136548517, 136652214, 136884919, 136902418, 136942992, 137292068, 139120259, 139785574, 142250603, 142314056, 142331176, 142519584, 144752417, 145106895, 146147200, 146765926, 148805544, 149655723, 149809441, 150018784, 150445028, 150923321, 152528754, 152536216, 152647366, 152962785, 155219321, 155654904, 157317483, 157350248, 157437941, 157447478, 157604838, 157685404, 157894402, 158315188, 166078431, 169409980, 169700259, 169856932, 170007032, 170409695, 170466488, 170513710, 170608367, 173028944, 173896963, 176090625, 176129212, 179390001, 179489057, 179627464, 179840468, 179849042, 180004216, 181779081, 183027151, 183645319, 183698797, 185922012, 185997252, 188312483, 188675799, 190977533, 190992569, 191006194, 191033518, 191038774, 191096249, 191166163, 191194426, 191522106, 191568039, 200104642, 202506661, 202537381, 202602917, 203070590, 203120766, 203389054, 203690071, 203971238, 203986524, 209040857, 209125756, 212055489, 212322418, 212746849, 213002877, 213055164, 213088023, 213259873, 213273386, 213435118, 213437318, 213438231, 213493071, 213532268, 213542834, 213584431, 213659891, 215285828, 215880731, 216112976, 216684637, 217369699, 217565298, 217576549, 218186795, 219743185, 220082234, 221623802, 221986406, 222283890, 223089542, 223138630, 223311265, 224547358, 224587256, 224589550, 224655650, 224785518, 224810917, 224813302, 225429618, 225432950, 225440869, 236107233, 236709921, 236838947, 237117095, 237143271, 237172455, 237209953, 237354143, 237372743, 237668065, 237703073, 237714273, 239743521, 240512803, 240522627, 240560417, 240656513, 241015715, 241062755, 241065383, 243523041, 245865199, 246261793, 246556195, 246774817, 246923491, 246928419, 246981667, 247014847, 247058369, 247112833, 247118177, 247119137, 247128739, 247316903, 249533729, 250235623, 250269543, 251083937, 251402351, 252339047, 253260911, 253293679, 254844367, 255547879, 256077281, 256345377, 258124199, 258354465, 258605063, 258744193, 258845603, 258856961, 258926689, 269869248, 270174334, 270709417, 270778994, 270781796, 271102503, 271478858, 271490090, 272870654, 273335275, 273369140, 273924313, 274108530, 274116736, 276818662, 277476156, 279156579, 279349675, 280108533, 280128712, 280132869, 280162403, 280280292, 280413430, 280506130, 280677397, 280678580, 280686710, 280689066, 282736758, 283110901, 283275116, 283823226, 283890012, 284479340, 284606461, 286700477, 286798916, 291557706, 291665349, 291804100, 292138018, 292166446, 292418738, 292451039, 300298041, 300374839, 300597935, 303073389, 303083839, 303266673, 303354997, 303430688, 303576261, 303724281, 303819694, 304242723, 304382625, 306247792, 307227811, 307468786, 307724489, 309671175, 310252031, 310358241, 310373094, 311015256, 313357609, 313683893, 313701861, 313706996, 313707317, 313710350, 314027746, 314038181, 314091299, 314205627, 314233813, 316741830, 316797986, 317486755, 317794164, 318721061, 320076137, 322657125, 322887778, 323506876, 323572412, 323605180, 323938869, 325060058, 325320188, 325398738, 325541490, 325671619, 333868843, 336806130, 337212108, 337282686, 337285434, 337585223, 338036037, 338298087, 338566051, 340943551, 341190970, 342995704, 343352124, 343912673, 344585053, 346977248, 347218098, 347262163, 347278576, 347438191, 347655959, 347684788, 347726430, 347727772, 347776035, 347776629, 349500753, 350880161, 350887073, 353384123, 355496998, 355906922, 355979793, 356545959, 358637867, 358905016, 359164318, 359247286, 359350571, 359579447, 365560330, 367399355, 367420285, 367510727, 368013212, 370234760, 370353345, 370710317, 371074566, 371122285, 371194213, 371448425, 371448430, 371545055, 371596922, 371758751, 371964792, 372151328, 376550136, 376710172, 376795771, 376826271, 376906556, 380514830, 380774774, 380775037, 381030322, 381136500, 381281631, 381282269, 381285504, 381330595, 381331422, 381335911, 381336484, 383907298, 383917408, 384595009, 384595013, 387799894, 387823201, 392581647, 392584937, 392742684, 392906485, 393003349, 400644707, 400973830, 404428547, 404432113, 404432865, 404469244, 404478897, 404694860, 406887479, 408294949, 408789955, 410022510, 410467324, 410586448, 410945965, 411845275, 414327152, 414327932, 414329781, 414346257, 414346439, 414639928, 414835998, 414894517, 414986533, 417465377, 417465381, 417492216, 418259232, 419310946, 420103495, 420242342, 420380455, 420658662, 420717432, 423183880, 424539259, 425929170, 425972964, 426050649, 426126450, 426142833, 426607922, 437289840, 437347469, 437412335, 437423943, 437455540, 437462252, 437597991, 437617485, 437986305, 437986507, 437986828, 437987072, 438015591, 438034813, 438038966, 438179623, 438347971, 438483573, 438547062, 438895551, 441592676, 442032555, 443548979, 447881379, 447881655, 447881895, 447887844, 448416189, 448445746, 448449012, 450942191, 452816744, 453668677, 454434495, 456610076, 456642844, 456738709, 457544600, 459451897, 459680944, 468058810, 468083581, 470964084, 471470955, 471567278, 472267822, 481177859, 481210627, 481435874, 481455115, 481485378, 481490218, 485105638, 486005878, 486383494, 487988916, 488103783, 490661867, 491574090, 491578272, 493041952, 493441205, 493582844, 493716979, 504577572, 504740359, 505091638, 505592418, 505656212, 509516275, 514998531, 515571132, 515594682, 518712698, 521362273, 526592419, 526807354, 527348842, 538294791, 539214049, 544689535, 545535009, 548544752, 548563346, 548595116, 551679010, 558034099, 560329411, 560356209, 560671018, 560671152, 560692590, 560845442, 569212097, 569474241, 572252718, 572768481, 575326764, 576174758, 576190819, 582099184, 582099438, 582372519, 582558889, 586552164, 591325418, 594231990, 594243961, 605711268, 615672071, 616086845, 621792370, 624879850, 627432831, 640040548, 654392808, 658675477, 659420283, 672891587, 694768102, 705890982, 725543146, 759097578, 761686526, 795383908, 843809551, 878105336, 908643300, 945213471]);
10.17674 +}
10.17675 +
10.17676 +function $AttributeName_0(this$static, uri, local, prefix, ncname, xmlns){
10.17677 +  $clinit_87();
10.17678 +  this$static.uri = uri;
10.17679 +  this$static.local = local;
10.17680 +  COMPUTE_QNAME(local, prefix);
10.17681 +  this$static.ncname = ncname;
10.17682 +  this$static.xmlns = xmlns;
10.17683 +  return this$static;
10.17684 +}
10.17685 +
10.17686 +function $AttributeName(this$static, uri, local, prefix, ncname, xmlns){
10.17687 +  $clinit_87();
10.17688 +  this$static.uri = uri;
10.17689 +  this$static.local = local;
10.17690 +  COMPUTE_QNAME(local, prefix);
10.17691 +  this$static.ncname = ncname;
10.17692 +  this$static.xmlns = xmlns;
10.17693 +  return this$static;
10.17694 +}
10.17695 +
10.17696 +function $isBoolean(this$static){
10.17697 +  return this$static == ACTIVE || this$static == ASYNC || this$static == AUTOFOCUS || this$static == AUTOSUBMIT || this$static == CHECKED || this$static == COMPACT || this$static == DECLARE || this$static == DEFAULT || this$static == DEFER || this$static == DISABLED || this$static == ISMAP || this$static == MULTIPLE || this$static == NOHREF || this$static == NORESIZE || this$static == NOSHADE || this$static == NOWRAP || this$static == READONLY || this$static == REQUIRED || this$static == SELECTED;
10.17698 +}
10.17699 +
10.17700 +function $isCaseFolded(this$static){
10.17701 +  return this$static == ACTIVE || this$static == ALIGN || this$static == ASYNC || this$static == AUTOCOMPLETE || this$static == AUTOFOCUS || this$static == AUTOSUBMIT || this$static == CHECKED || this$static == CLEAR || this$static == COMPACT || this$static == DATAFORMATAS || this$static == DECLARE || this$static == DEFAULT || this$static == DEFER || this$static == DIR || this$static == DISABLED || this$static == ENCTYPE || this$static == FRAME || this$static == ISMAP || this$static == METHOD || this$static == MULTIPLE || this$static == NOHREF || this$static == NORESIZE || this$static == NOSHADE || this$static == NOWRAP || this$static == READONLY || this$static == REPLACE || this$static == REQUIRED || this$static == RULES || this$static == SCOPE || this$static == SCROLLING || this$static == SELECTED || this$static == SHAPE || this$static == STEP || this$static == TYPE || this$static == VALIGN || this$static == VALUETYPE;
10.17702 +}
10.17703 +
10.17704 +function COLONIFIED_LOCAL(name, suffix){
10.17705 +  var arr;
10.17706 +  arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
10.17707 +  arr[0] = name;
10.17708 +  arr[1] = suffix;
10.17709 +  arr[2] = suffix;
10.17710 +  arr[3] = name;
10.17711 +  return arr;
10.17712 +}
10.17713 +
10.17714 +function COMPUTE_QNAME(local, prefix){
10.17715 +  var arr, i;
10.17716 +  arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
10.17717 +  for (i = 0; i < arr.length; ++i) {
10.17718 +    if (prefix[i] == null) {
10.17719 +      arr[i] = local[i];
10.17720 +    }
10.17721 +     else {
10.17722 +      arr[i] = String(prefix[i] + ':' + local[i]);
10.17723 +    }
10.17724 +  }
10.17725 +  return arr;
10.17726 +}
10.17727 +
10.17728 +function SAME_LOCAL(name){
10.17729 +  var arr;
10.17730 +  arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
10.17731 +  arr[0] = name;
10.17732 +  arr[1] = name;
10.17733 +  arr[2] = name;
10.17734 +  arr[3] = name;
10.17735 +  return arr;
10.17736 +}
10.17737 +
10.17738 +function SVG_DIFFERENT(name, camel){
10.17739 +  var arr;
10.17740 +  arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
10.17741 +  arr[0] = name;
10.17742 +  arr[1] = name;
10.17743 +  arr[2] = camel;
10.17744 +  arr[3] = name;
10.17745 +  return arr;
10.17746 +}
10.17747 +
10.17748 +function bufToHash(buf, len){
10.17749 +  var hash, hash2, i, j;
10.17750 +  hash2 = 0;
10.17751 +  hash = len;
10.17752 +  hash <<= 5;
10.17753 +  hash += buf[0] - 96;
10.17754 +  j = len;
10.17755 +  for (i = 0; i < 4 && j > 0; ++i) {
10.17756 +    --j;
10.17757 +    hash <<= 5;
10.17758 +    hash += buf[j] - 96;
10.17759 +    hash2 <<= 6;
10.17760 +    hash2 += buf[i] - 95;
10.17761 +  }
10.17762 +  return hash ^ hash2;
10.17763 +}
10.17764 +
10.17765 +function createAttributeName(name, checkNcName){
10.17766 +  var ncName, xmlns;
10.17767 +  ncName = true;
10.17768 +  xmlns = name.indexOf('xmlns:') == 0;
10.17769 +  if (checkNcName) {
10.17770 +    if (xmlns) {
10.17771 +      ncName = false;
10.17772 +    }
10.17773 +     else {
10.17774 +      ncName = isNCName(name);
10.17775 +    }
10.17776 +  }
10.17777 +  return $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL(name), ALL_NO_PREFIX, ncName?ALL_NCNAME:ALL_NO_NCNAME, xmlns);
10.17778 +}
10.17779 +
10.17780 +function getClass_49(){
10.17781 +  return Lnu_validator_htmlparser_impl_AttributeName_2_classLit;
10.17782 +}
10.17783 +
10.17784 +function nameByBuffer(buf, offset, length, checkNcName){
10.17785 +  var end, end_0;
10.17786 +  $clinit_87();
10.17787 +  var attributeName, hash, index, name;
10.17788 +  hash = bufToHash(buf, length);
10.17789 +  index = binarySearch(ATTRIBUTE_HASHES, hash);
10.17790 +  if (index < 0) {
10.17791 +    return createAttributeName(String((end = offset + length , __checkBounds(buf.length, offset, end) , __valueOf(buf, offset, end))), checkNcName);
10.17792 +  }
10.17793 +   else {
10.17794 +    attributeName = ATTRIBUTE_NAMES[index];
10.17795 +    name = attributeName.local[0];
10.17796 +    if (!localEqualsBuffer(name, buf, offset, length)) {
10.17797 +      return createAttributeName(String((end_0 = offset + length , __checkBounds(buf.length, offset, end_0) , __valueOf(buf, offset, end_0))), checkNcName);
10.17798 +    }
10.17799 +    return attributeName;
10.17800 +  }
10.17801 +}
10.17802 +
10.17803 +function AttributeName(){
10.17804 +}
10.17805 +
10.17806 +_ = AttributeName.prototype = new Object_0();
10.17807 +_.getClass$ = getClass_49;
10.17808 +_.typeId$ = 36;
10.17809 +_.local = null;
10.17810 +_.ncname = null;
10.17811 +_.uri = null;
10.17812 +_.xmlns = false;
10.17813 +var ABBR, ACCENT, ACCENTUNDER, ACCENT_HEIGHT, ACCEPT, ACCEPT_CHARSET, ACCESSKEY, ACCUMULATE, ACTION, ACTIONTYPE, ACTIVE, ADDITIVE, ALIGN, ALIGNMENTSCOPE, ALIGNMENT_BASELINE, ALINK, ALL_NCNAME, ALL_NO_NCNAME, ALL_NO_NS, ALL_NO_PREFIX, ALPHABETIC, ALT, ALTIMG, ALTTEXT, AMPLITUDE, ARABIC_FORM, ARCHIVE, ARIA_ACTIVEDESCENDANT, ARIA_ATOMIC, ARIA_AUTOCOMPLETE, ARIA_BUSY, ARIA_CHANNEL, ARIA_CHECKED, ARIA_CONTROLS, ARIA_DATATYPE, ARIA_DESCRIBEDBY, ARIA_DISABLED, ARIA_DROPEFFECT, ARIA_EXPANDED, ARIA_FLOWTO, ARIA_GRAB, ARIA_HASPOPUP, ARIA_HIDDEN, ARIA_INVALID, ARIA_LABELLEDBY, ARIA_LEVEL, ARIA_LIVE, ARIA_MULTILINE, ARIA_MULTISELECTABLE, ARIA_OWNS, ARIA_POSINSET, ARIA_PRESSED, ARIA_READONLY, ARIA_RELEVANT, ARIA_REQUIRED, ARIA_SECRET, ARIA_SELECTED, ARIA_SETSIZE, ARIA_SORT, ARIA_TEMPLATEID, ARIA_VALUEMAX, ARIA_VALUEMIN, ARIA_VALUENOW, ASCENT, ASYNC, ATTRIBUTENAME, ATTRIBUTETYPE, ATTRIBUTE_HASHES, ATTRIBUTE_NAMES, AUTOCOMPLETE, AUTOFOCUS, AUTOPLAY, AUTOSUBMIT, AXIS, AZIMUTH, BACKGROUND, BASE, BASEFREQUENCY, BASELINE, BASELINE_SHIFT, BASEPROFILE, BBOX, BEGIN, BEVELLED, BGCOLOR, BIAS, BORDER, BY, CALCMODE, CAP_HEIGHT, CELLPADDING, CELLSPACING, CHAR, CHAROFF, CHARSET, CHECKED, CITE, CLASS, CLASSID, CLEAR, CLIP, CLIPPATHUNITS, CLIP_PATH, CLIP_RULE, CLOSE, CLOSURE, CODE, CODEBASE, CODETYPE, COLOR, COLOR_INTERPOLATION, COLOR_INTERPOLATION_FILTERS, COLOR_PROFILE, COLOR_RENDERING, COLS, COLSPAN, COLUMNALIGN, COLUMNLINES, COLUMNSPACING, COLUMNSPAN, COLUMNWIDTH, COMPACT, CONTENT, CONTENTEDITABLE, CONTENTSCRIPTTYPE, CONTENTSTYLETYPE, CONTEXTMENU, CONTROLS, COORDS, CURSOR, CX, CY, D, DATA, DATAFLD, DATAFORMATAS, DATASRC, DATETIME, DECLARE, DEFAULT, DEFER, DEFINITIONURL, DEPTH, DESCENT, DIFFUSECONSTANT, DIR, DIRECTION, DISABLED, DISPLAY, DISPLAYSTYLE, DIVISOR, DOMINANT_BASELINE, DRAGGABLE, DUR, DX, DY, EDGE, EDGEMODE, ELEVATION, ENABLE_BACKGROUND, ENCODING, ENCTYPE, END, EQUALCOLUMNS, EQUALROWS, EXPONENT, EXTERNALRESOURCESREQUIRED, FACE, FENCE, FILL, FILL_OPACITY, FILL_RULE, FILTER, FILTERRES, FILTERUNITS, FLOOD_COLOR, FLOOD_OPACITY, FONTFAMILY, FONTSIZE, FONTSTYLE, FONTWEIGHT, FONT_FAMILY, FONT_SIZE, FONT_SIZE_ADJUST, FONT_STRETCH, FONT_STYLE, FONT_VARIANT, FONT_WEIGHT, FOR, FORM, FORMAT, FRAME, FRAMEBORDER, FRAMESPACING, FROM, FX, FY, G1, G2, GLYPHREF, GLYPH_NAME, GLYPH_ORIENTATION_HORIZONTAL, GLYPH_ORIENTATION_VERTICAL, GRADIENTTRANSFORM, GRADIENTUNITS, GROUPALIGN, HANGING, HEADERS, HEIGHT, HIDDEN, HIDEFOCUS, HIGH, HORIZ_ADV_X, HORIZ_ORIGIN_X, HORIZ_ORIGIN_Y, HREF, HREFLANG, HSPACE, HTTP_EQUIV, ICON, ID, IDEOGRAPHIC, IMAGE_RENDERING, IN, IN2, INDEX, INPUTMODE, INTERCEPT, IRRELEVANT, ISMAP, K, K1, K2, K3, K4, KERNELMATRIX, KERNELUNITLENGTH, KERNING, KEYPOINTS, KEYSPLINES, KEYTIMES, LABEL, LANG, LANGUAGE, LANG_NS, LANG_PREFIX, LARGEOP, LENGTHADJUST, LETTER_SPACING, LIGHTING_COLOR, LIMITINGCONEANGLE, LINEBREAK, LINETHICKNESS, LINK, LIST, LOCAL, LONGDESC, LOOPEND, LOOPSTART, LOW, LOWSRC, LQUOTE, LSPACE, MACROS, MANIFEST, MARGINHEIGHT, MARGINWIDTH, MARKERHEIGHT, MARKERUNITS, MARKERWIDTH, MARKER_END, MARKER_MID, MARKER_START, MASK, MASKCONTENTUNITS, MASKUNITS, MATHBACKGROUND, MATHCOLOR, MATHEMATICAL, MATHSIZE, MATHVARIANT, MAX, MAXLENGTH, MAXSIZE, MEDIA, MEDIUMMATHSPACE, METHOD, MIN, MINSIZE, MODE, MOVABLELIMITS, MULTIPLE, NAME, NARGS, NOHREF, NORESIZE, NOSHADE, NOTATION, NOWRAP, NUMOCTAVES, OBJECT, OCCURRENCE, OFFSET, ONABORT, ONACTIVATE, ONAFTERPRINT, ONAFTERUPDATE, ONBEFORDEACTIVATE, ONBEFOREACTIVATE, ONBEFORECOPY, ONBEFORECUT, ONBEFOREEDITFOCUS, ONBEFOREPASTE, ONBEFOREPRINT, ONBEFOREUNLOAD, ONBEFOREUPDATE, ONBEGIN, ONBLUR, ONBOUNCE, ONCELLCHANGE, ONCHANGE, ONCLICK, ONCONTEXTMENU, ONCONTROLSELECT, ONCOPY, ONCUT, ONDATAAVAILABLE, ONDATASETCHANGED, ONDATASETCOMPLETE, ONDBLCLICK, ONDEACTIVATE, ONDRAG, ONDRAGDROP, ONDRAGEND, ONDRAGENTER, ONDRAGLEAVE, ONDRAGOVER, ONDRAGSTART, ONDROP, ONEND, ONERROR, ONERRORUPDATE, ONFILTERCHANGE, ONFINISH, ONFOCUS, ONFOCUSIN, ONFOCUSOUT, ONFORMCHANGE, ONFORMINPUT, ONHELP, ONINPUT, ONINVALID, ONKEYDOWN, ONKEYPRESS, ONKEYUP, ONLOAD, ONLOSECAPTURE, ONMESSAGE, ONMOUSEDOWN, ONMOUSEENTER, ONMOUSELEAVE, ONMOUSEMOVE, ONMOUSEOUT, ONMOUSEOVER, ONMOUSEUP, ONMOUSEWHEEL, ONMOVE, ONMOVEEND, ONMOVESTART, ONPASTE, ONPROPERTYCHANGE, ONREADYSTATECHANGE, ONREPEAT, ONRESET, ONRESIZE, ONROWENTER, ONROWEXIT, ONROWSDELETE, ONROWSINSERTED, ONSCROLL, ONSELECT, ONSELECTSTART, ONSTART, ONSTOP, ONSUBMIT, ONUNLOAD, ONZOOM, OPACITY, OPEN, OPERATOR, OPTIMUM, ORDER, ORIENT, ORIENTATION, ORIGIN, OTHER, OVERFLOW, OVERLINE_POSITION, OVERLINE_THICKNESS, PANOSE_1, PATH, PATHLENGTH, PATTERN, PATTERNCONTENTUNITS, PATTERNTRANSFORM, PATTERNUNITS, PING, PLAYCOUNT, POINTER_EVENTS, POINTS, POINTSATX, POINTSATY, POINTSATZ, POSTER, PRESERVEALPHA, PRESERVEASPECTRATIO, PRIMITIVEUNITS, PROFILE, PROMPT, R, RADIOGROUP, RADIUS, READONLY, REFX, REFY, REL, RENDERING_INTENT, REPEAT, REPEATCOUNT, REPEATDUR, REPEAT_MAX, REPEAT_MIN, REPEAT_START, REPEAT_TEMPLATE, REPLACE, REQUIRED, REQUIREDEXTENSIONS, REQUIREDFEATURES, RESTART, RESULT, REV, ROLE, ROTATE, ROWALIGN, ROWLINES, ROWS, ROWSPACING, ROWSPAN, RQUOTE, RSPACE, RT, RULES, RX, RY, SANDBOX, SCALE, SCHEME, SCOPE, SCOPED, SCRIPTLEVEL, SCRIPTMINSIZE, SCRIPTSIZEMULTIPLIER, SCROLLDELAY, SCROLLING, SEAMLESS, SEED, SELECTED, SELECTION, SEPARATOR, SEPARATORS, SHAPE, SHAPE_RENDERING, SIZE, SLOPE, SPACING, SPAN, SPECIFICATION, SPECULARCONSTANT, SPECULAREXPONENT, SPEED, SPREADMETHOD, SRC, STANDBY, START, STARTOFFSET, STDDEVIATION, STEMH, STEMV, STEP, STITCHTILES, STOP_COLOR, STOP_OPACITY, STRETCHY, STRIKETHROUGH_POSITION, STRIKETHROUGH_THICKNESS, STRING, STROKE, STROKE_DASHARRAY, STROKE_DASHOFFSET, STROKE_LINECAP, STROKE_LINEJOIN, STROKE_MITERLIMIT, STROKE_OPACITY, STROKE_WIDTH, STYLE, SUBSCRIPTSHIFT, SUMMARY, SUPERSCRIPTSHIFT, SURFACESCALE, SYMMETRIC, SYSTEMLANGUAGE, TABINDEX, TABLEVALUES, TARGET, TARGETX, TARGETY, TEMPLATE, TEXT, TEXTLENGTH, TEXT_ANCHOR, TEXT_DECORATION, TEXT_RENDERING, THICKMATHSPACE, THINMATHSPACE, TITLE, TO, TRANSFORM, TYPE, U1, U2, UNDERLINE_POSITION, UNDERLINE_THICKNESS, UNICODE, UNICODE_BIDI, UNICODE_RANGE, UNITS_PER_EM, UNSELECTABLE, USEMAP, VALIGN, VALUE, VALUES, VALUETYPE, VERSION, VERT_ADV_Y, VERT_ORIGIN_X, VERT_ORIGIN_Y, VERYTHICKMATHSPACE, VERYTHINMATHSPACE, VERYVERYTHICKMATHSPACE, VERYVERYTHINMATHSPACE, VIEWBOX, VIEWTARGET, VISIBILITY, VLINK, VSPACE, V_ALPHABETIC, V_HANGING, V_IDEOGRAPHIC, V_MATHEMATICAL, WHEN, WIDTH, WIDTHS, WORD_SPACING, WRAP, WRITING_MODE, X, X1, X2, XCHANNELSELECTOR, XLINK_ACTUATE, XLINK_ARCROLE, XLINK_HREF, XLINK_NS, XLINK_PREFIX, XLINK_ROLE, XLINK_SHOW, XLINK_TITLE, XLINK_TYPE, XMLNS, XMLNS_NS, XMLNS_PREFIX, XMLNS_XLINK, XML_BASE, XML_LANG, XML_NS, XML_PREFIX, XML_SPACE, XREF, X_HEIGHT, Y, Y1, Y2, YCHANNELSELECTOR, Z, ZOOMANDPAN;
10.17814 +function $clinit_89(){
10.17815 +  $clinit_89 = nullMethod;
10.17816 +  $ElementName(new ElementName(), null);
10.17817 +  A = $ElementName_0(new ElementName(), 'a', 'a', 1, false, false, false);
10.17818 +  B = $ElementName_0(new ElementName(), 'b', 'b', 45, false, false, false);
10.17819 +  G = $ElementName_0(new ElementName(), 'g', 'g', 0, false, false, false);
10.17820 +  I = $ElementName_0(new ElementName(), 'i', 'i', 45, false, false, false);
10.17821 +  P = $ElementName_0(new ElementName(), 'p', 'p', 29, true, false, false);
10.17822 +  Q = $ElementName_0(new ElementName(), 'q', 'q', 0, false, false, false);
10.17823 +  S = $ElementName_0(new ElementName(), 's', 's', 45, false, false, false);
10.17824 +  U = $ElementName_0(new ElementName(), 'u', 'u', 45, false, false, false);
10.17825 +  BR = $ElementName_0(new ElementName(), 'br', 'br', 4, true, false, false);
10.17826 +  CI = $ElementName_0(new ElementName(), 'ci', 'ci', 0, false, false, false);
10.17827 +  CN = $ElementName_0(new ElementName(), 'cn', 'cn', 0, false, false, false);
10.17828 +  DD = $ElementName_0(new ElementName(), 'dd', 'dd', 41, true, false, false);
10.17829 +  DL = $ElementName_0(new ElementName(), 'dl', 'dl', 46, true, false, false);
10.17830 +  DT = $ElementName_0(new ElementName(), 'dt', 'dt', 41, true, false, false);
10.17831 +  EM = $ElementName_0(new ElementName(), 'em', 'em', 45, false, false, false);
10.17832 +  EQ = $ElementName_0(new ElementName(), 'eq', 'eq', 0, false, false, false);
10.17833 +  FN = $ElementName_0(new ElementName(), 'fn', 'fn', 0, false, false, false);
10.17834 +  H1 = $ElementName_0(new ElementName(), 'h1', 'h1', 42, true, false, false);
10.17835 +  H2 = $ElementName_0(new ElementName(), 'h2', 'h2', 42, true, false, false);
10.17836 +  H3 = $ElementName_0(new ElementName(), 'h3', 'h3', 42, true, false, false);
10.17837 +  H4 = $ElementName_0(new ElementName(), 'h4', 'h4', 42, true, false, false);
10.17838 +  H5 = $ElementName_0(new ElementName(), 'h5', 'h5', 42, true, false, false);
10.17839 +  H6 = $ElementName_0(new ElementName(), 'h6', 'h6', 42, true, false, false);
10.17840 +  GT = $ElementName_0(new ElementName(), 'gt', 'gt', 0, false, false, false);
10.17841 +  HR = $ElementName_0(new ElementName(), 'hr', 'hr', 22, true, false, false);
10.17842 +  IN_0 = $ElementName_0(new ElementName(), 'in', 'in', 0, false, false, false);
10.17843 +  LI = $ElementName_0(new ElementName(), 'li', 'li', 15, true, false, false);
10.17844 +  LN = $ElementName_0(new ElementName(), 'ln', 'ln', 0, false, false, false);
10.17845 +  LT = $ElementName_0(new ElementName(), 'lt', 'lt', 0, false, false, false);
10.17846 +  MI = $ElementName_0(new ElementName(), 'mi', 'mi', 57, false, false, false);
10.17847 +  MN = $ElementName_0(new ElementName(), 'mn', 'mn', 57, false, false, false);
10.17848 +  MO = $ElementName_0(new ElementName(), 'mo', 'mo', 57, false, false, false);
10.17849 +  MS = $ElementName_0(new ElementName(), 'ms', 'ms', 57, false, false, false);
10.17850 +  OL = $ElementName_0(new ElementName(), 'ol', 'ol', 46, true, false, false);
10.17851 +  OR = $ElementName_0(new ElementName(), 'or', 'or', 0, false, false, false);
10.17852 +  PI = $ElementName_0(new ElementName(), 'pi', 'pi', 0, false, false, false);
10.17853 +  RP = $ElementName_0(new ElementName(), 'rp', 'rp', 53, false, false, false);
10.17854 +  RT_0 = $ElementName_0(new ElementName(), 'rt', 'rt', 53, false, false, false);
10.17855 +  TD = $ElementName_0(new ElementName(), 'td', 'td', 40, false, true, false);
10.17856 +  TH = $ElementName_0(new ElementName(), 'th', 'th', 40, false, true, false);
10.17857 +  TR = $ElementName_0(new ElementName(), 'tr', 'tr', 37, true, false, true);
10.17858 +  TT = $ElementName_0(new ElementName(), 'tt', 'tt', 45, false, false, false);
10.17859 +  UL = $ElementName_0(new ElementName(), 'ul', 'ul', 46, true, false, false);
10.17860 +  AND = $ElementName_0(new ElementName(), 'and', 'and', 0, false, false, false);
10.17861 +  ARG = $ElementName_0(new ElementName(), 'arg', 'arg', 0, false, false, false);
10.17862 +  ABS = $ElementName_0(new ElementName(), 'abs', 'abs', 0, false, false, false);
10.17863 +  BIG = $ElementName_0(new ElementName(), 'big', 'big', 45, false, false, false);
10.17864 +  BDO = $ElementName_0(new ElementName(), 'bdo', 'bdo', 0, false, false, false);
10.17865 +  CSC = $ElementName_0(new ElementName(), 'csc', 'csc', 0, false, false, false);
10.17866 +  COL = $ElementName_0(new ElementName(), 'col', 'col', 7, true, false, false);
10.17867 +  COS = $ElementName_0(new ElementName(), 'cos', 'cos', 0, false, false, false);
10.17868 +  COT = $ElementName_0(new ElementName(), 'cot', 'cot', 0, false, false, false);
10.17869 +  DEL = $ElementName_0(new ElementName(), 'del', 'del', 0, false, false, false);
10.17870 +  DFN = $ElementName_0(new ElementName(), 'dfn', 'dfn', 0, false, false, false);
10.17871 +  DIR_0 = $ElementName_0(new ElementName(), 'dir', 'dir', 51, true, false, false);
10.17872 +  DIV = $ElementName_0(new ElementName(), 'div', 'div', 50, true, false, false);
10.17873 +  EXP = $ElementName_0(new ElementName(), 'exp', 'exp', 0, false, false, false);
10.17874 +  GCD = $ElementName_0(new ElementName(), 'gcd', 'gcd', 0, false, false, false);
10.17875 +  GEQ = $ElementName_0(new ElementName(), 'geq', 'geq', 0, false, false, false);
10.17876 +  IMG = $ElementName_0(new ElementName(), 'img', 'img', 48, true, false, false);
10.17877 +  INS = $ElementName_0(new ElementName(), 'ins', 'ins', 0, false, false, false);
10.17878 +  INT = $ElementName_0(new ElementName(), 'int', 'int', 0, false, false, false);
10.17879 +  KBD = $ElementName_0(new ElementName(), 'kbd', 'kbd', 0, false, false, false);
10.17880 +  LOG = $ElementName_0(new ElementName(), 'log', 'log', 0, false, false, false);
10.17881 +  LCM = $ElementName_0(new ElementName(), 'lcm', 'lcm', 0, false, false, false);
10.17882 +  LEQ = $ElementName_0(new ElementName(), 'leq', 'leq', 0, false, false, false);
10.17883 +  MTD = $ElementName_0(new ElementName(), 'mtd', 'mtd', 0, false, false, false);
10.17884 +  MIN_0 = $ElementName_0(new ElementName(), 'min', 'min', 0, false, false, false);
10.17885 +  MAP = $ElementName_0(new ElementName(), 'map', 'map', 0, false, false, false);
10.17886 +  MTR = $ElementName_0(new ElementName(), 'mtr', 'mtr', 0, false, false, false);
10.17887 +  MAX_0 = $ElementName_0(new ElementName(), 'max', 'max', 0, false, false, false);
10.17888 +  NEQ = $ElementName_0(new ElementName(), 'neq', 'neq', 0, false, false, false);
10.17889 +  NOT = $ElementName_0(new ElementName(), 'not', 'not', 0, false, false, false);
10.17890 +  NAV = $ElementName_0(new ElementName(), 'nav', 'nav', 51, true, false, false);
10.17891 +  PRE = $ElementName_0(new ElementName(), 'pre', 'pre', 44, true, false, false);
10.17892 +  REM = $ElementName_0(new ElementName(), 'rem', 'rem', 0, false, false, false);
10.17893 +  SUB = $ElementName_0(new ElementName(), 'sub', 'sub', 52, false, false, false);
10.17894 +  SEC = $ElementName_0(new ElementName(), 'sec', 'sec', 0, false, false, false);
10.17895 +  SVG = $ElementName_0(new ElementName(), 'svg', 'svg', 19, false, false, false);
10.17896 +  SUM = $ElementName_0(new ElementName(), 'sum', 'sum', 0, false, false, false);
10.17897 +  SIN = $ElementName_0(new ElementName(), 'sin', 'sin', 0, false, false, false);
10.17898 +  SEP = $ElementName_0(new ElementName(), 'sep', 'sep', 0, false, false, false);
10.17899 +  SUP = $ElementName_0(new ElementName(), 'sup', 'sup', 52, false, false, false);
10.17900 +  SET = $ElementName_0(new ElementName(), 'set', 'set', 0, false, false, false);
10.17901 +  TAN = $ElementName_0(new ElementName(), 'tan', 'tan', 0, false, false, false);
10.17902 +  USE = $ElementName_0(new ElementName(), 'use', 'use', 0, false, false, false);
10.17903 +  VAR = $ElementName_0(new ElementName(), 'var', 'var', 52, false, false, false);
10.17904 +  WBR = $ElementName_0(new ElementName(), 'wbr', 'wbr', 49, true, false, false);
10.17905 +  XMP = $ElementName_0(new ElementName(), 'xmp', 'xmp', 38, false, false, false);
10.17906 +  XOR = $ElementName_0(new ElementName(), 'xor', 'xor', 0, false, false, false);
10.17907 +  AREA = $ElementName_0(new ElementName(), 'area', 'area', 49, true, false, false);
10.17908 +  ABBR_0 = $ElementName_0(new ElementName(), 'abbr', 'abbr', 0, false, false, false);
10.17909 +  BASE_0 = $ElementName_0(new ElementName(), 'base', 'base', 2, true, false, false);
10.17910 +  BVAR = $ElementName_0(new ElementName(), 'bvar', 'bvar', 0, false, false, false);
10.17911 +  BODY = $ElementName_0(new ElementName(), 'body', 'body', 3, true, false, false);
10.17912 +  CARD = $ElementName_0(new ElementName(), 'card', 'card', 0, false, false, false);
10.17913 +  CODE_0 = $ElementName_0(new ElementName(), 'code', 'code', 45, false, false, false);
10.17914 +  CITE_0 = $ElementName_0(new ElementName(), 'cite', 'cite', 0, false, false, false);
10.17915 +  CSCH = $ElementName_0(new ElementName(), 'csch', 'csch', 0, false, false, false);
10.17916 +  COSH = $ElementName_0(new ElementName(), 'cosh', 'cosh', 0, false, false, false);
10.17917 +  COTH = $ElementName_0(new ElementName(), 'coth', 'coth', 0, false, false, false);
10.17918 +  CURL = $ElementName_0(new ElementName(), 'curl', 'curl', 0, false, false, false);
10.17919 +  DESC = $ElementName_0(new ElementName(), 'desc', 'desc', 59, false, false, false);
10.17920 +  DIFF = $ElementName_0(new ElementName(), 'diff', 'diff', 0, false, false, false);
10.17921 +  DEFS = $ElementName_0(new ElementName(), 'defs', 'defs', 0, false, false, false);
10.17922 +  FORM_0 = $ElementName_0(new ElementName(), 'form', 'form', 9, true, false, false);
10.17923 +  FONT = $ElementName_0(new ElementName(), 'font', 'font', 64, false, false, false);
10.17924 +  GRAD = $ElementName_0(new ElementName(), 'grad', 'grad', 0, false, false, false);
10.17925 +  HEAD = $ElementName_0(new ElementName(), 'head', 'head', 20, true, false, false);
10.17926 +  HTML_0 = $ElementName_0(new ElementName(), 'html', 'html', 23, false, true, false);
10.17927 +  LINE = $ElementName_0(new ElementName(), 'line', 'line', 0, false, false, false);
10.17928 +  LINK_0 = $ElementName_0(new ElementName(), 'link', 'link', 16, true, false, false);
10.17929 +  LIST_0 = $ElementName_0(new ElementName(), 'list', 'list', 0, false, false, false);
10.17930 +  META = $ElementName_0(new ElementName(), 'meta', 'meta', 18, true, false, false);
10.17931 +  MSUB = $ElementName_0(new ElementName(), 'msub', 'msub', 0, false, false, false);
10.17932 +  MODE_0 = $ElementName_0(new ElementName(), 'mode', 'mode', 0, false, false, false);
10.17933 +  MATH = $ElementName_0(new ElementName(), 'math', 'math', 17, false, false, false);
10.17934 +  MARK = $ElementName_0(new ElementName(), 'mark', 'mark', 0, false, false, false);
10.17935 +  MASK_0 = $ElementName_0(new ElementName(), 'mask', 'mask', 0, false, false, false);
10.17936 +  MEAN = $ElementName_0(new ElementName(), 'mean', 'mean', 0, false, false, false);
10.17937 +  MSUP = $ElementName_0(new ElementName(), 'msup', 'msup', 0, false, false, false);
10.17938 +  MENU = $ElementName_0(new ElementName(), 'menu', 'menu', 50, true, false, false);
10.17939 +  MROW = $ElementName_0(new ElementName(), 'mrow', 'mrow', 0, false, false, false);
10.17940 +  NONE = $ElementName_0(new ElementName(), 'none', 'none', 0, false, false, false);
10.17941 +  NOBR = $ElementName_0(new ElementName(), 'nobr', 'nobr', 24, false, false, false);
10.17942 +  NEST = $ElementName_0(new ElementName(), 'nest', 'nest', 0, false, false, false);
10.17943 +  PATH_0 = $ElementName_0(new ElementName(), 'path', 'path', 0, false, false, false);
10.17944 +  PLUS = $ElementName_0(new ElementName(), 'plus', 'plus', 0, false, false, false);
10.17945 +  RULE = $ElementName_0(new ElementName(), 'rule', 'rule', 0, false, false, false);
10.17946 +  REAL = $ElementName_0(new ElementName(), 'real', 'real', 0, false, false, false);
10.17947 +  RELN = $ElementName_0(new ElementName(), 'reln', 'reln', 0, false, false, false);
10.17948 +  RECT = $ElementName_0(new ElementName(), 'rect', 'rect', 0, false, false, false);
10.17949 +  ROOT = $ElementName_0(new ElementName(), 'root', 'root', 0, false, false, false);
10.17950 +  RUBY = $ElementName_0(new ElementName(), 'ruby', 'ruby', 52, false, false, false);
10.17951 +  SECH = $ElementName_0(new ElementName(), 'sech', 'sech', 0, false, false, false);
10.17952 +  SINH = $ElementName_0(new ElementName(), 'sinh', 'sinh', 0, false, false, false);
10.17953 +  SPAN_0 = $ElementName_0(new ElementName(), 'span', 'span', 52, false, false, false);
10.17954 +  SAMP = $ElementName_0(new ElementName(), 'samp', 'samp', 0, false, false, false);
10.17955 +  STOP = $ElementName_0(new ElementName(), 'stop', 'stop', 0, false, false, false);
10.17956 +  SDEV = $ElementName_0(new ElementName(), 'sdev', 'sdev', 0, false, false, false);
10.17957 +  TIME = $ElementName_0(new ElementName(), 'time', 'time', 0, false, false, false);
10.17958 +  TRUE = $ElementName_0(new ElementName(), 'true', 'true', 0, false, false, false);
10.17959 +  TREF = $ElementName_0(new ElementName(), 'tref', 'tref', 0, false, false, false);
10.17960 +  TANH = $ElementName_0(new ElementName(), 'tanh', 'tanh', 0, false, false, false);
10.17961 +  TEXT_0 = $ElementName_0(new ElementName(), 'text', 'text', 0, false, false, false);
10.17962 +  VIEW = $ElementName_0(new ElementName(), 'view', 'view', 0, false, false, false);
10.17963 +  ASIDE = $ElementName_0(new ElementName(), 'aside', 'aside', 51, true, false, false);
10.17964 +  AUDIO = $ElementName_0(new ElementName(), 'audio', 'audio', 0, false, false, false);
10.17965 +  APPLY = $ElementName_0(new ElementName(), 'apply', 'apply', 0, false, false, false);
10.17966 +  EMBED = $ElementName_0(new ElementName(), 'embed', 'embed', 48, true, false, false);
10.17967 +  FRAME_0 = $ElementName_0(new ElementName(), 'frame', 'frame', 10, true, false, false);
10.17968 +  FALSE = $ElementName_0(new ElementName(), 'false', 'false', 0, false, false, false);
10.17969 +  FLOOR = $ElementName_0(new ElementName(), 'floor', 'floor', 0, false, false, false);
10.17970 +  GLYPH = $ElementName_0(new ElementName(), 'glyph', 'glyph', 0, false, false, false);
10.17971 +  HKERN = $ElementName_0(new ElementName(), 'hkern', 'hkern', 0, false, false, false);
10.17972 +  IMAGE = $ElementName_0(new ElementName(), 'image', 'image', 12, true, false, false);
10.17973 +  IDENT = $ElementName_0(new ElementName(), 'ident', 'ident', 0, false, false, false);
10.17974 +  INPUT = $ElementName_0(new ElementName(), 'input', 'input', 13, true, false, false);
10.17975 +  LABEL_0 = $ElementName_0(new ElementName(), 'label', 'label', 62, false, false, false);
10.17976 +  LIMIT = $ElementName_0(new ElementName(), 'limit', 'limit', 0, false, false, false);
10.17977 +  MFRAC = $ElementName_0(new ElementName(), 'mfrac', 'mfrac', 0, false, false, false);
10.17978 +  MPATH = $ElementName_0(new ElementName(), 'mpath', 'mpath', 0, false, false, false);
10.17979 +  METER = $ElementName_0(new ElementName(), 'meter', 'meter', 0, false, false, false);
10.17980 +  MOVER = $ElementName_0(new ElementName(), 'mover', 'mover', 0, false, false, false);
10.17981 +  MINUS = $ElementName_0(new ElementName(), 'minus', 'minus', 0, false, false, false);
10.17982 +  MROOT = $ElementName_0(new ElementName(), 'mroot', 'mroot', 0, false, false, false);
10.17983 +  MSQRT = $ElementName_0(new ElementName(), 'msqrt', 'msqrt', 0, false, false, false);
10.17984 +  MTEXT = $ElementName_0(new ElementName(), 'mtext', 'mtext', 57, false, false, false);
10.17985 +  NOTIN = $ElementName_0(new ElementName(), 'notin', 'notin', 0, false, false, false);
10.17986 +  PIECE = $ElementName_0(new ElementName(), 'piece', 'piece', 0, false, false, false);
10.17987 +  PARAM = $ElementName_0(new ElementName(), 'param', 'param', 55, true, false, false);
10.17988 +  POWER = $ElementName_0(new ElementName(), 'power', 'power', 0, false, false, false);
10.17989 +  REALS = $ElementName_0(new ElementName(), 'reals', 'reals', 0, false, false, false);
10.17990 +  STYLE_0 = $ElementName_0(new ElementName(), 'style', 'style', 33, true, false, false);
10.17991 +  SMALL = $ElementName_0(new ElementName(), 'small', 'small', 45, false, false, false);
10.17992 +  THEAD = $ElementName_0(new ElementName(), 'thead', 'thead', 39, true, false, true);
10.17993 +  TABLE = $ElementName_0(new ElementName(), 'table', 'table', 34, false, true, true);
10.17994 +  TITLE_0 = $ElementName_0(new ElementName(), 'title', 'title', 36, true, false, false);
10.17995 +  TSPAN = $ElementName_0(new ElementName(), 'tspan', 'tspan', 0, false, false, false);
10.17996 +  TIMES = $ElementName_0(new ElementName(), 'times', 'times', 0, false, false, false);
10.17997 +  TFOOT = $ElementName_0(new ElementName(), 'tfoot', 'tfoot', 39, true, false, true);
10.17998 +  TBODY = $ElementName_0(new ElementName(), 'tbody', 'tbody', 39, true, false, true);
10.17999 +  UNION = $ElementName_0(new ElementName(), 'union', 'union', 0, false, false, false);
10.18000 +  VKERN = $ElementName_0(new ElementName(), 'vkern', 'vkern', 0, false, false, false);
10.18001 +  VIDEO = $ElementName_0(new ElementName(), 'video', 'video', 0, false, false, false);
10.18002 +  ARCSEC = $ElementName_0(new ElementName(), 'arcsec', 'arcsec', 0, false, false, false);
10.18003 +  ARCCSC = $ElementName_0(new ElementName(), 'arccsc', 'arccsc', 0, false, false, false);
10.18004 +  ARCTAN = $ElementName_0(new ElementName(), 'arctan', 'arctan', 0, false, false, false);
10.18005 +  ARCSIN = $ElementName_0(new ElementName(), 'arcsin', 'arcsin', 0, false, false, false);
10.18006 +  ARCCOS = $ElementName_0(new ElementName(), 'arccos', 'arccos', 0, false, false, false);
10.18007 +  APPLET = $ElementName_0(new ElementName(), 'applet', 'applet', 43, false, true, false);
10.18008 +  ARCCOT = $ElementName_0(new ElementName(), 'arccot', 'arccot', 0, false, false, false);
10.18009 +  APPROX = $ElementName_0(new ElementName(), 'approx', 'approx', 0, false, false, false);
10.18010 +  BUTTON = $ElementName_0(new ElementName(), 'button', 'button', 5, false, true, false);
10.18011 +  CIRCLE = $ElementName_0(new ElementName(), 'circle', 'circle', 0, false, false, false);
10.18012 +  CENTER = $ElementName_0(new ElementName(), 'center', 'center', 50, true, false, false);
10.18013 +  CURSOR_0 = $ElementName_0(new ElementName(), 'cursor', 'cursor', 0, false, false, false);
10.18014 +  CANVAS = $ElementName_0(new ElementName(), 'canvas', 'canvas', 0, false, false, false);
10.18015 +  DIVIDE = $ElementName_0(new ElementName(), 'divide', 'divide', 0, false, false, false);
10.18016 +  DEGREE = $ElementName_0(new ElementName(), 'degree', 'degree', 0, false, false, false);
10.18017 +  DIALOG = $ElementName_0(new ElementName(), 'dialog', 'dialog', 51, true, false, false);
10.18018 +  DOMAIN = $ElementName_0(new ElementName(), 'domain', 'domain', 0, false, false, false);
10.18019 +  EXISTS = $ElementName_0(new ElementName(), 'exists', 'exists', 0, false, false, false);
10.18020 +  FETILE = $ElementName_0(new ElementName(), 'fetile', 'feTile', 0, false, false, false);
10.18021 +  FIGURE = $ElementName_0(new ElementName(), 'figure', 'figure', 51, true, false, false);
10.18022 +  FORALL = $ElementName_0(new ElementName(), 'forall', 'forall', 0, false, false, false);
10.18023 +  FILTER_0 = $ElementName_0(new ElementName(), 'filter', 'filter', 0, false, false, false);
10.18024 +  FOOTER = $ElementName_0(new ElementName(), 'footer', 'footer', 51, true, false, false);
10.18025 +  HEADER = $ElementName_0(new ElementName(), 'header', 'header', 51, true, false, false);
10.18026 +  IFRAME = $ElementName_0(new ElementName(), 'iframe', 'iframe', 47, true, false, false);
10.18027 +  KEYGEN = $ElementName_0(new ElementName(), 'keygen', 'keygen', 65, true, false, false);
10.18028 +  LAMBDA = $ElementName_0(new ElementName(), 'lambda', 'lambda', 0, false, false, false);
10.18029 +  LEGEND = $ElementName_0(new ElementName(), 'legend', 'legend', 0, false, false, false);
10.18030 +  MSPACE = $ElementName_0(new ElementName(), 'mspace', 'mspace', 0, false, false, false);
10.18031 +  MTABLE = $ElementName_0(new ElementName(), 'mtable', 'mtable', 0, false, false, false);
10.18032 +  MSTYLE = $ElementName_0(new ElementName(), 'mstyle', 'mstyle', 0, false, false, false);
10.18033 +  MGLYPH = $ElementName_0(new ElementName(), 'mglyph', 'mglyph', 56, false, false, false);
10.18034 +  MEDIAN = $ElementName_0(new ElementName(), 'median', 'median', 0, false, false, false);
10.18035 +  MUNDER = $ElementName_0(new ElementName(), 'munder', 'munder', 0, false, false, false);
10.18036 +  MARKER = $ElementName_0(new ElementName(), 'marker', 'marker', 0, false, false, false);
10.18037 +  MERROR = $ElementName_0(new ElementName(), 'merror', 'merror', 0, false, false, false);
10.18038 +  MOMENT = $ElementName_0(new ElementName(), 'moment', 'moment', 0, false, false, false);
10.18039 +  MATRIX = $ElementName_0(new ElementName(), 'matrix', 'matrix', 0, false, false, false);
10.18040 +  OPTION = $ElementName_0(new ElementName(), 'option', 'option', 28, true, false, false);
10.18041 +  OBJECT_0 = $ElementName_0(new ElementName(), 'object', 'object', 63, false, true, false);
10.18042 +  OUTPUT = $ElementName_0(new ElementName(), 'output', 'output', 62, false, false, false);
10.18043 +  PRIMES = $ElementName_0(new ElementName(), 'primes', 'primes', 0, false, false, false);
10.18044 +  SOURCE = $ElementName_0(new ElementName(), 'source', 'source', 55, false, false, false);
10.18045 +  STRIKE = $ElementName_0(new ElementName(), 'strike', 'strike', 45, false, false, false);
10.18046 +  STRONG = $ElementName_0(new ElementName(), 'strong', 'strong', 45, false, false, false);
10.18047 +  SWITCH = $ElementName_0(new ElementName(), 'switch', 'switch', 0, false, false, false);
10.18048 +  SYMBOL = $ElementName_0(new ElementName(), 'symbol', 'symbol', 0, false, false, false);
10.18049 +  SPACER = $ElementName_0(new ElementName(), 'spacer', 'spacer', 49, true, false, false);
10.18050 +  SELECT = $ElementName_0(new ElementName(), 'select', 'select', 32, true, false, false);
10.18051 +  SUBSET = $ElementName_0(new ElementName(), 'subset', 'subset', 0, false, false, false);
10.18052 +  SCRIPT = $ElementName_0(new ElementName(), 'script', 'script', 31, true, false, false);
10.18053 +  TBREAK = $ElementName_0(new ElementName(), 'tbreak', 'tbreak', 0, false, false, false);
10.18054 +  VECTOR = $ElementName_0(new ElementName(), 'vector', 'vector', 0, false, false, false);
10.18055 +  ARTICLE = $ElementName_0(new ElementName(), 'article', 'article', 51, true, false, false);
10.18056 +  ANIMATE = $ElementName_0(new ElementName(), 'animate', 'animate', 0, false, false, false);
10.18057 +  ARCSECH = $ElementName_0(new ElementName(), 'arcsech', 'arcsech', 0, false, false, false);
10.18058 +  ARCCSCH = $ElementName_0(new ElementName(), 'arccsch', 'arccsch', 0, false, false, false);
10.18059 +  ARCTANH = $ElementName_0(new ElementName(), 'arctanh', 'arctanh', 0, false, false, false);
10.18060 +  ARCSINH = $ElementName_0(new ElementName(), 'arcsinh', 'arcsinh', 0, false, false, false);
10.18061 +  ARCCOSH = $ElementName_0(new ElementName(), 'arccosh', 'arccosh', 0, false, false, false);
10.18062 +  ARCCOTH = $ElementName_0(new ElementName(), 'arccoth', 'arccoth', 0, false, false, false);
10.18063 +  ACRONYM = $ElementName_0(new ElementName(), 'acronym', 'acronym', 0, false, false, false);
10.18064 +  ADDRESS = $ElementName_0(new ElementName(), 'address', 'address', 51, true, false, false);
10.18065 +  BGSOUND = $ElementName_0(new ElementName(), 'bgsound', 'bgsound', 49, true, false, false);
10.18066 +  COMMAND = $ElementName_0(new ElementName(), 'command', 'command', 54, true, false, false);
10.18067 +  COMPOSE = $ElementName_0(new ElementName(), 'compose', 'compose', 0, false, false, false);
10.18068 +  CEILING = $ElementName_0(new ElementName(), 'ceiling', 'ceiling', 0, false, false, false);
10.18069 +  CSYMBOL = $ElementName_0(new ElementName(), 'csymbol', 'csymbol', 0, false, false, false);
10.18070 +  CAPTION = $ElementName_0(new ElementName(), 'caption', 'caption', 6, false, true, false);
10.18071 +  DISCARD = $ElementName_0(new ElementName(), 'discard', 'discard', 0, false, false, false);
10.18072 +  DECLARE_0 = $ElementName_0(new ElementName(), 'declare', 'declare', 0, false, false, false);
10.18073 +  DETAILS = $ElementName_0(new ElementName(), 'details', 'details', 51, true, false, false);
10.18074 +  ELLIPSE = $ElementName_0(new ElementName(), 'ellipse', 'ellipse', 0, false, false, false);
10.18075 +  FEFUNCA = $ElementName_0(new ElementName(), 'fefunca', 'feFuncA', 0, false, false, false);
10.18076 +  FEFUNCB = $ElementName_0(new ElementName(), 'fefuncb', 'feFuncB', 0, false, false, false);
10.18077 +  FEBLEND = $ElementName_0(new ElementName(), 'feblend', 'feBlend', 0, false, false, false);
10.18078 +  FEFLOOD = $ElementName_0(new ElementName(), 'feflood', 'feFlood', 0, false, false, false);
10.18079 +  FEIMAGE = $ElementName_0(new ElementName(), 'feimage', 'feImage', 0, false, false, false);
10.18080 +  FEMERGE = $ElementName_0(new ElementName(), 'femerge', 'feMerge', 0, false, false, false);
10.18081 +  FEFUNCG = $ElementName_0(new ElementName(), 'fefuncg', 'feFuncG', 0, false, false, false);
10.18082 +  FEFUNCR = $ElementName_0(new ElementName(), 'fefuncr', 'feFuncR', 0, false, false, false);
10.18083 +  HANDLER = $ElementName_0(new ElementName(), 'handler', 'handler', 0, false, false, false);
10.18084 +  INVERSE = $ElementName_0(new ElementName(), 'inverse', 'inverse', 0, false, false, false);
10.18085 +  IMPLIES = $ElementName_0(new ElementName(), 'implies', 'implies', 0, false, false, false);
10.18086 +  ISINDEX = $ElementName_0(new ElementName(), 'isindex', 'isindex', 14, true, false, false);
10.18087 +  LOGBASE = $ElementName_0(new ElementName(), 'logbase', 'logbase', 0, false, false, false);
10.18088 +  LISTING = $ElementName_0(new ElementName(), 'listing', 'listing', 44, true, false, false);
10.18089 +  MFENCED = $ElementName_0(new ElementName(), 'mfenced', 'mfenced', 0, false, false, false);
10.18090 +  MPADDED = $ElementName_0(new ElementName(), 'mpadded', 'mpadded', 0, false, false, false);
10.18091 +  MARQUEE = $ElementName_0(new ElementName(), 'marquee', 'marquee', 43, false, true, false);
10.18092 +  MACTION = $ElementName_0(new ElementName(), 'maction', 'maction', 0, false, false, false);
10.18093 +  MSUBSUP = $ElementName_0(new ElementName(), 'msubsup', 'msubsup', 0, false, false, false);
10.18094 +  NOEMBED = $ElementName_0(new ElementName(), 'noembed', 'noembed', 60, true, false, false);
10.18095 +  POLYGON = $ElementName_0(new ElementName(), 'polygon', 'polygon', 0, false, false, false);
10.18096 +  PATTERN_0 = $ElementName_0(new ElementName(), 'pattern', 'pattern', 0, false, false, false);
10.18097 +  PRODUCT = $ElementName_0(new ElementName(), 'product', 'product', 0, false, false, false);
10.18098 +  SETDIFF = $ElementName_0(new ElementName(), 'setdiff', 'setdiff', 0, false, false, false);
10.18099 +  SECTION = $ElementName_0(new ElementName(), 'section', 'section', 51, true, false, false);
10.18100 +  TENDSTO = $ElementName_0(new ElementName(), 'tendsto', 'tendsto', 0, false, false, false);
10.18101 +  UPLIMIT = $ElementName_0(new ElementName(), 'uplimit', 'uplimit', 0, false, false, false);
10.18102 +  ALTGLYPH = $ElementName_0(new ElementName(), 'altglyph', 'altGlyph', 0, false, false, false);
10.18103 +  BASEFONT = $ElementName_0(new ElementName(), 'basefont', 'basefont', 49, true, false, false);
10.18104 +  CLIPPATH = $ElementName_0(new ElementName(), 'clippath', 'clipPath', 0, false, false, false);
10.18105 +  CODOMAIN = $ElementName_0(new ElementName(), 'codomain', 'codomain', 0, false, false, false);
10.18106 +  COLGROUP = $ElementName_0(new ElementName(), 'colgroup', 'colgroup', 8, true, false, false);
10.18107 +  DATAGRID = $ElementName_0(new ElementName(), 'datagrid', 'datagrid', 51, true, false, false);
10.18108 +  EMPTYSET = $ElementName_0(new ElementName(), 'emptyset', 'emptyset', 0, false, false, false);
10.18109 +  FACTOROF = $ElementName_0(new ElementName(), 'factorof', 'factorof', 0, false, false, false);
10.18110 +  FIELDSET = $ElementName_0(new ElementName(), 'fieldset', 'fieldset', 61, true, false, false);
10.18111 +  FRAMESET = $ElementName_0(new ElementName(), 'frameset', 'frameset', 11, true, false, false);
10.18112 +  FEOFFSET = $ElementName_0(new ElementName(), 'feoffset', 'feOffset', 0, false, false, false);
10.18113 +  GLYPHREF_0 = $ElementName_0(new ElementName(), 'glyphref', 'glyphRef', 0, false, false, false);
10.18114 +  INTERVAL = $ElementName_0(new ElementName(), 'interval', 'interval', 0, false, false, false);
10.18115 +  INTEGERS = $ElementName_0(new ElementName(), 'integers', 'integers', 0, false, false, false);
10.18116 +  INFINITY = $ElementName_0(new ElementName(), 'infinity', 'infinity', 0, false, false, false);
10.18117 +  LISTENER = $ElementName_0(new ElementName(), 'listener', 'listener', 0, false, false, false);
10.18118 +  LOWLIMIT = $ElementName_0(new ElementName(), 'lowlimit', 'lowlimit', 0, false, false, false);
10.18119 +  METADATA = $ElementName_0(new ElementName(), 'metadata', 'metadata', 0, false, false, false);
10.18120 +  MENCLOSE = $ElementName_0(new ElementName(), 'menclose', 'menclose', 0, false, false, false);
10.18121 +  MPHANTOM = $ElementName_0(new ElementName(), 'mphantom', 'mphantom', 0, false, false, false);
10.18122 +  NOFRAMES = $ElementName_0(new ElementName(), 'noframes', 'noframes', 25, true, false, false);
10.18123 +  NOSCRIPT = $ElementName_0(new ElementName(), 'noscript', 'noscript', 26, true, false, false);
10.18124 +  OPTGROUP = $ElementName_0(new ElementName(), 'optgroup', 'optgroup', 27, true, false, false);
10.18125 +  POLYLINE = $ElementName_0(new ElementName(), 'polyline', 'polyline', 0, false, false, false);
10.18126 +  PREFETCH = $ElementName_0(new ElementName(), 'prefetch', 'prefetch', 0, false, false, false);
10.18127 +  PROGRESS = $ElementName_0(new ElementName(), 'progress', 'progress', 0, false, false, false);
10.18128 +  PRSUBSET = $ElementName_0(new ElementName(), 'prsubset', 'prsubset', 0, false, false, false);
10.18129 +  QUOTIENT = $ElementName_0(new ElementName(), 'quotient', 'quotient', 0, false, false, false);
10.18130 +  SELECTOR = $ElementName_0(new ElementName(), 'selector', 'selector', 0, false, false, false);
10.18131 +  TEXTAREA = $ElementName_0(new ElementName(), 'textarea', 'textarea', 35, true, false, false);
10.18132 +  TEXTPATH = $ElementName_0(new ElementName(), 'textpath', 'textPath', 0, false, false, false);
10.18133 +  VARIANCE = $ElementName_0(new ElementName(), 'variance', 'variance', 0, false, false, false);
10.18134 +  ANIMATION = $ElementName_0(new ElementName(), 'animation', 'animation', 0, false, false, false);
10.18135 +  CONJUGATE = $ElementName_0(new ElementName(), 'conjugate', 'conjugate', 0, false, false, false);
10.18136 +  CONDITION = $ElementName_0(new ElementName(), 'condition', 'condition', 0, false, false, false);
10.18137 +  COMPLEXES = $ElementName_0(new ElementName(), 'complexes', 'complexes', 0, false, false, false);
10.18138 +  FONT_FACE = $ElementName_0(new ElementName(), 'font-face', 'font-face', 0, false, false, false);
10.18139 +  FACTORIAL = $ElementName_0(new ElementName(), 'factorial', 'factorial', 0, false, false, false);
10.18140 +  INTERSECT = $ElementName_0(new ElementName(), 'intersect', 'intersect', 0, false, false, false);
10.18141 +  IMAGINARY = $ElementName_0(new ElementName(), 'imaginary', 'imaginary', 0, false, false, false);
10.18142 +  LAPLACIAN = $ElementName_0(new ElementName(), 'laplacian', 'laplacian', 0, false, false, false);
10.18143 +  MATRIXROW = $ElementName_0(new ElementName(), 'matrixrow', 'matrixrow', 0, false, false, false);
10.18144 +  NOTSUBSET = $ElementName_0(new ElementName(), 'notsubset', 'notsubset', 0, false, false, false);
10.18145 +  OTHERWISE = $ElementName_0(new ElementName(), 'otherwise', 'otherwise', 0, false, false, false);
10.18146 +  PIECEWISE = $ElementName_0(new ElementName(), 'piecewise', 'piecewise', 0, false, false, false);
10.18147 +  PLAINTEXT = $ElementName_0(new ElementName(), 'plaintext', 'plaintext', 30, true, false, false);
10.18148 +  RATIONALS = $ElementName_0(new ElementName(), 'rationals', 'rationals', 0, false, false, false);
10.18149 +  SEMANTICS = $ElementName_0(new ElementName(), 'semantics', 'semantics', 0, false, false, false);
10.18150 +  TRANSPOSE = $ElementName_0(new ElementName(), 'transpose', 'transpose', 0, false, false, false);
10.18151 +  ANNOTATION = $ElementName_0(new ElementName(), 'annotation', 'annotation', 0, false, false, false);
10.18152 +  BLOCKQUOTE = $ElementName_0(new ElementName(), 'blockquote', 'blockquote', 50, true, false, false);
10.18153 +  DIVERGENCE = $ElementName_0(new ElementName(), 'divergence', 'divergence', 0, false, false, false);
10.18154 +  EULERGAMMA = $ElementName_0(new ElementName(), 'eulergamma', 'eulergamma', 0, false, false, false);
10.18155 +  EQUIVALENT = $ElementName_0(new ElementName(), 'equivalent', 'equivalent', 0, false, false, false);
10.18156 +  IMAGINARYI = $ElementName_0(new ElementName(), 'imaginaryi', 'imaginaryi', 0, false, false, false);
10.18157 +  MALIGNMARK = $ElementName_0(new ElementName(), 'malignmark', 'malignmark', 56, false, false, false);
10.18158 +  MUNDEROVER = $ElementName_0(new ElementName(), 'munderover', 'munderover', 0, false, false, false);
10.18159 +  MLABELEDTR = $ElementName_0(new ElementName(), 'mlabeledtr', 'mlabeledtr', 0, false, false, false);
10.18160 +  NOTANUMBER = $ElementName_0(new ElementName(), 'notanumber', 'notanumber', 0, false, false, false);
10.18161 +  SOLIDCOLOR = $ElementName_0(new ElementName(), 'solidcolor', 'solidcolor', 0, false, false, false);
10.18162 +  ALTGLYPHDEF = $ElementName_0(new ElementName(), 'altglyphdef', 'altGlyphDef', 0, false, false, false);
10.18163 +  DETERMINANT = $ElementName_0(new ElementName(), 'determinant', 'determinant', 0, false, false, false);
10.18164 +  EVENTSOURCE = $ElementName_0(new ElementName(), 'eventsource', 'eventsource', 54, true, false, false);
10.18165 +  FEMERGENODE = $ElementName_0(new ElementName(), 'femergenode', 'feMergeNode', 0, false, false, false);
10.18166 +  FECOMPOSITE = $ElementName_0(new ElementName(), 'fecomposite', 'feComposite', 0, false, false, false);
10.18167 +  FESPOTLIGHT = $ElementName_0(new ElementName(), 'fespotlight', 'feSpotLight', 0, false, false, false);
10.18168 +  MALIGNGROUP = $ElementName_0(new ElementName(), 'maligngroup', 'maligngroup', 0, false, false, false);
10.18169 +  MPRESCRIPTS = $ElementName_0(new ElementName(), 'mprescripts', 'mprescripts', 0, false, false, false);
10.18170 +  MOMENTABOUT = $ElementName_0(new ElementName(), 'momentabout', 'momentabout', 0, false, false, false);
10.18171 +  NOTPRSUBSET = $ElementName_0(new ElementName(), 'notprsubset', 'notprsubset', 0, false, false, false);
10.18172 +  PARTIALDIFF = $ElementName_0(new ElementName(), 'partialdiff', 'partialdiff', 0, false, false, false);
10.18173 +  ALTGLYPHITEM = $ElementName_0(new ElementName(), 'altglyphitem', 'altGlyphItem', 0, false, false, false);
10.18174 +  ANIMATECOLOR = $ElementName_0(new ElementName(), 'animatecolor', 'animateColor', 0, false, false, false);
10.18175 +  DATATEMPLATE = $ElementName_0(new ElementName(), 'datatemplate', 'datatemplate', 0, false, false, false);
10.18176 +  EXPONENTIALE = $ElementName_0(new ElementName(), 'exponentiale', 'exponentiale', 0, false, false, false);
10.18177 +  FETURBULENCE = $ElementName_0(new ElementName(), 'feturbulence', 'feTurbulence', 0, false, false, false);
10.18178 +  FEPOINTLIGHT = $ElementName_0(new ElementName(), 'fepointlight', 'fePointLight', 0, false, false, false);
10.18179 +  FEMORPHOLOGY = $ElementName_0(new ElementName(), 'femorphology', 'feMorphology', 0, false, false, false);
10.18180 +  OUTERPRODUCT = $ElementName_0(new ElementName(), 'outerproduct', 'outerproduct', 0, false, false, false);
10.18181 +  ANIMATEMOTION = $ElementName_0(new ElementName(), 'animatemotion', 'animateMotion', 0, false, false, false);
10.18182 +  COLOR_PROFILE_0 = $ElementName_0(new ElementName(), 'color-profile', 'color-profile', 0, false, false, false);
10.18183 +  FONT_FACE_SRC = $ElementName_0(new ElementName(), 'font-face-src', 'font-face-src', 0, false, false, false);
10.18184 +  FONT_FACE_URI = $ElementName_0(new ElementName(), 'font-face-uri', 'font-face-uri', 0, false, false, false);
10.18185 +  FOREIGNOBJECT = $ElementName_0(new ElementName(), 'foreignobject', 'foreignObject', 59, false, false, false);
10.18186 +  FECOLORMATRIX = $ElementName_0(new ElementName(), 'fecolormatrix', 'feColorMatrix', 0, false, false, false);
10.18187 +  MISSING_GLYPH = $ElementName_0(new ElementName(), 'missing-glyph', 'missing-glyph', 0, false, false, false);
10.18188 +  MMULTISCRIPTS = $ElementName_0(new ElementName(), 'mmultiscripts', 'mmultiscripts', 0, false, false, false);
10.18189 +  SCALARPRODUCT = $ElementName_0(new ElementName(), 'scalarproduct', 'scalarproduct', 0, false, false, false);
10.18190 +  VECTORPRODUCT = $ElementName_0(new ElementName(), 'vectorproduct', 'vectorproduct', 0, false, false, false);
10.18191 +  ANNOTATION_XML = $ElementName_0(new ElementName(), 'annotation-xml', 'annotation-xml', 58, false, false, false);
10.18192 +  DEFINITION_SRC = $ElementName_0(new ElementName(), 'definition-src', 'definition-src', 0, false, false, false);
10.18193 +  FONT_FACE_NAME = $ElementName_0(new ElementName(), 'font-face-name', 'font-face-name', 0, false, false, false);
10.18194 +  FEGAUSSIANBLUR = $ElementName_0(new ElementName(), 'fegaussianblur', 'feGaussianBlur', 0, false, false, false);
10.18195 +  FEDISTANTLIGHT = $ElementName_0(new ElementName(), 'fedistantlight', 'feDistantLight', 0, false, false, false);
10.18196 +  LINEARGRADIENT = $ElementName_0(new ElementName(), 'lineargradient', 'linearGradient', 0, false, false, false);
10.18197 +  NATURALNUMBERS = $ElementName_0(new ElementName(), 'naturalnumbers', 'naturalnumbers', 0, false, false, false);
10.18198 +  RADIALGRADIENT = $ElementName_0(new ElementName(), 'radialgradient', 'radialGradient', 0, false, false, false);
10.18199 +  ANIMATETRANSFORM = $ElementName_0(new ElementName(), 'animatetransform', 'animateTransform', 0, false, false, false);
10.18200 +  CARTESIANPRODUCT = $ElementName_0(new ElementName(), 'cartesianproduct', 'cartesianproduct', 0, false, false, false);
10.18201 +  FONT_FACE_FORMAT = $ElementName_0(new ElementName(), 'font-face-format', 'font-face-format', 0, false, false, false);
10.18202 +  FECONVOLVEMATRIX = $ElementName_0(new ElementName(), 'feconvolvematrix', 'feConvolveMatrix', 0, false, false, false);
10.18203 +  FEDIFFUSELIGHTING = $ElementName_0(new ElementName(), 'fediffuselighting', 'feDiffuseLighting', 0, false, false, false);
10.18204 +  FEDISPLACEMENTMAP = $ElementName_0(new ElementName(), 'fedisplacementmap', 'feDisplacementMap', 0, false, false, false);
10.18205 +  FESPECULARLIGHTING = $ElementName_0(new ElementName(), 'fespecularlighting', 'feSpecularLighting', 0, false, false, false);
10.18206 +  DOMAINOFAPPLICATION = $ElementName_0(new ElementName(), 'domainofapplication', 'domainofapplication', 0, false, false, false);
10.18207 +  FECOMPONENTTRANSFER = $ElementName_0(new ElementName(), 'fecomponenttransfer', 'feComponentTransfer', 0, false, false, false);
10.18208 +  ELEMENT_NAMES = initValues(_3Lnu_validator_htmlparser_impl_ElementName_2_classLit, 50, 10, [A, B, G, I, P, Q, S, U, BR, CI, CN, DD, DL, DT, EM, EQ, FN, H1, H2, H3, H4, H5, H6, GT, HR, IN_0, LI, LN, LT, MI, MN, MO, MS, OL, OR, PI, RP, RT_0, TD, TH, TR, TT, UL, AND, ARG, ABS, BIG, BDO, CSC, COL, COS, COT, DEL, DFN, DIR_0, DIV, EXP, GCD, GEQ, IMG, INS, INT, KBD, LOG, LCM, LEQ, MTD, MIN_0, MAP, MTR, MAX_0, NEQ, NOT, NAV, PRE, REM, SUB, SEC, SVG, SUM, SIN, SEP, SUP, SET, TAN, USE, VAR, WBR, XMP, XOR, AREA, ABBR_0, BASE_0, BVAR, BODY, CARD, CODE_0, CITE_0, CSCH, COSH, COTH, CURL, DESC, DIFF, DEFS, FORM_0, FONT, GRAD, HEAD, HTML_0, LINE, LINK_0, LIST_0, META, MSUB, MODE_0, MATH, MARK, MASK_0, MEAN, MSUP, MENU, MROW, NONE, NOBR, NEST, PATH_0, PLUS, RULE, REAL, RELN, RECT, ROOT, RUBY, SECH, SINH, SPAN_0, SAMP, STOP, SDEV, TIME, TRUE, TREF, TANH, TEXT_0, VIEW, ASIDE, AUDIO, APPLY, EMBED, FRAME_0, FALSE, FLOOR, GLYPH, HKERN, IMAGE, IDENT, INPUT, LABEL_0, LIMIT, MFRAC, MPATH, METER, MOVER, MINUS, MROOT, MSQRT, MTEXT, NOTIN, PIECE, PARAM, POWER, REALS, STYLE_0, SMALL, THEAD, TABLE, TITLE_0, TSPAN, TIMES, TFOOT, TBODY, UNION, VKERN, VIDEO, ARCSEC, ARCCSC, ARCTAN, ARCSIN, ARCCOS, APPLET, ARCCOT, APPROX, BUTTON, CIRCLE, CENTER, CURSOR_0, CANVAS, DIVIDE, DEGREE, DIALOG, DOMAIN, EXISTS, FETILE, FIGURE, FORALL, FILTER_0, FOOTER, HEADER, IFRAME, KEYGEN, LAMBDA, LEGEND, MSPACE, MTABLE, MSTYLE, MGLYPH, MEDIAN, MUNDER, MARKER, MERROR, MOMENT, MATRIX, OPTION, OBJECT_0, OUTPUT, PRIMES, SOURCE, STRIKE, STRONG, SWITCH, SYMBOL, SPACER, SELECT, SUBSET, SCRIPT, TBREAK, VECTOR, ARTICLE, ANIMATE, ARCSECH, ARCCSCH, ARCTANH, ARCSINH, ARCCOSH, ARCCOTH, ACRONYM, ADDRESS, BGSOUND, COMMAND, COMPOSE, CEILING, CSYMBOL, CAPTION, DISCARD, DECLARE_0, DETAILS, ELLIPSE, FEFUNCA, FEFUNCB, FEBLEND, FEFLOOD, FEIMAGE, FEMERGE, FEFUNCG, FEFUNCR, HANDLER, INVERSE, IMPLIES, ISINDEX, LOGBASE, LISTING, MFENCED, MPADDED, MARQUEE, MACTION, MSUBSUP, NOEMBED, POLYGON, PATTERN_0, PRODUCT, SETDIFF, SECTION, TENDSTO, UPLIMIT, ALTGLYPH, BASEFONT, CLIPPATH, CODOMAIN, COLGROUP, DATAGRID, EMPTYSET, FACTOROF, FIELDSET, FRAMESET, FEOFFSET, GLYPHREF_0, INTERVAL, INTEGERS, INFINITY, LISTENER, LOWLIMIT, METADATA, MENCLOSE, MPHANTOM, NOFRAMES, NOSCRIPT, OPTGROUP, POLYLINE, PREFETCH, PROGRESS, PRSUBSET, QUOTIENT, SELECTOR, TEXTAREA, TEXTPATH, VARIANCE, ANIMATION, CONJUGATE, CONDITION, COMPLEXES, FONT_FACE, FACTORIAL, INTERSECT, IMAGINARY, LAPLACIAN, MATRIXROW, NOTSUBSET, OTHERWISE, PIECEWISE, PLAINTEXT, RATIONALS, SEMANTICS, TRANSPOSE, ANNOTATION, BLOCKQUOTE, DIVERGENCE, EULERGAMMA, EQUIVALENT, IMAGINARYI, MALIGNMARK, MUNDEROVER, MLABELEDTR, NOTANUMBER, SOLIDCOLOR, ALTGLYPHDEF, DETERMINANT, EVENTSOURCE, FEMERGENODE, FECOMPOSITE, FESPOTLIGHT, MALIGNGROUP, MPRESCRIPTS, MOMENTABOUT, NOTPRSUBSET, PARTIALDIFF, ALTGLYPHITEM, ANIMATECOLOR, DATATEMPLATE, EXPONENTIALE, FETURBULENCE, FEPOINTLIGHT, FEMORPHOLOGY, OUTERPRODUCT, ANIMATEMOTION, COLOR_PROFILE_0, FONT_FACE_SRC, FONT_FACE_URI, FOREIGNOBJECT, FECOLORMATRIX, MISSING_GLYPH, MMULTISCRIPTS, SCALARPRODUCT, VECTORPRODUCT, ANNOTATION_XML, DEFINITION_SRC, FONT_FACE_NAME, FEGAUSSIANBLUR, FEDISTANTLIGHT, LINEARGRADIENT, NATURALNUMBERS, RADIALGRADIENT, ANIMATETRANSFORM, CARTESIANPRODUCT, FONT_FACE_FORMAT, FECONVOLVEMATRIX, FEDIFFUSELIGHTING, FEDISPLACEMENTMAP, FESPECULARLIGHTING, DOMAINOFAPPLICATION, FECOMPONENTTRANSFER]);
10.18209 +  ELEMENT_HASHES = initValues(_3I_classLit, 0, -1, [1057, 1090, 1255, 1321, 1552, 1585, 1651, 1717, 68162, 68899, 69059, 69764, 70020, 70276, 71077, 71205, 72134, 72232, 72264, 72296, 72328, 72360, 72392, 73351, 74312, 75209, 78124, 78284, 78476, 79149, 79309, 79341, 79469, 81295, 81487, 82224, 84498, 84626, 86164, 86292, 86612, 86676, 87445, 3183041, 3186241, 3198017, 3218722, 3226754, 3247715, 3256803, 3263971, 3264995, 3289252, 3291332, 3295524, 3299620, 3326725, 3379303, 3392679, 3448233, 3460553, 3461577, 3510347, 3546604, 3552364, 3556524, 3576461, 3586349, 3588141, 3590797, 3596333, 3622062, 3625454, 3627054, 3675728, 3749042, 3771059, 3771571, 3776211, 3782323, 3782963, 3784883, 3785395, 3788979, 3815476, 3839605, 3885110, 3917911, 3948984, 3951096, 135304769, 135858241, 136498210, 136906434, 137138658, 137512995, 137531875, 137548067, 137629283, 137645539, 137646563, 137775779, 138529956, 138615076, 139040932, 140954086, 141179366, 141690439, 142738600, 143013512, 146979116, 147175724, 147475756, 147902637, 147936877, 148017645, 148131885, 148228141, 148229165, 148309165, 148395629, 148551853, 148618829, 149076462, 149490158, 149572782, 151277616, 151639440, 153268914, 153486514, 153563314, 153750706, 153763314, 153914034, 154406067, 154417459, 154600979, 154678323, 154680979, 154866835, 155366708, 155375188, 155391572, 155465780, 155869364, 158045494, 168988979, 169321621, 169652752, 173151309, 174240818, 174247297, 174669292, 175391532, 176638123, 177380397, 177879204, 177886734, 180753473, 181020073, 181503558, 181686320, 181999237, 181999311, 182048201, 182074866, 182078003, 182083764, 182920847, 184716457, 184976961, 185145071, 187281445, 187872052, 188100653, 188875944, 188919873, 188920457, 189203987, 189371817, 189414886, 189567458, 190266670, 191318187, 191337609, 202479203, 202493027, 202835587, 202843747, 203013219, 203036048, 203045987, 203177552, 203898516, 204648562, 205067918, 205078130, 205096654, 205689142, 205690439, 205766017, 205988909, 207213161, 207794484, 207800999, 208023602, 208213644, 208213647, 210310273, 210940978, 213325049, 213946445, 214055079, 215125040, 215134273, 215135028, 215237420, 215418148, 215553166, 215553394, 215563858, 215627949, 215754324, 217529652, 217713834, 217732628, 218731945, 221417045, 221424946, 221493746, 221515401, 221658189, 221844577, 221908140, 221910626, 221921586, 222659762, 225001091, 236105833, 236113965, 236194995, 236195427, 236206132, 236206387, 236211683, 236212707, 236381647, 236571826, 237124271, 238172205, 238210544, 238270764, 238435405, 238501172, 239224867, 239257644, 239710497, 240307721, 241208789, 241241557, 241318060, 241319404, 241343533, 241344069, 241405397, 241765845, 243864964, 244502085, 244946220, 245109902, 247647266, 247707956, 248648814, 248648836, 248682161, 248986932, 249058914, 249697357, 252132601, 252135604, 252317348, 255007012, 255278388, 256365156, 257566121, 269763372, 271202790, 271863856, 272049197, 272127474, 272770631, 274339449, 274939471, 275388004, 275388005, 275388006, 275977800, 278267602, 278513831, 278712622, 281613765, 281683369, 282120228, 282250732, 282508942, 283743649, 283787570, 284710386, 285391148, 285478533, 285854898, 285873762, 286931113, 288964227, 289445441, 289689648, 291671489, 303512884, 305319975, 305610036, 305764101, 308448294, 308675890, 312085683, 312264750, 315032867, 316391000, 317331042, 317902135, 318950711, 319447220, 321499182, 322538804, 323145200, 337067316, 337826293, 339905989, 340833697, 341457068, 345302593, 349554733, 349771471, 349786245, 350819405, 356072847, 370349192, 373962798, 374509141, 375558638, 375574835, 376053993, 383276530, 383373833, 383407586, 384439906, 386079012, 404133513, 404307343, 407031852, 408072233, 409112005, 409608425, 409771500, 419040932, 437730612, 439529766, 442616365, 442813037, 443157674, 443295316, 450118444, 450482697, 456789668, 459935396, 471217869, 474073645, 476230702, 476665218, 476717289, 483014825, 485083298, 489306281, 538364390, 540675748, 543819186, 543958612, 576960820, 577242548, 610515252, 642202932, 644420819]);
10.18210 +}
10.18211 +
10.18212 +function $ElementName_0(this$static, name, camelCaseName, group, special, scoping, fosterParenting){
10.18213 +  $clinit_89();
10.18214 +  this$static.name_0 = name;
10.18215 +  this$static.camelCaseName = camelCaseName;
10.18216 +  this$static.group = group;
10.18217 +  this$static.special = special;
10.18218 +  this$static.scoping = scoping;
10.18219 +  this$static.fosterParenting = fosterParenting;
10.18220 +  this$static.custom = false;
10.18221 +  return this$static;
10.18222 +}
10.18223 +
10.18224 +function $ElementName(this$static, name){
10.18225 +  $clinit_89();
10.18226 +  this$static.name_0 = name;
10.18227 +  this$static.camelCaseName = name;
10.18228 +  this$static.group = 0;
10.18229 +  this$static.special = false;
10.18230 +  this$static.scoping = false;
10.18231 +  this$static.fosterParenting = false;
10.18232 +  this$static.custom = true;
10.18233 +  return this$static;
10.18234 +}
10.18235 +
10.18236 +function bufToHash_0(buf, len){
10.18237 +  var hash, i, j;
10.18238 +  hash = len;
10.18239 +  hash <<= 5;
10.18240 +  hash += buf[0] - 96;
10.18241 +  j = len;
10.18242 +  for (i = 0; i < 4 && j > 0; ++i) {
10.18243 +    --j;
10.18244 +    hash <<= 5;
10.18245 +    hash += buf[j] - 96;
10.18246 +  }
10.18247 +  return hash;
10.18248 +}
10.18249 +
10.18250 +function elementNameByBuffer(buf, offset, length){
10.18251 +  var end, end_0;
10.18252 +  $clinit_89();
10.18253 +  var elementName, hash, index, name;
10.18254 +  hash = bufToHash_0(buf, length);
10.18255 +  index = binarySearch(ELEMENT_HASHES, hash);
10.18256 +  if (index < 0) {
10.18257 +    return $ElementName(new ElementName(), String((end = offset + length , __checkBounds(buf.length, offset, end) , __valueOf(buf, offset, end))));
10.18258 +  }
10.18259 +   else {
10.18260 +    elementName = ELEMENT_NAMES[index];
10.18261 +    name = elementName.name_0;
10.18262 +    if (!localEqualsBuffer(name, buf, offset, length)) {
10.18263 +      return $ElementName(new ElementName(), String((end_0 = offset + length , __checkBounds(buf.length, offset, end_0) , __valueOf(buf, offset, end_0))));
10.18264 +    }
10.18265 +    return elementName;
10.18266 +  }
10.18267 +}
10.18268 +
10.18269 +function getClass_51(){
10.18270 +  return Lnu_validator_htmlparser_impl_ElementName_2_classLit;
10.18271 +}
10.18272 +
10.18273 +function ElementName(){
10.18274 +}
10.18275 +
10.18276 +_ = ElementName.prototype = new Object_0();
10.18277 +_.getClass$ = getClass_51;
10.18278 +_.typeId$ = 37;
10.18279 +_.camelCaseName = null;
10.18280 +_.custom = false;
10.18281 +_.fosterParenting = false;
10.18282 +_.group = 0;
10.18283 +_.name_0 = null;
10.18284 +_.scoping = false;
10.18285 +_.special = false;
10.18286 +var A, ABBR_0, ABS, ACRONYM, ADDRESS, ALTGLYPH, ALTGLYPHDEF, ALTGLYPHITEM, AND, ANIMATE, ANIMATECOLOR, ANIMATEMOTION, ANIMATETRANSFORM, ANIMATION, ANNOTATION, ANNOTATION_XML, APPLET, APPLY, APPROX, ARCCOS, ARCCOSH, ARCCOT, ARCCOTH, ARCCSC, ARCCSCH, ARCSEC, ARCSECH, ARCSIN, ARCSINH, ARCTAN, ARCTANH, AREA, ARG, ARTICLE, ASIDE, AUDIO, B, BASE_0, BASEFONT, BDO, BGSOUND, BIG, BLOCKQUOTE, BODY, BR, BUTTON, BVAR, CANVAS, CAPTION, CARD, CARTESIANPRODUCT, CEILING, CENTER, CI, CIRCLE, CITE_0, CLIPPATH, CN, CODE_0, CODOMAIN, COL, COLGROUP, COLOR_PROFILE_0, COMMAND, COMPLEXES, COMPOSE, CONDITION, CONJUGATE, COS, COSH, COT, COTH, CSC, CSCH, CSYMBOL, CURL, CURSOR_0, DATAGRID, DATATEMPLATE, DD, DECLARE_0, DEFINITION_SRC, DEFS, DEGREE, DEL, DESC, DETAILS, DETERMINANT, DFN, DIALOG, DIFF, DIR_0, DISCARD, DIV, DIVERGENCE, DIVIDE, DL, DOMAIN, DOMAINOFAPPLICATION, DT, ELEMENT_HASHES, ELEMENT_NAMES, ELLIPSE, EM, EMBED, EMPTYSET, EQ, EQUIVALENT, EULERGAMMA, EVENTSOURCE, EXISTS, EXP, EXPONENTIALE, FACTORIAL, FACTOROF, FALSE, FEBLEND, FECOLORMATRIX, FECOMPONENTTRANSFER, FECOMPOSITE, FECONVOLVEMATRIX, FEDIFFUSELIGHTING, FEDISPLACEMENTMAP, FEDISTANTLIGHT, FEFLOOD, FEFUNCA, FEFUNCB, FEFUNCG, FEFUNCR, FEGAUSSIANBLUR, FEIMAGE, FEMERGE, FEMERGENODE, FEMORPHOLOGY, FEOFFSET, FEPOINTLIGHT, FESPECULARLIGHTING, FESPOTLIGHT, FETILE, FETURBULENCE, FIELDSET, FIGURE, FILTER_0, FLOOR, FN, FONT, FONT_FACE, FONT_FACE_FORMAT, FONT_FACE_NAME, FONT_FACE_SRC, FONT_FACE_URI, FOOTER, FORALL, FOREIGNOBJECT, FORM_0, FRAME_0, FRAMESET, G, GCD, GEQ, GLYPH, GLYPHREF_0, GRAD, GT, H1, H2, H3, H4, H5, H6, HANDLER, HEAD, HEADER, HKERN, HR, HTML_0, I, IDENT, IFRAME, IMAGE, IMAGINARY, IMAGINARYI, IMG, IMPLIES, IN_0, INFINITY, INPUT, INS, INT, INTEGERS, INTERSECT, INTERVAL, INVERSE, ISINDEX, KBD, KEYGEN, LABEL_0, LAMBDA, LAPLACIAN, LCM, LEGEND, LEQ, LI, LIMIT, LINE, LINEARGRADIENT, LINK_0, LIST_0, LISTENER, LISTING, LN, LOG, LOGBASE, LOWLIMIT, LT, MACTION, MALIGNGROUP, MALIGNMARK, MAP, MARK, MARKER, MARQUEE, MASK_0, MATH, MATRIX, MATRIXROW, MAX_0, MEAN, MEDIAN, MENCLOSE, MENU, MERROR, META, METADATA, METER, MFENCED, MFRAC, MGLYPH, MI, MIN_0, MINUS, MISSING_GLYPH, MLABELEDTR, MMULTISCRIPTS, MN, MO, MODE_0, MOMENT, MOMENTABOUT, MOVER, MPADDED, MPATH, MPHANTOM, MPRESCRIPTS, MROOT, MROW, MS, MSPACE, MSQRT, MSTYLE, MSUB, MSUBSUP, MSUP, MTABLE, MTD, MTEXT, MTR, MUNDER, MUNDEROVER, NATURALNUMBERS, NAV, NEQ, NEST, NOBR, NOEMBED, NOFRAMES, NONE, NOSCRIPT, NOT, NOTANUMBER, NOTIN, NOTPRSUBSET, NOTSUBSET, OBJECT_0, OL, OPTGROUP, OPTION, OR, OTHERWISE, OUTERPRODUCT, OUTPUT, P, PARAM, PARTIALDIFF, PATH_0, PATTERN_0, PI, PIECE, PIECEWISE, PLAINTEXT, PLUS, POLYGON, POLYLINE, POWER, PRE, PREFETCH, PRIMES, PRODUCT, PROGRESS, PRSUBSET, Q, QUOTIENT, RADIALGRADIENT, RATIONALS, REAL, REALS, RECT, RELN, REM, ROOT, RP, RT_0, RUBY, RULE, S, SAMP, SCALARPRODUCT, SCRIPT, SDEV, SEC, SECH, SECTION, SELECT, SELECTOR, SEMANTICS, SEP, SET, SETDIFF, SIN, SINH, SMALL, SOLIDCOLOR, SOURCE, SPACER, SPAN_0, STOP, STRIKE, STRONG, STYLE_0, SUB, SUBSET, SUM, SUP, SVG, SWITCH, SYMBOL, TABLE, TAN, TANH, TBODY, TBREAK, TD, TENDSTO, TEXT_0, TEXTAREA, TEXTPATH, TFOOT, TH, THEAD, TIME, TIMES, TITLE_0, TR, TRANSPOSE, TREF, TRUE, TSPAN, TT, U, UL, UNION, UPLIMIT, USE, VAR, VARIANCE, VECTOR, VECTORPRODUCT, VIDEO, VIEW, VKERN, WBR, XMP, XOR;
10.18287 +function $clinit_97(){
10.18288 +  $clinit_97 = nullMethod;
10.18289 +  LT_GT = initValues(_3C_classLit, 42, -1, [60, 62]);
10.18290 +  LT_SOLIDUS = initValues(_3C_classLit, 42, -1, [60, 47]);
10.18291 +  RSQB_RSQB = initValues(_3C_classLit, 42, -1, [93, 93]);
10.18292 +  REPLACEMENT_CHARACTER = initValues(_3C_classLit, 42, -1, [65533]);
10.18293 +  SPACE = initValues(_3C_classLit, 42, -1, [32]);
10.18294 +  LF = initValues(_3C_classLit, 42, -1, [10]);
10.18295 +  CDATA_LSQB = $toCharArray('CDATA[');
10.18296 +  OCTYPE = $toCharArray('octype');
10.18297 +  UBLIC = $toCharArray('ublic');
10.18298 +  YSTEM = $toCharArray('ystem');
10.18299 +  TITLE_ARR = initValues(_3C_classLit, 42, -1, [116, 105, 116, 108, 101]);
10.18300 +  SCRIPT_ARR = initValues(_3C_classLit, 42, -1, [115, 99, 114, 105, 112, 116]);
10.18301 +  STYLE_ARR = initValues(_3C_classLit, 42, -1, [115, 116, 121, 108, 101]);
10.18302 +  PLAINTEXT_ARR = initValues(_3C_classLit, 42, -1, [112, 108, 97, 105, 110, 116, 101, 120, 116]);
10.18303 +  XMP_ARR = initValues(_3C_classLit, 42, -1, [120, 109, 112]);
10.18304 +  TEXTAREA_ARR = initValues(_3C_classLit, 42, -1, [116, 101, 120, 116, 97, 114, 101, 97]);
10.18305 +  IFRAME_ARR = initValues(_3C_classLit, 42, -1, [105, 102, 114, 97, 109, 101]);
10.18306 +  NOEMBED_ARR = initValues(_3C_classLit, 42, -1, [110, 111, 101, 109, 98, 101, 100]);
10.18307 +  NOSCRIPT_ARR = initValues(_3C_classLit, 42, -1, [110, 111, 115, 99, 114, 105, 112, 116]);
10.18308 +  NOFRAMES_ARR = initValues(_3C_classLit, 42, -1, [110, 111, 102, 114, 97, 109, 101, 115]);
10.18309 +}
10.18310 +
10.18311 +function $addAttributeWithValue(this$static){
10.18312 +  var value;
10.18313 +  this$static.metaBoundaryPassed && ($clinit_89() , META) == this$static.tagName && ($clinit_87() , CHARSET) == this$static.attributeName;
10.18314 +  if (this$static.attributeName) {
10.18315 +    value = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.18316 +    if (!this$static.endTag && this$static.html4 && this$static.html4ModeCompatibleWithXhtml1Schemata && $isCaseFolded(this$static.attributeName)) {
10.18317 +      value = newAsciiLowerCaseStringFromString(value);
10.18318 +    }
10.18319 +    $addAttribute(this$static.attributes, this$static.attributeName, value, this$static.xmlnsPolicy);
10.18320 +  }
10.18321 +}
10.18322 +
10.18323 +function $addAttributeWithoutValue(this$static){
10.18324 +  this$static.metaBoundaryPassed && ($clinit_87() , CHARSET) == this$static.attributeName && ($clinit_89() , META) == this$static.tagName;
10.18325 +  if (this$static.attributeName) {
10.18326 +    if (this$static.html4) {
10.18327 +      if ($isBoolean(this$static.attributeName)) {
10.18328 +        if (this$static.html4ModeCompatibleWithXhtml1Schemata) {
10.18329 +          $addAttribute(this$static.attributes, this$static.attributeName, this$static.attributeName.local[0], this$static.xmlnsPolicy);
10.18330 +        }
10.18331 +         else {
10.18332 +          $addAttribute(this$static.attributes, this$static.attributeName, '', this$static.xmlnsPolicy);
10.18333 +        }
10.18334 +      }
10.18335 +       else {
10.18336 +        $addAttribute(this$static.attributes, this$static.attributeName, '', this$static.xmlnsPolicy);
10.18337 +      }
10.18338 +    }
10.18339 +     else {
10.18340 +      if (($clinit_87() , SRC) == this$static.attributeName || HREF == this$static.attributeName) {
10.18341 +        'Attribute \u201C' + this$static.attributeName.local[0] + '\u201D without an explicit value seen. The attribute may be dropped by IE7.';
10.18342 +      }
10.18343 +      $addAttribute(this$static.attributes, this$static.attributeName, '', this$static.xmlnsPolicy);
10.18344 +    }
10.18345 +  }
10.18346 +}
10.18347 +
10.18348 +function $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c){
10.18349 +  switch (this$static.commentPolicy.ordinal) {
10.18350 +    case 2:
10.18351 +      --this$static.longStrBufLen;
10.18352 +      $appendLongStrBuf(this$static, 32);
10.18353 +      $appendLongStrBuf(this$static, 45);
10.18354 +    case 0:
10.18355 +      $appendLongStrBuf(this$static, c);
10.18356 +      break;
10.18357 +    case 1:
10.18358 +      $fatal(this$static, 'The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.');
10.18359 +  }
10.18360 +}
10.18361 +
10.18362 +function $appendLongStrBuf(this$static, c){
10.18363 +  var newBuf;
10.18364 +  if (this$static.longStrBufLen == this$static.longStrBuf.length) {
10.18365 +    newBuf = initDim(_3C_classLit, 42, -1, this$static.longStrBufLen + (this$static.longStrBufLen >> 1), 1);
10.18366 +    arraycopy(this$static.longStrBuf, 0, newBuf, 0, this$static.longStrBuf.length);
10.18367 +    this$static.longStrBuf = newBuf;
10.18368 +  }
10.18369 +  this$static.longStrBuf[this$static.longStrBufLen++] = c;
10.18370 +}
10.18371 +
10.18372 +function $appendLongStrBuf_0(this$static, buffer, offset, length){
10.18373 +  var newBuf, reqLen;
10.18374 +  reqLen = this$static.longStrBufLen + length;
10.18375 +  if (this$static.longStrBuf.length < reqLen) {
10.18376 +    newBuf = initDim(_3C_classLit, 42, -1, reqLen + (reqLen >> 1), 1);
10.18377 +    arraycopy(this$static.longStrBuf, 0, newBuf, 0, this$static.longStrBuf.length);
10.18378 +    this$static.longStrBuf = newBuf;
10.18379 +  }
10.18380 +  arraycopy(buffer, offset, this$static.longStrBuf, this$static.longStrBufLen, length);
10.18381 +  this$static.longStrBufLen = reqLen;
10.18382 +}
10.18383 +
10.18384 +function $appendSecondHyphenToBogusComment(this$static){
10.18385 +  switch (this$static.commentPolicy.ordinal) {
10.18386 +    case 2:
10.18387 +      $appendLongStrBuf(this$static, 32);
10.18388 +    case 0:
10.18389 +      $appendLongStrBuf(this$static, 45);
10.18390 +      break;
10.18391 +    case 1:
10.18392 +      $fatal(this$static, 'The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.');
10.18393 +  }
10.18394 +}
10.18395 +
10.18396 +function $appendStrBuf(this$static, c){
10.18397 +  var newBuf;
10.18398 +  if (this$static.strBufLen == this$static.strBuf.length) {
10.18399 +    newBuf = initDim(_3C_classLit, 42, -1, this$static.strBuf.length + 1024, 1);
10.18400 +    arraycopy(this$static.strBuf, 0, newBuf, 0, this$static.strBuf.length);
10.18401 +    this$static.strBuf = newBuf;
10.18402 +  }
10.18403 +  this$static.strBuf[this$static.strBufLen++] = c;
10.18404 +}
10.18405 +
10.18406 +function $attributeNameComplete(this$static){
10.18407 +  this$static.attributeName = nameByBuffer(this$static.strBuf, 0, this$static.strBufLen, this$static.namePolicy != ($clinit_80() , ALLOW));
10.18408 +  if (!this$static.attributes) {
10.18409 +    this$static.attributes = $HtmlAttributes(new HtmlAttributes(), this$static.mappingLangToXmlLang);
10.18410 +  }
10.18411 +  if ($contains(this$static.attributes, this$static.attributeName)) {
10.18412 +    'Duplicate attribute \u201C' + this$static.attributeName.local[0] + '\u201D.';
10.18413 +    this$static.attributeName = null;
10.18414 +  }
10.18415 +}
10.18416 +
10.18417 +function $contentModelElementToArray(this$static){
10.18418 +  switch (this$static.contentModelElement.group) {
10.18419 +    case 36:
10.18420 +      this$static.contentModelElementNameAsArray = TITLE_ARR;
10.18421 +      return;
10.18422 +    case 31:
10.18423 +      this$static.contentModelElementNameAsArray = SCRIPT_ARR;
10.18424 +      return;
10.18425 +    case 33:
10.18426 +      this$static.contentModelElementNameAsArray = STYLE_ARR;
10.18427 +      return;
10.18428 +    case 30:
10.18429 +      this$static.contentModelElementNameAsArray = PLAINTEXT_ARR;
10.18430 +      return;
10.18431 +    case 38:
10.18432 +      this$static.contentModelElementNameAsArray = XMP_ARR;
10.18433 +      return;
10.18434 +    case 35:
10.18435 +      this$static.contentModelElementNameAsArray = TEXTAREA_ARR;
10.18436 +      return;
10.18437 +    case 47:
10.18438 +      this$static.contentModelElementNameAsArray = IFRAME_ARR;
10.18439 +      return;
10.18440 +    case 60:
10.18441 +      this$static.contentModelElementNameAsArray = NOEMBED_ARR;
10.18442 +      return;
10.18443 +    case 26:
10.18444 +      this$static.contentModelElementNameAsArray = NOSCRIPT_ARR;
10.18445 +      return;
10.18446 +    case 25:
10.18447 +      this$static.contentModelElementNameAsArray = NOFRAMES_ARR;
10.18448 +      return;
10.18449 +    default:return;
10.18450 +  }
10.18451 +}
10.18452 +
10.18453 +function $emitCarriageReturn(this$static, buf, pos){
10.18454 +  this$static.nextCharOnNewLine = true;
10.18455 +  this$static.lastCR = true;
10.18456 +  $flushChars(this$static, buf, pos);
10.18457 +  $characters(this$static.tokenHandler, LF, 0, 1);
10.18458 +  this$static.cstart = 2147483647;
10.18459 +}
10.18460 +
10.18461 +function $emitComment(this$static, provisionalHyphens, pos){
10.18462 +  if (this$static.wantsComments) {
10.18463 +    $comment(this$static.tokenHandler, this$static.longStrBuf, 0, this$static.longStrBufLen - provisionalHyphens);
10.18464 +  }
10.18465 +  this$static.cstart = pos + 1;
10.18466 +}
10.18467 +
10.18468 +function $emitCurrentTagToken(this$static, selfClosing, pos){
10.18469 +  var attrs;
10.18470 +  this$static.cstart = pos + 1;
10.18471 +  this$static.stateSave = 0;
10.18472 +  attrs = !this$static.attributes?($clinit_91() , EMPTY_ATTRIBUTES):this$static.attributes;
10.18473 +  if (this$static.endTag) {
10.18474 +    $endTag(this$static.tokenHandler, this$static.tagName);
10.18475 +  }
10.18476 +   else {
10.18477 +    $startTag(this$static.tokenHandler, this$static.tagName, attrs, selfClosing);
10.18478 +  }
10.18479 +  $resetAttributes(this$static);
10.18480 +  return this$static.stateSave;
10.18481 +}
10.18482 +
10.18483 +function $emitOrAppend(this$static, val, returnState){
10.18484 +  if ((returnState & -2) != 0) {
10.18485 +    $appendLongStrBuf_0(this$static, val, 0, val.length);
10.18486 +  }
10.18487 +   else {
10.18488 +    $characters(this$static.tokenHandler, val, 0, val.length);
10.18489 +  }
10.18490 +}
10.18491 +
10.18492 +function $emitOrAppendOne(this$static, val, returnState){
10.18493 +  if ((returnState & -2) != 0) {
10.18494 +    $appendLongStrBuf(this$static, val[0]);
10.18495 +  }
10.18496 +   else {
10.18497 +    $characters(this$static.tokenHandler, val, 0, 1);
10.18498 +  }
10.18499 +}
10.18500 +
10.18501 +function $emitOrAppendStrBuf(this$static, returnState){
10.18502 +  if ((returnState & -2) != 0) {
10.18503 +    $appendLongStrBuf_0(this$static, this$static.strBuf, 0, this$static.strBufLen);
10.18504 +  }
10.18505 +   else {
10.18506 +    $emitStrBuf(this$static);
10.18507 +  }
10.18508 +}
10.18509 +
10.18510 +function $emitReplacementCharacter(this$static, buf, pos){
10.18511 +  this$static.nextCharOnNewLine = true;
10.18512 +  this$static.lastCR = true;
10.18513 +  $flushChars(this$static, buf, pos);
10.18514 +  $characters(this$static.tokenHandler, REPLACEMENT_CHARACTER, 0, 1);
10.18515 +  this$static.cstart = 2147483647;
10.18516 +}
10.18517 +
10.18518 +function $emitStrBuf(this$static){
10.18519 +  if (this$static.strBufLen > 0) {
10.18520 +    $characters(this$static.tokenHandler, this$static.strBuf, 0, this$static.strBufLen);
10.18521 +  }
10.18522 +}
10.18523 +
10.18524 +function $emptyAttributes(this$static){
10.18525 +  if (this$static.newAttributesEachTime) {
10.18526 +    return $HtmlAttributes(new HtmlAttributes(), this$static.mappingLangToXmlLang);
10.18527 +  }
10.18528 +   else {
10.18529 +    return $clinit_91() , EMPTY_ATTRIBUTES;
10.18530 +  }
10.18531 +}
10.18532 +
10.18533 +function $end(this$static){
10.18534 +  this$static.strBuf = null;
10.18535 +  this$static.longStrBuf = null;
10.18536 +  this$static.systemIdentifier = null;
10.18537 +  this$static.publicIdentifier = null;
10.18538 +  this$static.doctypeName = null;
10.18539 +  this$static.tagName = null;
10.18540 +  this$static.attributeName = null;
10.18541 +  $endTokenization(this$static.tokenHandler);
10.18542 +  if (this$static.attributes) {
10.18543 +    $clear_0(this$static.attributes, this$static.mappingLangToXmlLang);
10.18544 +    this$static.attributes = null;
10.18545 +  }
10.18546 +}
10.18547 +
10.18548 +function $eof(this$static){
10.18549 +  var candidateArr, ch, i, returnState, state, val;
10.18550 +  state = this$static.stateSave;
10.18551 +  returnState = this$static.returnStateSave;
10.18552 +  eofloop: for (;;) {
10.18553 +    switch (state) {
10.18554 +      case 53:
10.18555 +        $characters(this$static.tokenHandler, LT_GT, 0, 1);
10.18556 +        break eofloop;
10.18557 +      case 4:
10.18558 +        $characters(this$static.tokenHandler, LT_GT, 0, 1);
10.18559 +        break eofloop;
10.18560 +      case 37:
10.18561 +        if (this$static.index < this$static.contentModelElementNameAsArray.length) {
10.18562 +          break eofloop;
10.18563 +        }
10.18564 +         else {
10.18565 +          break eofloop;
10.18566 +        }
10.18567 +
10.18568 +      case 5:
10.18569 +        $characters(this$static.tokenHandler, LT_SOLIDUS, 0, 2);
10.18570 +        break eofloop;
10.18571 +      case 6:
10.18572 +        break eofloop;
10.18573 +      case 7:
10.18574 +      case 14:
10.18575 +      case 48:
10.18576 +        break eofloop;
10.18577 +      case 8:
10.18578 +        break eofloop;
10.18579 +      case 9:
10.18580 +      case 10:
10.18581 +        break eofloop;
10.18582 +      case 11:
10.18583 +      case 12:
10.18584 +      case 13:
10.18585 +        break eofloop;
10.18586 +      case 15:
10.18587 +        $emitComment(this$static, 0, 0);
10.18588 +        break eofloop;
10.18589 +      case 59:
10.18590 +        $maybeAppendSpaceToBogusComment(this$static);
10.18591 +        $emitComment(this$static, 0, 0);
10.18592 +        break eofloop;
10.18593 +      case 16:
10.18594 +        this$static.longStrBufLen = 0;
10.18595 +        $emitComment(this$static, 0, 0);
10.18596 +        break eofloop;
10.18597 +      case 38:
10.18598 +        $emitComment(this$static, 0, 0);
10.18599 +        break eofloop;
10.18600 +      case 39:
10.18601 +        if (this$static.index < 6) {
10.18602 +          $emitComment(this$static, 0, 0);
10.18603 +        }
10.18604 +         else {
10.18605 +          this$static.doctypeName = '';
10.18606 +          this$static.publicIdentifier = null;
10.18607 +          this$static.systemIdentifier = null;
10.18608 +          this$static.forceQuirks = true;
10.18609 +          this$static.cstart = 1;
10.18610 +          $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18611 +          break eofloop;
10.18612 +        }
10.18613 +
10.18614 +        break eofloop;
10.18615 +      case 30:
10.18616 +      case 32:
10.18617 +      case 35:
10.18618 +        $emitComment(this$static, 0, 0);
10.18619 +        break eofloop;
10.18620 +      case 34:
10.18621 +        $emitComment(this$static, 2, 0);
10.18622 +        break eofloop;
10.18623 +      case 33:
10.18624 +      case 31:
10.18625 +        $emitComment(this$static, 1, 0);
10.18626 +        break eofloop;
10.18627 +      case 36:
10.18628 +        $emitComment(this$static, 3, 0);
10.18629 +        break eofloop;
10.18630 +      case 17:
10.18631 +      case 18:
10.18632 +        this$static.forceQuirks = true;
10.18633 +        this$static.cstart = 1;
10.18634 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18635 +        break eofloop;
10.18636 +      case 19:
10.18637 +        this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
10.18638 +        this$static.forceQuirks = true;
10.18639 +        this$static.cstart = 1;
10.18640 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18641 +        break eofloop;
10.18642 +      case 40:
10.18643 +      case 41:
10.18644 +      case 20:
10.18645 +      case 21:
10.18646 +        this$static.forceQuirks = true;
10.18647 +        this$static.cstart = 1;
10.18648 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18649 +        break eofloop;
10.18650 +      case 22:
10.18651 +      case 23:
10.18652 +        this$static.forceQuirks = true;
10.18653 +        this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.18654 +        this$static.cstart = 1;
10.18655 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18656 +        break eofloop;
10.18657 +      case 24:
10.18658 +      case 25:
10.18659 +        this$static.forceQuirks = true;
10.18660 +        this$static.cstart = 1;
10.18661 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18662 +        break eofloop;
10.18663 +      case 26:
10.18664 +      case 27:
10.18665 +        this$static.forceQuirks = true;
10.18666 +        this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.18667 +        this$static.cstart = 1;
10.18668 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18669 +        break eofloop;
10.18670 +      case 28:
10.18671 +        this$static.forceQuirks = true;
10.18672 +        this$static.cstart = 1;
10.18673 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18674 +        break eofloop;
10.18675 +      case 29:
10.18676 +        this$static.cstart = 1;
10.18677 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18678 +        break eofloop;
10.18679 +      case 42:
10.18680 +        $emitOrAppendStrBuf(this$static, returnState);
10.18681 +        state = returnState;
10.18682 +        continue;
10.18683 +      case 44:
10.18684 +        outer: for (;;) {
10.18685 +          ++this$static.entCol;
10.18686 +          hiloop: for (;;) {
10.18687 +            if (this$static.hi == -1) {
10.18688 +              break hiloop;
10.18689 +            }
10.18690 +            if (this$static.entCol == ($clinit_94() , NAMES)[this$static.hi].length) {
10.18691 +              break hiloop;
10.18692 +            }
10.18693 +            if (this$static.entCol > NAMES[this$static.hi].length) {
10.18694 +              break outer;
10.18695 +            }
10.18696 +             else if (0 < NAMES[this$static.hi][this$static.entCol]) {
10.18697 +              --this$static.hi;
10.18698 +            }
10.18699 +             else {
10.18700 +              break hiloop;
10.18701 +            }
10.18702 +          }
10.18703 +          loloop: for (;;) {
10.18704 +            if (this$static.hi < this$static.lo) {
10.18705 +              break outer;
10.18706 +            }
10.18707 +            if (this$static.entCol == ($clinit_94() , NAMES)[this$static.lo].length) {
10.18708 +              this$static.candidate = this$static.lo;
10.18709 +              this$static.strBufMark = this$static.strBufLen;
10.18710 +              ++this$static.lo;
10.18711 +            }
10.18712 +             else if (this$static.entCol > NAMES[this$static.lo].length) {
10.18713 +              break outer;
10.18714 +            }
10.18715 +             else if (0 > NAMES[this$static.lo][this$static.entCol]) {
10.18716 +              ++this$static.lo;
10.18717 +            }
10.18718 +             else {
10.18719 +              break loloop;
10.18720 +            }
10.18721 +          }
10.18722 +          if (this$static.hi < this$static.lo) {
10.18723 +            break outer;
10.18724 +          }
10.18725 +          continue;
10.18726 +        }
10.18727 +
10.18728 +        if (this$static.candidate == -1) {
10.18729 +          $emitOrAppendStrBuf(this$static, returnState);
10.18730 +          state = returnState;
10.18731 +          continue eofloop;
10.18732 +        }
10.18733 +         else {
10.18734 +          candidateArr = ($clinit_94() , NAMES)[this$static.candidate];
10.18735 +          if (candidateArr[candidateArr.length - 1] != 59) {
10.18736 +            if ((returnState & -2) != 0) {
10.18737 +              if (this$static.strBufMark == this$static.strBufLen) {
10.18738 +                ch = 0;
10.18739 +              }
10.18740 +               else {
10.18741 +                ch = this$static.strBuf[this$static.strBufMark];
10.18742 +              }
10.18743 +              if (ch >= 48 && ch <= 57 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122) {
10.18744 +                $appendLongStrBuf_0(this$static, this$static.strBuf, 0, this$static.strBufLen);
10.18745 +                state = returnState;
10.18746 +                continue eofloop;
10.18747 +              }
10.18748 +            }
10.18749 +          }
10.18750 +          val = VALUES_0[this$static.candidate];
10.18751 +          $emitOrAppend(this$static, val, returnState);
10.18752 +          if (this$static.strBufMark < this$static.strBufLen) {
10.18753 +            if ((returnState & -2) != 0) {
10.18754 +              for (i = this$static.strBufMark; i < this$static.strBufLen; ++i) {
10.18755 +                $appendLongStrBuf(this$static, this$static.strBuf[i]);
10.18756 +              }
10.18757 +            }
10.18758 +             else {
10.18759 +              $characters(this$static.tokenHandler, this$static.strBuf, this$static.strBufMark, this$static.strBufLen - this$static.strBufMark);
10.18760 +            }
10.18761 +          }
10.18762 +          state = returnState;
10.18763 +          continue eofloop;
10.18764 +        }
10.18765 +
10.18766 +      case 43:
10.18767 +      case 46:
10.18768 +      case 45:
10.18769 +        if (this$static.seenDigits) {
10.18770 +        }
10.18771 +         else {
10.18772 +          'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
10.18773 +          $emitOrAppendStrBuf(this$static, returnState);
10.18774 +          state = returnState;
10.18775 +          continue;
10.18776 +        }
10.18777 +
10.18778 +        $handleNcrValue(this$static, returnState);
10.18779 +        state = returnState;
10.18780 +        continue;
10.18781 +      case 0:
10.18782 +      default:break eofloop;
10.18783 +    }
10.18784 +  }
10.18785 +  $eof_0(this$static.tokenHandler);
10.18786 +  return;
10.18787 +}
10.18788 +
10.18789 +function $fatal(this$static, message){
10.18790 +  var spe;
10.18791 +  spe = $SAXParseException(new SAXParseException(), message, this$static);
10.18792 +  throw spe;
10.18793 +}
10.18794 +
10.18795 +function $handleNcrValue(this$static, returnState){
10.18796 +  var ch, val;
10.18797 +  if (this$static.value >= 128 && this$static.value <= 159) {
10.18798 +    val = ($clinit_94() , WINDOWS_1252)[this$static.value - 128];
10.18799 +    $emitOrAppendOne(this$static, val, returnState);
10.18800 +  }
10.18801 +   else if (this$static.value == 13) {
10.18802 +    $emitOrAppendOne(this$static, LF, returnState);
10.18803 +  }
10.18804 +   else if (this$static.value == 12 && this$static.contentSpacePolicy != ($clinit_80() , ALLOW)) {
10.18805 +    if (this$static.contentSpacePolicy == ($clinit_80() , ALTER_INFOSET)) {
10.18806 +      $emitOrAppendOne(this$static, SPACE, returnState);
10.18807 +    }
10.18808 +     else if (this$static.contentSpacePolicy == FATAL) {
10.18809 +      $fatal(this$static, 'A character reference expanded to a form feed which is not legal XML 1.0 white space.');
10.18810 +    }
10.18811 +  }
10.18812 +   else if (this$static.value >= 0 && this$static.value <= 8 || this$static.value == 11 || this$static.value >= 14 && this$static.value <= 31 || this$static.value == 127) {
10.18813 +    'Character reference expands to a control character (' + $toUPlusString(this$static.value & 65535) + ').';
10.18814 +    $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
10.18815 +  }
10.18816 +   else if ((this$static.value & 63488) == 55296) {
10.18817 +    $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
10.18818 +  }
10.18819 +   else if ((this$static.value & 65534) == 65534) {
10.18820 +    $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
10.18821 +  }
10.18822 +   else if (this$static.value >= 64976 && this$static.value <= 65007) {
10.18823 +    $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
10.18824 +  }
10.18825 +   else if (this$static.value <= 65535) {
10.18826 +    ch = this$static.value & 65535;
10.18827 +    this$static.bmpChar[0] = ch;
10.18828 +    $emitOrAppendOne(this$static, this$static.bmpChar, returnState);
10.18829 +  }
10.18830 +   else if (this$static.value <= 1114111) {
10.18831 +    this$static.astralChar[0] = 55232 + (this$static.value >> 10) & 65535;
10.18832 +    this$static.astralChar[1] = 56320 + (this$static.value & 1023) & 65535;
10.18833 +    $emitOrAppend(this$static, this$static.astralChar, returnState);
10.18834 +  }
10.18835 +   else {
10.18836 +    $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
10.18837 +  }
10.18838 +}
10.18839 +
10.18840 +function $maybeAppendSpaceToBogusComment(this$static){
10.18841 +  switch (this$static.commentPolicy.ordinal) {
10.18842 +    case 2:
10.18843 +      $appendLongStrBuf(this$static, 32);
10.18844 +      break;
10.18845 +    case 1:
10.18846 +      $fatal(this$static, 'The document is not mappable to XML 1.0 due to a trailing hyphen in a comment.');
10.18847 +  }
10.18848 +}
10.18849 +
10.18850 +function $resetAttributes(this$static){
10.18851 +  if (this$static.newAttributesEachTime) {
10.18852 +    this$static.attributes = null;
10.18853 +  }
10.18854 +   else {
10.18855 +    $clear_0(this$static.attributes, this$static.mappingLangToXmlLang);
10.18856 +  }
10.18857 +}
10.18858 +
10.18859 +function $setContentModelFlag(this$static, contentModelFlag){
10.18860 +  var asArray;
10.18861 +  this$static.stateSave = contentModelFlag;
10.18862 +  if (contentModelFlag == 0) {
10.18863 +    return;
10.18864 +  }
10.18865 +  asArray = null.nullMethod();
10.18866 +  this$static.contentModelElement = elementNameByBuffer(asArray, 0, null.nullField);
10.18867 +  $contentModelElementToArray(this$static);
10.18868 +}
10.18869 +
10.18870 +function $setContentModelFlag_0(this$static, contentModelFlag, contentModelElement){
10.18871 +  this$static.stateSave = contentModelFlag;
10.18872 +  this$static.contentModelElement = contentModelElement;
10.18873 +  $contentModelElementToArray(this$static);
10.18874 +}
10.18875 +
10.18876 +function $setXmlnsPolicy(this$static, xmlnsPolicy){
10.18877 +  if (xmlnsPolicy == ($clinit_80() , FATAL)) {
10.18878 +    throw $IllegalArgumentException(new IllegalArgumentException(), "Can't use FATAL here.");
10.18879 +  }
10.18880 +  this$static.xmlnsPolicy = xmlnsPolicy;
10.18881 +}
10.18882 +
10.18883 +function $start_0(this$static){
10.18884 +  this$static.confident = false;
10.18885 +  this$static.strBuf = initDim(_3C_classLit, 42, -1, 64, 1);
10.18886 +  this$static.strBufLen = 0;
10.18887 +  this$static.longStrBuf = initDim(_3C_classLit, 42, -1, 1024, 1);
10.18888 +  this$static.longStrBufLen = 0;
10.18889 +  this$static.stateSave = 0;
10.18890 +  this$static.lastCR = false;
10.18891 +  this$static.html4 = false;
10.18892 +  this$static.metaBoundaryPassed = false;
10.18893 +  $startTokenization(this$static.tokenHandler, this$static);
10.18894 +  this$static.wantsComments = this$static.tokenHandler.wantingComments;
10.18895 +  this$static.index = 0;
10.18896 +  this$static.forceQuirks = false;
10.18897 +  this$static.additional = 0;
10.18898 +  this$static.entCol = -1;
10.18899 +  this$static.lo = 0;
10.18900 +  this$static.hi = ($clinit_94() , NAMES).length - 1;
10.18901 +  this$static.candidate = -1;
10.18902 +  this$static.strBufMark = 0;
10.18903 +  this$static.prevValue = -1;
10.18904 +  this$static.value = 0;
10.18905 +  this$static.seenDigits = false;
10.18906 +  this$static.shouldSuspend = false;
10.18907 +  if (this$static.newAttributesEachTime) {
10.18908 +    this$static.attributes = null;
10.18909 +  }
10.18910 +   else {
10.18911 +    this$static.attributes = $HtmlAttributes(new HtmlAttributes(), this$static.mappingLangToXmlLang);
10.18912 +  }
10.18913 +  this$static.alreadyComplainedAboutNonAscii = false;
10.18914 +  this$static.line = this$static.linePrev = 0;
10.18915 +  this$static.col = this$static.colPrev = 1;
10.18916 +  this$static.nextCharOnNewLine = true;
10.18917 +  this$static.prev = 0;
10.18918 +  this$static.alreadyWarnedAboutPrivateUseCharacters = false;
10.18919 +}
10.18920 +
10.18921 +function $stateLoop(this$static, state, c, pos, buf, reconsume, returnState, endPos){
10.18922 +  var candidateArr, ch, e, folded, i, val;
10.18923 +  stateloop: for (;;) {
10.18924 +    switch (state) {
10.18925 +      case 0:
10.18926 +        dataloop: for (;;) {
10.18927 +          if (reconsume) {
10.18928 +            reconsume = false;
10.18929 +          }
10.18930 +           else {
10.18931 +            if (++pos == endPos) {
10.18932 +              break stateloop;
10.18933 +            }
10.18934 +            c = $checkChar(this$static, buf, pos);
10.18935 +          }
10.18936 +          switch (c) {
10.18937 +            case 38:
10.18938 +              $flushChars(this$static, buf, pos);
10.18939 +              this$static.strBuf[0] = c;
10.18940 +              this$static.strBufLen = 1;
10.18941 +              this$static.additional = 0;
10.18942 +              $LocatorImpl(new LocatorImpl(), this$static);
10.18943 +              returnState = state;
10.18944 +              state = 42;
10.18945 +              continue stateloop;
10.18946 +            case 60:
10.18947 +              $flushChars(this$static, buf, pos);
10.18948 +              state = 4;
10.18949 +              break dataloop;
10.18950 +            case 0:
10.18951 +              $emitReplacementCharacter(this$static, buf, pos);
10.18952 +              continue;
10.18953 +            case 13:
10.18954 +              $emitCarriageReturn(this$static, buf, pos);
10.18955 +              break stateloop;
10.18956 +            case 10:
10.18957 +              this$static.nextCharOnNewLine = true;
10.18958 +            default:continue;
10.18959 +          }
10.18960 +        }
10.18961 +
10.18962 +      case 4:
10.18963 +        tagopenloop: for (;;) {
10.18964 +          if (++pos == endPos) {
10.18965 +            break stateloop;
10.18966 +          }
10.18967 +          c = $checkChar(this$static, buf, pos);
10.18968 +          if (c >= 65 && c <= 90) {
10.18969 +            this$static.endTag = false;
10.18970 +            this$static.strBuf[0] = c + 32 & 65535;
10.18971 +            this$static.strBufLen = 1;
10.18972 +            state = 6;
10.18973 +            break tagopenloop;
10.18974 +          }
10.18975 +           else if (c >= 97 && c <= 122) {
10.18976 +            this$static.endTag = false;
10.18977 +            this$static.strBuf[0] = c;
10.18978 +            this$static.strBufLen = 1;
10.18979 +            state = 6;
10.18980 +            break tagopenloop;
10.18981 +          }
10.18982 +          switch (c) {
10.18983 +            case 33:
10.18984 +              state = 16;
10.18985 +              continue stateloop;
10.18986 +            case 47:
10.18987 +              state = 5;
10.18988 +              continue stateloop;
10.18989 +            case 63:
10.18990 +              this$static.longStrBuf[0] = c;
10.18991 +              this$static.longStrBufLen = 1;
10.18992 +              state = 15;
10.18993 +              continue stateloop;
10.18994 +            case 62:
10.18995 +              $characters(this$static.tokenHandler, LT_GT, 0, 2);
10.18996 +              this$static.cstart = pos + 1;
10.18997 +              state = 0;
10.18998 +              continue stateloop;
10.18999 +            default:$characters(this$static.tokenHandler, LT_GT, 0, 1);
10.19000 +              this$static.cstart = pos;
10.19001 +              state = 0;
10.19002 +              reconsume = true;
10.19003 +              continue stateloop;
10.19004 +          }
10.19005 +        }
10.19006 +
10.19007 +      case 6:
10.19008 +        tagnameloop: for (;;) {
10.19009 +          if (++pos == endPos) {
10.19010 +            break stateloop;
10.19011 +          }
10.19012 +          c = $checkChar(this$static, buf, pos);
10.19013 +          switch (c) {
10.19014 +            case 13:
10.19015 +              this$static.nextCharOnNewLine = true;
10.19016 +              this$static.lastCR = true;
10.19017 +              this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
10.19018 +              state = 7;
10.19019 +              break stateloop;
10.19020 +            case 10:
10.19021 +              this$static.nextCharOnNewLine = true;
10.19022 +            case 32:
10.19023 +            case 9:
10.19024 +            case 12:
10.19025 +              this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
10.19026 +              state = 7;
10.19027 +              break tagnameloop;
10.19028 +            case 47:
10.19029 +              this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
10.19030 +              state = 48;
10.19031 +              continue stateloop;
10.19032 +            case 62:
10.19033 +              this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
10.19034 +              state = $emitCurrentTagToken(this$static, false, pos);
10.19035 +              if (this$static.shouldSuspend) {
10.19036 +                break stateloop;
10.19037 +              }
10.19038 +
10.19039 +              continue stateloop;
10.19040 +            case 0:
10.19041 +              c = 65533;
10.19042 +            default:if (c >= 65 && c <= 90) {
10.19043 +                c += 32;
10.19044 +              }
10.19045 +
10.19046 +              $appendStrBuf(this$static, c);
10.19047 +              continue;
10.19048 +          }
10.19049 +        }
10.19050 +
10.19051 +      case 7:
10.19052 +        beforeattributenameloop: for (;;) {
10.19053 +          if (reconsume) {
10.19054 +            reconsume = false;
10.19055 +          }
10.19056 +           else {
10.19057 +            if (++pos == endPos) {
10.19058 +              break stateloop;
10.19059 +            }
10.19060 +            c = $checkChar(this$static, buf, pos);
10.19061 +          }
10.19062 +          switch (c) {
10.19063 +            case 13:
10.19064 +              this$static.nextCharOnNewLine = true;
10.19065 +              this$static.lastCR = true;
10.19066 +              break stateloop;
10.19067 +            case 10:
10.19068 +              this$static.nextCharOnNewLine = true;
10.19069 +            case 32:
10.19070 +            case 9:
10.19071 +            case 12:
10.19072 +              continue;
10.19073 +            case 47:
10.19074 +              state = 48;
10.19075 +              continue stateloop;
10.19076 +            case 62:
10.19077 +              state = $emitCurrentTagToken(this$static, false, pos);
10.19078 +              if (this$static.shouldSuspend) {
10.19079 +                break stateloop;
10.19080 +              }
10.19081 +
10.19082 +              continue stateloop;
10.19083 +            case 0:
10.19084 +              c = 65533;
10.19085 +            case 34:
10.19086 +            case 39:
10.19087 +            case 60:
10.19088 +            case 61:
10.19089 +            default:if (c >= 65 && c <= 90) {
10.19090 +                c += 32;
10.19091 +              }
10.19092 +
10.19093 +              this$static.strBuf[0] = c;
10.19094 +              this$static.strBufLen = 1;
10.19095 +              state = 8;
10.19096 +              break beforeattributenameloop;
10.19097 +          }
10.19098 +        }
10.19099 +
10.19100 +      case 8:
10.19101 +        attributenameloop: for (;;) {
10.19102 +          if (++pos == endPos) {
10.19103 +            break stateloop;
10.19104 +          }
10.19105 +          c = $checkChar(this$static, buf, pos);
10.19106 +          switch (c) {
10.19107 +            case 13:
10.19108 +              this$static.nextCharOnNewLine = true;
10.19109 +              this$static.lastCR = true;
10.19110 +              $attributeNameComplete(this$static);
10.19111 +              state = 9;
10.19112 +              break stateloop;
10.19113 +            case 10:
10.19114 +              this$static.nextCharOnNewLine = true;
10.19115 +            case 32:
10.19116 +            case 9:
10.19117 +            case 12:
10.19118 +              $attributeNameComplete(this$static);
10.19119 +              state = 9;
10.19120 +              continue stateloop;
10.19121 +            case 47:
10.19122 +              $attributeNameComplete(this$static);
10.19123 +              $addAttributeWithoutValue(this$static);
10.19124 +              state = 48;
10.19125 +              continue stateloop;
10.19126 +            case 61:
10.19127 +              $attributeNameComplete(this$static);
10.19128 +              state = 10;
10.19129 +              break attributenameloop;
10.19130 +            case 62:
10.19131 +              $attributeNameComplete(this$static);
10.19132 +              $addAttributeWithoutValue(this$static);
10.19133 +              state = $emitCurrentTagToken(this$static, false, pos);
10.19134 +              if (this$static.shouldSuspend) {
10.19135 +                break stateloop;
10.19136 +              }
10.19137 +
10.19138 +              continue stateloop;
10.19139 +            case 0:
10.19140 +              c = 65533;
10.19141 +            case 34:
10.19142 +            case 39:
10.19143 +            case 60:
10.19144 +            default:if (c >= 65 && c <= 90) {
10.19145 +                c += 32;
10.19146 +              }
10.19147 +
10.19148 +              $appendStrBuf(this$static, c);
10.19149 +              continue;
10.19150 +          }
10.19151 +        }
10.19152 +
10.19153 +      case 10:
10.19154 +        beforeattributevalueloop: for (;;) {
10.19155 +          if (++pos == endPos) {
10.19156 +            break stateloop;
10.19157 +          }
10.19158 +          c = $checkChar(this$static, buf, pos);
10.19159 +          switch (c) {
10.19160 +            case 13:
10.19161 +              this$static.nextCharOnNewLine = true;
10.19162 +              this$static.lastCR = true;
10.19163 +              break stateloop;
10.19164 +            case 10:
10.19165 +              this$static.nextCharOnNewLine = true;
10.19166 +            case 32:
10.19167 +            case 9:
10.19168 +            case 12:
10.19169 +              continue;
10.19170 +            case 34:
10.19171 +              this$static.longStrBufLen = 0;
10.19172 +              state = 11;
10.19173 +              break beforeattributevalueloop;
10.19174 +            case 38:
10.19175 +              this$static.longStrBufLen = 0;
10.19176 +              state = 13;
10.19177 +              reconsume = true;
10.19178 +              continue stateloop;
10.19179 +            case 39:
10.19180 +              this$static.longStrBufLen = 0;
10.19181 +              state = 12;
10.19182 +              continue stateloop;
10.19183 +            case 62:
10.19184 +              $addAttributeWithoutValue(this$static);
10.19185 +              state = $emitCurrentTagToken(this$static, false, pos);
10.19186 +              if (this$static.shouldSuspend) {
10.19187 +                break stateloop;
10.19188 +              }
10.19189 +
10.19190 +              continue stateloop;
10.19191 +            case 0:
10.19192 +              c = 65533;
10.19193 +            case 60:
10.19194 +            case 61:
10.19195 +              $errLtOrEqualsInUnquotedAttributeOrNull(c);
10.19196 +            default:this$static.longStrBuf[0] = c;
10.19197 +              this$static.longStrBufLen = 1;
10.19198 +              state = 13;
10.19199 +              continue stateloop;
10.19200 +          }
10.19201 +        }
10.19202 +
10.19203 +      case 11:
10.19204 +        attributevaluedoublequotedloop: for (;;) {
10.19205 +          if (reconsume) {
10.19206 +            reconsume = false;
10.19207 +          }
10.19208 +           else {
10.19209 +            if (++pos == endPos) {
10.19210 +              break stateloop;
10.19211 +            }
10.19212 +            c = $checkChar(this$static, buf, pos);
10.19213 +          }
10.19214 +          switch (c) {
10.19215 +            case 34:
10.19216 +              $addAttributeWithValue(this$static);
10.19217 +              state = 14;
10.19218 +              break attributevaluedoublequotedloop;
10.19219 +            case 38:
10.19220 +              this$static.strBuf[0] = c;
10.19221 +              this$static.strBufLen = 1;
10.19222 +              this$static.additional = 34;
10.19223 +              $LocatorImpl(new LocatorImpl(), this$static);
10.19224 +              returnState = state;
10.19225 +              state = 42;
10.19226 +              continue stateloop;
10.19227 +            case 13:
10.19228 +              this$static.nextCharOnNewLine = true;
10.19229 +              this$static.lastCR = true;
10.19230 +              $appendLongStrBuf(this$static, 10);
10.19231 +              break stateloop;
10.19232 +            case 10:
10.19233 +              this$static.nextCharOnNewLine = true;
10.19234 +              $appendLongStrBuf(this$static, 10);
10.19235 +              continue;
10.19236 +            case 0:
10.19237 +              c = 65533;
10.19238 +            default:$appendLongStrBuf(this$static, c);
10.19239 +              continue;
10.19240 +          }
10.19241 +        }
10.19242 +
10.19243 +      case 14:
10.19244 +        afterattributevaluequotedloop: for (;;) {
10.19245 +          if (++pos == endPos) {
10.19246 +            break stateloop;
10.19247 +          }
10.19248 +          c = $checkChar(this$static, buf, pos);
10.19249 +          switch (c) {
10.19250 +            case 13:
10.19251 +              this$static.nextCharOnNewLine = true;
10.19252 +              this$static.lastCR = true;
10.19253 +              state = 7;
10.19254 +              break stateloop;
10.19255 +            case 10:
10.19256 +              this$static.nextCharOnNewLine = true;
10.19257 +            case 32:
10.19258 +            case 9:
10.19259 +            case 12:
10.19260 +              state = 7;
10.19261 +              continue stateloop;
10.19262 +            case 47:
10.19263 +              state = 48;
10.19264 +              break afterattributevaluequotedloop;
10.19265 +            case 62:
10.19266 +              state = $emitCurrentTagToken(this$static, false, pos);
10.19267 +              if (this$static.shouldSuspend) {
10.19268 +                break stateloop;
10.19269 +              }
10.19270 +
10.19271 +              continue stateloop;
10.19272 +            default:state = 7;
10.19273 +              reconsume = true;
10.19274 +              continue stateloop;
10.19275 +          }
10.19276 +        }
10.19277 +
10.19278 +      case 48:
10.19279 +        if (++pos == endPos) {
10.19280 +          break stateloop;
10.19281 +        }
10.19282 +
10.19283 +        c = $checkChar(this$static, buf, pos);
10.19284 +        switch (c) {
10.19285 +          case 62:
10.19286 +            state = $emitCurrentTagToken(this$static, true, pos);
10.19287 +            if (this$static.shouldSuspend) {
10.19288 +              break stateloop;
10.19289 +            }
10.19290 +
10.19291 +            continue stateloop;
10.19292 +          default:state = 7;
10.19293 +            reconsume = true;
10.19294 +            continue stateloop;
10.19295 +        }
10.19296 +
10.19297 +      case 13:
10.19298 +        for (;;) {
10.19299 +          if (reconsume) {
10.19300 +            reconsume = false;
10.19301 +          }
10.19302 +           else {
10.19303 +            if (++pos == endPos) {
10.19304 +              break stateloop;
10.19305 +            }
10.19306 +            c = $checkChar(this$static, buf, pos);
10.19307 +          }
10.19308 +          switch (c) {
10.19309 +            case 13:
10.19310 +              this$static.nextCharOnNewLine = true;
10.19311 +              this$static.lastCR = true;
10.19312 +              $addAttributeWithValue(this$static);
10.19313 +              state = 7;
10.19314 +              break stateloop;
10.19315 +            case 10:
10.19316 +              this$static.nextCharOnNewLine = true;
10.19317 +            case 32:
10.19318 +            case 9:
10.19319 +            case 12:
10.19320 +              $addAttributeWithValue(this$static);
10.19321 +              state = 7;
10.19322 +              continue stateloop;
10.19323 +            case 38:
10.19324 +              this$static.strBuf[0] = c;
10.19325 +              this$static.strBufLen = 1;
10.19326 +              this$static.additional = 62;
10.19327 +              $LocatorImpl(new LocatorImpl(), this$static);
10.19328 +              returnState = state;
10.19329 +              state = 42;
10.19330 +              continue stateloop;
10.19331 +            case 62:
10.19332 +              $addAttributeWithValue(this$static);
10.19333 +              state = $emitCurrentTagToken(this$static, false, pos);
10.19334 +              if (this$static.shouldSuspend) {
10.19335 +                break stateloop;
10.19336 +              }
10.19337 +
10.19338 +              continue stateloop;
10.19339 +            case 0:
10.19340 +              c = 65533;
10.19341 +            case 60:
10.19342 +            case 34:
10.19343 +            case 39:
10.19344 +            case 61:
10.19345 +            default:$appendLongStrBuf(this$static, c);
10.19346 +              continue;
10.19347 +          }
10.19348 +        }
10.19349 +
10.19350 +      case 9:
10.19351 +        for (;;) {
10.19352 +          if (++pos == endPos) {
10.19353 +            break stateloop;
10.19354 +          }
10.19355 +          c = $checkChar(this$static, buf, pos);
10.19356 +          switch (c) {
10.19357 +            case 13:
10.19358 +              this$static.nextCharOnNewLine = true;
10.19359 +              this$static.lastCR = true;
10.19360 +              break stateloop;
10.19361 +            case 10:
10.19362 +              this$static.nextCharOnNewLine = true;
10.19363 +            case 32:
10.19364 +            case 9:
10.19365 +            case 12:
10.19366 +              continue;
10.19367 +            case 47:
10.19368 +              $addAttributeWithoutValue(this$static);
10.19369 +              state = 48;
10.19370 +              continue stateloop;
10.19371 +            case 61:
10.19372 +              state = 10;
10.19373 +              continue stateloop;
10.19374 +            case 62:
10.19375 +              $addAttributeWithoutValue(this$static);
10.19376 +              state = $emitCurrentTagToken(this$static, false, pos);
10.19377 +              if (this$static.shouldSuspend) {
10.19378 +                break stateloop;
10.19379 +              }
10.19380 +
10.19381 +              continue stateloop;
10.19382 +            case 0:
10.19383 +              c = 65533;
10.19384 +            case 34:
10.19385 +            case 39:
10.19386 +            case 60:
10.19387 +            default:$addAttributeWithoutValue(this$static);
10.19388 +              if (c >= 65 && c <= 90) {
10.19389 +                c += 32;
10.19390 +              }
10.19391 +
10.19392 +              this$static.strBuf[0] = c;
10.19393 +              this$static.strBufLen = 1;
10.19394 +              state = 8;
10.19395 +              continue stateloop;
10.19396 +          }
10.19397 +        }
10.19398 +
10.19399 +      case 15:
10.19400 +        boguscommentloop: for (;;) {
10.19401 +          if (reconsume) {
10.19402 +            reconsume = false;
10.19403 +          }
10.19404 +           else {
10.19405 +            if (++pos == endPos) {
10.19406 +              break stateloop;
10.19407 +            }
10.19408 +            c = $checkChar(this$static, buf, pos);
10.19409 +          }
10.19410 +          switch (c) {
10.19411 +            case 62:
10.19412 +              $emitComment(this$static, 0, pos);
10.19413 +              state = 0;
10.19414 +              continue stateloop;
10.19415 +            case 45:
10.19416 +              $appendLongStrBuf(this$static, c);
10.19417 +              state = 59;
10.19418 +              break boguscommentloop;
10.19419 +            case 13:
10.19420 +              this$static.nextCharOnNewLine = true;
10.19421 +              this$static.lastCR = true;
10.19422 +              $appendLongStrBuf(this$static, 10);
10.19423 +              break stateloop;
10.19424 +            case 10:
10.19425 +              this$static.nextCharOnNewLine = true;
10.19426 +              $appendLongStrBuf(this$static, 10);
10.19427 +              continue;
10.19428 +            case 0:
10.19429 +              c = 65533;
10.19430 +            default:$appendLongStrBuf(this$static, c);
10.19431 +              continue;
10.19432 +          }
10.19433 +        }
10.19434 +
10.19435 +      case 59:
10.19436 +        boguscommenthyphenloop: for (;;) {
10.19437 +          if (++pos == endPos) {
10.19438 +            break stateloop;
10.19439 +          }
10.19440 +          c = $checkChar(this$static, buf, pos);
10.19441 +          switch (c) {
10.19442 +            case 62:
10.19443 +              $maybeAppendSpaceToBogusComment(this$static);
10.19444 +              $emitComment(this$static, 0, pos);
10.19445 +              state = 0;
10.19446 +              continue stateloop;
10.19447 +            case 45:
10.19448 +              $appendSecondHyphenToBogusComment(this$static);
10.19449 +              continue boguscommenthyphenloop;
10.19450 +            case 13:
10.19451 +              this$static.nextCharOnNewLine = true;
10.19452 +              this$static.lastCR = true;
10.19453 +              $appendLongStrBuf(this$static, 10);
10.19454 +              state = 15;
10.19455 +              break stateloop;
10.19456 +            case 10:
10.19457 +              this$static.nextCharOnNewLine = true;
10.19458 +              $appendLongStrBuf(this$static, 10);
10.19459 +              state = 15;
10.19460 +              continue stateloop;
10.19461 +            case 0:
10.19462 +              c = 65533;
10.19463 +            default:$appendLongStrBuf(this$static, c);
10.19464 +              state = 15;
10.19465 +              continue stateloop;
10.19466 +          }
10.19467 +        }
10.19468 +
10.19469 +      case 16:
10.19470 +        markupdeclarationopenloop: for (;;) {
10.19471 +          if (++pos == endPos) {
10.19472 +            break stateloop;
10.19473 +          }
10.19474 +          c = $checkChar(this$static, buf, pos);
10.19475 +          switch (c) {
10.19476 +            case 45:
10.19477 +              this$static.longStrBuf[0] = c;
10.19478 +              this$static.longStrBufLen = 1;
10.19479 +              state = 38;
10.19480 +              break markupdeclarationopenloop;
10.19481 +            case 100:
10.19482 +            case 68:
10.19483 +              this$static.longStrBuf[0] = c;
10.19484 +              this$static.longStrBufLen = 1;
10.19485 +              this$static.index = 0;
10.19486 +              state = 39;
10.19487 +              continue stateloop;
10.19488 +            case 91:
10.19489 +              if (this$static.tokenHandler.foreignFlag == 0) {
10.19490 +                this$static.longStrBuf[0] = c;
10.19491 +                this$static.longStrBufLen = 1;
10.19492 +                this$static.index = 0;
10.19493 +                state = 49;
10.19494 +                continue stateloop;
10.19495 +              }
10.19496 +               else {
10.19497 +              }
10.19498 +
10.19499 +            default:this$static.longStrBufLen = 0;
10.19500 +              state = 15;
10.19501 +              reconsume = true;
10.19502 +              continue stateloop;
10.19503 +          }
10.19504 +        }
10.19505 +
10.19506 +      case 38:
10.19507 +        markupdeclarationhyphenloop: for (;;) {
10.19508 +          if (++pos == endPos) {
10.19509 +            break stateloop;
10.19510 +          }
10.19511 +          c = $checkChar(this$static, buf, pos);
10.19512 +          switch (c) {
10.19513 +            case 0:
10.19514 +              break stateloop;
10.19515 +            case 45:
10.19516 +              this$static.longStrBufLen = 0;
10.19517 +              state = 30;
10.19518 +              break markupdeclarationhyphenloop;
10.19519 +            default:state = 15;
10.19520 +              reconsume = true;
10.19521 +              continue stateloop;
10.19522 +          }
10.19523 +        }
10.19524 +
10.19525 +      case 30:
10.19526 +        commentstartloop: for (;;) {
10.19527 +          if (++pos == endPos) {
10.19528 +            break stateloop;
10.19529 +          }
10.19530 +          c = $checkChar(this$static, buf, pos);
10.19531 +          switch (c) {
10.19532 +            case 45:
10.19533 +              $appendLongStrBuf(this$static, c);
10.19534 +              state = 31;
10.19535 +              continue stateloop;
10.19536 +            case 62:
10.19537 +              $emitComment(this$static, 0, pos);
10.19538 +              state = 0;
10.19539 +              continue stateloop;
10.19540 +            case 13:
10.19541 +              this$static.nextCharOnNewLine = true;
10.19542 +              this$static.lastCR = true;
10.19543 +              $appendLongStrBuf(this$static, 10);
10.19544 +              state = 32;
10.19545 +              break stateloop;
10.19546 +            case 10:
10.19547 +              this$static.nextCharOnNewLine = true;
10.19548 +              $appendLongStrBuf(this$static, 10);
10.19549 +              state = 32;
10.19550 +              break commentstartloop;
10.19551 +            case 0:
10.19552 +              c = 65533;
10.19553 +            default:$appendLongStrBuf(this$static, c);
10.19554 +              state = 32;
10.19555 +              break commentstartloop;
10.19556 +          }
10.19557 +        }
10.19558 +
10.19559 +      case 32:
10.19560 +        commentloop: for (;;) {
10.19561 +          if (++pos == endPos) {
10.19562 +            break stateloop;
10.19563 +          }
10.19564 +          c = $checkChar(this$static, buf, pos);
10.19565 +          switch (c) {
10.19566 +            case 45:
10.19567 +              $appendLongStrBuf(this$static, c);
10.19568 +              state = 33;
10.19569 +              break commentloop;
10.19570 +            case 13:
10.19571 +              this$static.nextCharOnNewLine = true;
10.19572 +              this$static.lastCR = true;
10.19573 +              $appendLongStrBuf(this$static, 10);
10.19574 +              break stateloop;
10.19575 +            case 10:
10.19576 +              this$static.nextCharOnNewLine = true;
10.19577 +              $appendLongStrBuf(this$static, 10);
10.19578 +              continue;
10.19579 +            case 0:
10.19580 +              c = 65533;
10.19581 +            default:$appendLongStrBuf(this$static, c);
10.19582 +              continue;
10.19583 +          }
10.19584 +        }
10.19585 +
10.19586 +      case 33:
10.19587 +        commentenddashloop: for (;;) {
10.19588 +          if (++pos == endPos) {
10.19589 +            break stateloop;
10.19590 +          }
10.19591 +          c = $checkChar(this$static, buf, pos);
10.19592 +          switch (c) {
10.19593 +            case 45:
10.19594 +              $appendLongStrBuf(this$static, c);
10.19595 +              state = 34;
10.19596 +              break commentenddashloop;
10.19597 +            case 13:
10.19598 +              this$static.nextCharOnNewLine = true;
10.19599 +              this$static.lastCR = true;
10.19600 +              $appendLongStrBuf(this$static, 10);
10.19601 +              state = 32;
10.19602 +              break stateloop;
10.19603 +            case 10:
10.19604 +              this$static.nextCharOnNewLine = true;
10.19605 +              $appendLongStrBuf(this$static, 10);
10.19606 +              state = 32;
10.19607 +              continue stateloop;
10.19608 +            case 0:
10.19609 +              c = 65533;
10.19610 +            default:$appendLongStrBuf(this$static, c);
10.19611 +              state = 32;
10.19612 +              continue stateloop;
10.19613 +          }
10.19614 +        }
10.19615 +
10.19616 +      case 34:
10.19617 +        commentendloop: for (;;) {
10.19618 +          if (++pos == endPos) {
10.19619 +            break stateloop;
10.19620 +          }
10.19621 +          c = $checkChar(this$static, buf, pos);
10.19622 +          switch (c) {
10.19623 +            case 62:
10.19624 +              $emitComment(this$static, 2, pos);
10.19625 +              state = 0;
10.19626 +              continue stateloop;
10.19627 +            case 45:
10.19628 +              $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c);
10.19629 +              continue;
10.19630 +            case 32:
10.19631 +            case 9:
10.19632 +            case 12:
10.19633 +              $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c);
10.19634 +              state = 35;
10.19635 +              break commentendloop;
10.19636 +            case 13:
10.19637 +              this$static.nextCharOnNewLine = true;
10.19638 +              this$static.lastCR = true;
10.19639 +              $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, 10);
10.19640 +              state = 35;
10.19641 +              break stateloop;
10.19642 +            case 10:
10.19643 +              this$static.nextCharOnNewLine = true;
10.19644 +              $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, 10);
10.19645 +              state = 35;
10.19646 +              break commentendloop;
10.19647 +            case 33:
10.19648 +              $appendLongStrBuf(this$static, c);
10.19649 +              state = 36;
10.19650 +              continue stateloop;
10.19651 +            case 0:
10.19652 +              c = 65533;
10.19653 +            default:$adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c);
10.19654 +              state = 32;
10.19655 +              continue stateloop;
10.19656 +          }
10.19657 +        }
10.19658 +
10.19659 +      case 35:
10.19660 +        for (;;) {
10.19661 +          if (++pos == endPos) {
10.19662 +            break stateloop;
10.19663 +          }
10.19664 +          c = $checkChar(this$static, buf, pos);
10.19665 +          switch (c) {
10.19666 +            case 62:
10.19667 +              $emitComment(this$static, 0, pos);
10.19668 +              state = 0;
10.19669 +              continue stateloop;
10.19670 +            case 45:
10.19671 +              $appendLongStrBuf(this$static, c);
10.19672 +              state = 33;
10.19673 +              continue stateloop;
10.19674 +            case 32:
10.19675 +            case 9:
10.19676 +            case 12:
10.19677 +              $appendLongStrBuf(this$static, c);
10.19678 +              continue;
10.19679 +            case 13:
10.19680 +              this$static.nextCharOnNewLine = true;
10.19681 +              this$static.lastCR = true;
10.19682 +              $appendLongStrBuf(this$static, 10);
10.19683 +              break stateloop;
10.19684 +            case 10:
10.19685 +              this$static.nextCharOnNewLine = true;
10.19686 +              $appendLongStrBuf(this$static, 10);
10.19687 +              continue;
10.19688 +            case 0:
10.19689 +              c = 65533;
10.19690 +            default:$appendLongStrBuf(this$static, c);
10.19691 +              state = 32;
10.19692 +              continue stateloop;
10.19693 +          }
10.19694 +        }
10.19695 +
10.19696 +      case 36:
10.19697 +        for (;;) {
10.19698 +          if (++pos == endPos) {
10.19699 +            break stateloop;
10.19700 +          }
10.19701 +          c = $checkChar(this$static, buf, pos);
10.19702 +          switch (c) {
10.19703 +            case 62:
10.19704 +              $emitComment(this$static, 3, pos);
10.19705 +              state = 0;
10.19706 +              continue stateloop;
10.19707 +            case 45:
10.19708 +              $appendLongStrBuf(this$static, c);
10.19709 +              state = 33;
10.19710 +              continue stateloop;
10.19711 +            case 13:
10.19712 +              this$static.nextCharOnNewLine = true;
10.19713 +              this$static.lastCR = true;
10.19714 +              $appendLongStrBuf(this$static, 10);
10.19715 +              break stateloop;
10.19716 +            case 10:
10.19717 +              this$static.nextCharOnNewLine = true;
10.19718 +              $appendLongStrBuf(this$static, 10);
10.19719 +              continue;
10.19720 +            case 0:
10.19721 +              c = 65533;
10.19722 +            default:$appendLongStrBuf(this$static, c);
10.19723 +              state = 32;
10.19724 +              continue stateloop;
10.19725 +          }
10.19726 +        }
10.19727 +
10.19728 +      case 31:
10.19729 +        if (++pos == endPos) {
10.19730 +          break stateloop;
10.19731 +        }
10.19732 +
10.19733 +        c = $checkChar(this$static, buf, pos);
10.19734 +        switch (c) {
10.19735 +          case 45:
10.19736 +            $appendLongStrBuf(this$static, c);
10.19737 +            state = 34;
10.19738 +            continue stateloop;
10.19739 +          case 62:
10.19740 +            $emitComment(this$static, 1, pos);
10.19741 +            state = 0;
10.19742 +            continue stateloop;
10.19743 +          case 13:
10.19744 +            this$static.nextCharOnNewLine = true;
10.19745 +            this$static.lastCR = true;
10.19746 +            $appendLongStrBuf(this$static, 10);
10.19747 +            state = 32;
10.19748 +            break stateloop;
10.19749 +          case 10:
10.19750 +            this$static.nextCharOnNewLine = true;
10.19751 +            $appendLongStrBuf(this$static, 10);
10.19752 +            state = 32;
10.19753 +            continue stateloop;
10.19754 +          case 0:
10.19755 +            c = 65533;
10.19756 +          default:$appendLongStrBuf(this$static, c);
10.19757 +            state = 32;
10.19758 +            continue stateloop;
10.19759 +        }
10.19760 +
10.19761 +      case 39:
10.19762 +        markupdeclarationdoctypeloop: for (;;) {
10.19763 +          if (++pos == endPos) {
10.19764 +            break stateloop;
10.19765 +          }
10.19766 +          c = $checkChar(this$static, buf, pos);
10.19767 +          if (this$static.index < 6) {
10.19768 +            folded = c;
10.19769 +            if (c >= 65 && c <= 90) {
10.19770 +              folded += 32;
10.19771 +            }
10.19772 +            if (folded == OCTYPE[this$static.index]) {
10.19773 +              $appendLongStrBuf(this$static, c);
10.19774 +            }
10.19775 +             else {
10.19776 +              state = 15;
10.19777 +              reconsume = true;
10.19778 +              continue stateloop;
10.19779 +            }
10.19780 +            ++this$static.index;
10.19781 +            continue;
10.19782 +          }
10.19783 +           else {
10.19784 +            state = 17;
10.19785 +            reconsume = true;
10.19786 +            break markupdeclarationdoctypeloop;
10.19787 +          }
10.19788 +        }
10.19789 +
10.19790 +      case 17:
10.19791 +        doctypeloop: for (;;) {
10.19792 +          if (reconsume) {
10.19793 +            reconsume = false;
10.19794 +          }
10.19795 +           else {
10.19796 +            if (++pos == endPos) {
10.19797 +              break stateloop;
10.19798 +            }
10.19799 +            c = $checkChar(this$static, buf, pos);
10.19800 +          }
10.19801 +          this$static.doctypeName = '';
10.19802 +          this$static.systemIdentifier = null;
10.19803 +          this$static.publicIdentifier = null;
10.19804 +          this$static.forceQuirks = false;
10.19805 +          switch (c) {
10.19806 +            case 13:
10.19807 +              this$static.nextCharOnNewLine = true;
10.19808 +              this$static.lastCR = true;
10.19809 +              state = 18;
10.19810 +              break stateloop;
10.19811 +            case 10:
10.19812 +              this$static.nextCharOnNewLine = true;
10.19813 +            case 32:
10.19814 +            case 9:
10.19815 +            case 12:
10.19816 +              state = 18;
10.19817 +              break doctypeloop;
10.19818 +            default:state = 18;
10.19819 +              reconsume = true;
10.19820 +              break doctypeloop;
10.19821 +          }
10.19822 +        }
10.19823 +
10.19824 +      case 18:
10.19825 +        beforedoctypenameloop: for (;;) {
10.19826 +          if (reconsume) {
10.19827 +            reconsume = false;
10.19828 +          }
10.19829 +           else {
10.19830 +            if (++pos == endPos) {
10.19831 +              break stateloop;
10.19832 +            }
10.19833 +            c = $checkChar(this$static, buf, pos);
10.19834 +          }
10.19835 +          switch (c) {
10.19836 +            case 13:
10.19837 +              this$static.nextCharOnNewLine = true;
10.19838 +              this$static.lastCR = true;
10.19839 +              break stateloop;
10.19840 +            case 10:
10.19841 +              this$static.nextCharOnNewLine = true;
10.19842 +            case 32:
10.19843 +            case 9:
10.19844 +            case 12:
10.19845 +              continue;
10.19846 +            case 62:
10.19847 +              this$static.forceQuirks = true;
10.19848 +              this$static.cstart = pos + 1;
10.19849 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.19850 +              state = 0;
10.19851 +              continue stateloop;
10.19852 +            case 0:
10.19853 +              c = 65533;
10.19854 +            default:if (c >= 65 && c <= 90) {
10.19855 +                c += 32;
10.19856 +              }
10.19857 +
10.19858 +              this$static.strBuf[0] = c;
10.19859 +              this$static.strBufLen = 1;
10.19860 +              state = 19;
10.19861 +              break beforedoctypenameloop;
10.19862 +          }
10.19863 +        }
10.19864 +
10.19865 +      case 19:
10.19866 +        doctypenameloop: for (;;) {
10.19867 +          if (++pos == endPos) {
10.19868 +            break stateloop;
10.19869 +          }
10.19870 +          c = $checkChar(this$static, buf, pos);
10.19871 +          switch (c) {
10.19872 +            case 13:
10.19873 +              this$static.nextCharOnNewLine = true;
10.19874 +              this$static.lastCR = true;
10.19875 +              this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
10.19876 +              state = 20;
10.19877 +              break stateloop;
10.19878 +            case 10:
10.19879 +              this$static.nextCharOnNewLine = true;
10.19880 +            case 32:
10.19881 +            case 9:
10.19882 +            case 12:
10.19883 +              this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
10.19884 +              state = 20;
10.19885 +              break doctypenameloop;
10.19886 +            case 62:
10.19887 +              this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
10.19888 +              this$static.cstart = pos + 1;
10.19889 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.19890 +              state = 0;
10.19891 +              continue stateloop;
10.19892 +            case 0:
10.19893 +              c = 65533;
10.19894 +            default:if (c >= 65 && c <= 90) {
10.19895 +                c += 32;
10.19896 +              }
10.19897 +
10.19898 +              $appendStrBuf(this$static, c);
10.19899 +              continue;
10.19900 +          }
10.19901 +        }
10.19902 +
10.19903 +      case 20:
10.19904 +        afterdoctypenameloop: for (;;) {
10.19905 +          if (++pos == endPos) {
10.19906 +            break stateloop;
10.19907 +          }
10.19908 +          c = $checkChar(this$static, buf, pos);
10.19909 +          switch (c) {
10.19910 +            case 13:
10.19911 +              this$static.nextCharOnNewLine = true;
10.19912 +              this$static.lastCR = true;
10.19913 +              break stateloop;
10.19914 +            case 10:
10.19915 +              this$static.nextCharOnNewLine = true;
10.19916 +            case 32:
10.19917 +            case 9:
10.19918 +            case 12:
10.19919 +              continue;
10.19920 +            case 62:
10.19921 +              this$static.cstart = pos + 1;
10.19922 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.19923 +              state = 0;
10.19924 +              continue stateloop;
10.19925 +            case 112:
10.19926 +            case 80:
10.19927 +              this$static.index = 0;
10.19928 +              state = 40;
10.19929 +              break afterdoctypenameloop;
10.19930 +            case 115:
10.19931 +            case 83:
10.19932 +              this$static.index = 0;
10.19933 +              state = 41;
10.19934 +              continue stateloop;
10.19935 +            default:this$static.forceQuirks = true;
10.19936 +              state = 29;
10.19937 +              continue stateloop;
10.19938 +          }
10.19939 +        }
10.19940 +
10.19941 +      case 40:
10.19942 +        doctypeublicloop: for (;;) {
10.19943 +          if (++pos == endPos) {
10.19944 +            break stateloop;
10.19945 +          }
10.19946 +          c = $checkChar(this$static, buf, pos);
10.19947 +          if (this$static.index < 5) {
10.19948 +            folded = c;
10.19949 +            if (c >= 65 && c <= 90) {
10.19950 +              folded += 32;
10.19951 +            }
10.19952 +            if (folded != UBLIC[this$static.index]) {
10.19953 +              this$static.forceQuirks = true;
10.19954 +              state = 29;
10.19955 +              reconsume = true;
10.19956 +              continue stateloop;
10.19957 +            }
10.19958 +            ++this$static.index;
10.19959 +            continue;
10.19960 +          }
10.19961 +           else {
10.19962 +            state = 21;
10.19963 +            reconsume = true;
10.19964 +            break doctypeublicloop;
10.19965 +          }
10.19966 +        }
10.19967 +
10.19968 +      case 21:
10.19969 +        beforedoctypepublicidentifierloop: for (;;) {
10.19970 +          if (reconsume) {
10.19971 +            reconsume = false;
10.19972 +          }
10.19973 +           else {
10.19974 +            if (++pos == endPos) {
10.19975 +              break stateloop;
10.19976 +            }
10.19977 +            c = $checkChar(this$static, buf, pos);
10.19978 +          }
10.19979 +          switch (c) {
10.19980 +            case 13:
10.19981 +              this$static.nextCharOnNewLine = true;
10.19982 +              this$static.lastCR = true;
10.19983 +              break stateloop;
10.19984 +            case 10:
10.19985 +              this$static.nextCharOnNewLine = true;
10.19986 +            case 32:
10.19987 +            case 9:
10.19988 +            case 12:
10.19989 +              continue;
10.19990 +            case 34:
10.19991 +              this$static.longStrBufLen = 0;
10.19992 +              state = 22;
10.19993 +              break beforedoctypepublicidentifierloop;
10.19994 +            case 39:
10.19995 +              this$static.longStrBufLen = 0;
10.19996 +              state = 23;
10.19997 +              continue stateloop;
10.19998 +            case 62:
10.19999 +              this$static.forceQuirks = true;
10.20000 +              this$static.cstart = pos + 1;
10.20001 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20002 +              state = 0;
10.20003 +              continue stateloop;
10.20004 +            default:this$static.forceQuirks = true;
10.20005 +              state = 29;
10.20006 +              continue stateloop;
10.20007 +          }
10.20008 +        }
10.20009 +
10.20010 +      case 22:
10.20011 +        doctypepublicidentifierdoublequotedloop: for (;;) {
10.20012 +          if (++pos == endPos) {
10.20013 +            break stateloop;
10.20014 +          }
10.20015 +          c = $checkChar(this$static, buf, pos);
10.20016 +          switch (c) {
10.20017 +            case 34:
10.20018 +              this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20019 +              state = 24;
10.20020 +              break doctypepublicidentifierdoublequotedloop;
10.20021 +            case 62:
10.20022 +              this$static.forceQuirks = true;
10.20023 +              this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20024 +              this$static.cstart = pos + 1;
10.20025 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20026 +              state = 0;
10.20027 +              continue stateloop;
10.20028 +            case 13:
10.20029 +              this$static.nextCharOnNewLine = true;
10.20030 +              this$static.lastCR = true;
10.20031 +              $appendLongStrBuf(this$static, 10);
10.20032 +              break stateloop;
10.20033 +            case 10:
10.20034 +              this$static.nextCharOnNewLine = true;
10.20035 +              $appendLongStrBuf(this$static, 10);
10.20036 +              continue;
10.20037 +            case 0:
10.20038 +              c = 65533;
10.20039 +            default:$appendLongStrBuf(this$static, c);
10.20040 +              continue;
10.20041 +          }
10.20042 +        }
10.20043 +
10.20044 +      case 24:
10.20045 +        afterdoctypepublicidentifierloop: for (;;) {
10.20046 +          if (++pos == endPos) {
10.20047 +            break stateloop;
10.20048 +          }
10.20049 +          c = $checkChar(this$static, buf, pos);
10.20050 +          switch (c) {
10.20051 +            case 13:
10.20052 +              this$static.nextCharOnNewLine = true;
10.20053 +              this$static.lastCR = true;
10.20054 +              break stateloop;
10.20055 +            case 10:
10.20056 +              this$static.nextCharOnNewLine = true;
10.20057 +            case 32:
10.20058 +            case 9:
10.20059 +            case 12:
10.20060 +              continue;
10.20061 +            case 34:
10.20062 +              this$static.longStrBufLen = 0;
10.20063 +              state = 26;
10.20064 +              break afterdoctypepublicidentifierloop;
10.20065 +            case 39:
10.20066 +              this$static.longStrBufLen = 0;
10.20067 +              state = 27;
10.20068 +              continue stateloop;
10.20069 +            case 62:
10.20070 +              this$static.cstart = pos + 1;
10.20071 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20072 +              state = 0;
10.20073 +              continue stateloop;
10.20074 +            default:this$static.forceQuirks = true;
10.20075 +              state = 29;
10.20076 +              continue stateloop;
10.20077 +          }
10.20078 +        }
10.20079 +
10.20080 +      case 26:
10.20081 +        doctypesystemidentifierdoublequotedloop: for (;;) {
10.20082 +          if (++pos == endPos) {
10.20083 +            break stateloop;
10.20084 +          }
10.20085 +          c = $checkChar(this$static, buf, pos);
10.20086 +          switch (c) {
10.20087 +            case 34:
10.20088 +              this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20089 +              state = 28;
10.20090 +              continue stateloop;
10.20091 +            case 62:
10.20092 +              this$static.forceQuirks = true;
10.20093 +              this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20094 +              this$static.cstart = pos + 1;
10.20095 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20096 +              state = 0;
10.20097 +              continue stateloop;
10.20098 +            case 13:
10.20099 +              this$static.nextCharOnNewLine = true;
10.20100 +              this$static.lastCR = true;
10.20101 +              $appendLongStrBuf(this$static, 10);
10.20102 +              break stateloop;
10.20103 +            case 10:
10.20104 +              this$static.nextCharOnNewLine = true;
10.20105 +              $appendLongStrBuf(this$static, 10);
10.20106 +              continue;
10.20107 +            case 0:
10.20108 +              c = 65533;
10.20109 +            default:$appendLongStrBuf(this$static, c);
10.20110 +              continue;
10.20111 +          }
10.20112 +        }
10.20113 +
10.20114 +      case 28:
10.20115 +        afterdoctypesystemidentifierloop: for (;;) {
10.20116 +          if (++pos == endPos) {
10.20117 +            break stateloop;
10.20118 +          }
10.20119 +          c = $checkChar(this$static, buf, pos);
10.20120 +          switch (c) {
10.20121 +            case 13:
10.20122 +              this$static.nextCharOnNewLine = true;
10.20123 +              this$static.lastCR = true;
10.20124 +              break stateloop;
10.20125 +            case 10:
10.20126 +              this$static.nextCharOnNewLine = true;
10.20127 +            case 32:
10.20128 +            case 9:
10.20129 +            case 12:
10.20130 +              continue;
10.20131 +            case 62:
10.20132 +              this$static.cstart = pos + 1;
10.20133 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20134 +              state = 0;
10.20135 +              continue stateloop;
10.20136 +            default:this$static.forceQuirks = false;
10.20137 +              state = 29;
10.20138 +              break afterdoctypesystemidentifierloop;
10.20139 +          }
10.20140 +        }
10.20141 +
10.20142 +      case 29:
10.20143 +        for (;;) {
10.20144 +          if (reconsume) {
10.20145 +            reconsume = false;
10.20146 +          }
10.20147 +           else {
10.20148 +            if (++pos == endPos) {
10.20149 +              break stateloop;
10.20150 +            }
10.20151 +            c = $checkChar(this$static, buf, pos);
10.20152 +          }
10.20153 +          switch (c) {
10.20154 +            case 62:
10.20155 +              this$static.cstart = pos + 1;
10.20156 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20157 +              state = 0;
10.20158 +              continue stateloop;
10.20159 +            case 13:
10.20160 +              this$static.nextCharOnNewLine = true;
10.20161 +              this$static.lastCR = true;
10.20162 +              break stateloop;
10.20163 +            case 10:
10.20164 +              this$static.nextCharOnNewLine = true;
10.20165 +            default:continue;
10.20166 +          }
10.20167 +        }
10.20168 +
10.20169 +      case 41:
10.20170 +        doctypeystemloop: for (;;) {
10.20171 +          if (++pos == endPos) {
10.20172 +            break stateloop;
10.20173 +          }
10.20174 +          c = $checkChar(this$static, buf, pos);
10.20175 +          if (this$static.index < 5) {
10.20176 +            folded = c;
10.20177 +            if (c >= 65 && c <= 90) {
10.20178 +              folded += 32;
10.20179 +            }
10.20180 +            if (folded != YSTEM[this$static.index]) {
10.20181 +              this$static.forceQuirks = true;
10.20182 +              state = 29;
10.20183 +              reconsume = true;
10.20184 +              continue stateloop;
10.20185 +            }
10.20186 +            ++this$static.index;
10.20187 +            continue stateloop;
10.20188 +          }
10.20189 +           else {
10.20190 +            state = 25;
10.20191 +            reconsume = true;
10.20192 +            break doctypeystemloop;
10.20193 +          }
10.20194 +        }
10.20195 +
10.20196 +      case 25:
10.20197 +        beforedoctypesystemidentifierloop: for (;;) {
10.20198 +          if (reconsume) {
10.20199 +            reconsume = false;
10.20200 +          }
10.20201 +           else {
10.20202 +            if (++pos == endPos) {
10.20203 +              break stateloop;
10.20204 +            }
10.20205 +            c = $checkChar(this$static, buf, pos);
10.20206 +          }
10.20207 +          switch (c) {
10.20208 +            case 13:
10.20209 +              this$static.nextCharOnNewLine = true;
10.20210 +              this$static.lastCR = true;
10.20211 +              break stateloop;
10.20212 +            case 10:
10.20213 +              this$static.nextCharOnNewLine = true;
10.20214 +            case 32:
10.20215 +            case 9:
10.20216 +            case 12:
10.20217 +              continue;
10.20218 +            case 34:
10.20219 +              this$static.longStrBufLen = 0;
10.20220 +              state = 26;
10.20221 +              continue stateloop;
10.20222 +            case 39:
10.20223 +              this$static.longStrBufLen = 0;
10.20224 +              state = 27;
10.20225 +              break beforedoctypesystemidentifierloop;
10.20226 +            case 62:
10.20227 +              this$static.forceQuirks = true;
10.20228 +              this$static.cstart = pos + 1;
10.20229 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20230 +              state = 0;
10.20231 +              continue stateloop;
10.20232 +            default:this$static.forceQuirks = true;
10.20233 +              state = 29;
10.20234 +              continue stateloop;
10.20235 +          }
10.20236 +        }
10.20237 +
10.20238 +      case 27:
10.20239 +        for (;;) {
10.20240 +          if (++pos == endPos) {
10.20241 +            break stateloop;
10.20242 +          }
10.20243 +          c = $checkChar(this$static, buf, pos);
10.20244 +          switch (c) {
10.20245 +            case 39:
10.20246 +              this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20247 +              state = 28;
10.20248 +              continue stateloop;
10.20249 +            case 62:
10.20250 +              this$static.forceQuirks = true;
10.20251 +              this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20252 +              this$static.cstart = pos + 1;
10.20253 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20254 +              state = 0;
10.20255 +              continue stateloop;
10.20256 +            case 13:
10.20257 +              this$static.nextCharOnNewLine = true;
10.20258 +              this$static.lastCR = true;
10.20259 +              $appendLongStrBuf(this$static, 10);
10.20260 +              break stateloop;
10.20261 +            case 10:
10.20262 +              this$static.nextCharOnNewLine = true;
10.20263 +              $appendLongStrBuf(this$static, 10);
10.20264 +              continue;
10.20265 +            case 0:
10.20266 +              c = 65533;
10.20267 +            default:$appendLongStrBuf(this$static, c);
10.20268 +              continue;
10.20269 +          }
10.20270 +        }
10.20271 +
10.20272 +      case 23:
10.20273 +        for (;;) {
10.20274 +          if (++pos == endPos) {
10.20275 +            break stateloop;
10.20276 +          }
10.20277 +          c = $checkChar(this$static, buf, pos);
10.20278 +          switch (c) {
10.20279 +            case 39:
10.20280 +              this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20281 +              state = 24;
10.20282 +              continue stateloop;
10.20283 +            case 62:
10.20284 +              this$static.forceQuirks = true;
10.20285 +              this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20286 +              this$static.cstart = pos + 1;
10.20287 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20288 +              state = 0;
10.20289 +              continue stateloop;
10.20290 +            case 13:
10.20291 +              this$static.nextCharOnNewLine = true;
10.20292 +              this$static.lastCR = true;
10.20293 +              $appendLongStrBuf(this$static, 10);
10.20294 +              break stateloop;
10.20295 +            case 10:
10.20296 +              this$static.nextCharOnNewLine = true;
10.20297 +              $appendLongStrBuf(this$static, 10);
10.20298 +              continue;
10.20299 +            case 0:
10.20300 +              c = 65533;
10.20301 +            default:$appendLongStrBuf(this$static, c);
10.20302 +              continue;
10.20303 +          }
10.20304 +        }
10.20305 +
10.20306 +      case 49:
10.20307 +        for (;;) {
10.20308 +          if (++pos == endPos) {
10.20309 +            break stateloop;
10.20310 +          }
10.20311 +          c = $checkChar(this$static, buf, pos);
10.20312 +          if (this$static.index < 6) {
10.20313 +            if (c == CDATA_LSQB[this$static.index]) {
10.20314 +              $appendLongStrBuf(this$static, c);
10.20315 +            }
10.20316 +             else {
10.20317 +              state = 15;
10.20318 +              reconsume = true;
10.20319 +              continue stateloop;
10.20320 +            }
10.20321 +            ++this$static.index;
10.20322 +            continue;
10.20323 +          }
10.20324 +           else {
10.20325 +            this$static.cstart = pos;
10.20326 +            state = 50;
10.20327 +            reconsume = true;
10.20328 +            break;
10.20329 +          }
10.20330 +        }
10.20331 +
10.20332 +      case 50:
10.20333 +        cdatasectionloop: for (;;) {
10.20334 +          if (reconsume) {
10.20335 +            reconsume = false;
10.20336 +          }
10.20337 +           else {
10.20338 +            if (++pos == endPos) {
10.20339 +              break stateloop;
10.20340 +            }
10.20341 +            c = $checkChar(this$static, buf, pos);
10.20342 +          }
10.20343 +          switch (c) {
10.20344 +            case 93:
10.20345 +              $flushChars(this$static, buf, pos);
10.20346 +              state = 51;
10.20347 +              break cdatasectionloop;
10.20348 +            case 0:
10.20349 +              $emitReplacementCharacter(this$static, buf, pos);
10.20350 +              continue;
10.20351 +            case 13:
10.20352 +              $emitCarriageReturn(this$static, buf, pos);
10.20353 +              break stateloop;
10.20354 +            case 10:
10.20355 +              this$static.nextCharOnNewLine = true;
10.20356 +            default:continue;
10.20357 +          }
10.20358 +        }
10.20359 +
10.20360 +      case 51:
10.20361 +        cdatarsqb: for (;;) {
10.20362 +          if (++pos == endPos) {
10.20363 +            break stateloop;
10.20364 +          }
10.20365 +          c = $checkChar(this$static, buf, pos);
10.20366 +          switch (c) {
10.20367 +            case 93:
10.20368 +              state = 52;
10.20369 +              break cdatarsqb;
10.20370 +            default:$characters(this$static.tokenHandler, RSQB_RSQB, 0, 1);
10.20371 +              this$static.cstart = pos;
10.20372 +              state = 50;
10.20373 +              reconsume = true;
10.20374 +              continue stateloop;
10.20375 +          }
10.20376 +        }
10.20377 +
10.20378 +      case 52:
10.20379 +        if (++pos == endPos) {
10.20380 +          break stateloop;
10.20381 +        }
10.20382 +
10.20383 +        c = $checkChar(this$static, buf, pos);
10.20384 +        switch (c) {
10.20385 +          case 62:
10.20386 +            this$static.cstart = pos + 1;
10.20387 +            state = 0;
10.20388 +            continue stateloop;
10.20389 +          default:$characters(this$static.tokenHandler, RSQB_RSQB, 0, 2);
10.20390 +            this$static.cstart = pos;
10.20391 +            state = 50;
10.20392 +            reconsume = true;
10.20393 +            continue stateloop;
10.20394 +        }
10.20395 +
10.20396 +      case 12:
10.20397 +        attributevaluesinglequotedloop: for (;;) {
10.20398 +          if (reconsume) {
10.20399 +            reconsume = false;
10.20400 +          }
10.20401 +           else {
10.20402 +            if (++pos == endPos) {
10.20403 +              break stateloop;
10.20404 +            }
10.20405 +            c = $checkChar(this$static, buf, pos);
10.20406 +          }
10.20407 +          switch (c) {
10.20408 +            case 39:
10.20409 +              $addAttributeWithValue(this$static);
10.20410 +              state = 14;
10.20411 +              continue stateloop;
10.20412 +            case 38:
10.20413 +              this$static.strBuf[0] = c;
10.20414 +              this$static.strBufLen = 1;
10.20415 +              this$static.additional = 39;
10.20416 +              $LocatorImpl(new LocatorImpl(), this$static);
10.20417 +              returnState = state;
10.20418 +              state = 42;
10.20419 +              break attributevaluesinglequotedloop;
10.20420 +            case 13:
10.20421 +              this$static.nextCharOnNewLine = true;
10.20422 +              this$static.lastCR = true;
10.20423 +              $appendLongStrBuf(this$static, 10);
10.20424 +              break stateloop;
10.20425 +            case 10:
10.20426 +              this$static.nextCharOnNewLine = true;
10.20427 +              $appendLongStrBuf(this$static, 10);
10.20428 +              continue;
10.20429 +            case 0:
10.20430 +              c = 65533;
10.20431 +            default:$appendLongStrBuf(this$static, c);
10.20432 +              continue;
10.20433 +          }
10.20434 +        }
10.20435 +
10.20436 +      case 42:
10.20437 +        if (++pos == endPos) {
10.20438 +          break stateloop;
10.20439 +        }
10.20440 +
10.20441 +        c = $checkChar(this$static, buf, pos);
10.20442 +        if (c == 0) {
10.20443 +          break stateloop;
10.20444 +        }
10.20445 +
10.20446 +        switch (c) {
10.20447 +          case 32:
10.20448 +          case 9:
10.20449 +          case 10:
10.20450 +          case 13:
10.20451 +          case 12:
10.20452 +          case 60:
10.20453 +          case 38:
10.20454 +            $emitOrAppendStrBuf(this$static, returnState);
10.20455 +            if ((returnState & -2) == 0) {
10.20456 +              this$static.cstart = pos;
10.20457 +            }
10.20458 +
10.20459 +            state = returnState;
10.20460 +            reconsume = true;
10.20461 +            continue stateloop;
10.20462 +          case 35:
10.20463 +            $appendStrBuf(this$static, 35);
10.20464 +            state = 43;
10.20465 +            continue stateloop;
10.20466 +          default:if (c == this$static.additional) {
10.20467 +              $emitOrAppendStrBuf(this$static, returnState);
10.20468 +              state = returnState;
10.20469 +              reconsume = true;
10.20470 +              continue stateloop;
10.20471 +            }
10.20472 +
10.20473 +            this$static.entCol = -1;
10.20474 +            this$static.lo = 0;
10.20475 +            this$static.hi = ($clinit_94() , NAMES).length - 1;
10.20476 +            this$static.candidate = -1;
10.20477 +            this$static.strBufMark = 0;
10.20478 +            state = 44;
10.20479 +            reconsume = true;
10.20480 +        }
10.20481 +
10.20482 +      case 44:
10.20483 +        outer: for (;;) {
10.20484 +          if (reconsume) {
10.20485 +            reconsume = false;
10.20486 +          }
10.20487 +           else {
10.20488 +            if (++pos == endPos) {
10.20489 +              break stateloop;
10.20490 +            }
10.20491 +            c = $checkChar(this$static, buf, pos);
10.20492 +          }
10.20493 +          if (c == 0) {
10.20494 +            break stateloop;
10.20495 +          }
10.20496 +          ++this$static.entCol;
10.20497 +          hiloop: for (;;) {
10.20498 +            if (this$static.hi == -1) {
10.20499 +              break hiloop;
10.20500 +            }
10.20501 +            if (this$static.entCol == ($clinit_94() , NAMES)[this$static.hi].length) {
10.20502 +              break hiloop;
10.20503 +            }
10.20504 +            if (this$static.entCol > NAMES[this$static.hi].length) {
10.20505 +              break outer;
10.20506 +            }
10.20507 +             else if (c < NAMES[this$static.hi][this$static.entCol]) {
10.20508 +              --this$static.hi;
10.20509 +            }
10.20510 +             else {
10.20511 +              break hiloop;
10.20512 +            }
10.20513 +          }
10.20514 +          loloop: for (;;) {
10.20515 +            if (this$static.hi < this$static.lo) {
10.20516 +              break outer;
10.20517 +            }
10.20518 +            if (this$static.entCol == ($clinit_94() , NAMES)[this$static.lo].length) {
10.20519 +              this$static.candidate = this$static.lo;
10.20520 +              this$static.strBufMark = this$static.strBufLen;
10.20521 +              ++this$static.lo;
10.20522 +            }
10.20523 +             else if (this$static.entCol > NAMES[this$static.lo].length) {
10.20524 +              break outer;
10.20525 +            }
10.20526 +             else if (c > NAMES[this$static.lo][this$static.entCol]) {
10.20527 +              ++this$static.lo;
10.20528 +            }
10.20529 +             else {
10.20530 +              break loloop;
10.20531 +            }
10.20532 +          }
10.20533 +          if (this$static.hi < this$static.lo) {
10.20534 +            break outer;
10.20535 +          }
10.20536 +          $appendStrBuf(this$static, c);
10.20537 +          continue;
10.20538 +        }
10.20539 +
10.20540 +        if (this$static.candidate == -1) {
10.20541 +          $emitOrAppendStrBuf(this$static, returnState);
10.20542 +          if ((returnState & -2) == 0) {
10.20543 +            this$static.cstart = pos;
10.20544 +          }
10.20545 +          state = returnState;
10.20546 +          reconsume = true;
10.20547 +          continue stateloop;
10.20548 +        }
10.20549 +         else {
10.20550 +          candidateArr = ($clinit_94() , NAMES)[this$static.candidate];
10.20551 +          if (candidateArr[candidateArr.length - 1] != 59) {
10.20552 +            if ((returnState & -2) != 0) {
10.20553 +              if (this$static.strBufMark == this$static.strBufLen) {
10.20554 +                ch = c;
10.20555 +              }
10.20556 +               else {
10.20557 +                ch = this$static.strBuf[this$static.strBufMark];
10.20558 +              }
10.20559 +              if (ch >= 48 && ch <= 57 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122) {
10.20560 +                $appendLongStrBuf_0(this$static, this$static.strBuf, 0, this$static.strBufLen);
10.20561 +                state = returnState;
10.20562 +                reconsume = true;
10.20563 +                continue stateloop;
10.20564 +              }
10.20565 +            }
10.20566 +          }
10.20567 +          val = VALUES_0[this$static.candidate];
10.20568 +          $emitOrAppend(this$static, val, returnState);
10.20569 +          if (this$static.strBufMark < this$static.strBufLen) {
10.20570 +            if ((returnState & -2) != 0) {
10.20571 +              for (i = this$static.strBufMark; i < this$static.strBufLen; ++i) {
10.20572 +                $appendLongStrBuf(this$static, this$static.strBuf[i]);
10.20573 +              }
10.20574 +            }
10.20575 +             else {
10.20576 +              $characters(this$static.tokenHandler, this$static.strBuf, this$static.strBufMark, this$static.strBufLen - this$static.strBufMark);
10.20577 +            }
10.20578 +          }
10.20579 +          if ((returnState & -2) == 0) {
10.20580 +            this$static.cstart = pos;
10.20581 +          }
10.20582 +          state = returnState;
10.20583 +          reconsume = true;
10.20584 +          continue stateloop;
10.20585 +        }
10.20586 +
10.20587 +      case 43:
10.20588 +        if (++pos == endPos) {
10.20589 +          break stateloop;
10.20590 +        }
10.20591 +
10.20592 +        c = $checkChar(this$static, buf, pos);
10.20593 +        this$static.prevValue = -1;
10.20594 +        this$static.value = 0;
10.20595 +        this$static.seenDigits = false;
10.20596 +        switch (c) {
10.20597 +          case 120:
10.20598 +          case 88:
10.20599 +            $appendStrBuf(this$static, c);
10.20600 +            state = 45;
10.20601 +            continue stateloop;
10.20602 +          default:state = 46;
10.20603 +            reconsume = true;
10.20604 +        }
10.20605 +
10.20606 +      case 46:
10.20607 +        decimalloop: for (;;) {
10.20608 +          if (reconsume) {
10.20609 +            reconsume = false;
10.20610 +          }
10.20611 +           else {
10.20612 +            if (++pos == endPos) {
10.20613 +              break stateloop;
10.20614 +            }
10.20615 +            c = $checkChar(this$static, buf, pos);
10.20616 +          }
10.20617 +          if (this$static.value < this$static.prevValue) {
10.20618 +            this$static.value = 1114112;
10.20619 +          }
10.20620 +          this$static.prevValue = this$static.value;
10.20621 +          if (c >= 48 && c <= 57) {
10.20622 +            this$static.seenDigits = true;
10.20623 +            this$static.value *= 10;
10.20624 +            this$static.value += c - 48;
10.20625 +            continue;
10.20626 +          }
10.20627 +           else if (c == 59) {
10.20628 +            if (this$static.seenDigits) {
10.20629 +              if ((returnState & -2) == 0) {
10.20630 +                this$static.cstart = pos + 1;
10.20631 +              }
10.20632 +              state = 47;
10.20633 +              break decimalloop;
10.20634 +            }
10.20635 +             else {
10.20636 +              'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
10.20637 +              $appendStrBuf(this$static, 59);
10.20638 +              $emitOrAppendStrBuf(this$static, returnState);
10.20639 +              if ((returnState & -2) == 0) {
10.20640 +                this$static.cstart = pos + 1;
10.20641 +              }
10.20642 +              state = returnState;
10.20643 +              continue stateloop;
10.20644 +            }
10.20645 +          }
10.20646 +           else {
10.20647 +            if (this$static.seenDigits) {
10.20648 +              if ((returnState & -2) == 0) {
10.20649 +                this$static.cstart = pos;
10.20650 +              }
10.20651 +              state = 47;
10.20652 +              reconsume = true;
10.20653 +              break decimalloop;
10.20654 +            }
10.20655 +             else {
10.20656 +              'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
10.20657 +              $emitOrAppendStrBuf(this$static, returnState);
10.20658 +              if ((returnState & -2) == 0) {
10.20659 +                this$static.cstart = pos;
10.20660 +              }
10.20661 +              state = returnState;
10.20662 +              reconsume = true;
10.20663 +              continue stateloop;
10.20664 +            }
10.20665 +          }
10.20666 +        }
10.20667 +
10.20668 +      case 47:
10.20669 +        $handleNcrValue(this$static, returnState);
10.20670 +        state = returnState;
10.20671 +        continue stateloop;
10.20672 +      case 45:
10.20673 +        for (;;) {
10.20674 +          if (++pos == endPos) {
10.20675 +            break stateloop;
10.20676 +          }
10.20677 +          c = $checkChar(this$static, buf, pos);
10.20678 +          if (this$static.value < this$static.prevValue) {
10.20679 +            this$static.value = 1114112;
10.20680 +          }
10.20681 +          this$static.prevValue = this$static.value;
10.20682 +          if (c >= 48 && c <= 57) {
10.20683 +            this$static.seenDigits = true;
10.20684 +            this$static.value *= 16;
10.20685 +            this$static.value += c - 48;
10.20686 +            continue;
10.20687 +          }
10.20688 +           else if (c >= 65 && c <= 70) {
10.20689 +            this$static.seenDigits = true;
10.20690 +            this$static.value *= 16;
10.20691 +            this$static.value += c - 65 + 10;
10.20692 +            continue;
10.20693 +          }
10.20694 +           else if (c >= 97 && c <= 102) {
10.20695 +            this$static.seenDigits = true;
10.20696 +            this$static.value *= 16;
10.20697 +            this$static.value += c - 97 + 10;
10.20698 +            continue;
10.20699 +          }
10.20700 +           else if (c == 59) {
10.20701 +            if (this$static.seenDigits) {
10.20702 +              if ((returnState & -2) == 0) {
10.20703 +                this$static.cstart = pos + 1;
10.20704 +              }
10.20705 +              state = 47;
10.20706 +              continue stateloop;
10.20707 +            }
10.20708 +             else {
10.20709 +              'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
10.20710 +              $appendStrBuf(this$static, 59);
10.20711 +              $emitOrAppendStrBuf(this$static, returnState);
10.20712 +              if ((returnState & -2) == 0) {
10.20713 +                this$static.cstart = pos + 1;
10.20714 +              }
10.20715 +              state = returnState;
10.20716 +              continue stateloop;
10.20717 +            }
10.20718 +          }
10.20719 +           else {
10.20720 +            if (this$static.seenDigits) {
10.20721 +              if ((returnState & -2) == 0) {
10.20722 +                this$static.cstart = pos;
10.20723 +              }
10.20724 +              state = 47;
10.20725 +              reconsume = true;
10.20726 +              continue stateloop;
10.20727 +            }
10.20728 +             else {
10.20729 +              'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
10.20730 +              $emitOrAppendStrBuf(this$static, returnState);
10.20731 +              if ((returnState & -2) == 0) {
10.20732 +                this$static.cstart = pos;
10.20733 +              }
10.20734 +              state = returnState;
10.20735 +              reconsume = true;
10.20736 +              continue stateloop;
10.20737 +            }
10.20738 +          }
10.20739 +        }
10.20740 +
10.20741 +      case 3:
10.20742 +        plaintextloop: for (;;) {
10.20743 +          if (reconsume) {
10.20744 +            reconsume = false;
10.20745 +          }
10.20746 +           else {
10.20747 +            if (++pos == endPos) {
10.20748 +              break stateloop;
10.20749 +            }
10.20750 +            c = $checkChar(this$static, buf, pos);
10.20751 +          }
10.20752 +          switch (c) {
10.20753 +            case 0:
10.20754 +              $emitReplacementCharacter(this$static, buf, pos);
10.20755 +              continue;
10.20756 +            case 13:
10.20757 +              $emitCarriageReturn(this$static, buf, pos);
10.20758 +              break stateloop;
10.20759 +            case 10:
10.20760 +              this$static.nextCharOnNewLine = true;
10.20761 +            default:continue;
10.20762 +          }
10.20763 +        }
10.20764 +
10.20765 +      case 2:
10.20766 +        cdataloop: for (;;) {
10.20767 +          if (reconsume) {
10.20768 +            reconsume = false;
10.20769 +          }
10.20770 +           else {
10.20771 +            if (++pos == endPos) {
10.20772 +              break stateloop;
10.20773 +            }
10.20774 +            c = $checkChar(this$static, buf, pos);
10.20775 +          }
10.20776 +          switch (c) {
10.20777 +            case 60:
10.20778 +              $flushChars(this$static, buf, pos);
10.20779 +              returnState = state;
10.20780 +              state = 53;
10.20781 +              break cdataloop;
10.20782 +            case 0:
10.20783 +              $emitReplacementCharacter(this$static, buf, pos);
10.20784 +              continue;
10.20785 +            case 13:
10.20786 +              $emitCarriageReturn(this$static, buf, pos);
10.20787 +              break stateloop;
10.20788 +            case 10:
10.20789 +              this$static.nextCharOnNewLine = true;
10.20790 +            default:continue;
10.20791 +          }
10.20792 +        }
10.20793 +
10.20794 +      case 53:
10.20795 +        tagopennonpcdataloop: for (;;) {
10.20796 +          if (++pos == endPos) {
10.20797 +            break stateloop;
10.20798 +          }
10.20799 +          c = $checkChar(this$static, buf, pos);
10.20800 +          switch (c) {
10.20801 +            case 33:
10.20802 +              $characters(this$static.tokenHandler, LT_GT, 0, 1);
10.20803 +              this$static.cstart = pos;
10.20804 +              state = 54;
10.20805 +              break tagopennonpcdataloop;
10.20806 +            case 47:
10.20807 +              if (this$static.contentModelElement) {
10.20808 +                this$static.index = 0;
10.20809 +                this$static.strBufLen = 0;
10.20810 +                state = 37;
10.20811 +                continue stateloop;
10.20812 +              }
10.20813 +
10.20814 +            default:$characters(this$static.tokenHandler, LT_GT, 0, 1);
10.20815 +              this$static.cstart = pos;
10.20816 +              state = returnState;
10.20817 +              reconsume = true;
10.20818 +              continue stateloop;
10.20819 +          }
10.20820 +        }
10.20821 +
10.20822 +      case 54:
10.20823 +        escapeexclamationloop: for (;;) {
10.20824 +          if (++pos == endPos) {
10.20825 +            break stateloop;
10.20826 +          }
10.20827 +          c = $checkChar(this$static, buf, pos);
10.20828 +          switch (c) {
10.20829 +            case 45:
10.20830 +              state = 55;
10.20831 +              break escapeexclamationloop;
10.20832 +            default:state = returnState;
10.20833 +              reconsume = true;
10.20834 +              continue stateloop;
10.20835 +          }
10.20836 +        }
10.20837 +
10.20838 +      case 55:
10.20839 +        escapeexclamationhyphenloop: for (;;) {
10.20840 +          if (++pos == endPos) {
10.20841 +            break stateloop;
10.20842 +          }
10.20843 +          c = $checkChar(this$static, buf, pos);
10.20844 +          switch (c) {
10.20845 +            case 45:
10.20846 +              state = 58;
10.20847 +              break escapeexclamationhyphenloop;
10.20848 +            default:state = returnState;
10.20849 +              reconsume = true;
10.20850 +              continue stateloop;
10.20851 +          }
10.20852 +        }
10.20853 +
10.20854 +      case 58:
10.20855 +        escapehyphenhyphenloop: for (;;) {
10.20856 +          if (++pos == endPos) {
10.20857 +            break stateloop;
10.20858 +          }
10.20859 +          c = $checkChar(this$static, buf, pos);
10.20860 +          switch (c) {
10.20861 +            case 45:
10.20862 +              continue;
10.20863 +            case 62:
10.20864 +              state = returnState;
10.20865 +              continue stateloop;
10.20866 +            case 0:
10.20867 +              $emitReplacementCharacter(this$static, buf, pos);
10.20868 +              state = 56;
10.20869 +              break escapehyphenhyphenloop;
10.20870 +            case 13:
10.20871 +              $emitCarriageReturn(this$static, buf, pos);
10.20872 +              state = 56;
10.20873 +              break stateloop;
10.20874 +            case 10:
10.20875 +              this$static.nextCharOnNewLine = true;
10.20876 +            default:state = 56;
10.20877 +              break escapehyphenhyphenloop;
10.20878 +          }
10.20879 +        }
10.20880 +
10.20881 +      case 56:
10.20882 +        escapeloop: for (;;) {
10.20883 +          if (++pos == endPos) {
10.20884 +            break stateloop;
10.20885 +          }
10.20886 +          c = $checkChar(this$static, buf, pos);
10.20887 +          switch (c) {
10.20888 +            case 45:
10.20889 +              state = 57;
10.20890 +              break escapeloop;
10.20891 +            case 0:
10.20892 +              $emitReplacementCharacter(this$static, buf, pos);
10.20893 +              continue;
10.20894 +            case 13:
10.20895 +              $emitCarriageReturn(this$static, buf, pos);
10.20896 +              break stateloop;
10.20897 +            case 10:
10.20898 +              this$static.nextCharOnNewLine = true;
10.20899 +            default:continue;
10.20900 +          }
10.20901 +        }
10.20902 +
10.20903 +      case 57:
10.20904 +        escapehyphenloop: for (;;) {
10.20905 +          if (++pos == endPos) {
10.20906 +            break stateloop;
10.20907 +          }
10.20908 +          c = $checkChar(this$static, buf, pos);
10.20909 +          switch (c) {
10.20910 +            case 45:
10.20911 +              state = 58;
10.20912 +              continue stateloop;
10.20913 +            case 0:
10.20914 +              $emitReplacementCharacter(this$static, buf, pos);
10.20915 +              state = 56;
10.20916 +              continue stateloop;
10.20917 +            case 13:
10.20918 +              $emitCarriageReturn(this$static, buf, pos);
10.20919 +              state = 56;
10.20920 +              continue stateloop;
10.20921 +            case 10:
10.20922 +              this$static.nextCharOnNewLine = true;
10.20923 +            default:state = 56;
10.20924 +              continue stateloop;
10.20925 +          }
10.20926 +        }
10.20927 +
10.20928 +      case 37:
10.20929 +        for (;;) {
10.20930 +          if (++pos == endPos) {
10.20931 +            break stateloop;
10.20932 +          }
10.20933 +          c = $checkChar(this$static, buf, pos);
10.20934 +          if (this$static.index < this$static.contentModelElementNameAsArray.length) {
10.20935 +            e = this$static.contentModelElementNameAsArray[this$static.index];
10.20936 +            folded = c;
10.20937 +            if (c >= 65 && c <= 90) {
10.20938 +              folded += 32;
10.20939 +            }
10.20940 +            if (folded != e) {
10.20941 +              this$static.html4 && (this$static.index > 0 || folded >= 97 && folded <= 122) && ($clinit_89() , IFRAME) != this$static.contentModelElement;
10.20942 +              $characters(this$static.tokenHandler, LT_SOLIDUS, 0, 2);
10.20943 +              $emitStrBuf(this$static);
10.20944 +              this$static.cstart = pos;
10.20945 +              state = returnState;
10.20946 +              reconsume = true;
10.20947 +              continue stateloop;
10.20948 +            }
10.20949 +            $appendStrBuf(this$static, c);
10.20950 +            ++this$static.index;
10.20951 +            continue;
10.20952 +          }
10.20953 +           else {
10.20954 +            this$static.endTag = true;
10.20955 +            this$static.tagName = this$static.contentModelElement;
10.20956 +            switch (c) {
10.20957 +              case 13:
10.20958 +                this$static.nextCharOnNewLine = true;
10.20959 +                this$static.lastCR = true;
10.20960 +                state = 7;
10.20961 +                break stateloop;
10.20962 +              case 10:
10.20963 +                this$static.nextCharOnNewLine = true;
10.20964 +              case 32:
10.20965 +              case 9:
10.20966 +              case 12:
10.20967 +                state = 7;
10.20968 +                continue stateloop;
10.20969 +              case 62:
10.20970 +                state = $emitCurrentTagToken(this$static, false, pos);
10.20971 +                if (this$static.shouldSuspend) {
10.20972 +                  break stateloop;
10.20973 +                }
10.20974 +
10.20975 +                continue stateloop;
10.20976 +              case 47:
10.20977 +                state = 48;
10.20978 +                continue stateloop;
10.20979 +              default:$characters(this$static.tokenHandler, LT_SOLIDUS, 0, 2);
10.20980 +                $emitStrBuf(this$static);
10.20981 +                if (c == 0) {
10.20982 +                  $emitReplacementCharacter(this$static, buf, pos);
10.20983 +                }
10.20984 +                 else {
10.20985 +                  this$static.cstart = pos;
10.20986 +                }
10.20987 +
10.20988 +                state = returnState;
10.20989 +                continue stateloop;
10.20990 +            }
10.20991 +          }
10.20992 +        }
10.20993 +
10.20994 +      case 5:
10.20995 +        if (++pos == endPos) {
10.20996 +          break stateloop;
10.20997 +        }
10.20998 +
10.20999 +        c = $checkChar(this$static, buf, pos);
10.21000 +        switch (c) {
10.21001 +          case 62:
10.21002 +            this$static.cstart = pos + 1;
10.21003 +            state = 0;
10.21004 +            continue stateloop;
10.21005 +          case 13:
10.21006 +            this$static.nextCharOnNewLine = true;
10.21007 +            this$static.lastCR = true;
10.21008 +            this$static.longStrBuf[0] = 10;
10.21009 +            this$static.longStrBufLen = 1;
10.21010 +            state = 15;
10.21011 +            break stateloop;
10.21012 +          case 10:
10.21013 +            this$static.nextCharOnNewLine = true;
10.21014 +            this$static.longStrBuf[0] = 10;
10.21015 +            this$static.longStrBufLen = 1;
10.21016 +            state = 15;
10.21017 +            continue stateloop;
10.21018 +          case 0:
10.21019 +            c = 65533;
10.21020 +          default:if (c >= 65 && c <= 90) {
10.21021 +              c += 32;
10.21022 +            }
10.21023 +
10.21024 +            if (c >= 97 && c <= 122) {
10.21025 +              this$static.endTag = true;
10.21026 +              this$static.strBuf[0] = c;
10.21027 +              this$static.strBufLen = 1;
10.21028 +              state = 6;
10.21029 +              continue stateloop;
10.21030 +            }
10.21031 +             else {
10.21032 +              this$static.longStrBuf[0] = c;
10.21033 +              this$static.longStrBufLen = 1;
10.21034 +              state = 15;
10.21035 +              continue stateloop;
10.21036 +            }
10.21037 +
10.21038 +        }
10.21039 +
10.21040 +      case 1:
10.21041 +        rcdataloop: for (;;) {
10.21042 +          if (reconsume) {
10.21043 +            reconsume = false;
10.21044 +          }
10.21045 +           else {
10.21046 +            if (++pos == endPos) {
10.21047 +              break stateloop;
10.21048 +            }
10.21049 +            c = $checkChar(this$static, buf, pos);
10.21050 +          }
10.21051 +          switch (c) {
10.21052 +            case 38:
10.21053 +              $flushChars(this$static, buf, pos);
10.21054 +              this$static.strBuf[0] = c;
10.21055 +              this$static.strBufLen = 1;
10.21056 +              this$static.additional = 0;
10.21057 +              returnState = state;
10.21058 +              state = 42;
10.21059 +              continue stateloop;
10.21060 +            case 60:
10.21061 +              $flushChars(this$static, buf, pos);
10.21062 +              returnState = state;
10.21063 +              state = 53;
10.21064 +              continue stateloop;
10.21065 +            case 0:
10.21066 +              $emitReplacementCharacter(this$static, buf, pos);
10.21067 +              continue;
10.21068 +            case 13:
10.21069 +              $emitCarriageReturn(this$static, buf, pos);
10.21070 +              break stateloop;
10.21071 +            case 10:
10.21072 +              this$static.nextCharOnNewLine = true;
10.21073 +            default:continue;
10.21074 +          }
10.21075 +        }
10.21076 +
10.21077 +    }
10.21078 +  }
10.21079 +  $flushChars(this$static, buf, pos);
10.21080 +  this$static.stateSave = state;
10.21081 +  this$static.returnStateSave = returnState;
10.21082 +  return pos;
10.21083 +}
10.21084 +
10.21085 +function $tokenizeBuffer(this$static, buffer){
10.21086 +  var pos, returnState, start, state;
10.21087 +  state = this$static.stateSave;
10.21088 +  returnState = this$static.returnStateSave;
10.21089 +  this$static.shouldSuspend = false;
10.21090 +  this$static.lastCR = false;
10.21091 +  start = buffer.start;
10.21092 +  pos = start - 1;
10.21093 +  switch (state) {
10.21094 +    case 0:
10.21095 +    case 1:
10.21096 +    case 2:
10.21097 +    case 3:
10.21098 +    case 50:
10.21099 +    case 56:
10.21100 +    case 54:
10.21101 +    case 55:
10.21102 +    case 57:
10.21103 +    case 58:
10.21104 +      this$static.cstart = start;
10.21105 +      break;
10.21106 +    default:this$static.cstart = 2147483647;
10.21107 +  }
10.21108 +  pos = $stateLoop(this$static, state, 0, pos, buffer.buffer, false, returnState, buffer.end);
10.21109 +  if (pos == buffer.end) {
10.21110 +    buffer.start = pos;
10.21111 +  }
10.21112 +   else {
10.21113 +    buffer.start = pos + 1;
10.21114 +  }
10.21115 +  return this$static.lastCR;
10.21116 +}
10.21117 +
10.21118 +function getClass_56(){
10.21119 +  return Lnu_validator_htmlparser_impl_Tokenizer_2_classLit;
10.21120 +}
10.21121 +
10.21122 +function newAsciiLowerCaseStringFromString(str){
10.21123 +  var buf, c, i;
10.21124 +  if (str == null) {
10.21125 +    return null;
10.21126 +  }
10.21127 +  buf = initDim(_3C_classLit, 42, -1, str.length, 1);
10.21128 +  for (i = 0; i < str.length; ++i) {
10.21129 +    c = str.charCodeAt(i);
10.21130 +    if (c >= 65 && c <= 90) {
10.21131 +      c += 32;
10.21132 +    }
10.21133 +    buf[i] = c;
10.21134 +  }
10.21135 +  return String.fromCharCode.apply(null, buf);
10.21136 +}
10.21137 +
10.21138 +function Tokenizer(){
10.21139 +}
10.21140 +
10.21141 +_ = Tokenizer.prototype = new Object_0();
10.21142 +_.getClass$ = getClass_56;
10.21143 +_.typeId$ = 0;
10.21144 +_.additional = 0;
10.21145 +_.astralChar = null;
10.21146 +_.attributeName = null;
10.21147 +_.attributes = null;
10.21148 +_.bmpChar = null;
10.21149 +_.candidate = 0;
10.21150 +_.confident = false;
10.21151 +_.contentModelElement = null;
10.21152 +_.contentModelElementNameAsArray = null;
10.21153 +_.cstart = 0;
10.21154 +_.doctypeName = null;
10.21155 +_.endTag = false;
10.21156 +_.entCol = 0;
10.21157 +_.forceQuirks = false;
10.21158 +_.hi = 0;
10.21159 +_.html4 = false;
10.21160 +_.html4ModeCompatibleWithXhtml1Schemata = false;
10.21161 +_.index = 0;
10.21162 +_.lastCR = false;
10.21163 +_.lo = 0;
10.21164 +_.longStrBuf = null;
10.21165 +_.longStrBufLen = 0;
10.21166 +_.mappingLangToXmlLang = 0;
10.21167 +_.metaBoundaryPassed = false;
10.21168 +_.newAttributesEachTime = false;
10.21169 +_.prevValue = 0;
10.21170 +_.publicIdentifier = null;
10.21171 +_.returnStateSave = 0;
10.21172 +_.seenDigits = false;
10.21173 +_.shouldSuspend = false;
10.21174 +_.stateSave = 0;
10.21175 +_.strBuf = null;
10.21176 +_.strBufLen = 0;
10.21177 +_.strBufMark = 0;
10.21178 +_.systemIdentifier = null;
10.21179 +_.tagName = null;
10.21180 +_.tokenHandler = null;
10.21181 +_.value = 0;
10.21182 +_.wantsComments = false;
10.21183 +var CDATA_LSQB, IFRAME_ARR, LF, LT_GT, LT_SOLIDUS, NOEMBED_ARR, NOFRAMES_ARR, NOSCRIPT_ARR, OCTYPE, PLAINTEXT_ARR, REPLACEMENT_CHARACTER, RSQB_RSQB, SCRIPT_ARR, SPACE, STYLE_ARR, TEXTAREA_ARR, TITLE_ARR, UBLIC, XMP_ARR, YSTEM;
10.21184 +function $clinit_90(){
10.21185 +  $clinit_90 = nullMethod;
10.21186 +  $clinit_97();
10.21187 +}
10.21188 +
10.21189 +function $ErrorReportingTokenizer(this$static, tokenHandler){
10.21190 +  $clinit_90();
10.21191 +  this$static.contentSpacePolicy = ($clinit_80() , ALTER_INFOSET);
10.21192 +  this$static.commentPolicy = ALTER_INFOSET;
10.21193 +  this$static.xmlnsPolicy = ALTER_INFOSET;
10.21194 +  this$static.namePolicy = ALTER_INFOSET;
10.21195 +  this$static.tokenHandler = tokenHandler;
10.21196 +  this$static.newAttributesEachTime = false;
10.21197 +  this$static.bmpChar = initDim(_3C_classLit, 42, -1, 1, 1);
10.21198 +  this$static.astralChar = initDim(_3C_classLit, 42, -1, 2, 1);
10.21199 +  this$static.contentNonXmlCharPolicy = ALTER_INFOSET;
10.21200 +  return this$static;
10.21201 +}
10.21202 +
10.21203 +function $checkChar(this$static, buf, pos){
10.21204 +  var c, intVal;
10.21205 +  this$static.linePrev = this$static.line;
10.21206 +  this$static.colPrev = this$static.col;
10.21207 +  if (this$static.nextCharOnNewLine) {
10.21208 +    ++this$static.line;
10.21209 +    this$static.col = 1;
10.21210 +    this$static.nextCharOnNewLine = false;
10.21211 +  }
10.21212 +   else {
10.21213 +    ++this$static.col;
10.21214 +  }
10.21215 +  c = buf[pos];
10.21216 +  if (!this$static.confident && !this$static.alreadyComplainedAboutNonAscii && c > 127) {
10.21217 +    this$static.alreadyComplainedAboutNonAscii = true;
10.21218 +  }
10.21219 +  switch (c) {
10.21220 +    case 0:
10.21221 +    case 9:
10.21222 +    case 13:
10.21223 +    case 10:
10.21224 +      break;
10.21225 +    case 12:
10.21226 +      if (this$static.contentNonXmlCharPolicy == ($clinit_80() , FATAL)) {
10.21227 +        $fatal(this$static, 'This document is not mappable to XML 1.0 without data loss due to ' + $toUPlusString(c) + ' which is not a legal XML 1.0 character.');
10.21228 +      }
10.21229 +       else {
10.21230 +        if (this$static.contentNonXmlCharPolicy == ALTER_INFOSET) {
10.21231 +          c = buf[pos] = 32;
10.21232 +        }
10.21233 +        'This document is not mappable to XML 1.0 without data loss due to ' + $toUPlusString(c) + ' which is not a legal XML 1.0 character.';
10.21234 +      }
10.21235 +
10.21236 +      break;
10.21237 +    default:if ((c & 64512) == 56320) {
10.21238 +        if ((this$static.prev & 64512) == 55296) {
10.21239 +          intVal = (this$static.prev << 10) + c + -56613888;
10.21240 +          if (intVal >= 983040 && intVal <= 1048573 || intVal >= 1048576 && intVal <= 1114109) {
10.21241 +            $warnAboutPrivateUseChar(this$static);
10.21242 +          }
10.21243 +        }
10.21244 +      }
10.21245 +       else if (c < 32 || (c & 65534) == 65534) {
10.21246 +        switch (this$static.contentNonXmlCharPolicy.ordinal) {
10.21247 +          case 1:
10.21248 +            $fatal(this$static, 'Forbidden code point ' + $toUPlusString(c) + '.');
10.21249 +            break;
10.21250 +          case 2:
10.21251 +            c = buf[pos] = 65533;
10.21252 +          case 0:
10.21253 +            'Forbidden code point ' + $toUPlusString(c) + '.';
10.21254 +        }
10.21255 +      }
10.21256 +       else if (c >= 127 && c <= 159 || c >= 64976 && c <= 64991) {
10.21257 +        'Forbidden code point ' + $toUPlusString(c) + '.';
10.21258 +      }
10.21259 +       else if (c >= 57344 && c <= 63743) {
10.21260 +        $warnAboutPrivateUseChar(this$static);
10.21261 +      }
10.21262 +
10.21263 +  }
10.21264 +  this$static.prev = c;
10.21265 +  return c;
10.21266 +}
10.21267 +
10.21268 +function $errLtOrEqualsInUnquotedAttributeOrNull(c){
10.21269 +  switch (c) {
10.21270 +    case 61:
10.21271 +      return;
10.21272 +    case 60:
10.21273 +      return;
10.21274 +  }
10.21275 +}
10.21276 +
10.21277 +function $flushChars(this$static, buf, pos){
10.21278 +  var currCol, currLine;
10.21279 +  if (pos > this$static.cstart) {
10.21280 +    currLine = this$static.line;
10.21281 +    currCol = this$static.col;
10.21282 +    this$static.line = this$static.linePrev;
10.21283 +    this$static.col = this$static.colPrev;
10.21284 +    $characters(this$static.tokenHandler, buf, this$static.cstart, pos - this$static.cstart);
10.21285 +    this$static.line = currLine;
10.21286 +    this$static.col = currCol;
10.21287 +  }
10.21288 +  this$static.cstart = 2147483647;
10.21289 +}
10.21290 +
10.21291 +function $getColumnNumber(this$static){
10.21292 +  if (this$static.col > 0) {
10.21293 +    return this$static.col;
10.21294 +  }
10.21295 +   else {
10.21296 +    return -1;
10.21297 +  }
10.21298 +}
10.21299 +
10.21300 +function $getLineNumber(this$static){
10.21301 +  if (this$static.line > 0) {
10.21302 +    return this$static.line;
10.21303 +  }
10.21304 +   else {
10.21305 +    return -1;
10.21306 +  }
10.21307 +}
10.21308 +
10.21309 +function $toUPlusString(c){
10.21310 +  var hexString;
10.21311 +  hexString = toPowerOfTwoString(c, 4);
10.21312 +  switch (hexString.length) {
10.21313 +    case 1:
10.21314 +      return 'U+000' + hexString;
10.21315 +    case 2:
10.21316 +      return 'U+00' + hexString;
10.21317 +    case 3:
10.21318 +      return 'U+0' + hexString;
10.21319 +    case 4:
10.21320 +      return 'U+' + hexString;
10.21321 +    default:throw $RuntimeException(new RuntimeException(), 'Unreachable.');
10.21322 +  }
10.21323 +}
10.21324 +
10.21325 +function $warnAboutPrivateUseChar(this$static){
10.21326 +  if (!this$static.alreadyWarnedAboutPrivateUseCharacters) {
10.21327 +    this$static.alreadyWarnedAboutPrivateUseCharacters = true;
10.21328 +  }
10.21329 +}
10.21330 +
10.21331 +function getClass_52(){
10.21332 +  return Lnu_validator_htmlparser_impl_ErrorReportingTokenizer_2_classLit;
10.21333 +}
10.21334 +
10.21335 +function ErrorReportingTokenizer(){
10.21336 +}
10.21337 +
10.21338 +_ = ErrorReportingTokenizer.prototype = new Tokenizer();
10.21339 +_.getClass$ = getClass_52;
10.21340 +_.typeId$ = 0;
10.21341 +_.alreadyComplainedAboutNonAscii = false;
10.21342 +_.alreadyWarnedAboutPrivateUseCharacters = false;
10.21343 +_.col = 0;
10.21344 +_.colPrev = 0;
10.21345 +_.line = 0;
10.21346 +_.linePrev = 0;
10.21347 +_.nextCharOnNewLine = false;
10.21348 +_.prev = 0;
10.21349 +function $clinit_91(){
10.21350 +  $clinit_91 = nullMethod;
10.21351 +  EMPTY_ATTRIBUTENAMES = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, 0, 0);
10.21352 +  EMPTY_STRINGS = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 0, 0);
10.21353 +  EMPTY_ATTRIBUTES = $HtmlAttributes(new HtmlAttributes(), 0);
10.21354 +}
10.21355 +
10.21356 +function $HtmlAttributes(this$static, mode){
10.21357 +  $clinit_91();
10.21358 +  this$static.mode = mode;
10.21359 +  this$static.length_0 = 0;
10.21360 +  this$static.names = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, 5, 0);
10.21361 +  this$static.values = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 5, 0);
10.21362 +  this$static.xmlnsLength = 0;
10.21363 +  this$static.xmlnsNames = EMPTY_ATTRIBUTENAMES;
10.21364 +  this$static.xmlnsValues = EMPTY_STRINGS;
10.21365 +  return this$static;
10.21366 +}
10.21367 +
10.21368 +function $addAttribute(this$static, name, value, xmlnsPolicy){
10.21369 +  var newLen, newNames, newValues;
10.21370 +  name == ($clinit_87() , ID);
10.21371 +  if (name.xmlns) {
10.21372 +    if (this$static.xmlnsNames.length == this$static.xmlnsLength) {
10.21373 +      newLen = this$static.xmlnsLength == 0?2:this$static.xmlnsLength << 1;
10.21374 +      newNames = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, newLen, 0);
10.21375 +      arraycopy(this$static.xmlnsNames, 0, newNames, 0, this$static.xmlnsNames.length);
10.21376 +      this$static.xmlnsNames = newNames;
10.21377 +      newValues = initDim(_3Ljava_lang_String_2_classLit, 48, 1, newLen, 0);
10.21378 +      arraycopy(this$static.xmlnsValues, 0, newValues, 0, this$static.xmlnsValues.length);
10.21379 +      this$static.xmlnsValues = newValues;
10.21380 +    }
10.21381 +    this$static.xmlnsNames[this$static.xmlnsLength] = name;
10.21382 +    this$static.xmlnsValues[this$static.xmlnsLength] = value;
10.21383 +    ++this$static.xmlnsLength;
10.21384 +    switch (xmlnsPolicy.ordinal) {
10.21385 +      case 1:
10.21386 +        throw $SAXException(new SAXException(), 'Saw an xmlns attribute.');
10.21387 +      case 2:
10.21388 +        return;
10.21389 +    }
10.21390 +  }
10.21391 +  if (this$static.names.length == this$static.length_0) {
10.21392 +    newLen = this$static.length_0 << 1;
10.21393 +    newNames = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, newLen, 0);
10.21394 +    arraycopy(this$static.names, 0, newNames, 0, this$static.names.length);
10.21395 +    this$static.names = newNames;
10.21396 +    newValues = initDim(_3Ljava_lang_String_2_classLit, 48, 1, newLen, 0);
10.21397 +    arraycopy(this$static.values, 0, newValues, 0, this$static.values.length);
10.21398 +    this$static.values = newValues;
10.21399 +  }
10.21400 +  this$static.names[this$static.length_0] = name;
10.21401 +  this$static.values[this$static.length_0] = value;
10.21402 +  ++this$static.length_0;
10.21403 +}
10.21404 +
10.21405 +function $clear_0(this$static, m){
10.21406 +  var i;
10.21407 +  for (i = 0; i < this$static.length_0; ++i) {
10.21408 +    setCheck(this$static.names, i, null);
10.21409 +    setCheck(this$static.values, i, null);
10.21410 +  }
10.21411 +  this$static.length_0 = 0;
10.21412 +  this$static.mode = m;
10.21413 +  for (i = 0; i < this$static.xmlnsLength; ++i) {
10.21414 +    setCheck(this$static.xmlnsNames, i, null);
10.21415 +    setCheck(this$static.xmlnsValues, i, null);
10.21416 +  }
10.21417 +  this$static.xmlnsLength = 0;
10.21418 +}
10.21419 +
10.21420 +function $clearWithoutReleasingContents(this$static){
10.21421 +  var i;
10.21422 +  for (i = 0; i < this$static.length_0; ++i) {
10.21423 +    setCheck(this$static.names, i, null);
10.21424 +    setCheck(this$static.values, i, null);
10.21425 +  }
10.21426 +  this$static.length_0 = 0;
10.21427 +}
10.21428 +
10.21429 +function $cloneAttributes(this$static){
10.21430 +  var clone, i;
10.21431 +  clone = $HtmlAttributes(new HtmlAttributes(), 0);
10.21432 +  for (i = 0; i < this$static.length_0; ++i) {
10.21433 +    $addAttribute(clone, this$static.names[i], this$static.values[i], ($clinit_80() , ALLOW));
10.21434 +  }
10.21435 +  for (i = 0; i < this$static.xmlnsLength; ++i) {
10.21436 +    $addAttribute(clone, this$static.xmlnsNames[i], this$static.xmlnsValues[i], ($clinit_80() , ALLOW));
10.21437 +  }
10.21438 +  return clone;
10.21439 +}
10.21440 +
10.21441 +function $contains(this$static, name){
10.21442 +  var i;
10.21443 +  for (i = 0; i < this$static.length_0; ++i) {
10.21444 +    if (name.local[0] == this$static.names[i].local[0]) {
10.21445 +      return true;
10.21446 +    }
10.21447 +  }
10.21448 +  for (i = 0; i < this$static.xmlnsLength; ++i) {
10.21449 +    if (name.local[0] == this$static.xmlnsNames[i].local[0]) {
10.21450 +      return true;
10.21451 +    }
10.21452 +  }
10.21453 +  return false;
10.21454 +}
10.21455 +
10.21456 +function $getAttributeName(this$static, index){
10.21457 +  if (index < this$static.length_0 && index >= 0) {
10.21458 +    return this$static.names[index];
10.21459 +  }
10.21460 +   else {
10.21461 +    return null;
10.21462 +  }
10.21463 +}
10.21464 +
10.21465 +function $getIndex(this$static, name){
10.21466 +  var i;
10.21467 +  for (i = 0; i < this$static.length_0; ++i) {
10.21468 +    if (this$static.names[i] == name) {
10.21469 +      return i;
10.21470 +    }
10.21471 +  }
10.21472 +  return -1;
10.21473 +}
10.21474 +
10.21475 +function $getLocalName(this$static, index){
10.21476 +  if (index < this$static.length_0 && index >= 0) {
10.21477 +    return this$static.names[index].local[this$static.mode];
10.21478 +  }
10.21479 +   else {
10.21480 +    return null;
10.21481 +  }
10.21482 +}
10.21483 +
10.21484 +function $getURI(this$static, index){
10.21485 +  if (index < this$static.length_0 && index >= 0) {
10.21486 +    return this$static.names[index].uri[this$static.mode];
10.21487 +  }
10.21488 +   else {
10.21489 +    return null;
10.21490 +  }
10.21491 +}
10.21492 +
10.21493 +function $getValue(this$static, index){
10.21494 +  if (index < this$static.length_0 && index >= 0) {
10.21495 +    return this$static.values[index];
10.21496 +  }
10.21497 +   else {
10.21498 +    return null;
10.21499 +  }
10.21500 +}
10.21501 +
10.21502 +function $getValue_0(this$static, name){
10.21503 +  var index;
10.21504 +  index = $getIndex(this$static, name);
10.21505 +  if (index == -1) {
10.21506 +    return null;
10.21507 +  }
10.21508 +   else {
10.21509 +    return $getValue(this$static, index);
10.21510 +  }
10.21511 +}
10.21512 +
10.21513 +function $processNonNcNames(this$static, treeBuilder, namePolicy){
10.21514 +  var attName, i, name;
10.21515 +  for (i = 0; i < this$static.length_0; ++i) {
10.21516 +    attName = this$static.names[i];
10.21517 +    if (!attName.ncname[this$static.mode]) {
10.21518 +      name = attName.local[this$static.mode];
10.21519 +      switch (namePolicy.ordinal) {
10.21520 +        case 2:
10.21521 +          this$static.names[i] = ($clinit_87() , $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL(escapeName(name)), ALL_NO_PREFIX, ALL_NCNAME, false));
10.21522 +        case 0:
10.21523 +          attName != ($clinit_87() , XML_LANG);
10.21524 +          break;
10.21525 +        case 1:
10.21526 +          $fatal_1(treeBuilder, 'Attribute \u201C' + name + '\u201D is not serializable as XML 1.0.');
10.21527 +      }
10.21528 +    }
10.21529 +  }
10.21530 +}
10.21531 +
10.21532 +function getClass_53(){
10.21533 +  return Lnu_validator_htmlparser_impl_HtmlAttributes_2_classLit;
10.21534 +}
10.21535 +
10.21536 +function HtmlAttributes(){
10.21537 +}
10.21538 +
10.21539 +_ = HtmlAttributes.prototype = new Object_0();
10.21540 +_.getClass$ = getClass_53;
10.21541 +_.typeId$ = 0;
10.21542 +_.length_0 = 0;
10.21543 +_.mode = 0;
10.21544 +_.names = null;
10.21545 +_.values = null;
10.21546 +_.xmlnsLength = 0;
10.21547 +_.xmlnsNames = null;
10.21548 +_.xmlnsValues = null;
10.21549 +var EMPTY_ATTRIBUTENAMES, EMPTY_ATTRIBUTES, EMPTY_STRINGS;
10.21550 +function $LocatorImpl(this$static, locator){
10.21551 +  $getColumnNumber(locator);
10.21552 +  $getLineNumber(locator);
10.21553 +  return this$static;
10.21554 +}
10.21555 +
10.21556 +function getClass_54(){
10.21557 +  return Lnu_validator_htmlparser_impl_LocatorImpl_2_classLit;
10.21558 +}
10.21559 +
10.21560 +function LocatorImpl(){
10.21561 +}
10.21562 +
10.21563 +_ = LocatorImpl.prototype = new Object_0();
10.21564 +_.getClass$ = getClass_54;
10.21565 +_.typeId$ = 0;
10.21566 +function $clinit_93(){
10.21567 +  $clinit_93 = nullMethod;
10.21568 +  HEX_TABLE = $toCharArray('0123456789ABCDEF');
10.21569 +}
10.21570 +
10.21571 +function appendUHexTo(sb, c){
10.21572 +  var i;
10.21573 +  $append_0(sb, 'U');
10.21574 +  for (i = 0; i < 6; ++i) {
10.21575 +    $append_0(sb, String.fromCharCode(HEX_TABLE[(c & 15728640) >> 20]));
10.21576 +    c <<= 4;
10.21577 +  }
10.21578 +}
10.21579 +
10.21580 +function escapeName(str){
10.21581 +  $clinit_93();
10.21582 +  var c, i, next, sb;
10.21583 +  sb = $StringBuilder(new StringBuilder());
10.21584 +  for (i = 0; i < str.length; ++i) {
10.21585 +    c = str.charCodeAt(i);
10.21586 +    if ((c & 64512) == 55296) {
10.21587 +      next = str.charCodeAt(++i);
10.21588 +      appendUHexTo(sb, (c << 10) + next + -56613888);
10.21589 +    }
10.21590 +     else if (i == 0 && !(c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95)) {
10.21591 +      appendUHexTo(sb, c);
10.21592 +    }
10.21593 +     else if (i != 0 && !(c >= 48 && c <= 57 || c >= 1632 && c <= 1641 || c >= 1776 && c <= 1785 || c >= 2406 && c <= 2415 || c >= 2534 && c <= 2543 || c >= 2662 && c <= 2671 || c >= 2790 && c <= 2799 || c >= 2918 && c <= 2927 || c >= 3047 && c <= 3055 || c >= 3174 && c <= 3183 || c >= 3302 && c <= 3311 || c >= 3430 && c <= 3439 || c >= 3664 && c <= 3673 || c >= 3792 && c <= 3801 || c >= 3872 && c <= 3881 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95 || c == 46 || c == 45 || c >= 768 && c <= 837 || c >= 864 && c <= 865 || c >= 1155 && c <= 1158 || c >= 1425 && c <= 1441 || c >= 1443 && c <= 1465 || c >= 1467 && c <= 1469 || c == 1471 || c >= 1473 && c <= 1474 || c == 1476 || c >= 1611 && c <= 1618 || c == 1648 || c >= 1750 && c <= 1756 || c >= 1757 && c <= 1759 || c >= 1760 && c <= 1764 || c >= 1767 && c <= 1768 || c >= 1770 && c <= 1773 || c >= 2305 && c <= 2307 || c == 2364 || c >= 2366 && c <= 2380 || c == 2381 || c >= 2385 && c <= 2388 || c >= 2402 && c <= 2403 || c >= 2433 && c <= 2435 || c == 2492 || c == 2494 || c == 2495 || c >= 2496 && c <= 2500 || c >= 2503 && c <= 2504 || c >= 2507 && c <= 2509 || c == 2519 || c >= 2530 && c <= 2531 || c == 2562 || c == 2620 || c == 2622 || c == 2623 || c >= 2624 && c <= 2626 || c >= 2631 && c <= 2632 || c >= 2635 && c <= 2637 || c >= 2672 && c <= 2673 || c >= 2689 && c <= 2691 || c == 2748 || c >= 2750 && c <= 2757 || c >= 2759 && c <= 2761 || c >= 2763 && c <= 2765 || c >= 2817 && c <= 2819 || c == 2876 || c >= 2878 && c <= 2883 || c >= 2887 && c <= 2888 || c >= 2891 && c <= 2893 || c >= 2902 && c <= 2903 || c >= 2946 && c <= 2947 || c >= 3006 && c <= 3010 || c >= 3014 && c <= 3016 || c >= 3018 && c <= 3021 || c == 3031 || c >= 3073 && c <= 3075 || c >= 3134 && c <= 3140 || c >= 3142 && c <= 3144 || c >= 3146 && c <= 3149 || c >= 3157 && c <= 3158 || c >= 3202 && c <= 3203 || c >= 3262 && c <= 3268 || c >= 3270 && c <= 3272 || c >= 3274 && c <= 3277 || c >= 3285 && c <= 3286 || c >= 3330 && c <= 3331 || c >= 3390 && c <= 3395 || c >= 3398 && c <= 3400 || c >= 3402 && c <= 3405 || c == 3415 || c == 3633 || c >= 3636 && c <= 3642 || c >= 3655 && c <= 3662 || c == 3761 || c >= 3764 && c <= 3769 || c >= 3771 && c <= 3772 || c >= 3784 && c <= 3789 || c >= 3864 && c <= 3865 || c == 3893 || c == 3895 || c == 3897 || c == 3902 || c == 3903 || c >= 3953 && c <= 3972 || c >= 3974 && c <= 3979 || c >= 3984 && c <= 3989 || c == 3991 || c >= 3993 && c <= 4013 || c >= 4017 && c <= 4023 || c == 4025 || c >= 8400 && c <= 8412 || c == 8417 || c >= 12330 && c <= 12335 || c == 12441 || c == 12442 || c == 183 || c == 720 || c == 721 || c == 903 || c == 1600 || c == 3654 || c == 3782 || c == 12293 || c >= 12337 && c <= 12341 || c >= 12445 && c <= 12446 || c >= 12540 && c <= 12542)) {
10.21594 +      appendUHexTo(sb, c);
10.21595 +    }
10.21596 +     else {
10.21597 +      $append_0(sb, String.fromCharCode(c));
10.21598 +    }
10.21599 +  }
10.21600 +  return String($toString_0(sb));
10.21601 +}
10.21602 +
10.21603 +function isNCName(str){
10.21604 +  $clinit_93();
10.21605 +  var i, len;
10.21606 +  if (str == null) {
10.21607 +    return false;
10.21608 +  }
10.21609 +   else {
10.21610 +    len = str.length;
10.21611 +    switch (len) {
10.21612 +      case 0:
10.21613 +        return false;
10.21614 +      case 1:
10.21615 +        return isNCNameStart(str.charCodeAt(0));
10.21616 +      default:if (!isNCNameStart(str.charCodeAt(0))) {
10.21617 +          return false;
10.21618 +        }
10.21619 +
10.21620 +        for (i = 1; i < len; ++i) {
10.21621 +          if (!isNCNameTrail(str.charCodeAt(i))) {
10.21622 +            return false;
10.21623 +          }
10.21624 +        }
10.21625 +
10.21626 +    }
10.21627 +    return true;
10.21628 +  }
10.21629 +}
10.21630 +
10.21631 +function isNCNameStart(c){
10.21632 +  return c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95;
10.21633 +}
10.21634 +
10.21635 +function isNCNameTrail(c){
10.21636 +  return c >= 48 && c <= 57 || c >= 1632 && c <= 1641 || c >= 1776 && c <= 1785 || c >= 2406 && c <= 2415 || c >= 2534 && c <= 2543 || c >= 2662 && c <= 2671 || c >= 2790 && c <= 2799 || c >= 2918 && c <= 2927 || c >= 3047 && c <= 3055 || c >= 3174 && c <= 3183 || c >= 3302 && c <= 3311 || c >= 3430 && c <= 3439 || c >= 3664 && c <= 3673 || c >= 3792 && c <= 3801 || c >= 3872 && c <= 3881 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95 || c == 46 || c == 45 || c >= 768 && c <= 837 || c >= 864 && c <= 865 || c >= 1155 && c <= 1158 || c >= 1425 && c <= 1441 || c >= 1443 && c <= 1465 || c >= 1467 && c <= 1469 || c == 1471 || c >= 1473 && c <= 1474 || c == 1476 || c >= 1611 && c <= 1618 || c == 1648 || c >= 1750 && c <= 1756 || c >= 1757 && c <= 1759 || c >= 1760 && c <= 1764 || c >= 1767 && c <= 1768 || c >= 1770 && c <= 1773 || c >= 2305 && c <= 2307 || c == 2364 || c >= 2366 && c <= 2380 || c == 2381 || c >= 2385 && c <= 2388 || c >= 2402 && c <= 2403 || c >= 2433 && c <= 2435 || c == 2492 || c == 2494 || c == 2495 || c >= 2496 && c <= 2500 || c >= 2503 && c <= 2504 || c >= 2507 && c <= 2509 || c == 2519 || c >= 2530 && c <= 2531 || c == 2562 || c == 2620 || c == 2622 || c == 2623 || c >= 2624 && c <= 2626 || c >= 2631 && c <= 2632 || c >= 2635 && c <= 2637 || c >= 2672 && c <= 2673 || c >= 2689 && c <= 2691 || c == 2748 || c >= 2750 && c <= 2757 || c >= 2759 && c <= 2761 || c >= 2763 && c <= 2765 || c >= 2817 && c <= 2819 || c == 2876 || c >= 2878 && c <= 2883 || c >= 2887 && c <= 2888 || c >= 2891 && c <= 2893 || c >= 2902 && c <= 2903 || c >= 2946 && c <= 2947 || c >= 3006 && c <= 3010 || c >= 3014 && c <= 3016 || c >= 3018 && c <= 3021 || c == 3031 || c >= 3073 && c <= 3075 || c >= 3134 && c <= 3140 || c >= 3142 && c <= 3144 || c >= 3146 && c <= 3149 || c >= 3157 && c <= 3158 || c >= 3202 && c <= 3203 || c >= 3262 && c <= 3268 || c >= 3270 && c <= 3272 || c >= 3274 && c <= 3277 || c >= 3285 && c <= 3286 || c >= 3330 && c <= 3331 || c >= 3390 && c <= 3395 || c >= 3398 && c <= 3400 || c >= 3402 && c <= 3405 || c == 3415 || c == 3633 || c >= 3636 && c <= 3642 || c >= 3655 && c <= 3662 || c == 3761 || c >= 3764 && c <= 3769 || c >= 3771 && c <= 3772 || c >= 3784 && c <= 3789 || c >= 3864 && c <= 3865 || c == 3893 || c == 3895 || c == 3897 || c == 3902 || c == 3903 || c >= 3953 && c <= 3972 || c >= 3974 && c <= 3979 || c >= 3984 && c <= 3989 || c == 3991 || c >= 3993 && c <= 4013 || c >= 4017 && c <= 4023 || c == 4025 || c >= 8400 && c <= 8412 || c == 8417 || c >= 12330 && c <= 12335 || c == 12441 || c == 12442 || c == 183 || c == 720 || c == 721 || c == 903 || c == 1600 || c == 3654 || c == 3782 || c == 12293 || c >= 12337 && c <= 12341 || c >= 12445 && c <= 12446 || c >= 12540 && c <= 12542;
10.21637 +}
10.21638 +
10.21639 +var HEX_TABLE;
10.21640 +function $clinit_94(){
10.21641 +  $clinit_94 = nullMethod;
10.21642 +  NAMES = initValues(_3_3C_classLit, 52, 12, [$toCharArray('AElig'), $toCharArray('AElig;'), $toCharArray('AMP'), $toCharArray('AMP;'), $toCharArray('Aacute'), $toCharArray('Aacute;'), $toCharArray('Abreve;'), $toCharArray('Acirc'), $toCharArray('Acirc;'), $toCharArray('Acy;'), $toCharArray('Afr;'), $toCharArray('Agrave'), $toCharArray('Agrave;'), $toCharArray('Alpha;'), $toCharArray('Amacr;'), $toCharArray('And;'), $toCharArray('Aogon;'), $toCharArray('Aopf;'), $toCharArray('ApplyFunction;'), $toCharArray('Aring'), $toCharArray('Aring;'), $toCharArray('Ascr;'), $toCharArray('Assign;'), $toCharArray('Atilde'), $toCharArray('Atilde;'), $toCharArray('Auml'), $toCharArray('Auml;'), $toCharArray('Backslash;'), $toCharArray('Barv;'), $toCharArray('Barwed;'), $toCharArray('Bcy;'), $toCharArray('Because;'), $toCharArray('Bernoullis;'), $toCharArray('Beta;'), $toCharArray('Bfr;'), $toCharArray('Bopf;'), $toCharArray('Breve;'), $toCharArray('Bscr;'), $toCharArray('Bumpeq;'), $toCharArray('CHcy;'), $toCharArray('COPY'), $toCharArray('COPY;'), $toCharArray('Cacute;'), $toCharArray('Cap;'), $toCharArray('CapitalDifferentialD;'), $toCharArray('Cayleys;'), $toCharArray('Ccaron;'), $toCharArray('Ccedil'), $toCharArray('Ccedil;'), $toCharArray('Ccirc;'), $toCharArray('Cconint;'), $toCharArray('Cdot;'), $toCharArray('Cedilla;'), $toCharArray('CenterDot;'), $toCharArray('Cfr;'), $toCharArray('Chi;'), $toCharArray('CircleDot;'), $toCharArray('CircleMinus;'), $toCharArray('CirclePlus;'), $toCharArray('CircleTimes;'), $toCharArray('ClockwiseContourIntegral;'), $toCharArray('CloseCurlyDoubleQuote;'), $toCharArray('CloseCurlyQuote;'), $toCharArray('Colon;'), $toCharArray('Colone;'), $toCharArray('Congruent;'), $toCharArray('Conint;'), $toCharArray('ContourIntegral;'), $toCharArray('Copf;'), $toCharArray('Coproduct;'), $toCharArray('CounterClockwiseContourIntegral;'), $toCharArray('Cross;'), $toCharArray('Cscr;'), $toCharArray('Cup;'), $toCharArray('CupCap;'), $toCharArray('DD;'), $toCharArray('DDotrahd;'), $toCharArray('DJcy;'), $toCharArray('DScy;'), $toCharArray('DZcy;'), $toCharArray('Dagger;'), $toCharArray('Darr;'), $toCharArray('Dashv;'), $toCharArray('Dcaron;'), $toCharArray('Dcy;'), $toCharArray('Del;'), $toCharArray('Delta;'), $toCharArray('Dfr;'), $toCharArray('DiacriticalAcute;'), $toCharArray('DiacriticalDot;'), $toCharArray('DiacriticalDoubleAcute;'), $toCharArray('DiacriticalGrave;'), $toCharArray('DiacriticalTilde;'), $toCharArray('Diamond;'), $toCharArray('DifferentialD;'), $toCharArray('Dopf;'), $toCharArray('Dot;'), $toCharArray('DotDot;'), $toCharArray('DotEqual;'), $toCharArray('DoubleContourIntegral;'), $toCharArray('DoubleDot;'), $toCharArray('DoubleDownArrow;'), $toCharArray('DoubleLeftArrow;'), $toCharArray('DoubleLeftRightArrow;'), $toCharArray('DoubleLeftTee;'), $toCharArray('DoubleLongLeftArrow;'), $toCharArray('DoubleLongLeftRightArrow;'), $toCharArray('DoubleLongRightArrow;'), $toCharArray('DoubleRightArrow;'), $toCharArray('DoubleRightTee;'), $toCharArray('DoubleUpArrow;'), $toCharArray('DoubleUpDownArrow;'), $toCharArray('DoubleVerticalBar;'), $toCharArray('DownArrow;'), $toCharArray('DownArrowBar;'), $toCharArray('DownArrowUpArrow;'), $toCharArray('DownBreve;'), $toCharArray('DownLeftRightVector;'), $toCharArray('DownLeftTeeVector;'), $toCharArray('DownLeftVector;'), $toCharArray('DownLeftVectorBar;'), $toCharArray('DownRightTeeVector;'), $toCharArray('DownRightVector;'), $toCharArray('DownRightVectorBar;'), $toCharArray('DownTee;'), $toCharArray('DownTeeArrow;'), $toCharArray('Downarrow;'), $toCharArray('Dscr;'), $toCharArray('Dstrok;'), $toCharArray('ENG;'), $toCharArray('ETH'), $toCharArray('ETH;'), $toCharArray('Eacute'), $toCharArray('Eacute;'), $toCharArray('Ecaron;'), $toCharArray('Ecirc'), $toCharArray('Ecirc;'), $toCharArray('Ecy;'), $toCharArray('Edot;'), $toCharArray('Efr;'), $toCharArray('Egrave'), $toCharArray('Egrave;'), $toCharArray('Element;'), $toCharArray('Emacr;'), $toCharArray('EmptySmallSquare;'), $toCharArray('EmptyVerySmallSquare;'), $toCharArray('Eogon;'), $toCharArray('Eopf;'), $toCharArray('Epsilon;'), $toCharArray('Equal;'), $toCharArray('EqualTilde;'), $toCharArray('Equilibrium;'), $toCharArray('Escr;'), $toCharArray('Esim;'), $toCharArray('Eta;'), $toCharArray('Euml'), $toCharArray('Euml;'), $toCharArray('Exists;'), $toCharArray('ExponentialE;'), $toCharArray('Fcy;'), $toCharArray('Ffr;'), $toCharArray('FilledSmallSquare;'), $toCharArray('FilledVerySmallSquare;'), $toCharArray('Fopf;'), $toCharArray('ForAll;'), $toCharArray('Fouriertrf;'), $toCharArray('Fscr;'), $toCharArray('GJcy;'), $toCharArray('GT'), $toCharArray('GT;'), $toCharArray('Gamma;'), $toCharArray('Gammad;'), $toCharArray('Gbreve;'), $toCharArray('Gcedil;'), $toCharArray('Gcirc;'), $toCharArray('Gcy;'), $toCharArray('Gdot;'), $toCharArray('Gfr;'), $toCharArray('Gg;'), $toCharArray('Gopf;'), $toCharArray('GreaterEqual;'), $toCharArray('GreaterEqualLess;'), $toCharArray('GreaterFullEqual;'), $toCharArray('GreaterGreater;'), $toCharArray('GreaterLess;'), $toCharArray('GreaterSlantEqual;'), $toCharArray('GreaterTilde;'), $toCharArray('Gscr;'), $toCharArray('Gt;'), $toCharArray('HARDcy;'), $toCharArray('Hacek;'), $toCharArray('Hat;'), $toCharArray('Hcirc;'), $toCharArray('Hfr;'), $toCharArray('HilbertSpace;'), $toCharArray('Hopf;'), $toCharArray('HorizontalLine;'), $toCharArray('Hscr;'), $toCharArray('Hstrok;'), $toCharArray('HumpDownHump;'), $toCharArray('HumpEqual;'), $toCharArray('IEcy;'), $toCharArray('IJlig;'), $toCharArray('IOcy;'), $toCharArray('Iacute'), $toCharArray('Iacute;'), $toCharArray('Icirc'), $toCharArray('Icirc;'), $toCharArray('Icy;'), $toCharArray('Idot;'), $toCharArray('Ifr;'), $toCharArray('Igrave'), $toCharArray('Igrave;'), $toCharArray('Im;'), $toCharArray('Imacr;'), $toCharArray('ImaginaryI;'), $toCharArray('Implies;'), $toCharArray('Int;'), $toCharArray('Integral;'), $toCharArray('Intersection;'), $toCharArray('InvisibleComma;'), $toCharArray('InvisibleTimes;'), $toCharArray('Iogon;'), $toCharArray('Iopf;'), $toCharArray('Iota;'), $toCharArray('Iscr;'), $toCharArray('Itilde;'), $toCharArray('Iukcy;'), $toCharArray('Iuml'), $toCharArray('Iuml;'), $toCharArray('Jcirc;'), $toCharArray('Jcy;'), $toCharArray('Jfr;'), $toCharArray('Jopf;'), $toCharArray('Jscr;'), $toCharArray('Jsercy;'), $toCharArray('Jukcy;'), $toCharArray('KHcy;'), $toCharArray('KJcy;'), $toCharArray('Kappa;'), $toCharArray('Kcedil;'), $toCharArray('Kcy;'), $toCharArray('Kfr;'), $toCharArray('Kopf;'), $toCharArray('Kscr;'), $toCharArray('LJcy;'), $toCharArray('LT'), $toCharArray('LT;'), $toCharArray('Lacute;'), $toCharArray('Lambda;'), $toCharArray('Lang;'), $toCharArray('Laplacetrf;'), $toCharArray('Larr;'), $toCharArray('Lcaron;'), $toCharArray('Lcedil;'), $toCharArray('Lcy;'), $toCharArray('LeftAngleBracket;'), $toCharArray('LeftArrow;'), $toCharArray('LeftArrowBar;'), $toCharArray('LeftArrowRightArrow;'), $toCharArray('LeftCeiling;'), $toCharArray('LeftDoubleBracket;'), $toCharArray('LeftDownTeeVector;'), $toCharArray('LeftDownVector;'), $toCharArray('LeftDownVectorBar;'), $toCharArray('LeftFloor;'), $toCharArray('LeftRightArrow;'), $toCharArray('LeftRightVector;'), $toCharArray('LeftTee;'), $toCharArray('LeftTeeArrow;'), $toCharArray('LeftTeeVector;'), $toCharArray('LeftTriangle;'), $toCharArray('LeftTriangleBar;'), $toCharArray('LeftTriangleEqual;'), $toCharArray('LeftUpDownVector;'), $toCharArray('LeftUpTeeVector;'), $toCharArray('LeftUpVector;'), $toCharArray('LeftUpVectorBar;'), $toCharArray('LeftVector;'), $toCharArray('LeftVectorBar;'), $toCharArray('Leftarrow;'), $toCharArray('Leftrightarrow;'), $toCharArray('LessEqualGreater;'), $toCharArray('LessFullEqual;'), $toCharArray('LessGreater;'), $toCharArray('LessLess;'), $toCharArray('LessSlantEqual;'), $toCharArray('LessTilde;'), $toCharArray('Lfr;'), $toCharArray('Ll;'), $toCharArray('Lleftarrow;'), $toCharArray('Lmidot;'), $toCharArray('LongLeftArrow;'), $toCharArray('LongLeftRightArrow;'), $toCharArray('LongRightArrow;'), $toCharArray('Longleftarrow;'), $toCharArray('Longleftrightarrow;'), $toCharArray('Longrightarrow;'), $toCharArray('Lopf;'), $toCharArray('LowerLeftArrow;'), $toCharArray('LowerRightArrow;'), $toCharArray('Lscr;'), $toCharArray('Lsh;'), $toCharArray('Lstrok;'), $toCharArray('Lt;'), $toCharArray('Map;'), $toCharArray('Mcy;'), $toCharArray('MediumSpace;'), $toCharArray('Mellintrf;'), $toCharArray('Mfr;'), $toCharArray('MinusPlus;'), $toCharArray('Mopf;'), $toCharArray('Mscr;'), $toCharArray('Mu;'), $toCharArray('NJcy;'), $toCharArray('Nacute;'), $toCharArray('Ncaron;'), $toCharArray('Ncedil;'), $toCharArray('Ncy;'), $toCharArray('NegativeMediumSpace;'), $toCharArray('NegativeThickSpace;'), $toCharArray('NegativeThinSpace;'), $toCharArray('NegativeVeryThinSpace;'), $toCharArray('NestedGreaterGreater;'), $toCharArray('NestedLessLess;'), $toCharArray('NewLine;'), $toCharArray('Nfr;'), $toCharArray('NoBreak;'), $toCharArray('NonBreakingSpace;'), $toCharArray('Nopf;'), $toCharArray('Not;'), $toCharArray('NotCongruent;'), $toCharArray('NotCupCap;'), $toCharArray('NotDoubleVerticalBar;'), $toCharArray('NotElement;'), $toCharArray('NotEqual;'), $toCharArray('NotExists;'), $toCharArray('NotGreater;'), $toCharArray('NotGreaterEqual;'), $toCharArray('NotGreaterLess;'), $toCharArray('NotGreaterTilde;'), $toCharArray('NotLeftTriangle;'), $toCharArray('NotLeftTriangleEqual;'), $toCharArray('NotLess;'), $toCharArray('NotLessEqual;'), $toCharArray('NotLessGreater;'), $toCharArray('NotLessTilde;'), $toCharArray('NotPrecedes;'), $toCharArray('NotPrecedesSlantEqual;'), $toCharArray('NotReverseElement;'), $toCharArray('NotRightTriangle;'), $toCharArray('NotRightTriangleEqual;'), $toCharArray('NotSquareSubsetEqual;'), $toCharArray('NotSquareSupersetEqual;'), $toCharArray('NotSubsetEqual;'), $toCharArray('NotSucceeds;'), $toCharArray('NotSucceedsSlantEqual;'), $toCharArray('NotSupersetEqual;'), $toCharArray('NotTilde;'), $toCharArray('NotTildeEqual;'), $toCharArray('NotTildeFullEqual;'), $toCharArray('NotTildeTilde;'), $toCharArray('NotVerticalBar;'), $toCharArray('Nscr;'), $toCharArray('Ntilde'), $toCharArray('Ntilde;'), $toCharArray('Nu;'), $toCharArray('OElig;'), $toCharArray('Oacute'), $toCharArray('Oacute;'), $toCharArray('Ocirc'), $toCharArray('Ocirc;'), $toCharArray('Ocy;'), $toCharArray('Odblac;'), $toCharArray('Ofr;'), $toCharArray('Ograve'), $toCharArray('Ograve;'), $toCharArray('Omacr;'), $toCharArray('Omega;'), $toCharArray('Omicron;'), $toCharArray('Oopf;'), $toCharArray('OpenCurlyDoubleQuote;'), $toCharArray('OpenCurlyQuote;'), $toCharArray('Or;'), $toCharArray('Oscr;'), $toCharArray('Oslash'), $toCharArray('Oslash;'), $toCharArray('Otilde'), $toCharArray('Otilde;'), $toCharArray('Otimes;'), $toCharArray('Ouml'), $toCharArray('Ouml;'), $toCharArray('OverBar;'), $toCharArray('OverBrace;'), $toCharArray('OverBracket;'), $toCharArray('OverParenthesis;'), $toCharArray('PartialD;'), $toCharArray('Pcy;'), $toCharArray('Pfr;'), $toCharArray('Phi;'), $toCharArray('Pi;'), $toCharArray('PlusMinus;'), $toCharArray('Poincareplane;'), $toCharArray('Popf;'), $toCharArray('Pr;'), $toCharArray('Precedes;'), $toCharArray('PrecedesEqual;'), $toCharArray('PrecedesSlantEqual;'), $toCharArray('PrecedesTilde;'), $toCharArray('Prime;'), $toCharArray('Product;'), $toCharArray('Proportion;'), $toCharArray('Proportional;'), $toCharArray('Pscr;'), $toCharArray('Psi;'), $toCharArray('QUOT'), $toCharArray('QUOT;'), $toCharArray('Qfr;'), $toCharArray('Qopf;'), $toCharArray('Qscr;'), $toCharArray('RBarr;'), $toCharArray('REG'), $toCharArray('REG;'), $toCharArray('Racute;'), $toCharArray('Rang;'), $toCharArray('Rarr;'), $toCharArray('Rarrtl;'), $toCharArray('Rcaron;'), $toCharArray('Rcedil;'), $toCharArray('Rcy;'), $toCharArray('Re;'), $toCharArray('ReverseElement;'), $toCharArray('ReverseEquilibrium;'), $toCharArray('ReverseUpEquilibrium;'), $toCharArray('Rfr;'), $toCharArray('Rho;'), $toCharArray('RightAngleBracket;'), $toCharArray('RightArrow;'), $toCharArray('RightArrowBar;'), $toCharArray('RightArrowLeftArrow;'), $toCharArray('RightCeiling;'), $toCharArray('RightDoubleBracket;'), $toCharArray('RightDownTeeVector;'), $toCharArray('RightDownVector;'), $toCharArray('RightDownVectorBar;'), $toCharArray('RightFloor;'), $toCharArray('RightTee;'), $toCharArray('RightTeeArrow;'), $toCharArray('RightTeeVector;'), $toCharArray('RightTriangle;'), $toCharArray('RightTriangleBar;'), $toCharArray('RightTriangleEqual;'), $toCharArray('RightUpDownVector;'), $toCharArray('RightUpTeeVector;'), $toCharArray('RightUpVector;'), $toCharArray('RightUpVectorBar;'), $toCharArray('RightVector;'), $toCharArray('RightVectorBar;'), $toCharArray('Rightarrow;'), $toCharArray('Ropf;'), $toCharArray('RoundImplies;'), $toCharArray('Rrightarrow;'), $toCharArray('Rscr;'), $toCharArray('Rsh;'), $toCharArray('RuleDelayed;'), $toCharArray('SHCHcy;'), $toCharArray('SHcy;'), $toCharArray('SOFTcy;'), $toCharArray('Sacute;'), $toCharArray('Sc;'), $toCharArray('Scaron;'), $toCharArray('Scedil;'), $toCharArray('Scirc;'), $toCharArray('Scy;'), $toCharArray('Sfr;'), $toCharArray('ShortDownArrow;'), $toCharArray('ShortLeftArrow;'), $toCharArray('ShortRightArrow;'), $toCharArray('ShortUpArrow;'), $toCharArray('Sigma;'), $toCharArray('SmallCircle;'), $toCharArray('Sopf;'), $toCharArray('Sqrt;'), $toCharArray('Square;'), $toCharArray('SquareIntersection;'), $toCharArray('SquareSubset;'), $toCharArray('SquareSubsetEqual;'), $toCharArray('SquareSuperset;'), $toCharArray('SquareSupersetEqual;'), $toCharArray('SquareUnion;'), $toCharArray('Sscr;'), $toCharArray('Star;'), $toCharArray('Sub;'), $toCharArray('Subset;'), $toCharArray('SubsetEqual;'), $toCharArray('Succeeds;'), $toCharArray('SucceedsEqual;'), $toCharArray('SucceedsSlantEqual;'), $toCharArray('SucceedsTilde;'), $toCharArray('SuchThat;'), $toCharArray('Sum;'), $toCharArray('Sup;'), $toCharArray('Superset;'), $toCharArray('SupersetEqual;'), $toCharArray('Supset;'), $toCharArray('THORN'), $toCharArray('THORN;'), $toCharArray('TRADE;'), $toCharArray('TSHcy;'), $toCharArray('TScy;'), $toCharArray('Tab;'), $toCharArray('Tau;'), $toCharArray('Tcaron;'), $toCharArray('Tcedil;'), $toCharArray('Tcy;'), $toCharArray('Tfr;'), $toCharArray('Therefore;'), $toCharArray('Theta;'), $toCharArray('ThinSpace;'), $toCharArray('Tilde;'), $toCharArray('TildeEqual;'), $toCharArray('TildeFullEqual;'), $toCharArray('TildeTilde;'), $toCharArray('Topf;'), $toCharArray('TripleDot;'), $toCharArray('Tscr;'), $toCharArray('Tstrok;'), $toCharArray('Uacute'), $toCharArray('Uacute;'), $toCharArray('Uarr;'), $toCharArray('Uarrocir;'), $toCharArray('Ubrcy;'), $toCharArray('Ubreve;'), $toCharArray('Ucirc'), $toCharArray('Ucirc;'), $toCharArray('Ucy;'), $toCharArray('Udblac;'), $toCharArray('Ufr;'), $toCharArray('Ugrave'), $toCharArray('Ugrave;'), $toCharArray('Umacr;'), $toCharArray('UnderBar;'), $toCharArray('UnderBrace;'), $toCharArray('UnderBracket;'), $toCharArray('UnderParenthesis;'), $toCharArray('Union;'), $toCharArray('UnionPlus;'), $toCharArray('Uogon;'), $toCharArray('Uopf;'), $toCharArray('UpArrow;'), $toCharArray('UpArrowBar;'), $toCharArray('UpArrowDownArrow;'), $toCharArray('UpDownArrow;'), $toCharArray('UpEquilibrium;'), $toCharArray('UpTee;'), $toCharArray('UpTeeArrow;'), $toCharArray('Uparrow;'), $toCharArray('Updownarrow;'), $toCharArray('UpperLeftArrow;'), $toCharArray('UpperRightArrow;'), $toCharArray('Upsi;'), $toCharArray('Upsilon;'), $toCharArray('Uring;'), $toCharArray('Uscr;'), $toCharArray('Utilde;'), $toCharArray('Uuml'), $toCharArray('Uuml;'), $toCharArray('VDash;'), $toCharArray('Vbar;'), $toCharArray('Vcy;'), $toCharArray('Vdash;'), $toCharArray('Vdashl;'), $toCharArray('Vee;'), $toCharArray('Verbar;'), $toCharArray('Vert;'), $toCharArray('VerticalBar;'), $toCharArray('VerticalLine;'), $toCharArray('VerticalSeparator;'), $toCharArray('VerticalTilde;'), $toCharArray('VeryThinSpace;'), $toCharArray('Vfr;'), $toCharArray('Vopf;'), $toCharArray('Vscr;'), $toCharArray('Vvdash;'), $toCharArray('Wcirc;'), $toCharArray('Wedge;'), $toCharArray('Wfr;'), $toCharArray('Wopf;'), $toCharArray('Wscr;'), $toCharArray('Xfr;'), $toCharArray('Xi;'), $toCharArray('Xopf;'), $toCharArray('Xscr;'), $toCharArray('YAcy;'), $toCharArray('YIcy;'), $toCharArray('YUcy;'), $toCharArray('Yacute'), $toCharArray('Yacute;'), $toCharArray('Ycirc;'), $toCharArray('Ycy;'), $toCharArray('Yfr;'), $toCharArray('Yopf;'), $toCharArray('Yscr;'), $toCharArray('Yuml;'), $toCharArray('ZHcy;'), $toCharArray('Zacute;'), $toCharArray('Zcaron;'), $toCharArray('Zcy;'), $toCharArray('Zdot;'), $toCharArray('ZeroWidthSpace;'), $toCharArray('Zeta;'), $toCharArray('Zfr;'), $toCharArray('Zopf;'), $toCharArray('Zscr;'), $toCharArray('aacute'), $toCharArray('aacute;'), $toCharArray('abreve;'), $toCharArray('ac;'), $toCharArray('acd;'), $toCharArray('acirc'), $toCharArray('acirc;'), $toCharArray('acute'), $toCharArray('acute;'), $toCharArray('acy;'), $toCharArray('aelig'), $toCharArray('aelig;'), $toCharArray('af;'), $toCharArray('afr;'), $toCharArray('agrave'), $toCharArray('agrave;'), $toCharArray('alefsym;'), $toCharArray('aleph;'), $toCharArray('alpha;'), $toCharArray('amacr;'), $toCharArray('amalg;'), $toCharArray('amp'), $toCharArray('amp;'), $toCharArray('and;'), $toCharArray('andand;'), $toCharArray('andd;'), $toCharArray('andslope;'), $toCharArray('andv;'), $toCharArray('ang;'), $toCharArray('ange;'), $toCharArray('angle;'), $toCharArray('angmsd;'), $toCharArray('angmsdaa;'), $toCharArray('angmsdab;'), $toCharArray('angmsdac;'), $toCharArray('angmsdad;'), $toCharArray('angmsdae;'), $toCharArray('angmsdaf;'), $toCharArray('angmsdag;'), $toCharArray('angmsdah;'), $toCharArray('angrt;'), $toCharArray('angrtvb;'), $toCharArray('angrtvbd;'), $toCharArray('angsph;'), $toCharArray('angst;'), $toCharArray('angzarr;'), $toCharArray('aogon;'), $toCharArray('aopf;'), $toCharArray('ap;'), $toCharArray('apE;'), $toCharArray('apacir;'), $toCharArray('ape;'), $toCharArray('apid;'), $toCharArray('apos;'), $toCharArray('approx;'), $toCharArray('approxeq;'), $toCharArray('aring'), $toCharArray('aring;'), $toCharArray('ascr;'), $toCharArray('ast;'), $toCharArray('asymp;'), $toCharArray('asympeq;'), $toCharArray('atilde'), $toCharArray('atilde;'), $toCharArray('auml'), $toCharArray('auml;'), $toCharArray('awconint;'), $toCharArray('awint;'), $toCharArray('bNot;'), $toCharArray('backcong;'), $toCharArray('backepsilon;'), $toCharArray('backprime;'), $toCharArray('backsim;'), $toCharArray('backsimeq;'), $toCharArray('barvee;'), $toCharArray('barwed;'), $toCharArray('barwedge;'), $toCharArray('bbrk;'), $toCharArray('bbrktbrk;'), $toCharArray('bcong;'), $toCharArray('bcy;'), $toCharArray('bdquo;'), $toCharArray('becaus;'), $toCharArray('because;'), $toCharArray('bemptyv;'), $toCharArray('bepsi;'), $toCharArray('bernou;'), $toCharArray('beta;'), $toCharArray('beth;'), $toCharArray('between;'), $toCharArray('bfr;'), $toCharArray('bigcap;'), $toCharArray('bigcirc;'), $toCharArray('bigcup;'), $toCharArray('bigodot;'), $toCharArray('bigoplus;'), $toCharArray('bigotimes;'), $toCharArray('bigsqcup;'), $toCharArray('bigstar;'), $toCharArray('bigtriangledown;'), $toCharArray('bigtriangleup;'), $toCharArray('biguplus;'), $toCharArray('bigvee;'), $toCharArray('bigwedge;'), $toCharArray('bkarow;'), $toCharArray('blacklozenge;'), $toCharArray('blacksquare;'), $toCharArray('blacktriangle;'), $toCharArray('blacktriangledown;'), $toCharArray('blacktriangleleft;'), $toCharArray('blacktriangleright;'), $toCharArray('blank;'), $toCharArray('blk12;'), $toCharArray('blk14;'), $toCharArray('blk34;'), $toCharArray('block;'), $toCharArray('bnot;'), $toCharArray('bopf;'), $toCharArray('bot;'), $toCharArray('bottom;'), $toCharArray('bowtie;'), $toCharArray('boxDL;'), $toCharArray('boxDR;'), $toCharArray('boxDl;'), $toCharArray('boxDr;'), $toCharArray('boxH;'), $toCharArray('boxHD;'), $toCharArray('boxHU;'), $toCharArray('boxHd;'), $toCharArray('boxHu;'), $toCharArray('boxUL;'), $toCharArray('boxUR;'), $toCharArray('boxUl;'), $toCharArray('boxUr;'), $toCharArray('boxV;'), $toCharArray('boxVH;'), $toCharArray('boxVL;'), $toCharArray('boxVR;'), $toCharArray('boxVh;'), $toCharArray('boxVl;'), $toCharArray('boxVr;'), $toCharArray('boxbox;'), $toCharArray('boxdL;'), $toCharArray('boxdR;'), $toCharArray('boxdl;'), $toCharArray('boxdr;'), $toCharArray('boxh;'), $toCharArray('boxhD;'), $toCharArray('boxhU;'), $toCharArray('boxhd;'), $toCharArray('boxhu;'), $toCharArray('boxminus;'), $toCharArray('boxplus;'), $toCharArray('boxtimes;'), $toCharArray('boxuL;'), $toCharArray('boxuR;'), $toCharArray('boxul;'), $toCharArray('boxur;'), $toCharArray('boxv;'), $toCharArray('boxvH;'), $toCharArray('boxvL;'), $toCharArray('boxvR;'), $toCharArray('boxvh;'), $toCharArray('boxvl;'), $toCharArray('boxvr;'), $toCharArray('bprime;'), $toCharArray('breve;'), $toCharArray('brvbar'), $toCharArray('brvbar;'), $toCharArray('bscr;'), $toCharArray('bsemi;'), $toCharArray('bsim;'), $toCharArray('bsime;'), $toCharArray('bsol;'), $toCharArray('bsolb;'), $toCharArray('bull;'), $toCharArray('bullet;'), $toCharArray('bump;'), $toCharArray('bumpE;'), $toCharArray('bumpe;'), $toCharArray('bumpeq;'), $toCharArray('cacute;'), $toCharArray('cap;'), $toCharArray('capand;'), $toCharArray('capbrcup;'), $toCharArray('capcap;'), $toCharArray('capcup;'), $toCharArray('capdot;'), $toCharArray('caret;'), $toCharArray('caron;'), $toCharArray('ccaps;'), $toCharArray('ccaron;'), $toCharArray('ccedil'), $toCharArray('ccedil;'), $toCharArray('ccirc;'), $toCharArray('ccups;'), $toCharArray('ccupssm;'), $toCharArray('cdot;'), $toCharArray('cedil'), $toCharArray('cedil;'), $toCharArray('cemptyv;'), $toCharArray('cent'), $toCharArray('cent;'), $toCharArray('centerdot;'), $toCharArray('cfr;'), $toCharArray('chcy;'), $toCharArray('check;'), $toCharArray('checkmark;'), $toCharArray('chi;'), $toCharArray('cir;'), $toCharArray('cirE;'), $toCharArray('circ;'), $toCharArray('circeq;'), $toCharArray('circlearrowleft;'), $toCharArray('circlearrowright;'), $toCharArray('circledR;'), $toCharArray('circledS;'), $toCharArray('circledast;'), $toCharArray('circledcirc;'), $toCharArray('circleddash;'), $toCharArray('cire;'), $toCharArray('cirfnint;'), $toCharArray('cirmid;'), $toCharArray('cirscir;'), $toCharArray('clubs;'), $toCharArray('clubsuit;'), $toCharArray('colon;'), $toCharArray('colone;'), $toCharArray('coloneq;'), $toCharArray('comma;'), $toCharArray('commat;'), $toCharArray('comp;'), $toCharArray('compfn;'), $toCharArray('complement;'), $toCharArray('complexes;'), $toCharArray('cong;'), $toCharArray('congdot;'), $toCharArray('conint;'), $toCharArray('copf;'), $toCharArray('coprod;'), $toCharArray('copy'), $toCharArray('copy;'), $toCharArray('copysr;'), $toCharArray('crarr;'), $toCharArray('cross;'), $toCharArray('cscr;'), $toCharArray('csub;'), $toCharArray('csube;'), $toCharArray('csup;'), $toCharArray('csupe;'), $toCharArray('ctdot;'), $toCharArray('cudarrl;'), $toCharArray('cudarrr;'), $toCharArray('cuepr;'), $toCharArray('cuesc;'), $toCharArray('cularr;'), $toCharArray('cularrp;'), $toCharArray('cup;'), $toCharArray('cupbrcap;'), $toCharArray('cupcap;'), $toCharArray('cupcup;'), $toCharArray('cupdot;'), $toCharArray('cupor;'), $toCharArray('curarr;'), $toCharArray('curarrm;'), $toCharArray('curlyeqprec;'), $toCharArray('curlyeqsucc;'), $toCharArray('curlyvee;'), $toCharArray('curlywedge;'), $toCharArray('curren'), $toCharArray('curren;'), $toCharArray('curvearrowleft;'), $toCharArray('curvearrowright;'), $toCharArray('cuvee;'), $toCharArray('cuwed;'), $toCharArray('cwconint;'), $toCharArray('cwint;'), $toCharArray('cylcty;'), $toCharArray('dArr;'), $toCharArray('dHar;'), $toCharArray('dagger;'), $toCharArray('daleth;'), $toCharArray('darr;'), $toCharArray('dash;'), $toCharArray('dashv;'), $toCharArray('dbkarow;'), $toCharArray('dblac;'), $toCharArray('dcaron;'), $toCharArray('dcy;'), $toCharArray('dd;'), $toCharArray('ddagger;'), $toCharArray('ddarr;'), $toCharArray('ddotseq;'), $toCharArray('deg'), $toCharArray('deg;'), $toCharArray('delta;'), $toCharArray('demptyv;'), $toCharArray('dfisht;'), $toCharArray('dfr;'), $toCharArray('dharl;'), $toCharArray('dharr;'), $toCharArray('diam;'), $toCharArray('diamond;'), $toCharArray('diamondsuit;'), $toCharArray('diams;'), $toCharArray('die;'), $toCharArray('digamma;'), $toCharArray('disin;'), $toCharArray('div;'), $toCharArray('divide'), $toCharArray('divide;'), $toCharArray('divideontimes;'), $toCharArray('divonx;'), $toCharArray('djcy;'), $toCharArray('dlcorn;'), $toCharArray('dlcrop;'), $toCharArray('dollar;'), $toCharArray('dopf;'), $toCharArray('dot;'), $toCharArray('doteq;'), $toCharArray('doteqdot;'), $toCharArray('dotminus;'), $toCharArray('dotplus;'), $toCharArray('dotsquare;'), $toCharArray('doublebarwedge;'), $toCharArray('downarrow;'), $toCharArray('downdownarrows;'), $toCharArray('downharpoonleft;'), $toCharArray('downharpoonright;'), $toCharArray('drbkarow;'), $toCharArray('drcorn;'), $toCharArray('drcrop;'), $toCharArray('dscr;'), $toCharArray('dscy;'), $toCharArray('dsol;'), $toCharArray('dstrok;'), $toCharArray('dtdot;'), $toCharArray('dtri;'), $toCharArray('dtrif;'), $toCharArray('duarr;'), $toCharArray('duhar;'), $toCharArray('dwangle;'), $toCharArray('dzcy;'), $toCharArray('dzigrarr;'), $toCharArray('eDDot;'), $toCharArray('eDot;'), $toCharArray('eacute'), $toCharArray('eacute;'), $toCharArray('easter;'), $toCharArray('ecaron;'), $toCharArray('ecir;'), $toCharArray('ecirc'), $toCharArray('ecirc;'), $toCharArray('ecolon;'), $toCharArray('ecy;'), $toCharArray('edot;'), $toCharArray('ee;'), $toCharArray('efDot;'), $toCharArray('efr;'), $toCharArray('eg;'), $toCharArray('egrave'), $toCharArray('egrave;'), $toCharArray('egs;'), $toCharArray('egsdot;'), $toCharArray('el;'), $toCharArray('elinters;'), $toCharArray('ell;'), $toCharArray('els;'), $toCharArray('elsdot;'), $toCharArray('emacr;'), $toCharArray('empty;'), $toCharArray('emptyset;'), $toCharArray('emptyv;'), $toCharArray('emsp13;'), $toCharArray('emsp14;'), $toCharArray('emsp;'), $toCharArray('eng;'), $toCharArray('ensp;'), $toCharArray('eogon;'), $toCharArray('eopf;'), $toCharArray('epar;'), $toCharArray('eparsl;'), $toCharArray('eplus;'), $toCharArray('epsi;'), $toCharArray('epsilon;'), $toCharArray('epsiv;'), $toCharArray('eqcirc;'), $toCharArray('eqcolon;'), $toCharArray('eqsim;'), $toCharArray('eqslantgtr;'), $toCharArray('eqslantless;'), $toCharArray('equals;'), $toCharArray('equest;'), $toCharArray('equiv;'), $toCharArray('equivDD;'), $toCharArray('eqvparsl;'), $toCharArray('erDot;'), $toCharArray('erarr;'), $toCharArray('escr;'), $toCharArray('esdot;'), $toCharArray('esim;'), $toCharArray('eta;'), $toCharArray('eth'), $toCharArray('eth;'), $toCharArray('euml'), $toCharArray('euml;'), $toCharArray('euro;'), $toCharArray('excl;'), $toCharArray('exist;'), $toCharArray('expectation;'), $toCharArray('exponentiale;'), $toCharArray('fallingdotseq;'), $toCharArray('fcy;'), $toCharArray('female;'), $toCharArray('ffilig;'), $toCharArray('fflig;'), $toCharArray('ffllig;'), $toCharArray('ffr;'), $toCharArray('filig;'), $toCharArray('flat;'), $toCharArray('fllig;'), $toCharArray('fltns;'), $toCharArray('fnof;'), $toCharArray('fopf;'), $toCharArray('forall;'), $toCharArray('fork;'), $toCharArray('forkv;'), $toCharArray('fpartint;'), $toCharArray('frac12'), $toCharArray('frac12;'), $toCharArray('frac13;'), $toCharArray('frac14'), $toCharArray('frac14;'), $toCharArray('frac15;'), $toCharArray('frac16;'), $toCharArray('frac18;'), $toCharArray('frac23;'), $toCharArray('frac25;'), $toCharArray('frac34'), $toCharArray('frac34;'), $toCharArray('frac35;'), $toCharArray('frac38;'), $toCharArray('frac45;'), $toCharArray('frac56;'), $toCharArray('frac58;'), $toCharArray('frac78;'), $toCharArray('frasl;'), $toCharArray('frown;'), $toCharArray('fscr;'), $toCharArray('gE;'), $toCharArray('gEl;'), $toCharArray('gacute;'), $toCharArray('gamma;'), $toCharArray('gammad;'), $toCharArray('gap;'), $toCharArray('gbreve;'), $toCharArray('gcirc;'), $toCharArray('gcy;'), $toCharArray('gdot;'), $toCharArray('ge;'), $toCharArray('gel;'), $toCharArray('geq;'), $toCharArray('geqq;'), $toCharArray('geqslant;'), $toCharArray('ges;'), $toCharArray('gescc;'), $toCharArray('gesdot;'), $toCharArray('gesdoto;'), $toCharArray('gesdotol;'), $toCharArray('gesles;'), $toCharArray('gfr;'), $toCharArray('gg;'), $toCharArray('ggg;'), $toCharArray('gimel;'), $toCharArray('gjcy;'), $toCharArray('gl;'), $toCharArray('glE;'), $toCharArray('gla;'), $toCharArray('glj;'), $toCharArray('gnE;'), $toCharArray('gnap;'), $toCharArray('gnapprox;'), $toCharArray('gne;'), $toCharArray('gneq;'), $toCharArray('gneqq;'), $toCharArray('gnsim;'), $toCharArray('gopf;'), $toCharArray('grave;'), $toCharArray('gscr;'), $toCharArray('gsim;'), $toCharArray('gsime;'), $toCharArray('gsiml;'), $toCharArray('gt'), $toCharArray('gt;'), $toCharArray('gtcc;'), $toCharArray('gtcir;'), $toCharArray('gtdot;'), $toCharArray('gtlPar;'), $toCharArray('gtquest;'), $toCharArray('gtrapprox;'), $toCharArray('gtrarr;'), $toCharArray('gtrdot;'), $toCharArray('gtreqless;'), $toCharArray('gtreqqless;'), $toCharArray('gtrless;'), $toCharArray('gtrsim;'), $toCharArray('hArr;'), $toCharArray('hairsp;'), $toCharArray('half;'), $toCharArray('hamilt;'), $toCharArray('hardcy;'), $toCharArray('harr;'), $toCharArray('harrcir;'), $toCharArray('harrw;'), $toCharArray('hbar;'), $toCharArray('hcirc;'), $toCharArray('hearts;'), $toCharArray('heartsuit;'), $toCharArray('hellip;'), $toCharArray('hercon;'), $toCharArray('hfr;'), $toCharArray('hksearow;'), $toCharArray('hkswarow;'), $toCharArray('hoarr;'), $toCharArray('homtht;'), $toCharArray('hookleftarrow;'), $toCharArray('hookrightarrow;'), $toCharArray('hopf;'), $toCharArray('horbar;'), $toCharArray('hscr;'), $toCharArray('hslash;'), $toCharArray('hstrok;'), $toCharArray('hybull;'), $toCharArray('hyphen;'), $toCharArray('iacute'), $toCharArray('iacute;'), $toCharArray('ic;'), $toCharArray('icirc'), $toCharArray('icirc;'), $toCharArray('icy;'), $toCharArray('iecy;'), $toCharArray('iexcl'), $toCharArray('iexcl;'), $toCharArray('iff;'), $toCharArray('ifr;'), $toCharArray('igrave'), $toCharArray('igrave;'), $toCharArray('ii;'), $toCharArray('iiiint;'), $toCharArray('iiint;'), $toCharArray('iinfin;'), $toCharArray('iiota;'), $toCharArray('ijlig;'), $toCharArray('imacr;'), $toCharArray('image;'), $toCharArray('imagline;'), $toCharArray('imagpart;'), $toCharArray('imath;'), $toCharArray('imof;'), $toCharArray('imped;'), $toCharArray('in;'), $toCharArray('incare;'), $toCharArray('infin;'), $toCharArray('infintie;'), $toCharArray('inodot;'), $toCharArray('int;'), $toCharArray('intcal;'), $toCharArray('integers;'), $toCharArray('intercal;'), $toCharArray('intlarhk;'), $toCharArray('intprod;'), $toCharArray('iocy;'), $toCharArray('iogon;'), $toCharArray('iopf;'), $toCharArray('iota;'), $toCharArray('iprod;'), $toCharArray('iquest'), $toCharArray('iquest;'), $toCharArray('iscr;'), $toCharArray('isin;'), $toCharArray('isinE;'), $toCharArray('isindot;'), $toCharArray('isins;'), $toCharArray('isinsv;'), $toCharArray('isinv;'), $toCharArray('it;'), $toCharArray('itilde;'), $toCharArray('iukcy;'), $toCharArray('iuml'), $toCharArray('iuml;'), $toCharArray('jcirc;'), $toCharArray('jcy;'), $toCharArray('jfr;'), $toCharArray('jmath;'), $toCharArray('jopf;'), $toCharArray('jscr;'), $toCharArray('jsercy;'), $toCharArray('jukcy;'), $toCharArray('kappa;'), $toCharArray('kappav;'), $toCharArray('kcedil;'), $toCharArray('kcy;'), $toCharArray('kfr;'), $toCharArray('kgreen;'), $toCharArray('khcy;'), $toCharArray('kjcy;'), $toCharArray('kopf;'), $toCharArray('kscr;'), $toCharArray('lAarr;'), $toCharArray('lArr;'), $toCharArray('lAtail;'), $toCharArray('lBarr;'), $toCharArray('lE;'), $toCharArray('lEg;'), $toCharArray('lHar;'), $toCharArray('lacute;'), $toCharArray('laemptyv;'), $toCharArray('lagran;'), $toCharArray('lambda;'), $toCharArray('lang;'), $toCharArray('langd;'), $toCharArray('langle;'), $toCharArray('lap;'), $toCharArray('laquo'), $toCharArray('laquo;'), $toCharArray('larr;'), $toCharArray('larrb;'), $toCharArray('larrbfs;'), $toCharArray('larrfs;'), $toCharArray('larrhk;'), $toCharArray('larrlp;'), $toCharArray('larrpl;'), $toCharArray('larrsim;'), $toCharArray('larrtl;'), $toCharArray('lat;'), $toCharArray('latail;'), $toCharArray('late;'), $toCharArray('lbarr;'), $toCharArray('lbbrk;'), $toCharArray('lbrace;'), $toCharArray('lbrack;'), $toCharArray('lbrke;'), $toCharArray('lbrksld;'), $toCharArray('lbrkslu;'), $toCharArray('lcaron;'), $toCharArray('lcedil;'), $toCharArray('lceil;'), $toCharArray('lcub;'), $toCharArray('lcy;'), $toCharArray('ldca;'), $toCharArray('ldquo;'), $toCharArray('ldquor;'), $toCharArray('ldrdhar;'), $toCharArray('ldrushar;'), $toCharArray('ldsh;'), $toCharArray('le;'), $toCharArray('leftarrow;'), $toCharArray('leftarrowtail;'), $toCharArray('leftharpoondown;'), $toCharArray('leftharpoonup;'), $toCharArray('leftleftarrows;'), $toCharArray('leftrightarrow;'), $toCharArray('leftrightarrows;'), $toCharArray('leftrightharpoons;'), $toCharArray('leftrightsquigarrow;'), $toCharArray('leftthreetimes;'), $toCharArray('leg;'), $toCharArray('leq;'), $toCharArray('leqq;'), $toCharArray('leqslant;'), $toCharArray('les;'), $toCharArray('lescc;'), $toCharArray('lesdot;'), $toCharArray('lesdoto;'), $toCharArray('lesdotor;'), $toCharArray('lesges;'), $toCharArray('lessapprox;'), $toCharArray('lessdot;'), $toCharArray('lesseqgtr;'), $toCharArray('lesseqqgtr;'), $toCharArray('lessgtr;'), $toCharArray('lesssim;'), $toCharArray('lfisht;'), $toCharArray('lfloor;'), $toCharArray('lfr;'), $toCharArray('lg;'), $toCharArray('lgE;'), $toCharArray('lhard;'), $toCharArray('lharu;'), $toCharArray('lharul;'), $toCharArray('lhblk;'), $toCharArray('ljcy;'), $toCharArray('ll;'), $toCharArray('llarr;'), $toCharArray('llcorner;'), $toCharArray('llhard;'), $toCharArray('lltri;'), $toCharArray('lmidot;'), $toCharArray('lmoust;'), $toCharArray('lmoustache;'), $toCharArray('lnE;'), $toCharArray('lnap;'), $toCharArray('lnapprox;'), $toCharArray('lne;'), $toCharArray('lneq;'), $toCharArray('lneqq;'), $toCharArray('lnsim;'), $toCharArray('loang;'), $toCharArray('loarr;'), $toCharArray('lobrk;'), $toCharArray('longleftarrow;'), $toCharArray('longleftrightarrow;'), $toCharArray('longmapsto;'), $toCharArray('longrightarrow;'), $toCharArray('looparrowleft;'), $toCharArray('looparrowright;'), $toCharArray('lopar;'), $toCharArray('lopf;'), $toCharArray('loplus;'), $toCharArray('lotimes;'), $toCharArray('lowast;'), $toCharArray('lowbar;'), $toCharArray('loz;'), $toCharArray('lozenge;'), $toCharArray('lozf;'), $toCharArray('lpar;'), $toCharArray('lparlt;'), $toCharArray('lrarr;'), $toCharArray('lrcorner;'), $toCharArray('lrhar;'), $toCharArray('lrhard;'), $toCharArray('lrm;'), $toCharArray('lrtri;'), $toCharArray('lsaquo;'), $toCharArray('lscr;'), $toCharArray('lsh;'), $toCharArray('lsim;'), $toCharArray('lsime;'), $toCharArray('lsimg;'), $toCharArray('lsqb;'), $toCharArray('lsquo;'), $toCharArray('lsquor;'), $toCharArray('lstrok;'), $toCharArray('lt'), $toCharArray('lt;'), $toCharArray('ltcc;'), $toCharArray('ltcir;'), $toCharArray('ltdot;'), $toCharArray('lthree;'), $toCharArray('ltimes;'), $toCharArray('ltlarr;'), $toCharArray('ltquest;'), $toCharArray('ltrPar;'), $toCharArray('ltri;'), $toCharArray('ltrie;'), $toCharArray('ltrif;'), $toCharArray('lurdshar;'), $toCharArray('luruhar;'), $toCharArray('mDDot;'), $toCharArray('macr'), $toCharArray('macr;'), $toCharArray('male;'), $toCharArray('malt;'), $toCharArray('maltese;'), $toCharArray('map;'), $toCharArray('mapsto;'), $toCharArray('mapstodown;'), $toCharArray('mapstoleft;'), $toCharArray('mapstoup;'), $toCharArray('marker;'), $toCharArray('mcomma;'), $toCharArray('mcy;'), $toCharArray('mdash;'), $toCharArray('measuredangle;'), $toCharArray('mfr;'), $toCharArray('mho;'), $toCharArray('micro'), $toCharArray('micro;'), $toCharArray('mid;'), $toCharArray('midast;'), $toCharArray('midcir;'), $toCharArray('middot'), $toCharArray('middot;'), $toCharArray('minus;'), $toCharArray('minusb;'), $toCharArray('minusd;'), $toCharArray('minusdu;'), $toCharArray('mlcp;'), $toCharArray('mldr;'), $toCharArray('mnplus;'), $toCharArray('models;'), $toCharArray('mopf;'), $toCharArray('mp;'), $toCharArray('mscr;'), $toCharArray('mstpos;'), $toCharArray('mu;'), $toCharArray('multimap;'), $toCharArray('mumap;'), $toCharArray('nLeftarrow;'), $toCharArray('nLeftrightarrow;'), $toCharArray('nRightarrow;'), $toCharArray('nVDash;'), $toCharArray('nVdash;'), $toCharArray('nabla;'), $toCharArray('nacute;'), $toCharArray('nap;'), $toCharArray('napos;'), $toCharArray('napprox;'), $toCharArray('natur;'), $toCharArray('natural;'), $toCharArray('naturals;'), $toCharArray('nbsp'), $toCharArray('nbsp;'), $toCharArray('ncap;'), $toCharArray('ncaron;'), $toCharArray('ncedil;'), $toCharArray('ncong;'), $toCharArray('ncup;'), $toCharArray('ncy;'), $toCharArray('ndash;'), $toCharArray('ne;'), $toCharArray('neArr;'), $toCharArray('nearhk;'), $toCharArray('nearr;'), $toCharArray('nearrow;'), $toCharArray('nequiv;'), $toCharArray('nesear;'), $toCharArray('nexist;'), $toCharArray('nexists;'), $toCharArray('nfr;'), $toCharArray('nge;'), $toCharArray('ngeq;'), $toCharArray('ngsim;'), $toCharArray('ngt;'), $toCharArray('ngtr;'), $toCharArray('nhArr;'), $toCharArray('nharr;'), $toCharArray('nhpar;'), $toCharArray('ni;'), $toCharArray('nis;'), $toCharArray('nisd;'), $toCharArray('niv;'), $toCharArray('njcy;'), $toCharArray('nlArr;'), $toCharArray('nlarr;'), $toCharArray('nldr;'), $toCharArray('nle;'), $toCharArray('nleftarrow;'), $toCharArray('nleftrightarrow;'), $toCharArray('nleq;'), $toCharArray('nless;'), $toCharArray('nlsim;'), $toCharArray('nlt;'), $toCharArray('nltri;'), $toCharArray('nltrie;'), $toCharArray('nmid;'), $toCharArray('nopf;'), $toCharArray('not'), $toCharArray('not;'), $toCharArray('notin;'), $toCharArray('notinva;'), $toCharArray('notinvb;'), $toCharArray('notinvc;'), $toCharArray('notni;'), $toCharArray('notniva;'), $toCharArray('notnivb;'), $toCharArray('notnivc;'), $toCharArray('npar;'), $toCharArray('nparallel;'), $toCharArray('npolint;'), $toCharArray('npr;'), $toCharArray('nprcue;'), $toCharArray('nprec;'), $toCharArray('nrArr;'), $toCharArray('nrarr;'), $toCharArray('nrightarrow;'), $toCharArray('nrtri;'), $toCharArray('nrtrie;'), $toCharArray('nsc;'), $toCharArray('nsccue;'), $toCharArray('nscr;'), $toCharArray('nshortmid;'), $toCharArray('nshortparallel;'), $toCharArray('nsim;'), $toCharArray('nsime;'), $toCharArray('nsimeq;'), $toCharArray('nsmid;'), $toCharArray('nspar;'), $toCharArray('nsqsube;'), $toCharArray('nsqsupe;'), $toCharArray('nsub;'), $toCharArray('nsube;'), $toCharArray('nsubseteq;'), $toCharArray('nsucc;'), $toCharArray('nsup;'), $toCharArray('nsupe;'), $toCharArray('nsupseteq;'), $toCharArray('ntgl;'), $toCharArray('ntilde'), $toCharArray('ntilde;'), $toCharArray('ntlg;'), $toCharArray('ntriangleleft;'), $toCharArray('ntrianglelefteq;'), $toCharArray('ntriangleright;'), $toCharArray('ntrianglerighteq;'), $toCharArray('nu;'), $toCharArray('num;'), $toCharArray('numero;'), $toCharArray('numsp;'), $toCharArray('nvDash;'), $toCharArray('nvHarr;'), $toCharArray('nvdash;'), $toCharArray('nvinfin;'), $toCharArray('nvlArr;'), $toCharArray('nvrArr;'), $toCharArray('nwArr;'), $toCharArray('nwarhk;'), $toCharArray('nwarr;'), $toCharArray('nwarrow;'), $toCharArray('nwnear;'), $toCharArray('oS;'), $toCharArray('oacute'), $toCharArray('oacute;'), $toCharArray('oast;'), $toCharArray('ocir;'), $toCharArray('ocirc'), $toCharArray('ocirc;'), $toCharArray('ocy;'), $toCharArray('odash;'), $toCharArray('odblac;'), $toCharArray('odiv;'), $toCharArray('odot;'), $toCharArray('odsold;'), $toCharArray('oelig;'), $toCharArray('ofcir;'), $toCharArray('ofr;'), $toCharArray('ogon;'), $toCharArray('ograve'), $toCharArray('ograve;'), $toCharArray('ogt;'), $toCharArray('ohbar;'), $toCharArray('ohm;'), $toCharArray('oint;'), $toCharArray('olarr;'), $toCharArray('olcir;'), $toCharArray('olcross;'), $toCharArray('oline;'), $toCharArray('olt;'), $toCharArray('omacr;'), $toCharArray('omega;'), $toCharArray('omicron;'), $toCharArray('omid;'), $toCharArray('ominus;'), $toCharArray('oopf;'), $toCharArray('opar;'), $toCharArray('operp;'), $toCharArray('oplus;'), $toCharArray('or;'), $toCharArray('orarr;'), $toCharArray('ord;'), $toCharArray('order;'), $toCharArray('orderof;'), $toCharArray('ordf'), $toCharArray('ordf;'), $toCharArray('ordm'), $toCharArray('ordm;'), $toCharArray('origof;'), $toCharArray('oror;'), $toCharArray('orslope;'), $toCharArray('orv;'), $toCharArray('oscr;'), $toCharArray('oslash'), $toCharArray('oslash;'), $toCharArray('osol;'), $toCharArray('otilde'), $toCharArray('otilde;'), $toCharArray('otimes;'), $toCharArray('otimesas;'), $toCharArray('ouml'), $toCharArray('ouml;'), $toCharArray('ovbar;'), $toCharArray('par;'), $toCharArray('para'), $toCharArray('para;'), $toCharArray('parallel;'), $toCharArray('parsim;'), $toCharArray('parsl;'), $toCharArray('part;'), $toCharArray('pcy;'), $toCharArray('percnt;'), $toCharArray('period;'), $toCharArray('permil;'), $toCharArray('perp;'), $toCharArray('pertenk;'), $toCharArray('pfr;'), $toCharArray('phi;'), $toCharArray('phiv;'), $toCharArray('phmmat;'), $toCharArray('phone;'), $toCharArray('pi;'), $toCharArray('pitchfork;'), $toCharArray('piv;'), $toCharArray('planck;'), $toCharArray('planckh;'), $toCharArray('plankv;'), $toCharArray('plus;'), $toCharArray('plusacir;'), $toCharArray('plusb;'), $toCharArray('pluscir;'), $toCharArray('plusdo;'), $toCharArray('plusdu;'), $toCharArray('pluse;'), $toCharArray('plusmn'), $toCharArray('plusmn;'), $toCharArray('plussim;'), $toCharArray('plustwo;'), $toCharArray('pm;'), $toCharArray('pointint;'), $toCharArray('popf;'), $toCharArray('pound'), $toCharArray('pound;'), $toCharArray('pr;'), $toCharArray('prE;'), $toCharArray('prap;'), $toCharArray('prcue;'), $toCharArray('pre;'), $toCharArray('prec;'), $toCharArray('precapprox;'), $toCharArray('preccurlyeq;'), $toCharArray('preceq;'), $toCharArray('precnapprox;'), $toCharArray('precneqq;'), $toCharArray('precnsim;'), $toCharArray('precsim;'), $toCharArray('prime;'), $toCharArray('primes;'), $toCharArray('prnE;'), $toCharArray('prnap;'), $toCharArray('prnsim;'), $toCharArray('prod;'), $toCharArray('profalar;'), $toCharArray('profline;'), $toCharArray('profsurf;'), $toCharArray('prop;'), $toCharArray('propto;'), $toCharArray('prsim;'), $toCharArray('prurel;'), $toCharArray('pscr;'), $toCharArray('psi;'), $toCharArray('puncsp;'), $toCharArray('qfr;'), $toCharArray('qint;'), $toCharArray('qopf;'), $toCharArray('qprime;'), $toCharArray('qscr;'), $toCharArray('quaternions;'), $toCharArray('quatint;'), $toCharArray('quest;'), $toCharArray('questeq;'), $toCharArray('quot'), $toCharArray('quot;'), $toCharArray('rAarr;'), $toCharArray('rArr;'), $toCharArray('rAtail;'), $toCharArray('rBarr;'), $toCharArray('rHar;'), $toCharArray('race;'), $toCharArray('racute;'), $toCharArray('radic;'), $toCharArray('raemptyv;'), $toCharArray('rang;'), $toCharArray('rangd;'), $toCharArray('range;'), $toCharArray('rangle;'), $toCharArray('raquo'), $toCharArray('raquo;'), $toCharArray('rarr;'), $toCharArray('rarrap;'), $toCharArray('rarrb;'), $toCharArray('rarrbfs;'), $toCharArray('rarrc;'), $toCharArray('rarrfs;'), $toCharArray('rarrhk;'), $toCharArray('rarrlp;'), $toCharArray('rarrpl;'), $toCharArray('rarrsim;'), $toCharArray('rarrtl;'), $toCharArray('rarrw;'), $toCharArray('ratail;'), $toCharArray('ratio;'), $toCharArray('rationals;'), $toCharArray('rbarr;'), $toCharArray('rbbrk;'), $toCharArray('rbrace;'), $toCharArray('rbrack;'), $toCharArray('rbrke;'), $toCharArray('rbrksld;'), $toCharArray('rbrkslu;'), $toCharArray('rcaron;'), $toCharArray('rcedil;'), $toCharArray('rceil;'), $toCharArray('rcub;'), $toCharArray('rcy;'), $toCharArray('rdca;'), $toCharArray('rdldhar;'), $toCharArray('rdquo;'), $toCharArray('rdquor;'), $toCharArray('rdsh;'), $toCharArray('real;'), $toCharArray('realine;'), $toCharArray('realpart;'), $toCharArray('reals;'), $toCharArray('rect;'), $toCharArray('reg'), $toCharArray('reg;'), $toCharArray('rfisht;'), $toCharArray('rfloor;'), $toCharArray('rfr;'), $toCharArray('rhard;'), $toCharArray('rharu;'), $toCharArray('rharul;'), $toCharArray('rho;'), $toCharArray('rhov;'), $toCharArray('rightarrow;'), $toCharArray('rightarrowtail;'), $toCharArray('rightharpoondown;'), $toCharArray('rightharpoonup;'), $toCharArray('rightleftarrows;'), $toCharArray('rightleftharpoons;'), $toCharArray('rightrightarrows;'), $toCharArray('rightsquigarrow;'), $toCharArray('rightthreetimes;'), $toCharArray('ring;'), $toCharArray('risingdotseq;'), $toCharArray('rlarr;'), $toCharArray('rlhar;'), $toCharArray('rlm;'), $toCharArray('rmoust;'), $toCharArray('rmoustache;'), $toCharArray('rnmid;'), $toCharArray('roang;'), $toCharArray('roarr;'), $toCharArray('robrk;'), $toCharArray('ropar;'), $toCharArray('ropf;'), $toCharArray('roplus;'), $toCharArray('rotimes;'), $toCharArray('rpar;'), $toCharArray('rpargt;'), $toCharArray('rppolint;'), $toCharArray('rrarr;'), $toCharArray('rsaquo;'), $toCharArray('rscr;'), $toCharArray('rsh;'), $toCharArray('rsqb;'), $toCharArray('rsquo;'), $toCharArray('rsquor;'), $toCharArray('rthree;'), $toCharArray('rtimes;'), $toCharArray('rtri;'), $toCharArray('rtrie;'), $toCharArray('rtrif;'), $toCharArray('rtriltri;'), $toCharArray('ruluhar;'), $toCharArray('rx;'), $toCharArray('sacute;'), $toCharArray('sbquo;'), $toCharArray('sc;'), $toCharArray('scE;'), $toCharArray('scap;'), $toCharArray('scaron;'), $toCharArray('sccue;'), $toCharArray('sce;'), $toCharArray('scedil;'), $toCharArray('scirc;'), $toCharArray('scnE;'), $toCharArray('scnap;'), $toCharArray('scnsim;'), $toCharArray('scpolint;'), $toCharArray('scsim;'), $toCharArray('scy;'), $toCharArray('sdot;'), $toCharArray('sdotb;'), $toCharArray('sdote;'), $toCharArray('seArr;'), $toCharArray('searhk;'), $toCharArray('searr;'), $toCharArray('searrow;'), $toCharArray('sect'), $toCharArray('sect;'), $toCharArray('semi;'), $toCharArray('seswar;'), $toCharArray('setminus;'), $toCharArray('setmn;'), $toCharArray('sext;'), $toCharArray('sfr;'), $toCharArray('sfrown;'), $toCharArray('sharp;'), $toCharArray('shchcy;'), $toCharArray('shcy;'), $toCharArray('shortmid;'), $toCharArray('shortparallel;'), $toCharArray('shy'), $toCharArray('shy;'), $toCharArray('sigma;'), $toCharArray('sigmaf;'), $toCharArray('sigmav;'), $toCharArray('sim;'), $toCharArray('simdot;'), $toCharArray('sime;'), $toCharArray('simeq;'), $toCharArray('simg;'), $toCharArray('simgE;'), $toCharArray('siml;'), $toCharArray('simlE;'), $toCharArray('simne;'), $toCharArray('simplus;'), $toCharArray('simrarr;'), $toCharArray('slarr;'), $toCharArray('smallsetminus;'), $toCharArray('smashp;'), $toCharArray('smeparsl;'), $toCharArray('smid;'), $toCharArray('smile;'), $toCharArray('smt;'), $toCharArray('smte;'), $toCharArray('softcy;'), $toCharArray('sol;'), $toCharArray('solb;'), $toCharArray('solbar;'), $toCharArray('sopf;'), $toCharArray('spades;'), $toCharArray('spadesuit;'), $toCharArray('spar;'), $toCharArray('sqcap;'), $toCharArray('sqcup;'), $toCharArray('sqsub;'), $toCharArray('sqsube;'), $toCharArray('sqsubset;'), $toCharArray('sqsubseteq;'), $toCharArray('sqsup;'), $toCharArray('sqsupe;'), $toCharArray('sqsupset;'), $toCharArray('sqsupseteq;'), $toCharArray('squ;'), $toCharArray('square;'), $toCharArray('squarf;'), $toCharArray('squf;'), $toCharArray('srarr;'), $toCharArray('sscr;'), $toCharArray('ssetmn;'), $toCharArray('ssmile;'), $toCharArray('sstarf;'), $toCharArray('star;'), $toCharArray('starf;'), $toCharArray('straightepsilon;'), $toCharArray('straightphi;'), $toCharArray('strns;'), $toCharArray('sub;'), $toCharArray('subE;'), $toCharArray('subdot;'), $toCharArray('sube;'), $toCharArray('subedot;'), $toCharArray('submult;'), $toCharArray('subnE;'), $toCharArray('subne;'), $toCharArray('subplus;'), $toCharArray('subrarr;'), $toCharArray('subset;'), $toCharArray('subseteq;'), $toCharArray('subseteqq;'), $toCharArray('subsetneq;'), $toCharArray('subsetneqq;'), $toCharArray('subsim;'), $toCharArray('subsub;'), $toCharArray('subsup;'), $toCharArray('succ;'), $toCharArray('succapprox;'), $toCharArray('succcurlyeq;'), $toCharArray('succeq;'), $toCharArray('succnapprox;'), $toCharArray('succneqq;'), $toCharArray('succnsim;'), $toCharArray('succsim;'), $toCharArray('sum;'), $toCharArray('sung;'), $toCharArray('sup1'), $toCharArray('sup1;'), $toCharArray('sup2'), $toCharArray('sup2;'), $toCharArray('sup3'), $toCharArray('sup3;'), $toCharArray('sup;'), $toCharArray('supE;'), $toCharArray('supdot;'), $toCharArray('supdsub;'), $toCharArray('supe;'), $toCharArray('supedot;'), $toCharArray('suphsub;'), $toCharArray('suplarr;'), $toCharArray('supmult;'), $toCharArray('supnE;'), $toCharArray('supne;'), $toCharArray('supplus;'), $toCharArray('supset;'), $toCharArray('supseteq;'), $toCharArray('supseteqq;'), $toCharArray('supsetneq;'), $toCharArray('supsetneqq;'), $toCharArray('supsim;'), $toCharArray('supsub;'), $toCharArray('supsup;'), $toCharArray('swArr;'), $toCharArray('swarhk;'), $toCharArray('swarr;'), $toCharArray('swarrow;'), $toCharArray('swnwar;'), $toCharArray('szlig'), $toCharArray('szlig;'), $toCharArray('target;'), $toCharArray('tau;'), $toCharArray('tbrk;'), $toCharArray('tcaron;'), $toCharArray('tcedil;'), $toCharArray('tcy;'), $toCharArray('tdot;'), $toCharArray('telrec;'), $toCharArray('tfr;'), $toCharArray('there4;'), $toCharArray('therefore;'), $toCharArray('theta;'), $toCharArray('thetasym;'), $toCharArray('thetav;'), $toCharArray('thickapprox;'), $toCharArray('thicksim;'), $toCharArray('thinsp;'), $toCharArray('thkap;'), $toCharArray('thksim;'), $toCharArray('thorn'), $toCharArray('thorn;'), $toCharArray('tilde;'), $toCharArray('times'), $toCharArray('times;'), $toCharArray('timesb;'), $toCharArray('timesbar;'), $toCharArray('timesd;'), $toCharArray('tint;'), $toCharArray('toea;'), $toCharArray('top;'), $toCharArray('topbot;'), $toCharArray('topcir;'), $toCharArray('topf;'), $toCharArray('topfork;'), $toCharArray('tosa;'), $toCharArray('tprime;'), $toCharArray('trade;'), $toCharArray('triangle;'), $toCharArray('triangledown;'), $toCharArray('triangleleft;'), $toCharArray('trianglelefteq;'), $toCharArray('triangleq;'), $toCharArray('triangleright;'), $toCharArray('trianglerighteq;'), $toCharArray('tridot;'), $toCharArray('trie;'), $toCharArray('triminus;'), $toCharArray('triplus;'), $toCharArray('trisb;'), $toCharArray('tritime;'), $toCharArray('trpezium;'), $toCharArray('tscr;'), $toCharArray('tscy;'), $toCharArray('tshcy;'), $toCharArray('tstrok;'), $toCharArray('twixt;'), $toCharArray('twoheadleftarrow;'), $toCharArray('twoheadrightarrow;'), $toCharArray('uArr;'), $toCharArray('uHar;'), $toCharArray('uacute'), $toCharArray('uacute;'), $toCharArray('uarr;'), $toCharArray('ubrcy;'), $toCharArray('ubreve;'), $toCharArray('ucirc'), $toCharArray('ucirc;'), $toCharArray('ucy;'), $toCharArray('udarr;'), $toCharArray('udblac;'), $toCharArray('udhar;'), $toCharArray('ufisht;'), $toCharArray('ufr;'), $toCharArray('ugrave'), $toCharArray('ugrave;'), $toCharArray('uharl;'), $toCharArray('uharr;'), $toCharArray('uhblk;'), $toCharArray('ulcorn;'), $toCharArray('ulcorner;'), $toCharArray('ulcrop;'), $toCharArray('ultri;'), $toCharArray('umacr;'), $toCharArray('uml'), $toCharArray('uml;'), $toCharArray('uogon;'), $toCharArray('uopf;'), $toCharArray('uparrow;'), $toCharArray('updownarrow;'), $toCharArray('upharpoonleft;'), $toCharArray('upharpoonright;'), $toCharArray('uplus;'), $toCharArray('upsi;'), $toCharArray('upsih;'), $toCharArray('upsilon;'), $toCharArray('upuparrows;'), $toCharArray('urcorn;'), $toCharArray('urcorner;'), $toCharArray('urcrop;'), $toCharArray('uring;'), $toCharArray('urtri;'), $toCharArray('uscr;'), $toCharArray('utdot;'), $toCharArray('utilde;'), $toCharArray('utri;'), $toCharArray('utrif;'), $toCharArray('uuarr;'), $toCharArray('uuml'), $toCharArray('uuml;'), $toCharArray('uwangle;'), $toCharArray('vArr;'), $toCharArray('vBar;'), $toCharArray('vBarv;'), $toCharArray('vDash;'), $toCharArray('vangrt;'), $toCharArray('varepsilon;'), $toCharArray('varkappa;'), $toCharArray('varnothing;'), $toCharArray('varphi;'), $toCharArray('varpi;'), $toCharArray('varpropto;'), $toCharArray('varr;'), $toCharArray('varrho;'), $toCharArray('varsigma;'), $toCharArray('vartheta;'), $toCharArray('vartriangleleft;'), $toCharArray('vartriangleright;'), $toCharArray('vcy;'), $toCharArray('vdash;'), $toCharArray('vee;'), $toCharArray('veebar;'), $toCharArray('veeeq;'), $toCharArray('vellip;'), $toCharArray('verbar;'), $toCharArray('vert;'), $toCharArray('vfr;'), $toCharArray('vltri;'), $toCharArray('vopf;'), $toCharArray('vprop;'), $toCharArray('vrtri;'), $toCharArray('vscr;'), $toCharArray('vzigzag;'), $toCharArray('wcirc;'), $toCharArray('wedbar;'), $toCharArray('wedge;'), $toCharArray('wedgeq;'), $toCharArray('weierp;'), $toCharArray('wfr;'), $toCharArray('wopf;'), $toCharArray('wp;'), $toCharArray('wr;'), $toCharArray('wreath;'), $toCharArray('wscr;'), $toCharArray('xcap;'), $toCharArray('xcirc;'), $toCharArray('xcup;'), $toCharArray('xdtri;'), $toCharArray('xfr;'), $toCharArray('xhArr;'), $toCharArray('xharr;'), $toCharArray('xi;'), $toCharArray('xlArr;'), $toCharArray('xlarr;'), $toCharArray('xmap;'), $toCharArray('xnis;'), $toCharArray('xodot;'), $toCharArray('xopf;'), $toCharArray('xoplus;'), $toCharArray('xotime;'), $toCharArray('xrArr;'), $toCharArray('xrarr;'), $toCharArray('xscr;'), $toCharArray('xsqcup;'), $toCharArray('xuplus;'), $toCharArray('xutri;'), $toCharArray('xvee;'), $toCharArray('xwedge;'), $toCharArray('yacute'), $toCharArray('yacute;'), $toCharArray('yacy;'), $toCharArray('ycirc;'), $toCharArray('ycy;'), $toCharArray('yen'), $toCharArray('yen;'), $toCharArray('yfr;'), $toCharArray('yicy;'), $toCharArray('yopf;'), $toCharArray('yscr;'), $toCharArray('yucy;'), $toCharArray('yuml'), $toCharArray('yuml;'), $toCharArray('zacute;'), $toCharArray('zcaron;'), $toCharArray('zcy;'), $toCharArray('zdot;'), $toCharArray('zeetrf;'), $toCharArray('zeta;'), $toCharArray('zfr;'), $toCharArray('zhcy;'), $toCharArray('zigrarr;'), $toCharArray('zopf;'), $toCharArray('zscr;'), $toCharArray('zwj;'), $toCharArray('zwnj;')]);
10.21643 +  VALUES_0 = initValues(_3_3C_classLit, 52, 12, [initValues(_3C_classLit, 42, -1, [198]), initValues(_3C_classLit, 42, -1, [198]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [193]), initValues(_3C_classLit, 42, -1, [193]), initValues(_3C_classLit, 42, -1, [258]), initValues(_3C_classLit, 42, -1, [194]), initValues(_3C_classLit, 42, -1, [194]), initValues(_3C_classLit, 42, -1, [1040]), initValues(_3C_classLit, 42, -1, [55349, 56580]), initValues(_3C_classLit, 42, -1, [192]), initValues(_3C_classLit, 42, -1, [192]), initValues(_3C_classLit, 42, -1, [913]), initValues(_3C_classLit, 42, -1, [256]), initValues(_3C_classLit, 42, -1, [10835]), initValues(_3C_classLit, 42, -1, [260]), initValues(_3C_classLit, 42, -1, [55349, 56632]), initValues(_3C_classLit, 42, -1, [8289]), initValues(_3C_classLit, 42, -1, [197]), initValues(_3C_classLit, 42, -1, [197]), initValues(_3C_classLit, 42, -1, [55349, 56476]), initValues(_3C_classLit, 42, -1, [8788]), initValues(_3C_classLit, 42, -1, [195]), initValues(_3C_classLit, 42, -1, [195]), initValues(_3C_classLit, 42, -1, [196]), initValues(_3C_classLit, 42, -1, [196]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [10983]), initValues(_3C_classLit, 42, -1, [8966]), initValues(_3C_classLit, 42, -1, [1041]), initValues(_3C_classLit, 42, -1, [8757]), initValues(_3C_classLit, 42, -1, [8492]), initValues(_3C_classLit, 42, -1, [914]), initValues(_3C_classLit, 42, -1, [55349, 56581]), initValues(_3C_classLit, 42, -1, [55349, 56633]), initValues(_3C_classLit, 42, -1, [728]), initValues(_3C_classLit, 42, -1, [8492]), initValues(_3C_classLit, 42, -1, [8782]), initValues(_3C_classLit, 42, -1, [1063]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [262]), initValues(_3C_classLit, 42, -1, [8914]), initValues(_3C_classLit, 42, -1, [8517]), initValues(_3C_classLit, 42, -1, [8493]), initValues(_3C_classLit, 42, -1, [268]), initValues(_3C_classLit, 42, -1, [199]), initValues(_3C_classLit, 42, -1, [199]), initValues(_3C_classLit, 42, -1, [264]), initValues(_3C_classLit, 42, -1, [8752]), initValues(_3C_classLit, 42, -1, [266]), initValues(_3C_classLit, 42, -1, [184]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [8493]), initValues(_3C_classLit, 42, -1, [935]), initValues(_3C_classLit, 42, -1, [8857]), initValues(_3C_classLit, 42, -1, [8854]), initValues(_3C_classLit, 42, -1, [8853]), initValues(_3C_classLit, 42, -1, [8855]), initValues(_3C_classLit, 42, -1, [8754]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8759]), initValues(_3C_classLit, 42, -1, [10868]), initValues(_3C_classLit, 42, -1, [8801]), initValues(_3C_classLit, 42, -1, [8751]), initValues(_3C_classLit, 42, -1, [8750]), initValues(_3C_classLit, 42, -1, [8450]), initValues(_3C_classLit, 42, -1, [8720]), initValues(_3C_classLit, 42, -1, [8755]), initValues(_3C_classLit, 42, -1, [10799]), initValues(_3C_classLit, 42, -1, [55349, 56478]), initValues(_3C_classLit, 42, -1, [8915]), initValues(_3C_classLit, 42, -1, [8781]), initValues(_3C_classLit, 42, -1, [8517]), initValues(_3C_classLit, 42, -1, [10513]), initValues(_3C_classLit, 42, -1, [1026]), initValues(_3C_classLit, 42, -1, [1029]), initValues(_3C_classLit, 42, -1, [1039]), initValues(_3C_classLit, 42, -1, [8225]), initValues(_3C_classLit, 42, -1, [8609]), initValues(_3C_classLit, 42, -1, [10980]), initValues(_3C_classLit, 42, -1, [270]), initValues(_3C_classLit, 42, -1, [1044]), initValues(_3C_classLit, 42, -1, [8711]), initValues(_3C_classLit, 42, -1, [916]), initValues(_3C_classLit, 42, -1, [55349, 56583]), initValues(_3C_classLit, 42, -1, [180]), initValues(_3C_classLit, 42, -1, [729]), initValues(_3C_classLit, 42, -1, [733]), initValues(_3C_classLit, 42, -1, [96]), initValues(_3C_classLit, 42, -1, [732]), initValues(_3C_classLit, 42, -1, [8900]), initValues(_3C_classLit, 42, -1, [8518]), initValues(_3C_classLit, 42, -1, [55349, 56635]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [8412]), initValues(_3C_classLit, 42, -1, [8784]), initValues(_3C_classLit, 42, -1, [8751]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [8659]), initValues(_3C_classLit, 42, -1, [8656]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [10980]), initValues(_3C_classLit, 42, -1, [10232]), initValues(_3C_classLit, 42, -1, [10234]), initValues(_3C_classLit, 42, -1, [10233]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [8872]), initValues(_3C_classLit, 42, -1, [8657]), initValues(_3C_classLit, 42, -1, [8661]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [10515]), initValues(_3C_classLit, 42, -1, [8693]), initValues(_3C_classLit, 42, -1, [785]), initValues(_3C_classLit, 42, -1, [10576]), initValues(_3C_classLit, 42, -1, [10590]), initValues(_3C_classLit, 42, -1, [8637]), initValues(_3C_classLit, 42, -1, [10582]), initValues(_3C_classLit, 42, -1, [10591]), initValues(_3C_classLit, 42, -1, [8641]), initValues(_3C_classLit, 42, -1, [10583]), initValues(_3C_classLit, 42, -1, [8868]), initValues(_3C_classLit, 42, -1, [8615]), initValues(_3C_classLit, 42, -1, [8659]), initValues(_3C_classLit, 42, -1, [55349, 56479]), initValues(_3C_classLit, 42, -1, [272]), initValues(_3C_classLit, 42, -1, [330]), initValues(_3C_classLit, 42, -1, [208]), initValues(_3C_classLit, 42, -1, [208]), initValues(_3C_classLit, 42, -1, [201]), initValues(_3C_classLit, 42, -1, [201]), initValues(_3C_classLit, 42, -1, [282]), initValues(_3C_classLit, 42, -1, [202]), initValues(_3C_classLit, 42, -1, [202]), initValues(_3C_classLit, 42, -1, [1069]), initValues(_3C_classLit, 42, -1, [278]), initValues(_3C_classLit, 42, -1, [55349, 56584]), initValues(_3C_classLit, 42, -1, [200]), initValues(_3C_classLit, 42, -1, [200]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [274]), initValues(_3C_classLit, 42, -1, [9723]), initValues(_3C_classLit, 42, -1, [9643]), initValues(_3C_classLit, 42, -1, [280]), initValues(_3C_classLit, 42, -1, [55349, 56636]), initValues(_3C_classLit, 42, -1, [917]), initValues(_3C_classLit, 42, -1, [10869]), initValues(_3C_classLit, 42, -1, [8770]), initValues(_3C_classLit, 42, -1, [8652]), initValues(_3C_classLit, 42, -1, [8496]), initValues(_3C_classLit, 42, -1, [10867]), initValues(_3C_classLit, 42, -1, [919]), initValues(_3C_classLit, 42, -1, [203]), initValues(_3C_classLit, 42, -1, [203]), initValues(_3C_classLit, 42, -1, [8707]), initValues(_3C_classLit, 42, -1, [8519]), initValues(_3C_classLit, 42, -1, [1060]), initValues(_3C_classLit, 42, -1, [55349, 56585]), initValues(_3C_classLit, 42, -1, [9724]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [55349, 56637]), initValues(_3C_classLit, 42, -1, [8704]), initValues(_3C_classLit, 42, -1, [8497]), initValues(_3C_classLit, 42, -1, [8497]), initValues(_3C_classLit, 42, -1, [1027]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [915]), initValues(_3C_classLit, 42, -1, [988]), initValues(_3C_classLit, 42, -1, [286]), initValues(_3C_classLit, 42, -1, [290]), initValues(_3C_classLit, 42, -1, [284]), initValues(_3C_classLit, 42, -1, [1043]), initValues(_3C_classLit, 42, -1, [288]), initValues(_3C_classLit, 42, -1, [55349, 56586]), initValues(_3C_classLit, 42, -1, [8921]), initValues(_3C_classLit, 42, -1, [55349, 56638]), initValues(_3C_classLit, 42, -1, [8805]), initValues(_3C_classLit, 42, -1, [8923]), initValues(_3C_classLit, 42, -1, [8807]), initValues(_3C_classLit, 42, -1, [10914]), initValues(_3C_classLit, 42, -1, [8823]), initValues(_3C_classLit, 42, -1, [10878]), initValues(_3C_classLit, 42, -1, [8819]), initValues(_3C_classLit, 42, -1, [55349, 56482]), initValues(_3C_classLit, 42, -1, [8811]), initValues(_3C_classLit, 42, -1, [1066]), initValues(_3C_classLit, 42, -1, [711]), initValues(_3C_classLit, 42, -1, [94]), initValues(_3C_classLit, 42, -1, [292]), initValues(_3C_classLit, 42, -1, [8460]), initValues(_3C_classLit, 42, -1, [8459]), initValues(_3C_classLit, 42, -1, [8461]), initValues(_3C_classLit, 42, -1, [9472]), initValues(_3C_classLit, 42, -1, [8459]), initValues(_3C_classLit, 42, -1, [294]), initValues(_3C_classLit, 42, -1, [8782]), initValues(_3C_classLit, 42, -1, [8783]), initValues(_3C_classLit, 42, -1, [1045]), initValues(_3C_classLit, 42, -1, [306]), initValues(_3C_classLit, 42, -1, [1025]), initValues(_3C_classLit, 42, -1, [205]), initValues(_3C_classLit, 42, -1, [205]), initValues(_3C_classLit, 42, -1, [206]), initValues(_3C_classLit, 42, -1, [206]), initValues(_3C_classLit, 42, -1, [1048]), initValues(_3C_classLit, 42, -1, [304]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [204]), initValues(_3C_classLit, 42, -1, [204]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [298]), initValues(_3C_classLit, 42, -1, [8520]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [8748]), initValues(_3C_classLit, 42, -1, [8747]), initValues(_3C_classLit, 42, -1, [8898]), initValues(_3C_classLit, 42, -1, [8291]), initValues(_3C_classLit, 42, -1, [8290]), initValues(_3C_classLit, 42, -1, [302]), initValues(_3C_classLit, 42, -1, [55349, 56640]), initValues(_3C_classLit, 42, -1, [921]), initValues(_3C_classLit, 42, -1, [8464]), initValues(_3C_classLit, 42, -1, [296]), initValues(_3C_classLit, 42, -1, [1030]), initValues(_3C_classLit, 42, -1, [207]), initValues(_3C_classLit, 42, -1, [207]), initValues(_3C_classLit, 42, -1, [308]), initValues(_3C_classLit, 42, -1, [1049]), initValues(_3C_classLit, 42, -1, [55349, 56589]), initValues(_3C_classLit, 42, -1, [55349, 56641]), initValues(_3C_classLit, 42, -1, [55349, 56485]), initValues(_3C_classLit, 42, -1, [1032]), initValues(_3C_classLit, 42, -1, [1028]), initValues(_3C_classLit, 42, -1, [1061]), initValues(_3C_classLit, 42, -1, [1036]), initValues(_3C_classLit, 42, -1, [922]), initValues(_3C_classLit, 42, -1, [310]), initValues(_3C_classLit, 42, -1, [1050]), initValues(_3C_classLit, 42, -1, [55349, 56590]), initValues(_3C_classLit, 42, -1, [55349, 56642]), initValues(_3C_classLit, 42, -1, [55349, 56486]), initValues(_3C_classLit, 42, -1, [1033]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [313]), initValues(_3C_classLit, 42, -1, [923]), initValues(_3C_classLit, 42, -1, [10218]), initValues(_3C_classLit, 42, -1, [8466]), initValues(_3C_classLit, 42, -1, [8606]), initValues(_3C_classLit, 42, -1, [317]), initValues(_3C_classLit, 42, -1, [315]), initValues(_3C_classLit, 42, -1, [1051]), initValues(_3C_classLit, 42, -1, [10216]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8676]), initValues(_3C_classLit, 42, -1, [8646]), initValues(_3C_classLit, 42, -1, [8968]), initValues(_3C_classLit, 42, -1, [10214]), initValues(_3C_classLit, 42, -1, [10593]), initValues(_3C_classLit, 42, -1, [8643]), initValues(_3C_classLit, 42, -1, [10585]), initValues(_3C_classLit, 42, -1, [8970]), initValues(_3C_classLit, 42, -1, [8596]), initValues(_3C_classLit, 42, -1, [10574]), initValues(_3C_classLit, 42, -1, [8867]), initValues(_3C_classLit, 42, -1, [8612]), initValues(_3C_classLit, 42, -1, [10586]), initValues(_3C_classLit, 42, -1, [8882]), initValues(_3C_classLit, 42, -1, [10703]), initValues(_3C_classLit, 42, -1, [8884]), initValues(_3C_classLit, 42, -1, [10577]), initValues(_3C_classLit, 42, -1, [10592]), initValues(_3C_classLit, 42, -1, [8639]), initValues(_3C_classLit, 42, -1, [10584]), initValues(_3C_classLit, 42, -1, [8636]), initValues(_3C_classLit, 42, -1, [10578]), initValues(_3C_classLit, 42, -1, [8656]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [8922]), initValues(_3C_classLit, 42, -1, [8806]), initValues(_3C_classLit, 42, -1, [8822]), initValues(_3C_classLit, 42, -1, [10913]), initValues(_3C_classLit, 42, -1, [10877]), initValues(_3C_classLit, 42, -1, [8818]), initValues(_3C_classLit, 42, -1, [55349, 56591]), initValues(_3C_classLit, 42, -1, [8920]), initValues(_3C_classLit, 42, -1, [8666]), initValues(_3C_classLit, 42, -1, [319]), initValues(_3C_classLit, 42, -1, [10229]), initValues(_3C_classLit, 42, -1, [10231]), initValues(_3C_classLit, 42, -1, [10230]), initValues(_3C_classLit, 42, -1, [10232]), initValues(_3C_classLit, 42, -1, [10234]), initValues(_3C_classLit, 42, -1, [10233]), initValues(_3C_classLit, 42, -1, [55349, 56643]), initValues(_3C_classLit, 42, -1, [8601]), initValues(_3C_classLit, 42, -1, [8600]), initValues(_3C_classLit, 42, -1, [8466]), initValues(_3C_classLit, 42, -1, [8624]), initValues(_3C_classLit, 42, -1, [321]), initValues(_3C_classLit, 42, -1, [8810]), initValues(_3C_classLit, 42, -1, [10501]), initValues(_3C_classLit, 42, -1, [1052]), initValues(_3C_classLit, 42, -1, [8287]), initValues(_3C_classLit, 42, -1, [8499]), initValues(_3C_classLit, 42, -1, [55349, 56592]), initValues(_3C_classLit, 42, -1, [8723]), initValues(_3C_classLit, 42, -1, [55349, 56644]), initValues(_3C_classLit, 42, -1, [8499]), initValues(_3C_classLit, 42, -1, [924]), initValues(_3C_classLit, 42, -1, [1034]), initValues(_3C_classLit, 42, -1, [323]), initValues(_3C_classLit, 42, -1, [327]), initValues(_3C_classLit, 42, -1, [325]), initValues(_3C_classLit, 42, -1, [1053]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8811]), initValues(_3C_classLit, 42, -1, [8810]), initValues(_3C_classLit, 42, -1, [10]), initValues(_3C_classLit, 42, -1, [55349, 56593]), initValues(_3C_classLit, 42, -1, [8288]), initValues(_3C_classLit, 42, -1, [160]), initValues(_3C_classLit, 42, -1, [8469]), initValues(_3C_classLit, 42, -1, [10988]), initValues(_3C_classLit, 42, -1, [8802]), initValues(_3C_classLit, 42, -1, [8813]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8713]), initValues(_3C_classLit, 42, -1, [8800]), initValues(_3C_classLit, 42, -1, [8708]), initValues(_3C_classLit, 42, -1, [8815]), initValues(_3C_classLit, 42, -1, [8817]), initValues(_3C_classLit, 42, -1, [8825]), initValues(_3C_classLit, 42, -1, [8821]), initValues(_3C_classLit, 42, -1, [8938]), initValues(_3C_classLit, 42, -1, [8940]), initValues(_3C_classLit, 42, -1, [8814]), initValues(_3C_classLit, 42, -1, [8816]), initValues(_3C_classLit, 42, -1, [8824]), initValues(_3C_classLit, 42, -1, [8820]), initValues(_3C_classLit, 42, -1, [8832]), initValues(_3C_classLit, 42, -1, [8928]), initValues(_3C_classLit, 42, -1, [8716]), initValues(_3C_classLit, 42, -1, [8939]), initValues(_3C_classLit, 42, -1, [8941]), initValues(_3C_classLit, 42, -1, [8930]), initValues(_3C_classLit, 42, -1, [8931]), initValues(_3C_classLit, 42, -1, [8840]), initValues(_3C_classLit, 42, -1, [8833]), initValues(_3C_classLit, 42, -1, [8929]), initValues(_3C_classLit, 42, -1, [8841]), initValues(_3C_classLit, 42, -1, [8769]), initValues(_3C_classLit, 42, -1, [8772]), initValues(_3C_classLit, 42, -1, [8775]), initValues(_3C_classLit, 42, -1, [8777]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [55349, 56489]), initValues(_3C_classLit, 42, -1, [209]), initValues(_3C_classLit, 42, -1, [209]), initValues(_3C_classLit, 42, -1, [925]), initValues(_3C_classLit, 42, -1, [338]), initValues(_3C_classLit, 42, -1, [211]), initValues(_3C_classLit, 42, -1, [211]), initValues(_3C_classLit, 42, -1, [212]), initValues(_3C_classLit, 42, -1, [212]), initValues(_3C_classLit, 42, -1, [1054]), initValues(_3C_classLit, 42, -1, [336]), initValues(_3C_classLit, 42, -1, [55349, 56594]), initValues(_3C_classLit, 42, -1, [210]), initValues(_3C_classLit, 42, -1, [210]), initValues(_3C_classLit, 42, -1, [332]), initValues(_3C_classLit, 42, -1, [937]), initValues(_3C_classLit, 42, -1, [927]), initValues(_3C_classLit, 42, -1, [55349, 56646]), initValues(_3C_classLit, 42, -1, [8220]), initValues(_3C_classLit, 42, -1, [8216]), initValues(_3C_classLit, 42, -1, [10836]), initValues(_3C_classLit, 42, -1, [55349, 56490]), initValues(_3C_classLit, 42, -1, [216]), initValues(_3C_classLit, 42, -1, [216]), initValues(_3C_classLit, 42, -1, [213]), initValues(_3C_classLit, 42, -1, [213]), initValues(_3C_classLit, 42, -1, [10807]), initValues(_3C_classLit, 42, -1, [214]), initValues(_3C_classLit, 42, -1, [214]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [9182]), initValues(_3C_classLit, 42, -1, [9140]), initValues(_3C_classLit, 42, -1, [9180]), initValues(_3C_classLit, 42, -1, [8706]), initValues(_3C_classLit, 42, -1, [1055]), initValues(_3C_classLit, 42, -1, [55349, 56595]), initValues(_3C_classLit, 42, -1, [934]), initValues(_3C_classLit, 42, -1, [928]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [8460]), initValues(_3C_classLit, 42, -1, [8473]), initValues(_3C_classLit, 42, -1, [10939]), initValues(_3C_classLit, 42, -1, [8826]), initValues(_3C_classLit, 42, -1, [10927]), initValues(_3C_classLit, 42, -1, [8828]), initValues(_3C_classLit, 42, -1, [8830]), initValues(_3C_classLit, 42, -1, [8243]), initValues(_3C_classLit, 42, -1, [8719]), initValues(_3C_classLit, 42, -1, [8759]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [55349, 56491]), initValues(_3C_classLit, 42, -1, [936]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [55349, 56596]), initValues(_3C_classLit, 42, -1, [8474]), initValues(_3C_classLit, 42, -1, [55349, 56492]), initValues(_3C_classLit, 42, -1, [10512]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [340]), initValues(_3C_classLit, 42, -1, [10219]), initValues(_3C_classLit, 42, -1, [8608]), initValues(_3C_classLit, 42, -1, [10518]), initValues(_3C_classLit, 42, -1, [344]), initValues(_3C_classLit, 42, -1, [342]), initValues(_3C_classLit, 42, -1, [1056]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [8651]), initValues(_3C_classLit, 42, -1, [10607]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [929]), initValues(_3C_classLit, 42, -1, [10217]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [8677]), initValues(_3C_classLit, 42, -1, [8644]), initValues(_3C_classLit, 42, -1, [8969]), initValues(_3C_classLit, 42, -1, [10215]), initValues(_3C_classLit, 42, -1, [10589]), initValues(_3C_classLit, 42, -1, [8642]), initValues(_3C_classLit, 42, -1, [10581]), initValues(_3C_classLit, 42, -1, [8971]), initValues(_3C_classLit, 42, -1, [8866]), initValues(_3C_classLit, 42, -1, [8614]), initValues(_3C_classLit, 42, -1, [10587]), initValues(_3C_classLit, 42, -1, [8883]), initValues(_3C_classLit, 42, -1, [10704]), initValues(_3C_classLit, 42, -1, [8885]), initValues(_3C_classLit, 42, -1, [10575]), initValues(_3C_classLit, 42, -1, [10588]), initValues(_3C_classLit, 42, -1, [8638]), initValues(_3C_classLit, 42, -1, [10580]), initValues(_3C_classLit, 42, -1, [8640]), initValues(_3C_classLit, 42, -1, [10579]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [8477]), initValues(_3C_classLit, 42, -1, [10608]), initValues(_3C_classLit, 42, -1, [8667]), initValues(_3C_classLit, 42, -1, [8475]), initValues(_3C_classLit, 42, -1, [8625]), initValues(_3C_classLit, 42, -1, [10740]), initValues(_3C_classLit, 42, -1, [1065]), initValues(_3C_classLit, 42, -1, [1064]), initValues(_3C_classLit, 42, -1, [1068]), initValues(_3C_classLit, 42, -1, [346]), initValues(_3C_classLit, 42, -1, [10940]), initValues(_3C_classLit, 42, -1, [352]), initValues(_3C_classLit, 42, -1, [350]), initValues(_3C_classLit, 42, -1, [348]), initValues(_3C_classLit, 42, -1, [1057]), initValues(_3C_classLit, 42, -1, [55349, 56598]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [931]), initValues(_3C_classLit, 42, -1, [8728]), initValues(_3C_classLit, 42, -1, [55349, 56650]), initValues(_3C_classLit, 42, -1, [8730]), initValues(_3C_classLit, 42, -1, [9633]), initValues(_3C_classLit, 42, -1, [8851]), initValues(_3C_classLit, 42, -1, [8847]), initValues(_3C_classLit, 42, -1, [8849]), initValues(_3C_classLit, 42, -1, [8848]), initValues(_3C_classLit, 42, -1, [8850]), initValues(_3C_classLit, 42, -1, [8852]), initValues(_3C_classLit, 42, -1, [55349, 56494]), initValues(_3C_classLit, 42, -1, [8902]), initValues(_3C_classLit, 42, -1, [8912]), initValues(_3C_classLit, 42, -1, [8912]), initValues(_3C_classLit, 42, -1, [8838]), initValues(_3C_classLit, 42, -1, [8827]), initValues(_3C_classLit, 42, -1, [10928]), initValues(_3C_classLit, 42, -1, [8829]), initValues(_3C_classLit, 42, -1, [8831]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [8721]), initValues(_3C_classLit, 42, -1, [8913]), initValues(_3C_classLit, 42, -1, [8835]), initValues(_3C_classLit, 42, -1, [8839]), initValues(_3C_classLit, 42, -1, [8913]), initValues(_3C_classLit, 42, -1, [222]), initValues(_3C_classLit, 42, -1, [222]), initValues(_3C_classLit, 42, -1, [8482]), initValues(_3C_classLit, 42, -1, [1035]), initValues(_3C_classLit, 42, -1, [1062]), initValues(_3C_classLit, 42, -1, [9]), initValues(_3C_classLit, 42, -1, [932]), initValues(_3C_classLit, 42, -1, [356]), initValues(_3C_classLit, 42, -1, [354]), initValues(_3C_classLit, 42, -1, [1058]), initValues(_3C_classLit, 42, -1, [55349, 56599]), initValues(_3C_classLit, 42, -1, [8756]), initValues(_3C_classLit, 42, -1, [920]), initValues(_3C_classLit, 42, -1, [8201]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [8771]), initValues(_3C_classLit, 42, -1, [8773]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [55349, 56651]), initValues(_3C_classLit, 42, -1, [8411]), initValues(_3C_classLit, 42, -1, [55349, 56495]), initValues(_3C_classLit, 42, -1, [358]), initValues(_3C_classLit, 42, -1, [218]), initValues(_3C_classLit, 42, -1, [218]), initValues(_3C_classLit, 42, -1, [8607]), initValues(_3C_classLit, 42, -1, [10569]), initValues(_3C_classLit, 42, -1, [1038]), initValues(_3C_classLit, 42, -1, [364]), initValues(_3C_classLit, 42, -1, [219]), initValues(_3C_classLit, 42, -1, [219]), initValues(_3C_classLit, 42, -1, [1059]), initValues(_3C_classLit, 42, -1, [368]), initValues(_3C_classLit, 42, -1, [55349, 56600]), initValues(_3C_classLit, 42, -1, [217]), initValues(_3C_classLit, 42, -1, [217]), initValues(_3C_classLit, 42, -1, [362]), initValues(_3C_classLit, 42, -1, [818]), initValues(_3C_classLit, 42, -1, [9183]), initValues(_3C_classLit, 42, -1, [9141]), initValues(_3C_classLit, 42, -1, [9181]), initValues(_3C_classLit, 42, -1, [8899]), initValues(_3C_classLit, 42, -1, [8846]), initValues(_3C_classLit, 42, -1, [370]), initValues(_3C_classLit, 42, -1, [55349, 56652]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [10514]), initValues(_3C_classLit, 42, -1, [8645]), initValues(_3C_classLit, 42, -1, [8597]), initValues(_3C_classLit, 42, -1, [10606]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8613]), initValues(_3C_classLit, 42, -1, [8657]), initValues(_3C_classLit, 42, -1, [8661]), initValues(_3C_classLit, 42, -1, [8598]), initValues(_3C_classLit, 42, -1, [8599]), initValues(_3C_classLit, 42, -1, [978]), initValues(_3C_classLit, 42, -1, [933]), initValues(_3C_classLit, 42, -1, [366]), initValues(_3C_classLit, 42, -1, [55349, 56496]), initValues(_3C_classLit, 42, -1, [360]), initValues(_3C_classLit, 42, -1, [220]), initValues(_3C_classLit, 42, -1, [220]), initValues(_3C_classLit, 42, -1, [8875]), initValues(_3C_classLit, 42, -1, [10987]), initValues(_3C_classLit, 42, -1, [1042]), initValues(_3C_classLit, 42, -1, [8873]), initValues(_3C_classLit, 42, -1, [10982]), initValues(_3C_classLit, 42, -1, [8897]), initValues(_3C_classLit, 42, -1, [8214]), initValues(_3C_classLit, 42, -1, [8214]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [124]), initValues(_3C_classLit, 42, -1, [10072]), initValues(_3C_classLit, 42, -1, [8768]), initValues(_3C_classLit, 42, -1, [8202]), initValues(_3C_classLit, 42, -1, [55349, 56601]), initValues(_3C_classLit, 42, -1, [55349, 56653]), initValues(_3C_classLit, 42, -1, [55349, 56497]), initValues(_3C_classLit, 42, -1, [8874]), initValues(_3C_classLit, 42, -1, [372]), initValues(_3C_classLit, 42, -1, [8896]), initValues(_3C_classLit, 42, -1, [55349, 56602]), initValues(_3C_classLit, 42, -1, [55349, 56654]), initValues(_3C_classLit, 42, -1, [55349, 56498]), initValues(_3C_classLit, 42, -1, [55349, 56603]), initValues(_3C_classLit, 42, -1, [926]), initValues(_3C_classLit, 42, -1, [55349, 56655]), initValues(_3C_classLit, 42, -1, [55349, 56499]), initValues(_3C_classLit, 42, -1, [1071]), initValues(_3C_classLit, 42, -1, [1031]), initValues(_3C_classLit, 42, -1, [1070]), initValues(_3C_classLit, 42, -1, [221]), initValues(_3C_classLit, 42, -1, [221]), initValues(_3C_classLit, 42, -1, [374]), initValues(_3C_classLit, 42, -1, [1067]), initValues(_3C_classLit, 42, -1, [55349, 56604]), initValues(_3C_classLit, 42, -1, [55349, 56656]), initValues(_3C_classLit, 42, -1, [55349, 56500]), initValues(_3C_classLit, 42, -1, [376]), initValues(_3C_classLit, 42, -1, [1046]), initValues(_3C_classLit, 42, -1, [377]), initValues(_3C_classLit, 42, -1, [381]), initValues(_3C_classLit, 42, -1, [1047]), initValues(_3C_classLit, 42, -1, [379]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [918]), initValues(_3C_classLit, 42, -1, [8488]), initValues(_3C_classLit, 42, -1, [8484]), initValues(_3C_classLit, 42, -1, [55349, 56501]), initValues(_3C_classLit, 42, -1, [225]), initValues(_3C_classLit, 42, -1, [225]), initValues(_3C_classLit, 42, -1, [259]), initValues(_3C_classLit, 42, -1, [8766]), initValues(_3C_classLit, 42, -1, [8767]), initValues(_3C_classLit, 42, -1, [226]), initValues(_3C_classLit, 42, -1, [226]), initValues(_3C_classLit, 42, -1, [180]), initValues(_3C_classLit, 42, -1, [180]), initValues(_3C_classLit, 42, -1, [1072]), initValues(_3C_classLit, 42, -1, [230]), initValues(_3C_classLit, 42, -1, [230]), initValues(_3C_classLit, 42, -1, [8289]), initValues(_3C_classLit, 42, -1, [55349, 56606]), initValues(_3C_classLit, 42, -1, [224]), initValues(_3C_classLit, 42, -1, [224]), initValues(_3C_classLit, 42, -1, [8501]), initValues(_3C_classLit, 42, -1, [8501]), initValues(_3C_classLit, 42, -1, [945]), initValues(_3C_classLit, 42, -1, [257]), initValues(_3C_classLit, 42, -1, [10815]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [8743]), initValues(_3C_classLit, 42, -1, [10837]), initValues(_3C_classLit, 42, -1, [10844]), initValues(_3C_classLit, 42, -1, [10840]), initValues(_3C_classLit, 42, -1, [10842]), initValues(_3C_classLit, 42, -1, [8736]), initValues(_3C_classLit, 42, -1, [10660]), initValues(_3C_classLit, 42, -1, [8736]), initValues(_3C_classLit, 42, -1, [8737]), initValues(_3C_classLit, 42, -1, [10664]), initValues(_3C_classLit, 42, -1, [10665]), initValues(_3C_classLit, 42, -1, [10666]), initValues(_3C_classLit, 42, -1, [10667]), initValues(_3C_classLit, 42, -1, [10668]), initValues(_3C_classLit, 42, -1, [10669]), initValues(_3C_classLit, 42, -1, [10670]), initValues(_3C_classLit, 42, -1, [10671]), initValues(_3C_classLit, 42, -1, [8735]), initValues(_3C_classLit, 42, -1, [8894]), initValues(_3C_classLit, 42, -1, [10653]), initValues(_3C_classLit, 42, -1, [8738]), initValues(_3C_classLit, 42, -1, [8491]), initValues(_3C_classLit, 42, -1, [9084]), initValues(_3C_classLit, 42, -1, [261]), initValues(_3C_classLit, 42, -1, [55349, 56658]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [10864]), initValues(_3C_classLit, 42, -1, [10863]), initValues(_3C_classLit, 42, -1, [8778]), initValues(_3C_classLit, 42, -1, [8779]), initValues(_3C_classLit, 42, -1, [39]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8778]), initValues(_3C_classLit, 42, -1, [229]), initValues(_3C_classLit, 42, -1, [229]), initValues(_3C_classLit, 42, -1, [55349, 56502]), initValues(_3C_classLit, 42, -1, [42]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8781]), initValues(_3C_classLit, 42, -1, [227]), initValues(_3C_classLit, 42, -1, [227]), initValues(_3C_classLit, 42, -1, [228]), initValues(_3C_classLit, 42, -1, [228]), initValues(_3C_classLit, 42, -1, [8755]), initValues(_3C_classLit, 42, -1, [10769]), initValues(_3C_classLit, 42, -1, [10989]), initValues(_3C_classLit, 42, -1, [8780]), initValues(_3C_classLit, 42, -1, [1014]), initValues(_3C_classLit, 42, -1, [8245]), initValues(_3C_classLit, 42, -1, [8765]), initValues(_3C_classLit, 42, -1, [8909]), initValues(_3C_classLit, 42, -1, [8893]), initValues(_3C_classLit, 42, -1, [8965]), initValues(_3C_classLit, 42, -1, [8965]), initValues(_3C_classLit, 42, -1, [9141]), initValues(_3C_classLit, 42, -1, [9142]), initValues(_3C_classLit, 42, -1, [8780]), initValues(_3C_classLit, 42, -1, [1073]), initValues(_3C_classLit, 42, -1, [8222]), initValues(_3C_classLit, 42, -1, [8757]), initValues(_3C_classLit, 42, -1, [8757]), initValues(_3C_classLit, 42, -1, [10672]), initValues(_3C_classLit, 42, -1, [1014]), initValues(_3C_classLit, 42, -1, [8492]), initValues(_3C_classLit, 42, -1, [946]), initValues(_3C_classLit, 42, -1, [8502]), initValues(_3C_classLit, 42, -1, [8812]), initValues(_3C_classLit, 42, -1, [55349, 56607]), initValues(_3C_classLit, 42, -1, [8898]), initValues(_3C_classLit, 42, -1, [9711]), initValues(_3C_classLit, 42, -1, [8899]), initValues(_3C_classLit, 42, -1, [10752]), initValues(_3C_classLit, 42, -1, [10753]), initValues(_3C_classLit, 42, -1, [10754]), initValues(_3C_classLit, 42, -1, [10758]), initValues(_3C_classLit, 42, -1, [9733]), initValues(_3C_classLit, 42, -1, [9661]), initValues(_3C_classLit, 42, -1, [9651]), initValues(_3C_classLit, 42, -1, [10756]), initValues(_3C_classLit, 42, -1, [8897]), initValues(_3C_classLit, 42, -1, [8896]), initValues(_3C_classLit, 42, -1, [10509]), initValues(_3C_classLit, 42, -1, [10731]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [9652]), initValues(_3C_classLit, 42, -1, [9662]), initValues(_3C_classLit, 42, -1, [9666]), initValues(_3C_classLit, 42, -1, [9656]), initValues(_3C_classLit, 42, -1, [9251]), initValues(_3C_classLit, 42, -1, [9618]), initValues(_3C_classLit, 42, -1, [9617]), initValues(_3C_classLit, 42, -1, [9619]), initValues(_3C_classLit, 42, -1, [9608]), initValues(_3C_classLit, 42, -1, [8976]), initValues(_3C_classLit, 42, -1, [55349, 56659]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8904]), initValues(_3C_classLit, 42, -1, [9559]), initValues(_3C_classLit, 42, -1, [9556]), initValues(_3C_classLit, 42, -1, [9558]), initValues(_3C_classLit, 42, -1, [9555]), initValues(_3C_classLit, 42, -1, [9552]), initValues(_3C_classLit, 42, -1, [9574]), initValues(_3C_classLit, 42, -1, [9577]), initValues(_3C_classLit, 42, -1, [9572]), initValues(_3C_classLit, 42, -1, [9575]), initValues(_3C_classLit, 42, -1, [9565]), initValues(_3C_classLit, 42, -1, [9562]), initValues(_3C_classLit, 42, -1, [9564]), initValues(_3C_classLit, 42, -1, [9561]), initValues(_3C_classLit, 42, -1, [9553]), initValues(_3C_classLit, 42, -1, [9580]), initValues(_3C_classLit, 42, -1, [9571]), initValues(_3C_classLit, 42, -1, [9568]), initValues(_3C_classLit, 42, -1, [9579]), initValues(_3C_classLit, 42, -1, [9570]), initValues(_3C_classLit, 42, -1, [9567]), initValues(_3C_classLit, 42, -1, [10697]), initValues(_3C_classLit, 42, -1, [9557]), initValues(_3C_classLit, 42, -1, [9554]), initValues(_3C_classLit, 42, -1, [9488]), initValues(_3C_classLit, 42, -1, [9484]), initValues(_3C_classLit, 42, -1, [9472]), initValues(_3C_classLit, 42, -1, [9573]), initValues(_3C_classLit, 42, -1, [9576]), initValues(_3C_classLit, 42, -1, [9516]), initValues(_3C_classLit, 42, -1, [9524]), initValues(_3C_classLit, 42, -1, [8863]), initValues(_3C_classLit, 42, -1, [8862]), initValues(_3C_classLit, 42, -1, [8864]), initValues(_3C_classLit, 42, -1, [9563]), initValues(_3C_classLit, 42, -1, [9560]), initValues(_3C_classLit, 42, -1, [9496]), initValues(_3C_classLit, 42, -1, [9492]), initValues(_3C_classLit, 42, -1, [9474]), initValues(_3C_classLit, 42, -1, [9578]), initValues(_3C_classLit, 42, -1, [9569]), initValues(_3C_classLit, 42, -1, [9566]), initValues(_3C_classLit, 42, -1, [9532]), initValues(_3C_classLit, 42, -1, [9508]), initValues(_3C_classLit, 42, -1, [9500]), initValues(_3C_classLit, 42, -1, [8245]), initValues(_3C_classLit, 42, -1, [728]), initValues(_3C_classLit, 42, -1, [166]), initValues(_3C_classLit, 42, -1, [166]), initValues(_3C_classLit, 42, -1, [55349, 56503]), initValues(_3C_classLit, 42, -1, [8271]), initValues(_3C_classLit, 42, -1, [8765]), initValues(_3C_classLit, 42, -1, [8909]), initValues(_3C_classLit, 42, -1, [92]), initValues(_3C_classLit, 42, -1, [10693]), initValues(_3C_classLit, 42, -1, [8226]), initValues(_3C_classLit, 42, -1, [8226]), initValues(_3C_classLit, 42, -1, [8782]), initValues(_3C_classLit, 42, -1, [10926]), initValues(_3C_classLit, 42, -1, [8783]), initValues(_3C_classLit, 42, -1, [8783]), initValues(_3C_classLit, 42, -1, [263]), initValues(_3C_classLit, 42, -1, [8745]), initValues(_3C_classLit, 42, -1, [10820]), initValues(_3C_classLit, 42, -1, [10825]), initValues(_3C_classLit, 42, -1, [10827]), initValues(_3C_classLit, 42, -1, [10823]), initValues(_3C_classLit, 42, -1, [10816]), initValues(_3C_classLit, 42, -1, [8257]), initValues(_3C_classLit, 42, -1, [711]), initValues(_3C_classLit, 42, -1, [10829]), initValues(_3C_classLit, 42, -1, [269]), initValues(_3C_classLit, 42, -1, [231]), initValues(_3C_classLit, 42, -1, [231]), initValues(_3C_classLit, 42, -1, [265]), initValues(_3C_classLit, 42, -1, [10828]), initValues(_3C_classLit, 42, -1, [10832]), initValues(_3C_classLit, 42, -1, [267]), initValues(_3C_classLit, 42, -1, [184]), initValues(_3C_classLit, 42, -1, [184]), initValues(_3C_classLit, 42, -1, [10674]), initValues(_3C_classLit, 42, -1, [162]), initValues(_3C_classLit, 42, -1, [162]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [55349, 56608]), initValues(_3C_classLit, 42, -1, [1095]), initValues(_3C_classLit, 42, -1, [10003]), initValues(_3C_classLit, 42, -1, [10003]), initValues(_3C_classLit, 42, -1, [967]), initValues(_3C_classLit, 42, -1, [9675]), initValues(_3C_classLit, 42, -1, [10691]), initValues(_3C_classLit, 42, -1, [710]), initValues(_3C_classLit, 42, -1, [8791]), initValues(_3C_classLit, 42, -1, [8634]), initValues(_3C_classLit, 42, -1, [8635]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [9416]), initValues(_3C_classLit, 42, -1, [8859]), initValues(_3C_classLit, 42, -1, [8858]), initValues(_3C_classLit, 42, -1, [8861]), initValues(_3C_classLit, 42, -1, [8791]), initValues(_3C_classLit, 42, -1, [10768]), initValues(_3C_classLit, 42, -1, [10991]), initValues(_3C_classLit, 42, -1, [10690]), initValues(_3C_classLit, 42, -1, [9827]), initValues(_3C_classLit, 42, -1, [9827]), initValues(_3C_classLit, 42, -1, [58]), initValues(_3C_classLit, 42, -1, [8788]), initValues(_3C_classLit, 42, -1, [8788]), initValues(_3C_classLit, 42, -1, [44]), initValues(_3C_classLit, 42, -1, [64]), initValues(_3C_classLit, 42, -1, [8705]), initValues(_3C_classLit, 42, -1, [8728]), initValues(_3C_classLit, 42, -1, [8705]), initValues(_3C_classLit, 42, -1, [8450]), initValues(_3C_classLit, 42, -1, [8773]), initValues(_3C_classLit, 42, -1, [10861]), initValues(_3C_classLit, 42, -1, [8750]), initValues(_3C_classLit, 42, -1, [55349, 56660]), initValues(_3C_classLit, 42, -1, [8720]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [8471]), initValues(_3C_classLit, 42, -1, [8629]), initValues(_3C_classLit, 42, -1, [10007]), initValues(_3C_classLit, 42, -1, [55349, 56504]), initValues(_3C_classLit, 42, -1, [10959]), initValues(_3C_classLit, 42, -1, [10961]), initValues(_3C_classLit, 42, -1, [10960]), initValues(_3C_classLit, 42, -1, [10962]), initValues(_3C_classLit, 42, -1, [8943]), initValues(_3C_classLit, 42, -1, [10552]), initValues(_3C_classLit, 42, -1, [10549]), initValues(_3C_classLit, 42, -1, [8926]), initValues(_3C_classLit, 42, -1, [8927]), initValues(_3C_classLit, 42, -1, [8630]), initValues(_3C_classLit, 42, -1, [10557]), initValues(_3C_classLit, 42, -1, [8746]), initValues(_3C_classLit, 42, -1, [10824]), initValues(_3C_classLit, 42, -1, [10822]), initValues(_3C_classLit, 42, -1, [10826]), initValues(_3C_classLit, 42, -1, [8845]), initValues(_3C_classLit, 42, -1, [10821]), initValues(_3C_classLit, 42, -1, [8631]), initValues(_3C_classLit, 42, -1, [10556]), initValues(_3C_classLit, 42, -1, [8926]), initValues(_3C_classLit, 42, -1, [8927]), initValues(_3C_classLit, 42, -1, [8910]), initValues(_3C_classLit, 42, -1, [8911]), initValues(_3C_classLit, 42, -1, [164]), initValues(_3C_classLit, 42, -1, [164]), initValues(_3C_classLit, 42, -1, [8630]), initValues(_3C_classLit, 42, -1, [8631]), initValues(_3C_classLit, 42, -1, [8910]), initValues(_3C_classLit, 42, -1, [8911]), initValues(_3C_classLit, 42, -1, [8754]), initValues(_3C_classLit, 42, -1, [8753]), initValues(_3C_classLit, 42, -1, [9005]), initValues(_3C_classLit, 42, -1, [8659]), initValues(_3C_classLit, 42, -1, [10597]), initValues(_3C_classLit, 42, -1, [8224]), initValues(_3C_classLit, 42, -1, [8504]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [8208]), initValues(_3C_classLit, 42, -1, [8867]), initValues(_3C_classLit, 42, -1, [10511]), initValues(_3C_classLit, 42, -1, [733]), initValues(_3C_classLit, 42, -1, [271]), initValues(_3C_classLit, 42, -1, [1076]), initValues(_3C_classLit, 42, -1, [8518]), initValues(_3C_classLit, 42, -1, [8225]), initValues(_3C_classLit, 42, -1, [8650]), initValues(_3C_classLit, 42, -1, [10871]), initValues(_3C_classLit, 42, -1, [176]), initValues(_3C_classLit, 42, -1, [176]), initValues(_3C_classLit, 42, -1, [948]), initValues(_3C_classLit, 42, -1, [10673]), initValues(_3C_classLit, 42, -1, [10623]), initValues(_3C_classLit, 42, -1, [55349, 56609]), initValues(_3C_classLit, 42, -1, [8643]), initValues(_3C_classLit, 42, -1, [8642]), initValues(_3C_classLit, 42, -1, [8900]), initValues(_3C_classLit, 42, -1, [8900]), initValues(_3C_classLit, 42, -1, [9830]), initValues(_3C_classLit, 42, -1, [9830]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [989]), initValues(_3C_classLit, 42, -1, [8946]), initValues(_3C_classLit, 42, -1, [247]), initValues(_3C_classLit, 42, -1, [247]), initValues(_3C_classLit, 42, -1, [247]), initValues(_3C_classLit, 42, -1, [8903]), initValues(_3C_classLit, 42, -1, [8903]), initValues(_3C_classLit, 42, -1, [1106]), initValues(_3C_classLit, 42, -1, [8990]), initValues(_3C_classLit, 42, -1, [8973]), initValues(_3C_classLit, 42, -1, [36]), initValues(_3C_classLit, 42, -1, [55349, 56661]), initValues(_3C_classLit, 42, -1, [729]), initValues(_3C_classLit, 42, -1, [8784]), initValues(_3C_classLit, 42, -1, [8785]), initValues(_3C_classLit, 42, -1, [8760]), initValues(_3C_classLit, 42, -1, [8724]), initValues(_3C_classLit, 42, -1, [8865]), initValues(_3C_classLit, 42, -1, [8966]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [8650]), initValues(_3C_classLit, 42, -1, [8643]), initValues(_3C_classLit, 42, -1, [8642]), initValues(_3C_classLit, 42, -1, [10512]), initValues(_3C_classLit, 42, -1, [8991]), initValues(_3C_classLit, 42, -1, [8972]), initValues(_3C_classLit, 42, -1, [55349, 56505]), initValues(_3C_classLit, 42, -1, [1109]), initValues(_3C_classLit, 42, -1, [10742]), initValues(_3C_classLit, 42, -1, [273]), initValues(_3C_classLit, 42, -1, [8945]), initValues(_3C_classLit, 42, -1, [9663]), initValues(_3C_classLit, 42, -1, [9662]), initValues(_3C_classLit, 42, -1, [8693]), initValues(_3C_classLit, 42, -1, [10607]), initValues(_3C_classLit, 42, -1, [10662]), initValues(_3C_classLit, 42, -1, [1119]), initValues(_3C_classLit, 42, -1, [10239]), initValues(_3C_classLit, 42, -1, [10871]), initValues(_3C_classLit, 42, -1, [8785]), initValues(_3C_classLit, 42, -1, [233]), initValues(_3C_classLit, 42, -1, [233]), initValues(_3C_classLit, 42, -1, [10862]), initValues(_3C_classLit, 42, -1, [283]), initValues(_3C_classLit, 42, -1, [8790]), initValues(_3C_classLit, 42, -1, [234]), initValues(_3C_classLit, 42, -1, [234]), initValues(_3C_classLit, 42, -1, [8789]), initValues(_3C_classLit, 42, -1, [1101]), initValues(_3C_classLit, 42, -1, [279]), initValues(_3C_classLit, 42, -1, [8519]), initValues(_3C_classLit, 42, -1, [8786]), initValues(_3C_classLit, 42, -1, [55349, 56610]), initValues(_3C_classLit, 42, -1, [10906]), initValues(_3C_classLit, 42, -1, [232]), initValues(_3C_classLit, 42, -1, [232]), initValues(_3C_classLit, 42, -1, [10902]), initValues(_3C_classLit, 42, -1, [10904]), initValues(_3C_classLit, 42, -1, [10905]), initValues(_3C_classLit, 42, -1, [9191]), initValues(_3C_classLit, 42, -1, [8467]), initValues(_3C_classLit, 42, -1, [10901]), initValues(_3C_classLit, 42, -1, [10903]), initValues(_3C_classLit, 42, -1, [275]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [8196]), initValues(_3C_classLit, 42, -1, [8197]), initValues(_3C_classLit, 42, -1, [8195]), initValues(_3C_classLit, 42, -1, [331]), initValues(_3C_classLit, 42, -1, [8194]), initValues(_3C_classLit, 42, -1, [281]), initValues(_3C_classLit, 42, -1, [55349, 56662]), initValues(_3C_classLit, 42, -1, [8917]), initValues(_3C_classLit, 42, -1, [10723]), initValues(_3C_classLit, 42, -1, [10865]), initValues(_3C_classLit, 42, -1, [1013]), initValues(_3C_classLit, 42, -1, [949]), initValues(_3C_classLit, 42, -1, [949]), initValues(_3C_classLit, 42, -1, [8790]), initValues(_3C_classLit, 42, -1, [8789]), initValues(_3C_classLit, 42, -1, [8770]), initValues(_3C_classLit, 42, -1, [10902]), initValues(_3C_classLit, 42, -1, [10901]), initValues(_3C_classLit, 42, -1, [61]), initValues(_3C_classLit, 42, -1, [8799]), initValues(_3C_classLit, 42, -1, [8801]), initValues(_3C_classLit, 42, -1, [10872]), initValues(_3C_classLit, 42, -1, [10725]), initValues(_3C_classLit, 42, -1, [8787]), initValues(_3C_classLit, 42, -1, [10609]), initValues(_3C_classLit, 42, -1, [8495]), initValues(_3C_classLit, 42, -1, [8784]), initValues(_3C_classLit, 42, -1, [8770]), initValues(_3C_classLit, 42, -1, [951]), initValues(_3C_classLit, 42, -1, [240]), initValues(_3C_classLit, 42, -1, [240]), initValues(_3C_classLit, 42, -1, [235]), initValues(_3C_classLit, 42, -1, [235]), initValues(_3C_classLit, 42, -1, [8364]), initValues(_3C_classLit, 42, -1, [33]), initValues(_3C_classLit, 42, -1, [8707]), initValues(_3C_classLit, 42, -1, [8496]), initValues(_3C_classLit, 42, -1, [8519]), initValues(_3C_classLit, 42, -1, [8786]), initValues(_3C_classLit, 42, -1, [1092]), initValues(_3C_classLit, 42, -1, [9792]), initValues(_3C_classLit, 42, -1, [64259]), initValues(_3C_classLit, 42, -1, [64256]), initValues(_3C_classLit, 42, -1, [64260]), initValues(_3C_classLit, 42, -1, [55349, 56611]), initValues(_3C_classLit, 42, -1, [64257]), initValues(_3C_classLit, 42, -1, [9837]), initValues(_3C_classLit, 42, -1, [64258]), initValues(_3C_classLit, 42, -1, [9649]), initValues(_3C_classLit, 42, -1, [402]), initValues(_3C_classLit, 42, -1, [55349, 56663]), initValues(_3C_classLit, 42, -1, [8704]), initValues(_3C_classLit, 42, -1, [8916]), initValues(_3C_classLit, 42, -1, [10969]), initValues(_3C_classLit, 42, -1, [10765]), initValues(_3C_classLit, 42, -1, [189]), initValues(_3C_classLit, 42, -1, [189]), initValues(_3C_classLit, 42, -1, [8531]), initValues(_3C_classLit, 42, -1, [188]), initValues(_3C_classLit, 42, -1, [188]), initValues(_3C_classLit, 42, -1, [8533]), initValues(_3C_classLit, 42, -1, [8537]), initValues(_3C_classLit, 42, -1, [8539]), initValues(_3C_classLit, 42, -1, [8532]), initValues(_3C_classLit, 42, -1, [8534]), initValues(_3C_classLit, 42, -1, [190]), initValues(_3C_classLit, 42, -1, [190]), initValues(_3C_classLit, 42, -1, [8535]), initValues(_3C_classLit, 42, -1, [8540]), initValues(_3C_classLit, 42, -1, [8536]), initValues(_3C_classLit, 42, -1, [8538]), initValues(_3C_classLit, 42, -1, [8541]), initValues(_3C_classLit, 42, -1, [8542]), initValues(_3C_classLit, 42, -1, [8260]), initValues(_3C_classLit, 42, -1, [8994]), initValues(_3C_classLit, 42, -1, [55349, 56507]), initValues(_3C_classLit, 42, -1, [8807]), initValues(_3C_classLit, 42, -1, [10892]), initValues(_3C_classLit, 42, -1, [501]), initValues(_3C_classLit, 42, -1, [947]), initValues(_3C_classLit, 42, -1, [989]), initValues(_3C_classLit, 42, -1, [10886]), initValues(_3C_classLit, 42, -1, [287]), initValues(_3C_classLit, 42, -1, [285]), initValues(_3C_classLit, 42, -1, [1075]), initValues(_3C_classLit, 42, -1, [289]), initValues(_3C_classLit, 42, -1, [8805]), initValues(_3C_classLit, 42, -1, [8923]), initValues(_3C_classLit, 42, -1, [8805]), initValues(_3C_classLit, 42, -1, [8807]), initValues(_3C_classLit, 42, -1, [10878]), initValues(_3C_classLit, 42, -1, [10878]), initValues(_3C_classLit, 42, -1, [10921]), initValues(_3C_classLit, 42, -1, [10880]), initValues(_3C_classLit, 42, -1, [10882]), initValues(_3C_classLit, 42, -1, [10884]), initValues(_3C_classLit, 42, -1, [10900]), initValues(_3C_classLit, 42, -1, [55349, 56612]), initValues(_3C_classLit, 42, -1, [8811]), initValues(_3C_classLit, 42, -1, [8921]), initValues(_3C_classLit, 42, -1, [8503]), initValues(_3C_classLit, 42, -1, [1107]), initValues(_3C_classLit, 42, -1, [8823]), initValues(_3C_classLit, 42, -1, [10898]), initValues(_3C_classLit, 42, -1, [10917]), initValues(_3C_classLit, 42, -1, [10916]), initValues(_3C_classLit, 42, -1, [8809]), initValues(_3C_classLit, 42, -1, [10890]), initValues(_3C_classLit, 42, -1, [10890]), initValues(_3C_classLit, 42, -1, [10888]), initValues(_3C_classLit, 42, -1, [10888]), initValues(_3C_classLit, 42, -1, [8809]), initValues(_3C_classLit, 42, -1, [8935]), initValues(_3C_classLit, 42, -1, [55349, 56664]), initValues(_3C_classLit, 42, -1, [96]), initValues(_3C_classLit, 42, -1, [8458]), initValues(_3C_classLit, 42, -1, [8819]), initValues(_3C_classLit, 42, -1, [10894]), initValues(_3C_classLit, 42, -1, [10896]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [10919]), initValues(_3C_classLit, 42, -1, [10874]), initValues(_3C_classLit, 42, -1, [8919]), initValues(_3C_classLit, 42, -1, [10645]), initValues(_3C_classLit, 42, -1, [10876]), initValues(_3C_classLit, 42, -1, [10886]), initValues(_3C_classLit, 42, -1, [10616]), initValues(_3C_classLit, 42, -1, [8919]), initValues(_3C_classLit, 42, -1, [8923]), initValues(_3C_classLit, 42, -1, [10892]), initValues(_3C_classLit, 42, -1, [8823]), initValues(_3C_classLit, 42, -1, [8819]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [8202]), initValues(_3C_classLit, 42, -1, [189]), initValues(_3C_classLit, 42, -1, [8459]), initValues(_3C_classLit, 42, -1, [1098]), initValues(_3C_classLit, 42, -1, [8596]), initValues(_3C_classLit, 42, -1, [10568]), initValues(_3C_classLit, 42, -1, [8621]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [293]), initValues(_3C_classLit, 42, -1, [9829]), initValues(_3C_classLit, 42, -1, [9829]), initValues(_3C_classLit, 42, -1, [8230]), initValues(_3C_classLit, 42, -1, [8889]), initValues(_3C_classLit, 42, -1, [55349, 56613]), initValues(_3C_classLit, 42, -1, [10533]), initValues(_3C_classLit, 42, -1, [10534]), initValues(_3C_classLit, 42, -1, [8703]), initValues(_3C_classLit, 42, -1, [8763]), initValues(_3C_classLit, 42, -1, [8617]), initValues(_3C_classLit, 42, -1, [8618]), initValues(_3C_classLit, 42, -1, [55349, 56665]), initValues(_3C_classLit, 42, -1, [8213]), initValues(_3C_classLit, 42, -1, [55349, 56509]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [295]), initValues(_3C_classLit, 42, -1, [8259]), initValues(_3C_classLit, 42, -1, [8208]), initValues(_3C_classLit, 42, -1, [237]), initValues(_3C_classLit, 42, -1, [237]), initValues(_3C_classLit, 42, -1, [8291]), initValues(_3C_classLit, 42, -1, [238]), initValues(_3C_classLit, 42, -1, [238]), initValues(_3C_classLit, 42, -1, [1080]), initValues(_3C_classLit, 42, -1, [1077]), initValues(_3C_classLit, 42, -1, [161]), initValues(_3C_classLit, 42, -1, [161]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [55349, 56614]), initValues(_3C_classLit, 42, -1, [236]), initValues(_3C_classLit, 42, -1, [236]), initValues(_3C_classLit, 42, -1, [8520]), initValues(_3C_classLit, 42, -1, [10764]), initValues(_3C_classLit, 42, -1, [8749]), initValues(_3C_classLit, 42, -1, [10716]), initValues(_3C_classLit, 42, -1, [8489]), initValues(_3C_classLit, 42, -1, [307]), initValues(_3C_classLit, 42, -1, [299]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [8464]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [305]), initValues(_3C_classLit, 42, -1, [8887]), initValues(_3C_classLit, 42, -1, [437]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [8453]), initValues(_3C_classLit, 42, -1, [8734]), initValues(_3C_classLit, 42, -1, [10717]), initValues(_3C_classLit, 42, -1, [305]), initValues(_3C_classLit, 42, -1, [8747]), initValues(_3C_classLit, 42, -1, [8890]), initValues(_3C_classLit, 42, -1, [8484]), initValues(_3C_classLit, 42, -1, [8890]), initValues(_3C_classLit, 42, -1, [10775]), initValues(_3C_classLit, 42, -1, [10812]), initValues(_3C_classLit, 42, -1, [1105]), initValues(_3C_classLit, 42, -1, [303]), initValues(_3C_classLit, 42, -1, [55349, 56666]), initValues(_3C_classLit, 42, -1, [953]), initValues(_3C_classLit, 42, -1, [10812]), initValues(_3C_classLit, 42, -1, [191]), initValues(_3C_classLit, 42, -1, [191]), initValues(_3C_classLit, 42, -1, [55349, 56510]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [8953]), initValues(_3C_classLit, 42, -1, [8949]), initValues(_3C_classLit, 42, -1, [8948]), initValues(_3C_classLit, 42, -1, [8947]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [8290]), initValues(_3C_classLit, 42, -1, [297]), initValues(_3C_classLit, 42, -1, [1110]), initValues(_3C_classLit, 42, -1, [239]), initValues(_3C_classLit, 42, -1, [239]), initValues(_3C_classLit, 42, -1, [309]), initValues(_3C_classLit, 42, -1, [1081]), initValues(_3C_classLit, 42, -1, [55349, 56615]), initValues(_3C_classLit, 42, -1, [567]), initValues(_3C_classLit, 42, -1, [55349, 56667]), initValues(_3C_classLit, 42, -1, [55349, 56511]), initValues(_3C_classLit, 42, -1, [1112]), initValues(_3C_classLit, 42, -1, [1108]), initValues(_3C_classLit, 42, -1, [954]), initValues(_3C_classLit, 42, -1, [1008]), initValues(_3C_classLit, 42, -1, [311]), initValues(_3C_classLit, 42, -1, [1082]), initValues(_3C_classLit, 42, -1, [55349, 56616]), initValues(_3C_classLit, 42, -1, [312]), initValues(_3C_classLit, 42, -1, [1093]), initValues(_3C_classLit, 42, -1, [1116]), initValues(_3C_classLit, 42, -1, [55349, 56668]), initValues(_3C_classLit, 42, -1, [55349, 56512]), initValues(_3C_classLit, 42, -1, [8666]), initValues(_3C_classLit, 42, -1, [8656]), initValues(_3C_classLit, 42, -1, [10523]), initValues(_3C_classLit, 42, -1, [10510]), initValues(_3C_classLit, 42, -1, [8806]), initValues(_3C_classLit, 42, -1, [10891]), initValues(_3C_classLit, 42, -1, [10594]), initValues(_3C_classLit, 42, -1, [314]), initValues(_3C_classLit, 42, -1, [10676]), initValues(_3C_classLit, 42, -1, [8466]), initValues(_3C_classLit, 42, -1, [955]), initValues(_3C_classLit, 42, -1, [10216]), initValues(_3C_classLit, 42, -1, [10641]), initValues(_3C_classLit, 42, -1, [10216]), initValues(_3C_classLit, 42, -1, [10885]), initValues(_3C_classLit, 42, -1, [171]), initValues(_3C_classLit, 42, -1, [171]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8676]), initValues(_3C_classLit, 42, -1, [10527]), initValues(_3C_classLit, 42, -1, [10525]), initValues(_3C_classLit, 42, -1, [8617]), initValues(_3C_classLit, 42, -1, [8619]), initValues(_3C_classLit, 42, -1, [10553]), initValues(_3C_classLit, 42, -1, [10611]), initValues(_3C_classLit, 42, -1, [8610]), initValues(_3C_classLit, 42, -1, [10923]), initValues(_3C_classLit, 42, -1, [10521]), initValues(_3C_classLit, 42, -1, [10925]), initValues(_3C_classLit, 42, -1, [10508]), initValues(_3C_classLit, 42, -1, [10098]), initValues(_3C_classLit, 42, -1, [123]), initValues(_3C_classLit, 42, -1, [91]), initValues(_3C_classLit, 42, -1, [10635]), initValues(_3C_classLit, 42, -1, [10639]), initValues(_3C_classLit, 42, -1, [10637]), initValues(_3C_classLit, 42, -1, [318]), initValues(_3C_classLit, 42, -1, [316]), initValues(_3C_classLit, 42, -1, [8968]), initValues(_3C_classLit, 42, -1, [123]), initValues(_3C_classLit, 42, -1, [1083]), initValues(_3C_classLit, 42, -1, [10550]), initValues(_3C_classLit, 42, -1, [8220]), initValues(_3C_classLit, 42, -1, [8222]), initValues(_3C_classLit, 42, -1, [10599]), initValues(_3C_classLit, 42, -1, [10571]), initValues(_3C_classLit, 42, -1, [8626]), initValues(_3C_classLit, 42, -1, [8804]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8610]), initValues(_3C_classLit, 42, -1, [8637]), initValues(_3C_classLit, 42, -1, [8636]), initValues(_3C_classLit, 42, -1, [8647]), initValues(_3C_classLit, 42, -1, [8596]), initValues(_3C_classLit, 42, -1, [8646]), initValues(_3C_classLit, 42, -1, [8651]), initValues(_3C_classLit, 42, -1, [8621]), initValues(_3C_classLit, 42, -1, [8907]), initValues(_3C_classLit, 42, -1, [8922]), initValues(_3C_classLit, 42, -1, [8804]), initValues(_3C_classLit, 42, -1, [8806]), initValues(_3C_classLit, 42, -1, [10877]), initValues(_3C_classLit, 42, -1, [10877]), initValues(_3C_classLit, 42, -1, [10920]), initValues(_3C_classLit, 42, -1, [10879]), initValues(_3C_classLit, 42, -1, [10881]), initValues(_3C_classLit, 42, -1, [10883]), initValues(_3C_classLit, 42, -1, [10899]), initValues(_3C_classLit, 42, -1, [10885]), initValues(_3C_classLit, 42, -1, [8918]), initValues(_3C_classLit, 42, -1, [8922]), initValues(_3C_classLit, 42, -1, [10891]), initValues(_3C_classLit, 42, -1, [8822]), initValues(_3C_classLit, 42, -1, [8818]), initValues(_3C_classLit, 42, -1, [10620]), initValues(_3C_classLit, 42, -1, [8970]), initValues(_3C_classLit, 42, -1, [55349, 56617]), initValues(_3C_classLit, 42, -1, [8822]), initValues(_3C_classLit, 42, -1, [10897]), initValues(_3C_classLit, 42, -1, [8637]), initValues(_3C_classLit, 42, -1, [8636]), initValues(_3C_classLit, 42, -1, [10602]), initValues(_3C_classLit, 42, -1, [9604]), initValues(_3C_classLit, 42, -1, [1113]), initValues(_3C_classLit, 42, -1, [8810]), initValues(_3C_classLit, 42, -1, [8647]), initValues(_3C_classLit, 42, -1, [8990]), initValues(_3C_classLit, 42, -1, [10603]), initValues(_3C_classLit, 42, -1, [9722]), initValues(_3C_classLit, 42, -1, [320]), initValues(_3C_classLit, 42, -1, [9136]), initValues(_3C_classLit, 42, -1, [9136]), initValues(_3C_classLit, 42, -1, [8808]), initValues(_3C_classLit, 42, -1, [10889]), initValues(_3C_classLit, 42, -1, [10889]), initValues(_3C_classLit, 42, -1, [10887]), initValues(_3C_classLit, 42, -1, [10887]), initValues(_3C_classLit, 42, -1, [8808]), initValues(_3C_classLit, 42, -1, [8934]), initValues(_3C_classLit, 42, -1, [10220]), initValues(_3C_classLit, 42, -1, [8701]), initValues(_3C_classLit, 42, -1, [10214]), initValues(_3C_classLit, 42, -1, [10229]), initValues(_3C_classLit, 42, -1, [10231]), initValues(_3C_classLit, 42, -1, [10236]), initValues(_3C_classLit, 42, -1, [10230]), initValues(_3C_classLit, 42, -1, [8619]), initValues(_3C_classLit, 42, -1, [8620]), initValues(_3C_classLit, 42, -1, [10629]), initValues(_3C_classLit, 42, -1, [55349, 56669]), initValues(_3C_classLit, 42, -1, [10797]), initValues(_3C_classLit, 42, -1, [10804]), initValues(_3C_classLit, 42, -1, [8727]), initValues(_3C_classLit, 42, -1, [95]), initValues(_3C_classLit, 42, -1, [9674]), initValues(_3C_classLit, 42, -1, [9674]), initValues(_3C_classLit, 42, -1, [10731]), initValues(_3C_classLit, 42, -1, [40]), initValues(_3C_classLit, 42, -1, [10643]), initValues(_3C_classLit, 42, -1, [8646]), initValues(_3C_classLit, 42, -1, [8991]), initValues(_3C_classLit, 42, -1, [8651]), initValues(_3C_classLit, 42, -1, [10605]), initValues(_3C_classLit, 42, -1, [8206]), initValues(_3C_classLit, 42, -1, [8895]), initValues(_3C_classLit, 42, -1, [8249]), initValues(_3C_classLit, 42, -1, [55349, 56513]), initValues(_3C_classLit, 42, -1, [8624]), initValues(_3C_classLit, 42, -1, [8818]), initValues(_3C_classLit, 42, -1, [10893]), initValues(_3C_classLit, 42, -1, [10895]), initValues(_3C_classLit, 42, -1, [91]), initValues(_3C_classLit, 42, -1, [8216]), initValues(_3C_classLit, 42, -1, [8218]), initValues(_3C_classLit, 42, -1, [322]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [10918]), initValues(_3C_classLit, 42, -1, [10873]), initValues(_3C_classLit, 42, -1, [8918]), initValues(_3C_classLit, 42, -1, [8907]), initValues(_3C_classLit, 42, -1, [8905]), initValues(_3C_classLit, 42, -1, [10614]), initValues(_3C_classLit, 42, -1, [10875]), initValues(_3C_classLit, 42, -1, [10646]), initValues(_3C_classLit, 42, -1, [9667]), initValues(_3C_classLit, 42, -1, [8884]), initValues(_3C_classLit, 42, -1, [9666]), initValues(_3C_classLit, 42, -1, [10570]), initValues(_3C_classLit, 42, -1, [10598]), initValues(_3C_classLit, 42, -1, [8762]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [9794]), initValues(_3C_classLit, 42, -1, [10016]), initValues(_3C_classLit, 42, -1, [10016]), initValues(_3C_classLit, 42, -1, [8614]), initValues(_3C_classLit, 42, -1, [8614]), initValues(_3C_classLit, 42, -1, [8615]), initValues(_3C_classLit, 42, -1, [8612]), initValues(_3C_classLit, 42, -1, [8613]), initValues(_3C_classLit, 42, -1, [9646]), initValues(_3C_classLit, 42, -1, [10793]), initValues(_3C_classLit, 42, -1, [1084]), initValues(_3C_classLit, 42, -1, [8212]), initValues(_3C_classLit, 42, -1, [8737]), initValues(_3C_classLit, 42, -1, [55349, 56618]), initValues(_3C_classLit, 42, -1, [8487]), initValues(_3C_classLit, 42, -1, [181]), initValues(_3C_classLit, 42, -1, [181]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [42]), initValues(_3C_classLit, 42, -1, [10992]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [8722]), initValues(_3C_classLit, 42, -1, [8863]), initValues(_3C_classLit, 42, -1, [8760]), initValues(_3C_classLit, 42, -1, [10794]), initValues(_3C_classLit, 42, -1, [10971]), initValues(_3C_classLit, 42, -1, [8230]), initValues(_3C_classLit, 42, -1, [8723]), initValues(_3C_classLit, 42, -1, [8871]), initValues(_3C_classLit, 42, -1, [55349, 56670]), initValues(_3C_classLit, 42, -1, [8723]), initValues(_3C_classLit, 42, -1, [55349, 56514]), initValues(_3C_classLit, 42, -1, [8766]), initValues(_3C_classLit, 42, -1, [956]), initValues(_3C_classLit, 42, -1, [8888]), initValues(_3C_classLit, 42, -1, [8888]), initValues(_3C_classLit, 42, -1, [8653]), initValues(_3C_classLit, 42, -1, [8654]), initValues(_3C_classLit, 42, -1, [8655]), initValues(_3C_classLit, 42, -1, [8879]), initValues(_3C_classLit, 42, -1, [8878]), initValues(_3C_classLit, 42, -1, [8711]), initValues(_3C_classLit, 42, -1, [324]), initValues(_3C_classLit, 42, -1, [8777]), initValues(_3C_classLit, 42, -1, [329]), initValues(_3C_classLit, 42, -1, [8777]), initValues(_3C_classLit, 42, -1, [9838]), initValues(_3C_classLit, 42, -1, [9838]), initValues(_3C_classLit, 42, -1, [8469]), initValues(_3C_classLit, 42, -1, [160]), initValues(_3C_classLit, 42, -1, [160]), initValues(_3C_classLit, 42, -1, [10819]), initValues(_3C_classLit, 42, -1, [328]), initValues(_3C_classLit, 42, -1, [326]), initValues(_3C_classLit, 42, -1, [8775]), initValues(_3C_classLit, 42, -1, [10818]), initValues(_3C_classLit, 42, -1, [1085]), initValues(_3C_classLit, 42, -1, [8211]), initValues(_3C_classLit, 42, -1, [8800]), initValues(_3C_classLit, 42, -1, [8663]), initValues(_3C_classLit, 42, -1, [10532]), initValues(_3C_classLit, 42, -1, [8599]), initValues(_3C_classLit, 42, -1, [8599]), initValues(_3C_classLit, 42, -1, [8802]), initValues(_3C_classLit, 42, -1, [10536]), initValues(_3C_classLit, 42, -1, [8708]), initValues(_3C_classLit, 42, -1, [8708]), initValues(_3C_classLit, 42, -1, [55349, 56619]), initValues(_3C_classLit, 42, -1, [8817]), initValues(_3C_classLit, 42, -1, [8817]), initValues(_3C_classLit, 42, -1, [8821]), initValues(_3C_classLit, 42, -1, [8815]), initValues(_3C_classLit, 42, -1, [8815]), initValues(_3C_classLit, 42, -1, [8654]), initValues(_3C_classLit, 42, -1, [8622]), initValues(_3C_classLit, 42, -1, [10994]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [8956]), initValues(_3C_classLit, 42, -1, [8954]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [1114]), initValues(_3C_classLit, 42, -1, [8653]), initValues(_3C_classLit, 42, -1, [8602]), initValues(_3C_classLit, 42, -1, [8229]), initValues(_3C_classLit, 42, -1, [8816]), initValues(_3C_classLit, 42, -1, [8602]), initValues(_3C_classLit, 42, -1, [8622]), initValues(_3C_classLit, 42, -1, [8816]), initValues(_3C_classLit, 42, -1, [8814]), initValues(_3C_classLit, 42, -1, [8820]), initValues(_3C_classLit, 42, -1, [8814]), initValues(_3C_classLit, 42, -1, [8938]), initValues(_3C_classLit, 42, -1, [8940]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [55349, 56671]), initValues(_3C_classLit, 42, -1, [172]), initValues(_3C_classLit, 42, -1, [172]), initValues(_3C_classLit, 42, -1, [8713]), initValues(_3C_classLit, 42, -1, [8713]), initValues(_3C_classLit, 42, -1, [8951]), initValues(_3C_classLit, 42, -1, [8950]), initValues(_3C_classLit, 42, -1, [8716]), initValues(_3C_classLit, 42, -1, [8716]), initValues(_3C_classLit, 42, -1, [8958]), initValues(_3C_classLit, 42, -1, [8957]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [10772]), initValues(_3C_classLit, 42, -1, [8832]), initValues(_3C_classLit, 42, -1, [8928]), initValues(_3C_classLit, 42, -1, [8832]), initValues(_3C_classLit, 42, -1, [8655]), initValues(_3C_classLit, 42, -1, [8603]), initValues(_3C_classLit, 42, -1, [8603]), initValues(_3C_classLit, 42, -1, [8939]), initValues(_3C_classLit, 42, -1, [8941]), initValues(_3C_classLit, 42, -1, [8833]), initValues(_3C_classLit, 42, -1, [8929]), initValues(_3C_classLit, 42, -1, [55349, 56515]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8769]), initValues(_3C_classLit, 42, -1, [8772]), initValues(_3C_classLit, 42, -1, [8772]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8930]), initValues(_3C_classLit, 42, -1, [8931]), initValues(_3C_classLit, 42, -1, [8836]), initValues(_3C_classLit, 42, -1, [8840]), initValues(_3C_classLit, 42, -1, [8840]), initValues(_3C_classLit, 42, -1, [8833]), initValues(_3C_classLit, 42, -1, [8837]), initValues(_3C_classLit, 42, -1, [8841]), initValues(_3C_classLit, 42, -1, [8841]), initValues(_3C_classLit, 42, -1, [8825]), initValues(_3C_classLit, 42, -1, [241]), initValues(_3C_classLit, 42, -1, [241]), initValues(_3C_classLit, 42, -1, [8824]), initValues(_3C_classLit, 42, -1, [8938]), initValues(_3C_classLit, 42, -1, [8940]), initValues(_3C_classLit, 42, -1, [8939]), initValues(_3C_classLit, 42, -1, [8941]), initValues(_3C_classLit, 42, -1, [957]), initValues(_3C_classLit, 42, -1, [35]), initValues(_3C_classLit, 42, -1, [8470]), initValues(_3C_classLit, 42, -1, [8199]), initValues(_3C_classLit, 42, -1, [8877]), initValues(_3C_classLit, 42, -1, [10500]), initValues(_3C_classLit, 42, -1, [8876]), initValues(_3C_classLit, 42, -1, [10718]), initValues(_3C_classLit, 42, -1, [10498]), initValues(_3C_classLit, 42, -1, [10499]), initValues(_3C_classLit, 42, -1, [8662]), initValues(_3C_classLit, 42, -1, [10531]), initValues(_3C_classLit, 42, -1, [8598]), initValues(_3C_classLit, 42, -1, [8598]), initValues(_3C_classLit, 42, -1, [10535]), initValues(_3C_classLit, 42, -1, [9416]), initValues(_3C_classLit, 42, -1, [243]), initValues(_3C_classLit, 42, -1, [243]), initValues(_3C_classLit, 42, -1, [8859]), initValues(_3C_classLit, 42, -1, [8858]), initValues(_3C_classLit, 42, -1, [244]), initValues(_3C_classLit, 42, -1, [244]), initValues(_3C_classLit, 42, -1, [1086]), initValues(_3C_classLit, 42, -1, [8861]), initValues(_3C_classLit, 42, -1, [337]), initValues(_3C_classLit, 42, -1, [10808]), initValues(_3C_classLit, 42, -1, [8857]), initValues(_3C_classLit, 42, -1, [10684]), initValues(_3C_classLit, 42, -1, [339]), initValues(_3C_classLit, 42, -1, [10687]), initValues(_3C_classLit, 42, -1, [55349, 56620]), initValues(_3C_classLit, 42, -1, [731]), initValues(_3C_classLit, 42, -1, [242]), initValues(_3C_classLit, 42, -1, [242]), initValues(_3C_classLit, 42, -1, [10689]), initValues(_3C_classLit, 42, -1, [10677]), initValues(_3C_classLit, 42, -1, [8486]), initValues(_3C_classLit, 42, -1, [8750]), initValues(_3C_classLit, 42, -1, [8634]), initValues(_3C_classLit, 42, -1, [10686]), initValues(_3C_classLit, 42, -1, [10683]), initValues(_3C_classLit, 42, -1, [8254]), initValues(_3C_classLit, 42, -1, [10688]), initValues(_3C_classLit, 42, -1, [333]), initValues(_3C_classLit, 42, -1, [969]), initValues(_3C_classLit, 42, -1, [959]), initValues(_3C_classLit, 42, -1, [10678]), initValues(_3C_classLit, 42, -1, [8854]), initValues(_3C_classLit, 42, -1, [55349, 56672]), initValues(_3C_classLit, 42, -1, [10679]), initValues(_3C_classLit, 42, -1, [10681]), initValues(_3C_classLit, 42, -1, [8853]), initValues(_3C_classLit, 42, -1, [8744]), initValues(_3C_classLit, 42, -1, [8635]), initValues(_3C_classLit, 42, -1, [10845]), initValues(_3C_classLit, 42, -1, [8500]), initValues(_3C_classLit, 42, -1, [8500]), initValues(_3C_classLit, 42, -1, [170]), initValues(_3C_classLit, 42, -1, [170]), initValues(_3C_classLit, 42, -1, [186]), initValues(_3C_classLit, 42, -1, [186]), initValues(_3C_classLit, 42, -1, [8886]), initValues(_3C_classLit, 42, -1, [10838]), initValues(_3C_classLit, 42, -1, [10839]), initValues(_3C_classLit, 42, -1, [10843]), initValues(_3C_classLit, 42, -1, [8500]), initValues(_3C_classLit, 42, -1, [248]), initValues(_3C_classLit, 42, -1, [248]), initValues(_3C_classLit, 42, -1, [8856]), initValues(_3C_classLit, 42, -1, [245]), initValues(_3C_classLit, 42, -1, [245]), initValues(_3C_classLit, 42, -1, [8855]), initValues(_3C_classLit, 42, -1, [10806]), initValues(_3C_classLit, 42, -1, [246]), initValues(_3C_classLit, 42, -1, [246]), initValues(_3C_classLit, 42, -1, [9021]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [182]), initValues(_3C_classLit, 42, -1, [182]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [10995]), initValues(_3C_classLit, 42, -1, [11005]), initValues(_3C_classLit, 42, -1, [8706]), initValues(_3C_classLit, 42, -1, [1087]), initValues(_3C_classLit, 42, -1, [37]), initValues(_3C_classLit, 42, -1, [46]), initValues(_3C_classLit, 42, -1, [8240]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8241]), initValues(_3C_classLit, 42, -1, [55349, 56621]), initValues(_3C_classLit, 42, -1, [966]), initValues(_3C_classLit, 42, -1, [966]), initValues(_3C_classLit, 42, -1, [8499]), initValues(_3C_classLit, 42, -1, [9742]), initValues(_3C_classLit, 42, -1, [960]), initValues(_3C_classLit, 42, -1, [8916]), initValues(_3C_classLit, 42, -1, [982]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [8462]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [43]), initValues(_3C_classLit, 42, -1, [10787]), initValues(_3C_classLit, 42, -1, [8862]), initValues(_3C_classLit, 42, -1, [10786]), initValues(_3C_classLit, 42, -1, [8724]), initValues(_3C_classLit, 42, -1, [10789]), initValues(_3C_classLit, 42, -1, [10866]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [10790]), initValues(_3C_classLit, 42, -1, [10791]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [10773]), initValues(_3C_classLit, 42, -1, [55349, 56673]), initValues(_3C_classLit, 42, -1, [163]), initValues(_3C_classLit, 42, -1, [163]), initValues(_3C_classLit, 42, -1, [8826]), initValues(_3C_classLit, 42, -1, [10931]), initValues(_3C_classLit, 42, -1, [10935]), initValues(_3C_classLit, 42, -1, [8828]), initValues(_3C_classLit, 42, -1, [10927]), initValues(_3C_classLit, 42, -1, [8826]), initValues(_3C_classLit, 42, -1, [10935]), initValues(_3C_classLit, 42, -1, [8828]), initValues(_3C_classLit, 42, -1, [10927]), initValues(_3C_classLit, 42, -1, [10937]), initValues(_3C_classLit, 42, -1, [10933]), initValues(_3C_classLit, 42, -1, [8936]), initValues(_3C_classLit, 42, -1, [8830]), initValues(_3C_classLit, 42, -1, [8242]), initValues(_3C_classLit, 42, -1, [8473]), initValues(_3C_classLit, 42, -1, [10933]), initValues(_3C_classLit, 42, -1, [10937]), initValues(_3C_classLit, 42, -1, [8936]), initValues(_3C_classLit, 42, -1, [8719]), initValues(_3C_classLit, 42, -1, [9006]), initValues(_3C_classLit, 42, -1, [8978]), initValues(_3C_classLit, 42, -1, [8979]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8830]), initValues(_3C_classLit, 42, -1, [8880]), initValues(_3C_classLit, 42, -1, [55349, 56517]), initValues(_3C_classLit, 42, -1, [968]), initValues(_3C_classLit, 42, -1, [8200]), initValues(_3C_classLit, 42, -1, [55349, 56622]), initValues(_3C_classLit, 42, -1, [10764]), initValues(_3C_classLit, 42, -1, [55349, 56674]), initValues(_3C_classLit, 42, -1, [8279]), initValues(_3C_classLit, 42, -1, [55349, 56518]), initValues(_3C_classLit, 42, -1, [8461]), initValues(_3C_classLit, 42, -1, [10774]), initValues(_3C_classLit, 42, -1, [63]), initValues(_3C_classLit, 42, -1, [8799]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [8667]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [10524]), initValues(_3C_classLit, 42, -1, [10511]), initValues(_3C_classLit, 42, -1, [10596]), initValues(_3C_classLit, 42, -1, [10714]), initValues(_3C_classLit, 42, -1, [341]), initValues(_3C_classLit, 42, -1, [8730]), initValues(_3C_classLit, 42, -1, [10675]), initValues(_3C_classLit, 42, -1, [10217]), initValues(_3C_classLit, 42, -1, [10642]), initValues(_3C_classLit, 42, -1, [10661]), initValues(_3C_classLit, 42, -1, [10217]), initValues(_3C_classLit, 42, -1, [187]), initValues(_3C_classLit, 42, -1, [187]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [10613]), initValues(_3C_classLit, 42, -1, [8677]), initValues(_3C_classLit, 42, -1, [10528]), initValues(_3C_classLit, 42, -1, [10547]), initValues(_3C_classLit, 42, -1, [10526]), initValues(_3C_classLit, 42, -1, [8618]), initValues(_3C_classLit, 42, -1, [8620]), initValues(_3C_classLit, 42, -1, [10565]), initValues(_3C_classLit, 42, -1, [10612]), initValues(_3C_classLit, 42, -1, [8611]), initValues(_3C_classLit, 42, -1, [8605]), initValues(_3C_classLit, 42, -1, [10522]), initValues(_3C_classLit, 42, -1, [8758]), initValues(_3C_classLit, 42, -1, [8474]), initValues(_3C_classLit, 42, -1, [10509]), initValues(_3C_classLit, 42, -1, [10099]), initValues(_3C_classLit, 42, -1, [125]), initValues(_3C_classLit, 42, -1, [93]), initValues(_3C_classLit, 42, -1, [10636]), initValues(_3C_classLit, 42, -1, [10638]), initValues(_3C_classLit, 42, -1, [10640]), initValues(_3C_classLit, 42, -1, [345]), initValues(_3C_classLit, 42, -1, [343]), initValues(_3C_classLit, 42, -1, [8969]), initValues(_3C_classLit, 42, -1, [125]), initValues(_3C_classLit, 42, -1, [1088]), initValues(_3C_classLit, 42, -1, [10551]), initValues(_3C_classLit, 42, -1, [10601]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8627]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [8475]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [8477]), initValues(_3C_classLit, 42, -1, [9645]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [10621]), initValues(_3C_classLit, 42, -1, [8971]), initValues(_3C_classLit, 42, -1, [55349, 56623]), initValues(_3C_classLit, 42, -1, [8641]), initValues(_3C_classLit, 42, -1, [8640]), initValues(_3C_classLit, 42, -1, [10604]), initValues(_3C_classLit, 42, -1, [961]), initValues(_3C_classLit, 42, -1, [1009]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [8611]), initValues(_3C_classLit, 42, -1, [8641]), initValues(_3C_classLit, 42, -1, [8640]), initValues(_3C_classLit, 42, -1, [8644]), initValues(_3C_classLit, 42, -1, [8652]), initValues(_3C_classLit, 42, -1, [8649]), initValues(_3C_classLit, 42, -1, [8605]), initValues(_3C_classLit, 42, -1, [8908]), initValues(_3C_classLit, 42, -1, [730]), initValues(_3C_classLit, 42, -1, [8787]), initValues(_3C_classLit, 42, -1, [8644]), initValues(_3C_classLit, 42, -1, [8652]), initValues(_3C_classLit, 42, -1, [8207]), initValues(_3C_classLit, 42, -1, [9137]), initValues(_3C_classLit, 42, -1, [9137]), initValues(_3C_classLit, 42, -1, [10990]), initValues(_3C_classLit, 42, -1, [10221]), initValues(_3C_classLit, 42, -1, [8702]), initValues(_3C_classLit, 42, -1, [10215]), initValues(_3C_classLit, 42, -1, [10630]), initValues(_3C_classLit, 42, -1, [55349, 56675]), initValues(_3C_classLit, 42, -1, [10798]), initValues(_3C_classLit, 42, -1, [10805]), initValues(_3C_classLit, 42, -1, [41]), initValues(_3C_classLit, 42, -1, [10644]), initValues(_3C_classLit, 42, -1, [10770]), initValues(_3C_classLit, 42, -1, [8649]), initValues(_3C_classLit, 42, -1, [8250]), initValues(_3C_classLit, 42, -1, [55349, 56519]), initValues(_3C_classLit, 42, -1, [8625]), initValues(_3C_classLit, 42, -1, [93]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8908]), initValues(_3C_classLit, 42, -1, [8906]), initValues(_3C_classLit, 42, -1, [9657]), initValues(_3C_classLit, 42, -1, [8885]), initValues(_3C_classLit, 42, -1, [9656]), initValues(_3C_classLit, 42, -1, [10702]), initValues(_3C_classLit, 42, -1, [10600]), initValues(_3C_classLit, 42, -1, [8478]), initValues(_3C_classLit, 42, -1, [347]), initValues(_3C_classLit, 42, -1, [8218]), initValues(_3C_classLit, 42, -1, [8827]), initValues(_3C_classLit, 42, -1, [10932]), initValues(_3C_classLit, 42, -1, [10936]), initValues(_3C_classLit, 42, -1, [353]), initValues(_3C_classLit, 42, -1, [8829]), initValues(_3C_classLit, 42, -1, [10928]), initValues(_3C_classLit, 42, -1, [351]), initValues(_3C_classLit, 42, -1, [349]), initValues(_3C_classLit, 42, -1, [10934]), initValues(_3C_classLit, 42, -1, [10938]), initValues(_3C_classLit, 42, -1, [8937]), initValues(_3C_classLit, 42, -1, [10771]), initValues(_3C_classLit, 42, -1, [8831]), initValues(_3C_classLit, 42, -1, [1089]), initValues(_3C_classLit, 42, -1, [8901]), initValues(_3C_classLit, 42, -1, [8865]), initValues(_3C_classLit, 42, -1, [10854]), initValues(_3C_classLit, 42, -1, [8664]), initValues(_3C_classLit, 42, -1, [10533]), initValues(_3C_classLit, 42, -1, [8600]), initValues(_3C_classLit, 42, -1, [8600]), initValues(_3C_classLit, 42, -1, [167]), initValues(_3C_classLit, 42, -1, [167]), initValues(_3C_classLit, 42, -1, [59]), initValues(_3C_classLit, 42, -1, [10537]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [10038]), initValues(_3C_classLit, 42, -1, [55349, 56624]), initValues(_3C_classLit, 42, -1, [8994]), initValues(_3C_classLit, 42, -1, [9839]), initValues(_3C_classLit, 42, -1, [1097]), initValues(_3C_classLit, 42, -1, [1096]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [173]), initValues(_3C_classLit, 42, -1, [173]), initValues(_3C_classLit, 42, -1, [963]), initValues(_3C_classLit, 42, -1, [962]), initValues(_3C_classLit, 42, -1, [962]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [10858]), initValues(_3C_classLit, 42, -1, [8771]), initValues(_3C_classLit, 42, -1, [8771]), initValues(_3C_classLit, 42, -1, [10910]), initValues(_3C_classLit, 42, -1, [10912]), initValues(_3C_classLit, 42, -1, [10909]), initValues(_3C_classLit, 42, -1, [10911]), initValues(_3C_classLit, 42, -1, [8774]), initValues(_3C_classLit, 42, -1, [10788]), initValues(_3C_classLit, 42, -1, [10610]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [10803]), initValues(_3C_classLit, 42, -1, [10724]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [8995]), initValues(_3C_classLit, 42, -1, [10922]), initValues(_3C_classLit, 42, -1, [10924]), initValues(_3C_classLit, 42, -1, [1100]), initValues(_3C_classLit, 42, -1, [47]), initValues(_3C_classLit, 42, -1, [10692]), initValues(_3C_classLit, 42, -1, [9023]), initValues(_3C_classLit, 42, -1, [55349, 56676]), initValues(_3C_classLit, 42, -1, [9824]), initValues(_3C_classLit, 42, -1, [9824]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [8851]), initValues(_3C_classLit, 42, -1, [8852]), initValues(_3C_classLit, 42, -1, [8847]), initValues(_3C_classLit, 42, -1, [8849]), initValues(_3C_classLit, 42, -1, [8847]), initValues(_3C_classLit, 42, -1, [8849]), initValues(_3C_classLit, 42, -1, [8848]), initValues(_3C_classLit, 42, -1, [8850]), initValues(_3C_classLit, 42, -1, [8848]), initValues(_3C_classLit, 42, -1, [8850]), initValues(_3C_classLit, 42, -1, [9633]), initValues(_3C_classLit, 42, -1, [9633]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [55349, 56520]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [8995]), initValues(_3C_classLit, 42, -1, [8902]), initValues(_3C_classLit, 42, -1, [9734]), initValues(_3C_classLit, 42, -1, [9733]), initValues(_3C_classLit, 42, -1, [1013]), initValues(_3C_classLit, 42, -1, [981]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [8834]), initValues(_3C_classLit, 42, -1, [10949]), initValues(_3C_classLit, 42, -1, [10941]), initValues(_3C_classLit, 42, -1, [8838]), initValues(_3C_classLit, 42, -1, [10947]), initValues(_3C_classLit, 42, -1, [10945]), initValues(_3C_classLit, 42, -1, [10955]), initValues(_3C_classLit, 42, -1, [8842]), initValues(_3C_classLit, 42, -1, [10943]), initValues(_3C_classLit, 42, -1, [10617]), initValues(_3C_classLit, 42, -1, [8834]), initValues(_3C_classLit, 42, -1, [8838]), initValues(_3C_classLit, 42, -1, [10949]), initValues(_3C_classLit, 42, -1, [8842]), initValues(_3C_classLit, 42, -1, [10955]), initValues(_3C_classLit, 42, -1, [10951]), initValues(_3C_classLit, 42, -1, [10965]), initValues(_3C_classLit, 42, -1, [10963]), initValues(_3C_classLit, 42, -1, [8827]), initValues(_3C_classLit, 42, -1, [10936]), initValues(_3C_classLit, 42, -1, [8829]), initValues(_3C_classLit, 42, -1, [10928]), initValues(_3C_classLit, 42, -1, [10938]), initValues(_3C_classLit, 42, -1, [10934]), initValues(_3C_classLit, 42, -1, [8937]), initValues(_3C_classLit, 42, -1, [8831]), initValues(_3C_classLit, 42, -1, [8721]), initValues(_3C_classLit, 42, -1, [9834]), initValues(_3C_classLit, 42, -1, [185]), initValues(_3C_classLit, 42, -1, [185]), initValues(_3C_classLit, 42, -1, [178]), initValues(_3C_classLit, 42, -1, [178]), initValues(_3C_classLit, 42, -1, [179]), initValues(_3C_classLit, 42, -1, [179]), initValues(_3C_classLit, 42, -1, [8835]), initValues(_3C_classLit, 42, -1, [10950]), initValues(_3C_classLit, 42, -1, [10942]), initValues(_3C_classLit, 42, -1, [10968]), initValues(_3C_classLit, 42, -1, [8839]), initValues(_3C_classLit, 42, -1, [10948]), initValues(_3C_classLit, 42, -1, [10967]), initValues(_3C_classLit, 42, -1, [10619]), initValues(_3C_classLit, 42, -1, [10946]), initValues(_3C_classLit, 42, -1, [10956]), initValues(_3C_classLit, 42, -1, [8843]), initValues(_3C_classLit, 42, -1, [10944]), initValues(_3C_classLit, 42, -1, [8835]), initValues(_3C_classLit, 42, -1, [8839]), initValues(_3C_classLit, 42, -1, [10950]), initValues(_3C_classLit, 42, -1, [8843]), initValues(_3C_classLit, 42, -1, [10956]), initValues(_3C_classLit, 42, -1, [10952]), initValues(_3C_classLit, 42, -1, [10964]), initValues(_3C_classLit, 42, -1, [10966]), initValues(_3C_classLit, 42, -1, [8665]), initValues(_3C_classLit, 42, -1, [10534]), initValues(_3C_classLit, 42, -1, [8601]), initValues(_3C_classLit, 42, -1, [8601]), initValues(_3C_classLit, 42, -1, [10538]), initValues(_3C_classLit, 42, -1, [223]), initValues(_3C_classLit, 42, -1, [223]), initValues(_3C_classLit, 42, -1, [8982]), initValues(_3C_classLit, 42, -1, [964]), initValues(_3C_classLit, 42, -1, [9140]), initValues(_3C_classLit, 42, -1, [357]), initValues(_3C_classLit, 42, -1, [355]), initValues(_3C_classLit, 42, -1, [1090]), initValues(_3C_classLit, 42, -1, [8411]), initValues(_3C_classLit, 42, -1, [8981]), initValues(_3C_classLit, 42, -1, [55349, 56625]), initValues(_3C_classLit, 42, -1, [8756]), initValues(_3C_classLit, 42, -1, [8756]), initValues(_3C_classLit, 42, -1, [952]), initValues(_3C_classLit, 42, -1, [977]), initValues(_3C_classLit, 42, -1, [977]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [8201]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [254]), initValues(_3C_classLit, 42, -1, [254]), initValues(_3C_classLit, 42, -1, [732]), initValues(_3C_classLit, 42, -1, [215]), initValues(_3C_classLit, 42, -1, [215]), initValues(_3C_classLit, 42, -1, [8864]), initValues(_3C_classLit, 42, -1, [10801]), initValues(_3C_classLit, 42, -1, [10800]), initValues(_3C_classLit, 42, -1, [8749]), initValues(_3C_classLit, 42, -1, [10536]), initValues(_3C_classLit, 42, -1, [8868]), initValues(_3C_classLit, 42, -1, [9014]), initValues(_3C_classLit, 42, -1, [10993]), initValues(_3C_classLit, 42, -1, [55349, 56677]), initValues(_3C_classLit, 42, -1, [10970]), initValues(_3C_classLit, 42, -1, [10537]), initValues(_3C_classLit, 42, -1, [8244]), initValues(_3C_classLit, 42, -1, [8482]), initValues(_3C_classLit, 42, -1, [9653]), initValues(_3C_classLit, 42, -1, [9663]), initValues(_3C_classLit, 42, -1, [9667]), initValues(_3C_classLit, 42, -1, [8884]), initValues(_3C_classLit, 42, -1, [8796]), initValues(_3C_classLit, 42, -1, [9657]), initValues(_3C_classLit, 42, -1, [8885]), initValues(_3C_classLit, 42, -1, [9708]), initValues(_3C_classLit, 42, -1, [8796]), initValues(_3C_classLit, 42, -1, [10810]), initValues(_3C_classLit, 42, -1, [10809]), initValues(_3C_classLit, 42, -1, [10701]), initValues(_3C_classLit, 42, -1, [10811]), initValues(_3C_classLit, 42, -1, [9186]), initValues(_3C_classLit, 42, -1, [55349, 56521]), initValues(_3C_classLit, 42, -1, [1094]), initValues(_3C_classLit, 42, -1, [1115]), initValues(_3C_classLit, 42, -1, [359]), initValues(_3C_classLit, 42, -1, [8812]), initValues(_3C_classLit, 42, -1, [8606]), initValues(_3C_classLit, 42, -1, [8608]), initValues(_3C_classLit, 42, -1, [8657]), initValues(_3C_classLit, 42, -1, [10595]), initValues(_3C_classLit, 42, -1, [250]), initValues(_3C_classLit, 42, -1, [250]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [1118]), initValues(_3C_classLit, 42, -1, [365]), initValues(_3C_classLit, 42, -1, [251]), initValues(_3C_classLit, 42, -1, [251]), initValues(_3C_classLit, 42, -1, [1091]), initValues(_3C_classLit, 42, -1, [8645]), initValues(_3C_classLit, 42, -1, [369]), initValues(_3C_classLit, 42, -1, [10606]), initValues(_3C_classLit, 42, -1, [10622]), initValues(_3C_classLit, 42, -1, [55349, 56626]), initValues(_3C_classLit, 42, -1, [249]), initValues(_3C_classLit, 42, -1, [249]), initValues(_3C_classLit, 42, -1, [8639]), initValues(_3C_classLit, 42, -1, [8638]), initValues(_3C_classLit, 42, -1, [9600]), initValues(_3C_classLit, 42, -1, [8988]), initValues(_3C_classLit, 42, -1, [8988]), initValues(_3C_classLit, 42, -1, [8975]), initValues(_3C_classLit, 42, -1, [9720]), initValues(_3C_classLit, 42, -1, [363]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [371]), initValues(_3C_classLit, 42, -1, [55349, 56678]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [8597]), initValues(_3C_classLit, 42, -1, [8639]), initValues(_3C_classLit, 42, -1, [8638]), initValues(_3C_classLit, 42, -1, [8846]), initValues(_3C_classLit, 42, -1, [965]), initValues(_3C_classLit, 42, -1, [978]), initValues(_3C_classLit, 42, -1, [965]), initValues(_3C_classLit, 42, -1, [8648]), initValues(_3C_classLit, 42, -1, [8989]), initValues(_3C_classLit, 42, -1, [8989]), initValues(_3C_classLit, 42, -1, [8974]), initValues(_3C_classLit, 42, -1, [367]), initValues(_3C_classLit, 42, -1, [9721]), initValues(_3C_classLit, 42, -1, [55349, 56522]), initValues(_3C_classLit, 42, -1, [8944]), initValues(_3C_classLit, 42, -1, [361]), initValues(_3C_classLit, 42, -1, [9653]), initValues(_3C_classLit, 42, -1, [9652]), initValues(_3C_classLit, 42, -1, [8648]), initValues(_3C_classLit, 42, -1, [252]), initValues(_3C_classLit, 42, -1, [252]), initValues(_3C_classLit, 42, -1, [10663]), initValues(_3C_classLit, 42, -1, [8661]), initValues(_3C_classLit, 42, -1, [10984]), initValues(_3C_classLit, 42, -1, [10985]), initValues(_3C_classLit, 42, -1, [8872]), initValues(_3C_classLit, 42, -1, [10652]), initValues(_3C_classLit, 42, -1, [949]), initValues(_3C_classLit, 42, -1, [1008]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [966]), initValues(_3C_classLit, 42, -1, [982]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8597]), initValues(_3C_classLit, 42, -1, [1009]), initValues(_3C_classLit, 42, -1, [962]), initValues(_3C_classLit, 42, -1, [977]), initValues(_3C_classLit, 42, -1, [8882]), initValues(_3C_classLit, 42, -1, [8883]), initValues(_3C_classLit, 42, -1, [1074]), initValues(_3C_classLit, 42, -1, [8866]), initValues(_3C_classLit, 42, -1, [8744]), initValues(_3C_classLit, 42, -1, [8891]), initValues(_3C_classLit, 42, -1, [8794]), initValues(_3C_classLit, 42, -1, [8942]), initValues(_3C_classLit, 42, -1, [124]), initValues(_3C_classLit, 42, -1, [124]), initValues(_3C_classLit, 42, -1, [55349, 56627]), initValues(_3C_classLit, 42, -1, [8882]), initValues(_3C_classLit, 42, -1, [55349, 56679]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8883]), initValues(_3C_classLit, 42, -1, [55349, 56523]), initValues(_3C_classLit, 42, -1, [10650]), initValues(_3C_classLit, 42, -1, [373]), initValues(_3C_classLit, 42, -1, [10847]), initValues(_3C_classLit, 42, -1, [8743]), initValues(_3C_classLit, 42, -1, [8793]), initValues(_3C_classLit, 42, -1, [8472]), initValues(_3C_classLit, 42, -1, [55349, 56628]), initValues(_3C_classLit, 42, -1, [55349, 56680]), initValues(_3C_classLit, 42, -1, [8472]), initValues(_3C_classLit, 42, -1, [8768]), initValues(_3C_classLit, 42, -1, [8768]), initValues(_3C_classLit, 42, -1, [55349, 56524]), initValues(_3C_classLit, 42, -1, [8898]), initValues(_3C_classLit, 42, -1, [9711]), initValues(_3C_classLit, 42, -1, [8899]), initValues(_3C_classLit, 42, -1, [9661]), initValues(_3C_classLit, 42, -1, [55349, 56629]), initValues(_3C_classLit, 42, -1, [10234]), initValues(_3C_classLit, 42, -1, [10231]), initValues(_3C_classLit, 42, -1, [958]), initValues(_3C_classLit, 42, -1, [10232]), initValues(_3C_classLit, 42, -1, [10229]), initValues(_3C_classLit, 42, -1, [10236]), initValues(_3C_classLit, 42, -1, [8955]), initValues(_3C_classLit, 42, -1, [10752]), initValues(_3C_classLit, 42, -1, [55349, 56681]), initValues(_3C_classLit, 42, -1, [10753]), initValues(_3C_classLit, 42, -1, [10754]), initValues(_3C_classLit, 42, -1, [10233]), initValues(_3C_classLit, 42, -1, [10230]), initValues(_3C_classLit, 42, -1, [55349, 56525]), initValues(_3C_classLit, 42, -1, [10758]), initValues(_3C_classLit, 42, -1, [10756]), initValues(_3C_classLit, 42, -1, [9651]), initValues(_3C_classLit, 42, -1, [8897]), initValues(_3C_classLit, 42, -1, [8896]), initValues(_3C_classLit, 42, -1, [253]), initValues(_3C_classLit, 42, -1, [253]), initValues(_3C_classLit, 42, -1, [1103]), initValues(_3C_classLit, 42, -1, [375]), initValues(_3C_classLit, 42, -1, [1099]), initValues(_3C_classLit, 42, -1, [165]), initValues(_3C_classLit, 42, -1, [165]), initValues(_3C_classLit, 42, -1, [55349, 56630]), initValues(_3C_classLit, 42, -1, [1111]), initValues(_3C_classLit, 42, -1, [55349, 56682]), initValues(_3C_classLit, 42, -1, [55349, 56526]), initValues(_3C_classLit, 42, -1, [1102]), initValues(_3C_classLit, 42, -1, [255]), initValues(_3C_classLit, 42, -1, [255]), initValues(_3C_classLit, 42, -1, [378]), initValues(_3C_classLit, 42, -1, [382]), initValues(_3C_classLit, 42, -1, [1079]), initValues(_3C_classLit, 42, -1, [380]), initValues(_3C_classLit, 42, -1, [8488]), initValues(_3C_classLit, 42, -1, [950]), initValues(_3C_classLit, 42, -1, [55349, 56631]), initValues(_3C_classLit, 42, -1, [1078]), initValues(_3C_classLit, 42, -1, [8669]), initValues(_3C_classLit, 42, -1, [55349, 56683]), initValues(_3C_classLit, 42, -1, [55349, 56527]), initValues(_3C_classLit, 42, -1, [8205]), initValues(_3C_classLit, 42, -1, [8204])]);
10.21644 +  WINDOWS_1252 = initValues(_3_3C_classLit, 52, 12, [initValues(_3C_classLit, 42, -1, [8364]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [8218]), initValues(_3C_classLit, 42, -1, [402]), initValues(_3C_classLit, 42, -1, [8222]), initValues(_3C_classLit, 42, -1, [8230]), initValues(_3C_classLit, 42, -1, [8224]), initValues(_3C_classLit, 42, -1, [8225]), initValues(_3C_classLit, 42, -1, [710]), initValues(_3C_classLit, 42, -1, [8240]), initValues(_3C_classLit, 42, -1, [352]), initValues(_3C_classLit, 42, -1, [8249]), initValues(_3C_classLit, 42, -1, [338]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [381]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [8216]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8220]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8226]), initValues(_3C_classLit, 42, -1, [8211]), initValues(_3C_classLit, 42, -1, [8212]), initValues(_3C_classLit, 42, -1, [732]), initValues(_3C_classLit, 42, -1, [8482]), initValues(_3C_classLit, 42, -1, [353]), initValues(_3C_classLit, 42, -1, [8250]), initValues(_3C_classLit, 42, -1, [339]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [382]), initValues(_3C_classLit, 42, -1, [376])]);
10.21645 +}
10.21646 +
10.21647 +var NAMES, VALUES_0, WINDOWS_1252;
10.21648 +function localEqualsBuffer(local, buf, offset, length){
10.21649 +  var i;
10.21650 +  if (local.length != length) {
10.21651 +    return false;
10.21652 +  }
10.21653 +  for (i = 0; i < length; ++i) {
10.21654 +    if (local.charCodeAt(i) != buf[offset + i]) {
10.21655 +      return false;
10.21656 +    }
10.21657 +  }
10.21658 +  return true;
10.21659 +}
10.21660 +
10.21661 +function lowerCaseLiteralEqualsIgnoreAsciiCaseString(lowerCaseLiteral, string){
10.21662 +  var c0, c1, i;
10.21663 +  if (string == null) {
10.21664 +    return false;
10.21665 +  }
10.21666 +  if (lowerCaseLiteral.length != string.length) {
10.21667 +    return false;
10.21668 +  }
10.21669 +  for (i = 0; i < lowerCaseLiteral.length; ++i) {
10.21670 +    c0 = lowerCaseLiteral.charCodeAt(i);
10.21671 +    c1 = string.charCodeAt(i);
10.21672 +    if (c1 >= 65 && c1 <= 90) {
10.21673 +      c1 += 32;
10.21674 +    }
10.21675 +    if (c0 != c1) {
10.21676 +      return false;
10.21677 +    }
10.21678 +  }
10.21679 +  return true;
10.21680 +}
10.21681 +
10.21682 +function lowerCaseLiteralIsPrefixOfIgnoreAsciiCaseString(lowerCaseLiteral, string){
10.21683 +  var c0, c1, i;
10.21684 +  if (string == null) {
10.21685 +    return false;
10.21686 +  }
10.21687 +  if (lowerCaseLiteral.length > string.length) {
10.21688 +    return false;
10.21689 +  }
10.21690 +  for (i = 0; i < lowerCaseLiteral.length; ++i) {
10.21691 +    c0 = lowerCaseLiteral.charCodeAt(i);
10.21692 +    c1 = string.charCodeAt(i);
10.21693 +    if (c1 >= 65 && c1 <= 90) {
10.21694 +      c1 += 32;
10.21695 +    }
10.21696 +    if (c0 != c1) {
10.21697 +      return false;
10.21698 +    }
10.21699 +  }
10.21700 +  return true;
10.21701 +}
10.21702 +
10.21703 +function $StackNode(this$static, group, ns, name, node, scoping, special, fosterParenting, popName, attributes){
10.21704 +  this$static.group = group;
10.21705 +  this$static.name_0 = name;
10.21706 +  this$static.popName = popName;
10.21707 +  this$static.ns = ns;
10.21708 +  this$static.node = node;
10.21709 +  this$static.scoping = scoping;
10.21710 +  this$static.special = special;
10.21711 +  this$static.fosterParenting = fosterParenting;
10.21712 +  this$static.attributes = attributes;
10.21713 +  this$static.refcount = 1;
10.21714 +  return this$static;
10.21715 +}
10.21716 +
10.21717 +function $StackNode_0(this$static, ns, elementName, node){
10.21718 +  this$static.group = elementName.group;
10.21719 +  this$static.name_0 = elementName.name_0;
10.21720 +  this$static.popName = elementName.name_0;
10.21721 +  this$static.ns = ns;
10.21722 +  this$static.node = node;
10.21723 +  this$static.scoping = elementName.scoping;
10.21724 +  this$static.special = elementName.special;
10.21725 +  this$static.fosterParenting = elementName.fosterParenting;
10.21726 +  this$static.attributes = null;
10.21727 +  this$static.refcount = 1;
10.21728 +  return this$static;
10.21729 +}
10.21730 +
10.21731 +function $StackNode_3(this$static, ns, elementName, node, attributes){
10.21732 +  this$static.group = elementName.group;
10.21733 +  this$static.name_0 = elementName.name_0;
10.21734 +  this$static.popName = elementName.name_0;
10.21735 +  this$static.ns = ns;
10.21736 +  this$static.node = node;
10.21737 +  this$static.scoping = elementName.scoping;
10.21738 +  this$static.special = elementName.special;
10.21739 +  this$static.fosterParenting = elementName.fosterParenting;
10.21740 +  this$static.attributes = attributes;
10.21741 +  this$static.refcount = 1;
10.21742 +  return this$static;
10.21743 +}
10.21744 +
10.21745 +function $StackNode_1(this$static, ns, elementName, node, popName){
10.21746 +  this$static.group = elementName.group;
10.21747 +  this$static.name_0 = elementName.name_0;
10.21748 +  this$static.popName = popName;
10.21749 +  this$static.ns = ns;
10.21750 +  this$static.node = node;
10.21751 +  this$static.scoping = elementName.scoping;
10.21752 +  this$static.special = elementName.special;
10.21753 +  this$static.fosterParenting = elementName.fosterParenting;
10.21754 +  this$static.attributes = null;
10.21755 +  this$static.refcount = 1;
10.21756 +  return this$static;
10.21757 +}
10.21758 +
10.21759 +function $StackNode_2(this$static, ns, elementName, node, popName, scoping){
10.21760 +  this$static.group = elementName.group;
10.21761 +  this$static.name_0 = elementName.name_0;
10.21762 +  this$static.popName = popName;
10.21763 +  this$static.ns = ns;
10.21764 +  this$static.node = node;
10.21765 +  this$static.scoping = scoping;
10.21766 +  this$static.special = false;
10.21767 +  this$static.fosterParenting = false;
10.21768 +  this$static.attributes = null;
10.21769 +  this$static.refcount = 1;
10.21770 +  return this$static;
10.21771 +}
10.21772 +
10.21773 +function getClass_55(){
10.21774 +  return Lnu_validator_htmlparser_impl_StackNode_2_classLit;
10.21775 +}
10.21776 +
10.21777 +function toString_11(){
10.21778 +  return this.name_0;
10.21779 +}
10.21780 +
10.21781 +function StackNode(){
10.21782 +}
10.21783 +
10.21784 +_ = StackNode.prototype = new Object_0();
10.21785 +_.getClass$ = getClass_55;
10.21786 +_.toString$ = toString_11;
10.21787 +_.typeId$ = 38;
10.21788 +_.attributes = null;
10.21789 +_.fosterParenting = false;
10.21790 +_.group = 0;
10.21791 +_.name_0 = null;
10.21792 +_.node = null;
10.21793 +_.ns = null;
10.21794 +_.popName = null;
10.21795 +_.refcount = 1;
10.21796 +_.scoping = false;
10.21797 +_.special = false;
10.21798 +function $UTF16Buffer(this$static, buffer, start, end){
10.21799 +  this$static.buffer = buffer;
10.21800 +  this$static.start = start;
10.21801 +  this$static.end = end;
10.21802 +  return this$static;
10.21803 +}
10.21804 +
10.21805 +function $adjust(this$static, lastWasCR){
10.21806 +  if (lastWasCR && this$static.buffer[this$static.start] == 10) {
10.21807 +    ++this$static.start;
10.21808 +  }
10.21809 +}
10.21810 +
10.21811 +function getClass_58(){
10.21812 +  return Lnu_validator_htmlparser_impl_UTF16Buffer_2_classLit;
10.21813 +}
10.21814 +
10.21815 +function UTF16Buffer(){
10.21816 +}
10.21817 +
10.21818 +_ = UTF16Buffer.prototype = new Object_0();
10.21819 +_.getClass$ = getClass_58;
10.21820 +_.typeId$ = 39;
10.21821 +_.buffer = null;
10.21822 +_.end = 0;
10.21823 +_.start = 0;
10.21824 +function $SAXException(this$static, message){
10.21825 +  this$static.detailMessage = message;
10.21826 +  this$static.exception = null;
10.21827 +  return this$static;
10.21828 +}
10.21829 +
10.21830 +function $getMessage(this$static){
10.21831 +  var message;
10.21832 +  message = this$static.detailMessage;
10.21833 +  if (message == null && !!this$static.exception) {
10.21834 +    return this$static.exception.detailMessage;
10.21835 +  }
10.21836 +   else {
10.21837 +    return message;
10.21838 +  }
10.21839 +}
10.21840 +
10.21841 +function getClass_59(){
10.21842 +  return Lorg_xml_sax_SAXException_2_classLit;
10.21843 +}
10.21844 +
10.21845 +function getMessage_0(){
10.21846 +  return $getMessage(this);
10.21847 +}
10.21848 +
10.21849 +function toString_12(){
10.21850 +  if (this.exception) {
10.21851 +    return $toString_1(this.exception);
10.21852 +  }
10.21853 +   else {
10.21854 +    return $toString_1(this);
10.21855 +  }
10.21856 +}
10.21857 +
10.21858 +function SAXException(){
10.21859 +}
10.21860 +
10.21861 +_ = SAXException.prototype = new Exception();
10.21862 +_.getClass$ = getClass_59;
10.21863 +_.getMessage = getMessage_0;
10.21864 +_.toString$ = toString_12;
10.21865 +_.typeId$ = 40;
10.21866 +_.exception = null;
10.21867 +function $SAXParseException(this$static, message, locator){
10.21868 +  this$static.detailMessage = message;
10.21869 +  this$static.exception = null;
10.21870 +  if (locator) {
10.21871 +    $getLineNumber(locator);
10.21872 +    $getColumnNumber(locator);
10.21873 +  }
10.21874 +   else {
10.21875 +  }
10.21876 +  return this$static;
10.21877 +}
10.21878 +
10.21879 +function $SAXParseException_0(this$static, message, locator, e){
10.21880 +  this$static.detailMessage = message;
10.21881 +  this$static.exception = e;
10.21882 +  if (locator) {
10.21883 +    $getLineNumber(locator);
10.21884 +    $getColumnNumber(locator);
10.21885 +  }
10.21886 +   else {
10.21887 +  }
10.21888 +  return this$static;
10.21889 +}
10.21890 +
10.21891 +function getClass_60(){
10.21892 +  return Lorg_xml_sax_SAXParseException_2_classLit;
10.21893 +}
10.21894 +
10.21895 +function SAXParseException(){
10.21896 +}
10.21897 +
10.21898 +_ = SAXParseException.prototype = new SAXException();
10.21899 +_.getClass$ = getClass_60;
10.21900 +_.typeId$ = 41;
10.21901 +function init_0(){
10.21902 +  !!$stats && $stats({moduleName:$moduleName, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'onModuleLoadStart', className:'nu.validator.htmlparser.gwt.HtmlParserModule'});
10.21903 +  Envjs.parseHtmlDocument = parseHtmlDocument;
10.21904 +}
10.21905 +
10.21906 +__defineParser__ = function gwtOnLoad(errFn, modName, modBase){
10.21907 +  $moduleName = modName;
10.21908 +  $moduleBase = modBase;
10.21909 +  if (errFn)
10.21910 +    try {
10.21911 +      init_0();
10.21912 +    }
10.21913 +     catch (e) {
10.21914 +      errFn(modName);
10.21915 +    }
10.21916 +   else {
10.21917 +    init_0();
10.21918 +  }
10.21919 +}
10.21920 +
10.21921 +function nullMethod(){
10.21922 +}
10.21923 +
10.21924 +var Ljava_lang_Object_2_classLit = createForClass('java.lang.', 'Object'), Lcom_google_gwt_user_client_Timer_2_classLit = createForClass('com.google.gwt.user.client.', 'Timer'), Ljava_lang_Throwable_2_classLit = createForClass('java.lang.', 'Throwable'), Ljava_lang_Exception_2_classLit = createForClass('java.lang.', 'Exception'), Ljava_lang_RuntimeException_2_classLit = createForClass('java.lang.', 'RuntimeException'), Lcom_google_gwt_core_client_JavaScriptException_2_classLit = createForClass('com.google.gwt.core.client.', 'JavaScriptException'), Lcom_google_gwt_core_client_JavaScriptObject_2_classLit = createForClass('com.google.gwt.core.client.', 'JavaScriptObject$'), _3Ljava_lang_String_2_classLit = createForArray('[Ljava.lang.', 'String;'), Ljava_lang_Enum_2_classLit = createForClass('java.lang.', 'Enum'), _3_3D_classLit = createForArray('', '[[D'), Ljava_util_AbstractCollection_2_classLit = createForClass('java.util.', 'AbstractCollection'), Ljava_util_AbstractList_2_classLit = createForClass('java.util.', 'AbstractList'), Ljava_util_ArrayList_2_classLit = createForClass('java.util.', 'ArrayList'), Lcom_google_gwt_user_client_Timer$1_2_classLit = createForClass('com.google.gwt.user.client.', 'Timer$1'), Ljava_lang_IndexOutOfBoundsException_2_classLit = createForClass('java.lang.', 'IndexOutOfBoundsException'), Ljava_lang_ArrayStoreException_2_classLit = createForClass('java.lang.', 'ArrayStoreException'), _3C_classLit = createForArray('', '[C'), Ljava_lang_Class_2_classLit = createForClass('java.lang.', 'Class'), Ljava_lang_ClassCastException_2_classLit = createForClass('java.lang.', 'ClassCastException'), Ljava_lang_IllegalArgumentException_2_classLit = createForClass('java.lang.', 'IllegalArgumentException'), _3I_classLit = createForArray('', '[I'), Ljava_lang_NullPointerException_2_classLit = createForClass('java.lang.', 'NullPointerException'), Ljava_lang_String_2_classLit = createForClass('java.lang.', 'String'), Ljava_lang_StringBuffer_2_classLit = createForClass('java.lang.', 'StringBuffer'), Ljava_lang_StringBuilder_2_classLit = createForClass('java.lang.', 'StringBuilder'), Ljava_lang_StringIndexOutOfBoundsException_2_classLit = createForClass('java.lang.', 'StringIndexOutOfBoundsException'), Ljava_lang_UnsupportedOperationException_2_classLit = createForClass('java.lang.', 'UnsupportedOperationException'), _3Ljava_lang_Object_2_classLit = createForArray('[Ljava.lang.', 'Object;'), Ljava_util_AbstractMap_2_classLit = createForClass('java.util.', 'AbstractMap'), Ljava_util_AbstractHashMap_2_classLit = createForClass('java.util.', 'AbstractHashMap'), Ljava_util_AbstractSet_2_classLit = createForClass('java.util.', 'AbstractSet'), Ljava_util_AbstractHashMap$EntrySet_2_classLit = createForClass('java.util.', 'AbstractHashMap$EntrySet'), Ljava_util_AbstractHashMap$EntrySetIterator_2_classLit = createForClass('java.util.', 'AbstractHashMap$EntrySetIterator'), Ljava_util_AbstractMapEntry_2_classLit = createForClass('java.util.', 'AbstractMapEntry'), Ljava_util_AbstractHashMap$MapEntryNull_2_classLit = createForClass('java.util.', 'AbstractHashMap$MapEntryNull'), Ljava_util_AbstractHashMap$MapEntryString_2_classLit = createForClass('java.util.', 'AbstractHashMap$MapEntryString'), Ljava_util_AbstractList$IteratorImpl_2_classLit = createForClass('java.util.', 'AbstractList$IteratorImpl'), Ljava_util_AbstractList$ListIteratorImpl_2_classLit = createForClass('java.util.', 'AbstractList$ListIteratorImpl'), Ljava_util_AbstractSequentialList_2_classLit = createForClass('java.util.', 'AbstractSequentialList'), Ljava_util_Comparators$1_2_classLit = createForClass('java.util.', 'Comparators$1'), Ljava_util_HashMap_2_classLit = createForClass('java.util.', 'HashMap'), Ljava_util_LinkedList_2_classLit = createForClass('java.util.', 'LinkedList'), Ljava_util_LinkedList$ListIteratorImpl_2_classLit = createForClass('java.util.', 'LinkedList$ListIteratorImpl'), Ljava_util_LinkedList$Node_2_classLit = createForClass('java.util.', 'LinkedList$Node'), Ljava_util_NoSuchElementException_2_classLit = createForClass('java.util.', 'NoSuchElementException'), Lnu_validator_htmlparser_common_DoctypeExpectation_2_classLit = createForEnum('nu.validator.htmlparser.common.', 'DoctypeExpectation'), Lnu_validator_htmlparser_common_DocumentMode_2_classLit = createForEnum('nu.validator.htmlparser.common.', 'DocumentMode'), Lnu_validator_htmlparser_common_XmlViolationPolicy_2_classLit = createForEnum('nu.validator.htmlparser.common.', 'XmlViolationPolicy'), Lnu_validator_htmlparser_impl_TreeBuilder_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'TreeBuilder'), Lnu_validator_htmlparser_impl_CoalescingTreeBuilder_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'CoalescingTreeBuilder'), Lnu_validator_htmlparser_gwt_BrowserTreeBuilder_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'BrowserTreeBuilder'), Lnu_validator_htmlparser_gwt_BrowserTreeBuilder$ScriptHolder_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'BrowserTreeBuilder$ScriptHolder'), Lnu_validator_htmlparser_gwt_HtmlParser_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'HtmlParser'), Lnu_validator_htmlparser_gwt_HtmlParser$1_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'HtmlParser$1'), Lnu_validator_htmlparser_gwt_ParseEndListener_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'ParseEndListener'), _3Z_classLit = createForArray('', '[Z'), _3Lnu_validator_htmlparser_impl_AttributeName_2_classLit = createForArray('[Lnu.validator.htmlparser.impl.', 'AttributeName;'), Lnu_validator_htmlparser_impl_AttributeName_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'AttributeName'), _3Lnu_validator_htmlparser_impl_ElementName_2_classLit = createForArray('[Lnu.validator.htmlparser.impl.', 'ElementName;'), Lnu_validator_htmlparser_impl_ElementName_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'ElementName'), Lnu_validator_htmlparser_impl_Tokenizer_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'Tokenizer'), Lnu_validator_htmlparser_impl_ErrorReportingTokenizer_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'ErrorReportingTokenizer'), Lnu_validator_htmlparser_impl_HtmlAttributes_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'HtmlAttributes'), Lnu_validator_htmlparser_impl_LocatorImpl_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'LocatorImpl'), _3_3C_classLit = createForArray('', '[[C'), Lnu_validator_htmlparser_impl_StackNode_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'StackNode'), _3Lnu_validator_htmlparser_impl_StackNode_2_classLit = createForArray('[Lnu.validator.htmlparser.impl.', 'StackNode;'), Lnu_validator_htmlparser_impl_UTF16Buffer_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'UTF16Buffer'), Lorg_xml_sax_SAXException_2_classLit = createForClass('org.xml.sax.', 'SAXException'), Lorg_xml_sax_SAXParseException_2_classLit = createForClass('org.xml.sax.', 'SAXParseException');
10.21925 +if (false) {  var __gwt_initHandlers = nu_validator_htmlparser_HtmlParser.__gwt_initHandlers;  nu_validator_htmlparser_HtmlParser.onScriptLoad(gwtOnLoad);}})();
10.21926 +
10.21927 +/**
10.21928 +* DOMParser
10.21929 +*/
10.21930 +
10.21931 +__defineParser__(function(e){
10.21932 +    console.log('Error loading html 5 parser implementation');
10.21933 +}, 'nu_validator_htmlparser_HtmlParser', '');
10.21934 +
10.21935 +/*DOMParser = function(principle, documentURI, baseURI){};
10.21936 +__extend__(DOMParser.prototype,{
10.21937 +    parseFromString: function(xmlstring, mimetype){
10.21938 +        //console.log('DOMParser.parseFromString %s', mimetype);
10.21939 +        var xmldoc = new Document(new DOMImplementation());
10.21940 +        return XMLParser.parseDocument(xmlstring, xmldoc, mimetype);
10.21941 +    }
10.21942 +});*/
10.21943 +
10.21944 +XMLParser.parseDocument = function(xmlstring, xmldoc, mimetype){
10.21945 +    //console.log('XMLParser.parseDocument');
10.21946 +    var tmpdoc = new Document(new DOMImplementation()),
10.21947 +        parent,
10.21948 +        importedNode,
10.21949 +        tmpNode;
10.21950 +
10.21951 +    if(mimetype && mimetype == 'text/xml'){
10.21952 +        //console.log('mimetype: text/xml');
10.21953 +        tmpdoc.baseURI = 'http://envjs.com/xml';
10.21954 +        xmlstring = '<html><head></head><body>'+
10.21955 +            '<envjs_1234567890 xmlns="envjs_1234567890">'
10.21956 +                +xmlstring+
10.21957 +            '</envjs_1234567890>'+
10.21958 +        '</body></html>';
10.21959 +        Envjs.parseHtmlDocument(xmlstring, tmpdoc, false, null, null);
10.21960 +        parent = tmpdoc.getElementsByTagName('envjs_1234567890')[0];
10.21961 +    }else{
10.21962 +        Envjs.parseHtmlDocument(xmlstring, tmpdoc, false, null, null);
10.21963 +        parent = tmpdoc.documentElement;
10.21964 +    }
10.21965 +
10.21966 +    while(xmldoc.firstChild != null){
10.21967 +        xmldoc.removeChild( xmldoc.firstChild );
10.21968 +    }
10.21969 +    while(parent.firstChild != null){
10.21970 +        tmpNode  = parent.removeChild( parent.firstChild );
10.21971 +        importedNode = xmldoc.importNode( tmpNode, true);
10.21972 +        xmldoc.appendChild( importedNode );
10.21973 +    }
10.21974 +    return xmldoc;
10.21975 +};
10.21976 +
10.21977 +var __fragmentCache__ = {length:0},
10.21978 +    __cachable__ = 255;
10.21979 +
10.21980 +HTMLParser.parseDocument = function(htmlstring, htmldoc){
10.21981 +    //console.log('HTMLParser.parseDocument %s', htmldoc.async);
10.21982 +    htmldoc.parsing = true;
10.21983 +    Envjs.parseHtmlDocument(htmlstring, htmldoc, htmldoc.async, null, null);
10.21984 +    //Envjs.wait(-1);
10.21985 +    return htmldoc;
10.21986 +};
10.21987 +HTMLParser.parseFragment = function(htmlstring, element){
10.21988 +    //console.log('HTMLParser.parseFragment')
10.21989 +    // fragment is allowed to be an element as well
10.21990 +    var tmpdoc,
10.21991 +        parent,
10.21992 +        importedNode,
10.21993 +        tmpNode,
10.21994 +        length,
10.21995 +        i,
10.21996 +        docstring;
10.21997 +    //console.log('parsing fragment: %s', htmlstring);
10.21998 +    //console.log('__fragmentCache__.length %s', __fragmentCache__.length)
10.21999 +    if( htmlstring.length > __cachable__ && htmlstring in __fragmentCache__){
10.22000 +        tmpdoc = __fragmentCache__[htmlstring];
10.22001 +    }else{
10.22002 +        //console.log('parsing html fragment \n%s', htmlstring);
10.22003 +        tmpdoc = new HTMLDocument(new DOMImplementation());
10.22004 +
10.22005 +
10.22006 +        // Need some indicator that this document isn't THE document
10.22007 +        // to fire off img.src change events and other items.
10.22008 +        // Otherwise, what happens is the tmpdoc fires and img.src
10.22009 +        // event, then when it's all imported to the original document
10.22010 +        // it happens again.
10.22011 +
10.22012 +        tmpdoc.fragment = true;
10.22013 +
10.22014 +        //preserves leading white space
10.22015 +        docstring = '<html><head></head><body>'+
10.22016 +            '<envjs_1234567890 xmlns="envjs_1234567890">'
10.22017 +                +htmlstring+
10.22018 +            '</envjs_1234567890>'+
10.22019 +        '</body></html>';
10.22020 +        Envjs.parseHtmlDocument(docstring,tmpdoc, false, null,null);
10.22021 +        if(htmlstring.length > __cachable__ ){
10.22022 +            tmpdoc.normalizeDocument();
10.22023 +            __fragmentCache__[htmlstring] = tmpdoc;
10.22024 +            __fragmentCache__.length += htmlstring.length;
10.22025 +            tmpdoc.cached = true;
10.22026 +        }else{
10.22027 +            tmpdoc.cached = false;
10.22028 +        }
10.22029 +    }
10.22030 +
10.22031 +    //parent is envjs_1234567890 element
10.22032 +    parent = tmpdoc.body.childNodes[0];
10.22033 +    while(element.firstChild != null){
10.22034 +        //zap the elements children so we can import
10.22035 +        element.removeChild( element.firstChild );
10.22036 +    }
10.22037 +
10.22038 +    if(tmpdoc.cached){
10.22039 +        length = parent.childNodes.length;
10.22040 +        for(i=0;i<length;i++){
10.22041 +            importedNode = element.importNode( parent.childNodes[i], true );
10.22042 +            element.appendChild( importedNode );
10.22043 +        }
10.22044 +    }else{
10.22045 +        while(parent.firstChild != null){
10.22046 +            tmpNode  = parent.removeChild( parent.firstChild );
10.22047 +            importedNode = element.importNode( tmpNode, true);
10.22048 +            element.appendChild( importedNode );
10.22049 +        }
10.22050 +    }
10.22051 +
10.22052 +    // console.log('finished fragment: %s', element.outerHTML);
10.22053 +    return element;
10.22054 +};
10.22055 +
10.22056 +var __clearFragmentCache__ = function(){
10.22057 +    __fragmentCache__ = {};
10.22058 +}
10.22059 +
10.22060 +
10.22061 +/**
10.22062 + * @name Document
10.22063 + * @w3c:domlevel 2 
10.22064 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
10.22065 + */
10.22066 +__extend__(Document.prototype, {
10.22067 +    loadXML : function(xmlString) {
10.22068 +        //console.log('Parser::Document.loadXML');
10.22069 +        // create Document
10.22070 +        if(this === document){
10.22071 +            //$debug("Setting internal window.document");
10.22072 +            document = this;
10.22073 +        }
10.22074 +        // populate Document
10.22075 +        try {
10.22076 +            // make sure this document object is empty before we try to load ...
10.22077 +            this.attributes      = new NamedNodeMap(this, this);
10.22078 +            this._namespaces     = new NamespaceNodeMap(this, this);
10.22079 +            this._readonly = false;
10.22080 +
10.22081 +            XMLParser.parseDocument(xmlString, this);
10.22082 +            
10.22083 +            Envjs.wait(-1);
10.22084 +        } catch (e) {
10.22085 +            //$error(e);
10.22086 +        }
10.22087 +        return this;
10.22088 +    }
10.22089 +});
10.22090 +
10.22091 +
10.22092 +__extend__(HTMLDocument.prototype, {
10.22093 +
10.22094 +    open : function() {
10.22095 +        //console.log('opening doc for write.');
10.22096 +        if (! this._writebuffer) {
10.22097 +            this._writebuffer = [];
10.22098 +        }
10.22099 +    },
10.22100 +    close : function() {
10.22101 +        //console.log('closing doc.');
10.22102 +        if (this._writebuffer) {
10.22103 +            HTMLParser.parseDocument(this._writebuffer.join(''), this);
10.22104 +            this._writebuffer = null;
10.22105 +            //console.log('finished writing doc.');
10.22106 +        }
10.22107 +    },
10.22108 +
10.22109 +    /**
10.22110 +     * http://dev.w3.org/html5/spec/Overview.html#document.write
10.22111 +     */
10.22112 +    write: function(htmlstring) {
10.22113 +        //console.log('writing doc.');
10.22114 +        this.open();
10.22115 +        this._writebuffer.push(htmlstring);
10.22116 +    },
10.22117 +
10.22118 +    /**
10.22119 +     * http://dev.w3.org/html5/spec/Overview.html#dom-document-writeln
10.22120 +     */
10.22121 +    writeln: function(htmlstring) {
10.22122 +        this.open();
10.22123 +        this._writebuffer.push(htmlstring + '\n');
10.22124 +    }
10.22125 +});
10.22126 +
10.22127 +/**
10.22128 + * elementPopped is called by the parser in two cases
10.22129 + *
10.22130 + * - an 'tag' is * complete (all children process and end tag, real or
10.22131 + *   implied is * processed)
10.22132 + * - a replaceElement happens (this happens by making placeholder
10.22133 + *   nodes and then the real one is swapped in.
10.22134 + *
10.22135 + */
10.22136 +var __elementPopped__ = function(ns, name, node){
10.22137 +    //console.log('popped html element %s %s %s', ns, name, node);
10.22138 +    var doc = node.ownerDocument,
10.22139 +        okay,
10.22140 +        event;
10.22141 +    switch(doc.parsing){
10.22142 +        case false:
10.22143 +            //innerHTML so dont do loading patterns for parsing
10.22144 +            //console.log('element popped (implies innerHTML) not in parsing mode %s', node.nodeName);
10.22145 +            break;
10.22146 +        case true:
10.22147 +            switch(doc+''){
10.22148 +                case '[object XMLDocument]':
10.22149 +                    break;
10.22150 +                case '[object HTMLDocument]':
10.22151 +                    switch(node.namespaceURI){
10.22152 +                        case "http://n.validator.nu/placeholder/":
10.22153 +                            //console.log('got script during parsing %s', node.textContent);
10.22154 +                            break;
10.22155 +                        case null:
10.22156 +                        case "":
10.22157 +                        case "http://www.w3.org/1999/xhtml":
10.22158 +                            switch(name.toLowerCase()){
10.22159 +                                case 'script':
10.22160 +                                    try{
10.22161 +                                        okay = Envjs.loadLocalScript(node, null);
10.22162 +                                        // console.log('loaded script? %s %s', node.uuid, okay);
10.22163 +                                        // only fire event if we actually had something to load
10.22164 +                                        if (node.src && node.src.length > 0){
10.22165 +                                            event = doc.createEvent('HTMLEvents');
10.22166 +                                            event.initEvent( okay ? "load" : "error", false, false );
10.22167 +                                            node.dispatchEvent( event, false );
10.22168 +                                        }
10.22169 +                                    }catch(e){
10.22170 +                                        console.log('error loading html element %s %s %s %e', ns, name, node, e.toString());
10.22171 +                                    }
10.22172 +                                    break;
10.22173 +                                case 'frame':
10.22174 +                                case 'iframe':
10.22175 +                                    node.contentWindow = { };
10.22176 +                                    node.contentDocument = new HTMLDocument(new DOMImplementation(), node.contentWindow);
10.22177 +                                    node.contentWindow.document = node.contentDocument;
10.22178 +                                    try{
10.22179 +                                        Window;
10.22180 +                                    }catch(e){
10.22181 +                                        node.contentDocument.addEventListener('DOMContentLoaded', function(){
10.22182 +                                            event = node.contentDocument.createEvent('HTMLEvents');
10.22183 +                                            event.initEvent("load", false, false);
10.22184 +                                            node.dispatchEvent( event, false );
10.22185 +                                        });
10.22186 +                                    }
10.22187 +                                    try{
10.22188 +                                        if (node.src && node.src.length > 0){
10.22189 +                                            //console.log("getting content document for (i)frame from %s", node.src);
10.22190 +                                            Envjs.loadFrame(node, Envjs.uri(node.src));
10.22191 +                                            event = node.contentDocument.createEvent('HTMLEvents');
10.22192 +                                            event.initEvent("load", false, false);
10.22193 +                                            node.dispatchEvent( event, false );
10.22194 +                                        }else{
10.22195 +                                            //I dont like this being here:
10.22196 +                                            //TODO: better  mix-in strategy so the try/catch isnt required
10.22197 +                                            try{
10.22198 +                                                if(Window){
10.22199 +                                                    Envjs.loadFrame(node);
10.22200 +                                                    //console.log('src/html/document.js: triggering frame load');
10.22201 +                                                    event = node.contentDocument.createEvent('HTMLEvents');
10.22202 +                                                    event.initEvent("load", false, false);
10.22203 +                                                    node.dispatchEvent( event, false );
10.22204 +                                                }
10.22205 +                                            }catch(e){}
10.22206 +                                        }
10.22207 +                                    }catch(e){
10.22208 +                                        console.log('error loading html element %s %e', node, e.toString());
10.22209 +                                    }
10.22210 +                                    /*try{
10.22211 +                                        if (node.src && node.src.length > 0){
10.22212 +                                            //console.log("getting content document for (i)frame from %s", node.src);
10.22213 +                                            Envjs.loadFrame(node, Envjs.uri(node.src));
10.22214 +                                            event = node.ownerDocument.createEvent('HTMLEvents');
10.22215 +                                            event.initEvent("load", false, false);
10.22216 +                                            node.dispatchEvent( event, false );
10.22217 +                                        }else{
10.22218 +                                            //console.log('src/parser/htmldocument: triggering frame load (no src)');
10.22219 +                                        }
10.22220 +                                    }catch(e){
10.22221 +                                        console.log('error loading html element %s %s %s %e', ns, name, node, e.toString());
10.22222 +                                    }*/
10.22223 +                                    break;
10.22224 +                                case 'link':
10.22225 +                                    if (node.href) {
10.22226 +                                        __loadLink__(node, node.href);
10.22227 +                                    }
10.22228 +                                    break;
10.22229 +                                case 'option':
10.22230 +                                    node._updateoptions();
10.22231 +                                    break;
10.22232 +                                case 'img':
10.22233 +                                    if (node.src){
10.22234 +                                        __loadImage__(node, node.src);
10.22235 +                                    }
10.22236 +                                    break;
10.22237 +                                case 'html':
10.22238 +                                    //console.log('html popped');
10.22239 +                                    doc.parsing = false;
10.22240 +                                    //DOMContentLoaded event
10.22241 +                                    // try{
10.22242 +                                        if(doc.createEvent){
10.22243 +                                            event = doc.createEvent('Events');
10.22244 +                                            event.initEvent("DOMContentLoaded", false, false);
10.22245 +                                            doc.dispatchEvent( event, false );
10.22246 +                                        }
10.22247 +                                    /* }catch(e){
10.22248 +                                        console.log('%s', e);
10.22249 +                                    } */
10.22250 +                                    try{
10.22251 +                                        if(doc.createEvent){
10.22252 +                                            event = doc.createEvent('HTMLEvents');
10.22253 +                                            event.initEvent("load", false, false);
10.22254 +                                            doc.dispatchEvent( event, false );
10.22255 +                                        }
10.22256 +                                    }catch(e){
10.22257 +                                        console.log('%s', e);
10.22258 +                                    }
10.22259 +
10.22260 +                                    try{
10.22261 +                                        if(doc.parentWindow){
10.22262 +                                            event = doc.createEvent('HTMLEvents');
10.22263 +                                            event.initEvent("load", false, false);
10.22264 +                                            doc.parentWindow.dispatchEvent( event, false );
10.22265 +                                        }
10.22266 +                                    }catch(e){
10.22267 +                                        console.log('%s', e);
10.22268 +                                    }
10.22269 +                                    try{
10.22270 +                                        if(doc === window.document){
10.22271 +                                            //console.log('triggering window.load')
10.22272 +                                            event = doc.createEvent('HTMLEvents');
10.22273 +                                            event.initEvent("load", false, false);
10.22274 +                                            try{
10.22275 +                                                window.dispatchEvent( event, false );
10.22276 +                                            }catch(e){
10.22277 +                                                console.log('%s', e);
10.22278 +                                            }
10.22279 +                                        }
10.22280 +                                    }catch(e){
10.22281 +                                        //console.log('%s', e);
10.22282 +                                        //swallow
10.22283 +                                    }
10.22284 +                                default:
10.22285 +                                    if(node.getAttribute('onload')){
10.22286 +                                        //console.log('%s onload', node);
10.22287 +                                        node.onload();
10.22288 +                                    }
10.22289 +                                    break;
10.22290 +                            }//switch on name
10.22291 +                        default:
10.22292 +                            break;
10.22293 +                    }//switch on ns
10.22294 +                    break;
10.22295 +                default:
10.22296 +                    console.log('element popped: %s %s', ns, name, node.ownerDocument+'');
10.22297 +            }//switch on doc type
10.22298 +        default:
10.22299 +            break;
10.22300 +    }//switch on parsing
10.22301 +};
10.22302 +
10.22303 +__extend__(HTMLElement.prototype,{
10.22304 +    set innerHTML(html){
10.22305 +        HTMLParser.parseFragment(html, this);
10.22306 +    }
10.22307 +});
10.22308 +
10.22309 +/**
10.22310 + * @author john resig & the envjs team
10.22311 + * @uri http://www.envjs.com/
10.22312 + * @copyright 2008-2010
10.22313 + * @license MIT
10.22314 + */
10.22315 +//CLOSURE_END
10.22316 +}());
10.22317 +/*
10.22318 + * Envjs xhr.1.2.13 
10.22319 + * Pure JavaScript Browser Environment
10.22320 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.22321 + * Copyright 2008-2010 John Resig, under the MIT License
10.22322 + * 
10.22323 + * Parts of the implementation originally written by Yehuda Katz.
10.22324 + * 
10.22325 + * This file simply provides the global definitions we need to 
10.22326 + * be able to correctly implement to core browser (XML)HTTPRequest 
10.22327 + * interfaces.
10.22328 + */
10.22329 +var Location,
10.22330 +    XMLHttpRequest;
10.22331 +
10.22332 +/*
10.22333 + * Envjs xhr.1.2.13 
10.22334 + * Pure JavaScript Browser Environment
10.22335 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.22336 + * Copyright 2008-2010 John Resig, under the MIT License
10.22337 + */
10.22338 +
10.22339 +//CLOSURE_START
10.22340 +(function(){
10.22341 +
10.22342 +
10.22343 +
10.22344 +
10.22345 +
10.22346 +/**
10.22347 + * @author john resig
10.22348 + */
10.22349 +// Helper method for extending one object with another.
10.22350 +function __extend__(a,b) {
10.22351 +    for ( var i in b ) {
10.22352 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.22353 +        if ( g || s ) {
10.22354 +            if ( g ) { a.__defineGetter__(i, g); }
10.22355 +            if ( s ) { a.__defineSetter__(i, s); }
10.22356 +        } else {
10.22357 +            a[i] = b[i];
10.22358 +        }
10.22359 +    } return a;
10.22360 +}
10.22361 +
10.22362 +/**
10.22363 + * @author john resig
10.22364 + */
10.22365 +//from jQuery
10.22366 +function __setArray__( target, array ) {
10.22367 +    // Resetting the length to 0, then using the native Array push
10.22368 +    // is a super-fast way to populate an object with array-like properties
10.22369 +    target.length = 0;
10.22370 +    Array.prototype.push.apply( target, array );
10.22371 +}
10.22372 +
10.22373 +/**
10.22374 + * @author ariel flesler
10.22375 + *    http://flesler.blogspot.com/2008/11/fast-trim-function-for-javascript.html
10.22376 + * @param {Object} str
10.22377 + */
10.22378 +function __trim__( str ){
10.22379 +    return (str || "").replace( /^\s+|\s+$/g, "" );
10.22380 +}
10.22381 +
10.22382 +
10.22383 +/**
10.22384 + * @todo: document
10.22385 + */
10.22386 +__extend__(Document.prototype,{
10.22387 +    load: function(url){
10.22388 +        if(this.documentURI == 'about:html'){
10.22389 +            this.location.assign(url);
10.22390 +        }else if(this.documentURI == url){
10.22391 +            this.location.reload(false);
10.22392 +        }else{
10.22393 +            this.location.replace(url);
10.22394 +        }
10.22395 +    },
10.22396 +    get location(){
10.22397 +        return new Location(this.documentURI, this);
10.22398 +    },
10.22399 +    set location(url){
10.22400 +        //very important or you will go into an infinite
10.22401 +        //loop when creating a xml document
10.22402 +        if(url) {
10.22403 +            this.location.replace(url);
10.22404 +        }
10.22405 +    }
10.22406 +});
10.22407 +
10.22408 +
10.22409 +HTMLFormElement.prototype.submit = function(){
10.22410 +    var event = __submit__(this),
10.22411 +        serialized,
10.22412 +        xhr,
10.22413 +        method,
10.22414 +        action;
10.22415 +    if(!event.cancelled){
10.22416 +        serialized = __formSerialize__(this);
10.22417 +        xhr = new XMLHttpRequest();
10.22418 +        method = this.method !== ""?this.method:"GET";
10.22419 +        action = this.action !== ""?this.action:this.ownerDocument.baseURI;
10.22420 +        xhr.open(method, action, false);
10.22421 +        xhr.send(data, false);
10.22422 +        if(xhr.readyState === 4){
10.22423 +            __exchangeHTMLDocument__(this.ownerDocument, xhr.responseText, url);
10.22424 +        }
10.22425 +    }
10.22426 +};
10.22427 +
10.22428 +/**
10.22429 + * Form Submissions
10.22430 + *
10.22431 + * This code is borrow largely from jquery.params and jquery.form.js
10.22432 + *
10.22433 + * formToArray() gathers form element data into an array of objects that can
10.22434 + * be passed to any of the following ajax functions: $.get, $.post, or load.
10.22435 + * Each object in the array has both a 'name' and 'value' property.  An example of
10.22436 + * an array for a simple login form might be:
10.22437 + *
10.22438 + * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
10.22439 + *
10.22440 + * It is this array that is passed to pre-submit callback functions provided to the
10.22441 + * ajaxSubmit() and ajaxForm() methods.
10.22442 + *
10.22443 + * The semantic argument can be used to force form serialization in semantic order.
10.22444 + * This is normally true anyway, unless the form contains input elements of type='image'.
10.22445 + * If your form must be submitted with name/value pairs in semantic order and your form
10.22446 + * contains an input of type='image" then pass true for this arg, otherwise pass false
10.22447 + * (or nothing) to avoid the overhead for this logic.
10.22448 + *
10.22449 + *
10.22450 + * @name formToArray
10.22451 + * @param semantic true if serialization must maintain strict semantic ordering of elements (slower)
10.22452 + * @type Array<Object>
10.22453 + */
10.22454 +var __formToArray__ = function(form, semantic) {
10.22455 +    var array = [],
10.22456 +        elements = semantic ? form.getElementsByTagName('*') : form.elements,
10.22457 +        element,
10.22458 +        i,j,imax, jmax,
10.22459 +        name,
10.22460 +        value;
10.22461 +
10.22462 +    if (!elements) {
10.22463 +        return array;
10.22464 +    }
10.22465 +
10.22466 +    imax = elements.length;
10.22467 +    for(i=0; i < imax; i++) {
10.22468 +        element = elements[i];
10.22469 +        name = element.name;
10.22470 +        if (!name) {
10.22471 +            continue;
10.22472 +        }
10.22473 +        if (semantic && form.clk && element.type === "image") {
10.22474 +            // handle image inputs on the fly when semantic == true
10.22475 +            if(!element.disabled && form.clk == element) {
10.22476 +                array.push({
10.22477 +                    name: name+'.x',
10.22478 +                    value: form.clk_x
10.22479 +                },{
10.22480 +                    name: name+'.y',
10.22481 +                    value: form.clk_y
10.22482 +                });
10.22483 +            }
10.22484 +            continue;
10.22485 +        }
10.22486 +
10.22487 +        value = __fieldValue__(element, true);
10.22488 +        if (value && value.constructor == Array) {
10.22489 +            jmax = value.length;
10.22490 +            for(j=0; j < jmax; j++){
10.22491 +                array.push({name: name, value: value[j]});
10.22492 +            }
10.22493 +        } else if (value !== null && typeof value != 'undefined'){
10.22494 +            array.push({name: name, value: value});
10.22495 +        }
10.22496 +    }
10.22497 +
10.22498 +    if (!semantic && form.clk) {
10.22499 +        // input type=='image' are not found in elements array! handle them here
10.22500 +        elements = form.getElementsByTagName("input");
10.22501 +        imax = imax=elements.length;
10.22502 +        for(i=0; i < imax; i++) {
10.22503 +            element = elements[i];
10.22504 +            name = element.name;
10.22505 +            if(name && !element.disabled && element.type == "image" && form.clk == input) {
10.22506 +                array.push(
10.22507 +                    {name: name+'.x', value: form.clk_x},
10.22508 +                    {name: name+'.y', value: form.clk_y});
10.22509 +            }
10.22510 +        }
10.22511 +    }
10.22512 +    return array;
10.22513 +};
10.22514 +
10.22515 +
10.22516 +/**
10.22517 + * Serializes form data into a 'submittable' string. This method will return a string
10.22518 + * in the format: name1=value1&amp;name2=value2
10.22519 + *
10.22520 + * The semantic argument can be used to force form serialization in semantic order.
10.22521 + * If your form must be submitted with name/value pairs in semantic order then pass
10.22522 + * true for this arg, otherwise pass false (or nothing) to avoid the overhead for
10.22523 + * this logic (which can be significant for very large forms).
10.22524 + *
10.22525 + *
10.22526 + * @name formSerialize
10.22527 + * @param semantic true if serialization must maintain strict semantic ordering of elements (slower)
10.22528 + * @type String
10.22529 + */
10.22530 +var __formSerialize__ = function(form, semantic) {
10.22531 +    //hand off to param for proper encoding
10.22532 +    return __param__(__formToArray__(form, semantic));
10.22533 +};
10.22534 +
10.22535 +
10.22536 +/**
10.22537 + * Serializes all field elements inputs Array into a query string.
10.22538 + * This method will return a string in the format: name1=value1&amp;name2=value2
10.22539 + *
10.22540 + * The successful argument controls whether or not serialization is limited to
10.22541 + * 'successful' controls (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
10.22542 + * The default value of the successful argument is true.
10.22543 + *
10.22544 + *
10.22545 + * @name fieldSerialize
10.22546 + * @param successful true if only successful controls should be serialized (default is true)
10.22547 + * @type String
10.22548 + */
10.22549 +var __fieldSerialize__ = function(inputs, successful) {
10.22550 +    var array = [],
10.22551 +        input,
10.22552 +        name,
10.22553 +        value,
10.22554 +        i,j, imax, jmax;
10.22555 +
10.22556 +    imax = inputs.length;
10.22557 +    for(i=0; i<imax; i++){
10.22558 +        input = inputs[i];
10.22559 +        name = input.name;
10.22560 +        if (!name) {
10.22561 +            return '';
10.22562 +        }
10.22563 +        value = __fieldValue__(input, successful);
10.22564 +        if (value && value.constructor == Array) {
10.22565 +            jmax = value.length;
10.22566 +            for (j=0; j < jmax; j++){
10.22567 +                array.push({
10.22568 +                    name: name,
10.22569 +                    value: value[j]
10.22570 +                });
10.22571 +            }
10.22572 +        }else if (value !== null && typeof value != 'undefined'){
10.22573 +            array.push({
10.22574 +                name: input.name,
10.22575 +                value: value
10.22576 +            });
10.22577 +        }
10.22578 +    }
10.22579 +
10.22580 +    //hand off  for proper encoding
10.22581 +    return __param__(array);
10.22582 +};
10.22583 +
10.22584 +
10.22585 +/**
10.22586 + * Returns the value(s) of the element in the matched set.  For example, consider the following form:
10.22587 + *
10.22588 + *
10.22589 + * The successful argument controls whether or not the field element must be 'successful'
10.22590 + * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
10.22591 + * The default value of the successful argument is true.  If this value is false the value(s)
10.22592 + * for each element is returned.
10.22593 + *
10.22594 + * Note: This method *always* returns an array.  If no valid value can be determined the
10.22595 + *       array will be empty, otherwise it will contain one or more values.
10.22596 + *
10.22597 + *
10.22598 + * @name fieldValue
10.22599 + * @param Boolean successful true if only the values for successful controls
10.22600 + *        should be returned (default is true)
10.22601 + * @type Array<String>
10.22602 + */
10.22603 +var __fieldValues__ = function(inputs, successful) {
10.22604 +    var i,
10.22605 +        imax = inputs.length,
10.22606 +        element,
10.22607 +        values = [],
10.22608 +        value;
10.22609 +    for (i=0; i < imax; i++) {
10.22610 +        element = inputs[i];
10.22611 +        value = __fieldValue__(element, successful);
10.22612 +        if (value === null || typeof value == 'undefined' ||
10.22613 +            (value.constructor == Array && !value.length)) {
10.22614 +            continue;
10.22615 +        }
10.22616 +        if (value.constructor == Array) {
10.22617 +            Array.prototype.push(values, value);
10.22618 +        } else {
10.22619 +            values.push(value);
10.22620 +        }
10.22621 +    }
10.22622 +    return values;
10.22623 +};
10.22624 +
10.22625 +/**
10.22626 + * Returns the value of the field element.
10.22627 + *
10.22628 + * The successful argument controls whether or not the field element must be 'successful'
10.22629 + * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
10.22630 + * The default value of the successful argument is true.  If the given element is not
10.22631 + * successful and the successful arg is not false then the returned value will be null.
10.22632 + *
10.22633 + * Note: If the successful flag is true (default) but the element is not successful, the return will be null
10.22634 + * Note: The value returned for a successful select-multiple element will always be an array.
10.22635 + * Note: If the element has no value the return value will be undefined.
10.22636 + *
10.22637 + * @name fieldValue
10.22638 + * @param Element el The DOM element for which the value will be returned
10.22639 + * @param Boolean successful true if value returned must be for a successful controls (default is true)
10.22640 + * @type String or Array<String> or null or undefined
10.22641 + */
10.22642 +var __fieldValue__ = function(element, successful) {
10.22643 +    var name = element.name,
10.22644 +        type = element.type,
10.22645 +        tag = element.tagName.toLowerCase(),
10.22646 +        index,
10.22647 +        array,
10.22648 +        options,
10.22649 +        option,
10.22650 +        one,
10.22651 +        i, imax,
10.22652 +        value;
10.22653 +
10.22654 +    if (typeof successful == 'undefined')  {
10.22655 +        successful = true;
10.22656 +    }
10.22657 +
10.22658 +    if (successful && (!name || element.disabled || type == 'reset' || type == 'button' ||
10.22659 +             (type == 'checkbox' || type == 'radio') &&  !element.checked ||
10.22660 +             (type == 'submit' || type == 'image') &&
10.22661 +             element.form && element.form.clk != element || tag === 'select' &&
10.22662 +             element.selectedIndex === -1)) {
10.22663 +            return null;
10.22664 +    }
10.22665 +
10.22666 +    if (tag === 'select') {
10.22667 +        index = element.selectedIndex;
10.22668 +        if (index < 0) {
10.22669 +            return null;
10.22670 +        }
10.22671 +        array = [];
10.22672 +        options = element.options;
10.22673 +        one = (type == 'select-one');
10.22674 +        imax = (one ? index+1 : options.length);
10.22675 +        i = (one ? index : 0);
10.22676 +        for( i; i < imax; i++) {
10.22677 +            option = options[i];
10.22678 +            if (option.selected) {
10.22679 +                value = option.value;
10.22680 +                if (one) {
10.22681 +                    return value;
10.22682 +                }
10.22683 +                array.push(value);
10.22684 +            }
10.22685 +        }
10.22686 +        return array;
10.22687 +    }
10.22688 +    return element.value;
10.22689 +};
10.22690 +
10.22691 +
10.22692 +/**
10.22693 + * Clears the form data.  Takes the following actions on the form's input fields:
10.22694 + *  - input text fields will have their 'value' property set to the empty string
10.22695 + *  - select elements will have their 'selectedIndex' property set to -1
10.22696 + *  - checkbox and radio inputs will have their 'checked' property set to false
10.22697 + *  - inputs of type submit, button, reset, and hidden will *not* be effected
10.22698 + *  - button elements will *not* be effected
10.22699 + *
10.22700 + *
10.22701 + * @name clearForm
10.22702 + */
10.22703 +var __clearForm__ = function(form) {
10.22704 +    var i,
10.22705 +        j, jmax,
10.22706 +        elements,
10.22707 +        resetable = ['input','select','textarea'];
10.22708 +    for(i=0; i<resetable.length; i++){
10.22709 +        elements = form.getElementsByTagName(resetable[i]);
10.22710 +        jmax = elements.length;
10.22711 +        for(j=0;j<jmax;j++){
10.22712 +            __clearField__(elements[j]);
10.22713 +        }
10.22714 +    }
10.22715 +};
10.22716 +
10.22717 +/**
10.22718 + * Clears the selected form element.  Takes the following actions on the element:
10.22719 + *  - input text fields will have their 'value' property set to the empty string
10.22720 + *  - select elements will have their 'selectedIndex' property set to -1
10.22721 + *  - checkbox and radio inputs will have their 'checked' property set to false
10.22722 + *  - inputs of type submit, button, reset, and hidden will *not* be effected
10.22723 + *  - button elements will *not* be effected
10.22724 + *
10.22725 + * @name clearFields
10.22726 + */
10.22727 +var __clearField__ = function(element) {
10.22728 +    var type = element.type,
10.22729 +        tag = element.tagName.toLowerCase();
10.22730 +    if (type == 'text' || type == 'password' || tag === 'textarea') {
10.22731 +        element.value = '';
10.22732 +    } else if (type == 'checkbox' || type == 'radio') {
10.22733 +        element.checked = false;
10.22734 +    } else if (tag === 'select') {
10.22735 +        element.selectedIndex = -1;
10.22736 +    }
10.22737 +};
10.22738 +
10.22739 +
10.22740 +// Serialize an array of key/values into a query string
10.22741 +var __param__= function( array ) {
10.22742 +    var i, serialized = [];
10.22743 +
10.22744 +    // Serialize the key/values
10.22745 +    for(i=0; i<array.length; i++){
10.22746 +        serialized[ serialized.length ] =
10.22747 +            encodeURIComponent(array[i].name) + '=' +
10.22748 +            encodeURIComponent(array[i].value);
10.22749 +    }
10.22750 +
10.22751 +    // Return the resulting serialization
10.22752 +    return serialized.join("&").replace(/%20/g, "+");
10.22753 +};
10.22754 +
10.22755 +/**
10.22756 + * Location
10.22757 + *
10.22758 + * Mozilla MDC:
10.22759 + * https://developer.mozilla.org/En/DOM/Window.location
10.22760 + * https://developer.mozilla.org/en/DOM/document.location
10.22761 + *
10.22762 + * HTML5: 6.10.4 The Location interface
10.22763 + * http://dev.w3.org/html5/spec/Overview.html#location
10.22764 + *
10.22765 + * HTML5: 2.5.3 Interfaces for URL manipulation
10.22766 + * http://dev.w3.org/html5/spec/Overview.html#url-decomposition-idl-attributes
10.22767 + * All of section 2.5 is worth reading, but 2.5.3 contains very
10.22768 + * detailed information on how getters/setter should work
10.22769 + *
10.22770 + * NOT IMPLEMENTED:
10.22771 + *  HTML5: Section 6.10.4.1 Security -- prevents scripts from another domain
10.22772 + *   from accessing most of the 'Location'
10.22773 + *  Not sure if anyone implements this in HTML4
10.22774 + */
10.22775 +
10.22776 +Location = function(url, doc, history) {
10.22777 +    //console.log('Location url %s', url);
10.22778 +    var $url = url,
10.22779 +    $document = doc ? doc : null,
10.22780 +    $history = history ? history : null;
10.22781 +
10.22782 +    var parts = Envjs.urlsplit($url);
10.22783 +
10.22784 +    return {
10.22785 +        get hash() {
10.22786 +            return parts.fragment ? '#' + parts.fragment : parts.fragment;
10.22787 +        },
10.22788 +        set hash(s) {
10.22789 +            if (s[0] === '#') {
10.22790 +                parts.fragment = s.substr(1);
10.22791 +            } else {
10.22792 +                parts.fragment = s;
10.22793 +            }
10.22794 +            $url = Envjs.urlunsplit(parts);
10.22795 +            if ($history) {
10.22796 +                $history.add($url, 'hash');
10.22797 +            }
10.22798 +        },
10.22799 +
10.22800 +        get host() {
10.22801 +            return parts.netloc;
10.22802 +        },
10.22803 +        set host(s) {
10.22804 +            if (!s || s === '') {
10.22805 +                return;
10.22806 +            }
10.22807 +
10.22808 +            parts.netloc = s;
10.22809 +            $url = Envjs.urlunsplit(parts);
10.22810 +
10.22811 +            // this regenerates hostname & port
10.22812 +            parts = Envjs.urlsplit($url);
10.22813 +
10.22814 +            if ($history) {
10.22815 +                $history.add( $url, 'host');
10.22816 +            }
10.22817 +            this.assign($url);
10.22818 +        },
10.22819 +
10.22820 +        get hostname() {
10.22821 +            return parts.hostname;
10.22822 +        },
10.22823 +        set hostname(s) {
10.22824 +            if (!s || s === '') {
10.22825 +                return;
10.22826 +            }
10.22827 +
10.22828 +            parts.netloc = s;
10.22829 +            if (parts.port != '') {
10.22830 +                parts.netloc += ':' + parts.port;
10.22831 +            }
10.22832 +            parts.hostname = s;
10.22833 +            $url = Envjs.urlunsplit(parts);
10.22834 +            if ($history) {
10.22835 +                $history.add( $url, 'hostname');
10.22836 +            }
10.22837 +            this.assign($url);
10.22838 +        },
10.22839 +
10.22840 +        get href() {
10.22841 +            return $url;
10.22842 +        },
10.22843 +        set href(url) {
10.22844 +            $url = url;
10.22845 +            if ($history) {
10.22846 +                $history.add($url, 'href');
10.22847 +            }
10.22848 +            this.assign($url);
10.22849 +        },
10.22850 +
10.22851 +        get pathname() {
10.22852 +            return parts.path;
10.22853 +        },
10.22854 +        set pathname(s) {
10.22855 +            if (s[0] === '/') {
10.22856 +                parts.path = s;
10.22857 +            } else {
10.22858 +                parts.path = '/' + s;
10.22859 +            }
10.22860 +            $url = Envjs.urlunsplit(parts);
10.22861 +
10.22862 +            if ($history) {
10.22863 +                $history.add($url, 'pathname');
10.22864 +            }
10.22865 +            this.assign($url);
10.22866 +        },
10.22867 +
10.22868 +        get port() {
10.22869 +            // make sure it's a string
10.22870 +            return '' + parts.port;
10.22871 +        },
10.22872 +        set port(p) {
10.22873 +            // make a string
10.22874 +            var s = '' + p;
10.22875 +            parts.port = s;
10.22876 +            parts.netloc = parts.hostname + ':' + parts.port;
10.22877 +            $url = Envjs.urlunsplit(parts);
10.22878 +            if ($history) {
10.22879 +                $history.add( $url, 'port');
10.22880 +            }
10.22881 +            this.assign($url);
10.22882 +        },
10.22883 +
10.22884 +        get protocol() {
10.22885 +            return parts.scheme + ':';
10.22886 +        },
10.22887 +        set protocol(s) {
10.22888 +            var i = s.indexOf(':');
10.22889 +            if (i != -1) {
10.22890 +                s = s.substr(0,i);
10.22891 +            }
10.22892 +            parts.scheme = s;
10.22893 +            $url = Envjs.urlunsplit(parts);
10.22894 +            if ($history) {
10.22895 +                $history.add($url, 'protocol');
10.22896 +            }
10.22897 +            this.assign($url);
10.22898 +        },
10.22899 +
10.22900 +        get search() {
10.22901 +            return (parts.query) ? '?' + parts.query : parts.query;
10.22902 +        },
10.22903 +        set search(s) {
10.22904 +            if (s[0] == '?') {
10.22905 +                s = s.substr(1);
10.22906 +            }
10.22907 +            parts.query = s;
10.22908 +            $url = Envjs.urlunsplit(parts);
10.22909 +            if ($history) {
10.22910 +                $history.add($url, 'search');
10.22911 +            }
10.22912 +            this.assign($url);
10.22913 +        },
10.22914 +
10.22915 +        toString: function() {
10.22916 +            return $url;
10.22917 +        },
10.22918 +
10.22919 +        assign: function(url) {
10.22920 +            var _this = this,
10.22921 +                xhr,
10.22922 +                event,
10.22923 +                cookie;
10.22924 +
10.22925 +            //console.log('assigning %s',url);
10.22926 +
10.22927 +            // update closure upvars
10.22928 +            $url = url;
10.22929 +            parts = Envjs.urlsplit($url);
10.22930 +
10.22931 +            //we can only assign if this Location is associated with a document
10.22932 +            if ($document) {
10.22933 +                //console.log('fetching %s (async? %s)', url, $document.async);
10.22934 +                xhr = new XMLHttpRequest();
10.22935 +
10.22936 +                // TODO: make async flag a Envjs paramter
10.22937 +                xhr.open('GET', url, false);//$document.async);
10.22938 +
10.22939 +                // TODO: is there a better way to test if a node is an HTMLDocument?
10.22940 +                if ($document.toString() === '[object HTMLDocument]') {
10.22941 +                    //tell the xhr to not parse the document as XML
10.22942 +                    //console.log('loading html document');
10.22943 +                    xhr.onreadystatechange = function() {
10.22944 +                        //console.log('readyState %s', xhr.readyState);
10.22945 +                        if (xhr.readyState === 4) {
10.22946 +                            $document.baseURI = new Location(url, $document);
10.22947 +                            //console.log('new document baseURI %s', $document.baseURI);
10.22948 +                            __exchangeHTMLDocument__($document, xhr.responseText, url);
10.22949 +                        }
10.22950 +                    };
10.22951 +                    xhr.send(null, false);
10.22952 +                } else {
10.22953 +                    //Treat as an XMLDocument
10.22954 +                    xhr.onreadystatechange = function() {
10.22955 +                        if (xhr.readyState === 4) {
10.22956 +                            $document = xhr.responseXML;
10.22957 +                            $document.baseURI = $url;
10.22958 +                            if ($document.createEvent) {
10.22959 +                                event = $document.createEvent('Event');
10.22960 +                                event.initEvent('DOMContentLoaded');
10.22961 +                                $document.dispatchEvent( event, false );
10.22962 +                            }
10.22963 +                        }
10.22964 +                    };
10.22965 +                    xhr.send();
10.22966 +                }
10.22967 +
10.22968 +            };
10.22969 +
10.22970 +        },
10.22971 +        reload: function(forceget) {
10.22972 +            //for now we have no caching so just proxy to assign
10.22973 +            //console.log('reloading %s',$url);
10.22974 +            this.assign($url);
10.22975 +        },
10.22976 +        replace: function(url) {
10.22977 +            this.assign(url);
10.22978 +        }
10.22979 +    };
10.22980 +};
10.22981 +
10.22982 +var __exchangeHTMLDocument__ = function(doc, text, url) {
10.22983 +    var html, head, title, body, event, e;
10.22984 +    // try {
10.22985 +        doc.baseURI = url;
10.22986 +        HTMLParser.parseDocument(text, doc);
10.22987 +        Envjs.wait();
10.22988 +    /* } catch (e) {
10.22989 +        console.log('parsererror %s', e);
10.22990 +        try {
10.22991 +            console.log('document \n %s', doc.documentElement.outerHTML);
10.22992 +        } catch (e) {
10.22993 +            // swallow
10.22994 +        }
10.22995 +        doc = new HTMLDocument(new DOMImplementation(), doc.ownerWindow);
10.22996 +        html =    doc.createElement('html');
10.22997 +        head =    doc.createElement('head');
10.22998 +        title =   doc.createElement('title');
10.22999 +        body =    doc.createElement('body');
10.23000 +        title.appendChild(doc.createTextNode('Error'));
10.23001 +        body.appendChild(doc.createTextNode('' + e));
10.23002 +        head.appendChild(title);
10.23003 +        html.appendChild(head);
10.23004 +        html.appendChild(body);
10.23005 +        doc.appendChild(html);
10.23006 +        //console.log('default error document \n %s', doc.documentElement.outerHTML);
10.23007 +
10.23008 +        //DOMContentLoaded event
10.23009 +        if (doc.createEvent) {
10.23010 +            event = doc.createEvent('Event');
10.23011 +            event.initEvent('DOMContentLoaded', false, false);
10.23012 +            doc.dispatchEvent( event, false );
10.23013 +
10.23014 +            event = doc.createEvent('HTMLEvents');
10.23015 +            event.initEvent('load', false, false);
10.23016 +            doc.dispatchEvent( event, false );
10.23017 +        }
10.23018 +
10.23019 +        //finally fire the window.onload event
10.23020 +        //TODO: this belongs in window.js which is a event
10.23021 +        //      event handler for DOMContentLoaded on document
10.23022 +
10.23023 +        try {
10.23024 +            if (doc === window.document) {
10.23025 +                console.log('triggering window.load');
10.23026 +                event = doc.createEvent('HTMLEvents');
10.23027 +                event.initEvent('load', false, false);
10.23028 +                window.dispatchEvent( event, false );
10.23029 +            }
10.23030 +        } catch (e) {
10.23031 +            //console.log('window load event failed %s', e);
10.23032 +            //swallow
10.23033 +        }
10.23034 +    }; */  /* closes return {... */
10.23035 +};
10.23036 +
10.23037 +/**
10.23038 + *
10.23039 + * @class XMLHttpRequest
10.23040 + * @author Originally implemented by Yehuda Katz
10.23041 + *
10.23042 + */
10.23043 +
10.23044 +// this implementation can be used without requiring a DOMParser
10.23045 +// assuming you dont try to use it to get xml/html documents
10.23046 +var domparser;
10.23047 +
10.23048 +XMLHttpRequest = function(){
10.23049 +    this.headers = {};
10.23050 +    this.responseHeaders = {};
10.23051 +    this.aborted = false;//non-standard
10.23052 +};
10.23053 +
10.23054 +// defined by the standard: http://www.w3.org/TR/XMLHttpRequest/#xmlhttprequest
10.23055 +// but not provided by Firefox.  Safari and others do define it.
10.23056 +XMLHttpRequest.UNSENT = 0;
10.23057 +XMLHttpRequest.OPEN = 1;
10.23058 +XMLHttpRequest.HEADERS_RECEIVED = 2;
10.23059 +XMLHttpRequest.LOADING = 3;
10.23060 +XMLHttpRequest.DONE = 4;
10.23061 +
10.23062 +XMLHttpRequest.prototype = {
10.23063 +    open: function(method, url, async, user, password){
10.23064 +        //console.log('openning xhr %s %s %s', method, url, async);
10.23065 +        this.readyState = 1;
10.23066 +        this.async = (async === false)?false:true;
10.23067 +        this.method = method || "GET";
10.23068 +        this.url = Envjs.uri(url);
10.23069 +        this.onreadystatechange();
10.23070 +    },
10.23071 +    setRequestHeader: function(header, value){
10.23072 +        this.headers[header] = value;
10.23073 +    },
10.23074 +    send: function(data, parsedoc/*non-standard*/){
10.23075 +        var _this = this;
10.23076 +        parsedoc = (parsedoc === undefined)?true:!!parsedoc;
10.23077 +        function makeRequest(){
10.23078 +            var cookie = Envjs.getCookies(_this.url);
10.23079 +            if(cookie){
10.23080 +                _this.setRequestHeader('COOKIE', cookie);
10.23081 +            }
10.23082 +            Envjs.connection(_this, function(){
10.23083 +                if (!_this.aborted){
10.23084 +                    var doc = null,
10.23085 +                        domparser,
10.23086 +                        cookie;
10.23087 +                    // try to parse the document if we havent explicitly set a
10.23088 +                    // flag saying not to and if we can assure the text at least
10.23089 +                    // starts with valid xml
10.23090 +                    if ( parsedoc && _this.responseText.match(/^\s*</) ) {
10.23091 +                        domparser = domparser||new DOMParser();
10.23092 +                        try {
10.23093 +                            //console.log("parsing response text into xml document");
10.23094 +                            doc = domparser.parseFromString(_this.responseText+"", 'text/xml');
10.23095 +                        } catch(e) {
10.23096 +                            //Envjs.error('response XML does not appear to be well formed xml', e);
10.23097 +                            console.warn('parseerror \n%s', e);
10.23098 +                            doc = document.implementation.createDocument('','error',null);
10.23099 +                            doc.appendChild(doc.createTextNode(e+''));
10.23100 +                        }
10.23101 +                    }else{
10.23102 +                        //Envjs.warn('response XML does not appear to be xml');
10.23103 +                    }
10.23104 +                    
10.23105 +                    try{
10.23106 +                        cookie = _this.getResponseHeader('SET-COOKIE');
10.23107 +                        if(cookie){
10.23108 +                             Envjs.setCookie(_this.url, cookie);
10.23109 +                        }
10.23110 +                    }catch(e){
10.23111 +                        console.warn("Failed to set cookie");
10.23112 +                    }
10.23113 +                    _this.__defineGetter__("responseXML", function(){
10.23114 +                        return doc;
10.23115 +                    });
10.23116 +                }
10.23117 +            }, data);
10.23118 +
10.23119 +            if (!_this.aborted){
10.23120 +                _this.onreadystatechange();
10.23121 +            }
10.23122 +        }
10.23123 +
10.23124 +        if (this.async){
10.23125 +            //TODO: what we really need to do here is rejoin the
10.23126 +            //      current thread and call onreadystatechange via
10.23127 +            //      setTimeout so the callback is essentially applied
10.23128 +            //      at the end of the current callstack
10.23129 +            //console.log('requesting async: %s', this.url);
10.23130 +            Envjs.runAsync(makeRequest);
10.23131 +        }else{
10.23132 +            //console.log('requesting sync: %s', this.url);
10.23133 +            makeRequest();
10.23134 +        }
10.23135 +    },
10.23136 +    abort: function(){
10.23137 +        this.aborted = true;
10.23138 +    },
10.23139 +    onreadystatechange: function(){
10.23140 +        //Instance specific
10.23141 +    },
10.23142 +    getResponseHeader: function(header){
10.23143 +        //$debug('GETTING RESPONSE HEADER '+header);
10.23144 +        var rHeader, returnedHeaders;
10.23145 +        if (this.readyState < 3){
10.23146 +            throw new Error("INVALID_STATE_ERR");
10.23147 +        } else {
10.23148 +            returnedHeaders = [];
10.23149 +            for (rHeader in this.responseHeaders) {
10.23150 +                if (rHeader.match(new RegExp(header, "i"))) {
10.23151 +                    returnedHeaders.push(this.responseHeaders[rHeader]);
10.23152 +                }
10.23153 +            }
10.23154 +
10.23155 +            if (returnedHeaders.length){
10.23156 +                //$debug('GOT RESPONSE HEADER '+returnedHeaders.join(", "));
10.23157 +                return returnedHeaders.join(", ");
10.23158 +            }
10.23159 +        }
10.23160 +        return null;
10.23161 +    },
10.23162 +    getAllResponseHeaders: function(){
10.23163 +        var header, returnedHeaders = [];
10.23164 +        if (this.readyState < 3){
10.23165 +            throw new Error("INVALID_STATE_ERR");
10.23166 +        } else {
10.23167 +            for (header in this.responseHeaders) {
10.23168 +                returnedHeaders.push( header + ": " + this.responseHeaders[header] );
10.23169 +            }
10.23170 +        }
10.23171 +        return returnedHeaders.join("\r\n");
10.23172 +    },
10.23173 +    async: true,
10.23174 +    readyState: 0,
10.23175 +    responseText: "",
10.23176 +    status: 0,
10.23177 +    statusText: ""
10.23178 +};
10.23179 +
10.23180 +/**
10.23181 + * @author john resig & the envjs team
10.23182 + * @uri http://www.envjs.com/
10.23183 + * @copyright 2008-2010
10.23184 + * @license MIT
10.23185 + */
10.23186 +//CLOSURE_END
10.23187 +}());
10.23188 +
10.23189 +/**
10.23190 + * @todo: document
10.23191 + */
10.23192 +var Window,
10.23193 +    Screen,
10.23194 +    History,
10.23195 +    Navigator;
10.23196 +
10.23197 +
10.23198 +/*
10.23199 + * Envjs window.1.2.13 
10.23200 + * Pure JavaScript Browser Environment
10.23201 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.23202 + * Copyright 2008-2010 John Resig, under the MIT License
10.23203 + */
10.23204 +
10.23205 +//CLOSURE_START
10.23206 +(function(){
10.23207 +
10.23208 +
10.23209 +
10.23210 +
10.23211 +
10.23212 +/**
10.23213 + * @author john resig
10.23214 + */
10.23215 +// Helper method for extending one object with another.
10.23216 +function __extend__(a,b) {
10.23217 +    for ( var i in b ) {
10.23218 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.23219 +        if ( g || s ) {
10.23220 +            if ( g ) { a.__defineGetter__(i, g); }
10.23221 +            if ( s ) { a.__defineSetter__(i, s); }
10.23222 +        } else {
10.23223 +            a[i] = b[i];
10.23224 +        }
10.23225 +    } return a;
10.23226 +}
10.23227 +
10.23228 +/**
10.23229 + * @todo: document
10.23230 + */
10.23231 +
10.23232 +__extend__(HTMLFrameElement.prototype,{
10.23233 +
10.23234 +    get contentDocument(){
10.23235 +        return this.contentWindow?
10.23236 +            this.contentWindow.document:
10.23237 +            null;
10.23238 +    },
10.23239 +    set src(value){
10.23240 +        var event;
10.23241 +        this.setAttribute('src', value);
10.23242 +        if (this.parentNode && value && value.length > 0){
10.23243 +            //console.log('loading frame %s', value);
10.23244 +            Envjs.loadFrame(this, Envjs.uri(value));
10.23245 +
10.23246 +            //console.log('event frame load %s', value);
10.23247 +            event = this.ownerDocument.createEvent('HTMLEvents');
10.23248 +            event.initEvent("load", false, false);
10.23249 +            this.dispatchEvent( event, false );
10.23250 +        }
10.23251 +    }
10.23252 +
10.23253 +});
10.23254 +
10.23255 +/*
10.23256 + *       history.js
10.23257 + *
10.23258 + */
10.23259 +
10.23260 +History = function(owner) {
10.23261 +    var $current = 0,
10.23262 +        $history = [null],
10.23263 +        $owner = owner;
10.23264 +
10.23265 +    return {
10.23266 +        go : function(target) {
10.23267 +            if (typeof target === "number") {
10.23268 +                target = $current + target;
10.23269 +                if (target > -1 && target < $history.length){
10.23270 +                    if ($history[target].type === "hash") {
10.23271 +                        if ($owner.location) {
10.23272 +                            $owner.location.hash = $history[target].value;
10.23273 +                        }
10.23274 +                    } else {
10.23275 +                        if ($owner.location) {
10.23276 +                            $owner.location = $history[target].value;
10.23277 +                        }
10.23278 +                    }
10.23279 +                    $current = target;
10.23280 +                }
10.23281 +            } else {
10.23282 +                //TODO: walk through the history and find the 'best match'?
10.23283 +            }
10.23284 +        },
10.23285 +
10.23286 +        get length() {
10.23287 +            return $history.length;
10.23288 +        },
10.23289 +
10.23290 +        back : function(count) {
10.23291 +            if (count) {
10.23292 +                this.go(-count);
10.23293 +            } else {
10.23294 +                this.go(-1);
10.23295 +            }
10.23296 +        },
10.23297 +
10.23298 +        get current() {
10.23299 +            return this.item($current);
10.23300 +        },
10.23301 +
10.23302 +        get previous() {
10.23303 +            return this.item($current-1);
10.23304 +        },
10.23305 +
10.23306 +        forward : function(count) {
10.23307 +            if (count) {
10.23308 +                this.go(count);
10.23309 +            } else {
10.23310 +                this.go(1);
10.23311 +            }
10.23312 +        },
10.23313 +
10.23314 +        item: function(idx) {
10.23315 +            if (idx >= 0 && idx < $history.length) {
10.23316 +                return $history[idx];
10.23317 +            } else {
10.23318 +                return null;
10.23319 +            }
10.23320 +        },
10.23321 +
10.23322 +        add: function(newLocation, type) {
10.23323 +            //not a standard interface, we expose it to simplify
10.23324 +            //history state modifications
10.23325 +            if (newLocation !== $history[$current]) {
10.23326 +                $history.slice(0, $current);
10.23327 +                $history.push({
10.23328 +                    type: type || 'href',
10.23329 +                    value: newLocation
10.23330 +                });
10.23331 +            }
10.23332 +        }
10.23333 +    }; /* closes 'return {' */
10.23334 +};
10.23335 +
10.23336 +
10.23337 +/*
10.23338 + *      navigator.js
10.23339 + *  Browser Navigator
10.23340 + */
10.23341 +Navigator = function(){
10.23342 +
10.23343 +    return {
10.23344 +        get appCodeName(){
10.23345 +            return Envjs.appCodeName;
10.23346 +        },
10.23347 +        get appName(){
10.23348 +            return Envjs.appName;
10.23349 +        },
10.23350 +        get appVersion(){
10.23351 +            return Envjs.version +" ("+
10.23352 +                this.platform +"; "+
10.23353 +                "U; "+//?
10.23354 +                Envjs.os_name+" "+Envjs.os_arch+" "+Envjs.os_version+"; "+
10.23355 +                (Envjs.lang?Envjs.lang:"en-US")+"; "+
10.23356 +                "rv:"+Envjs.revision+
10.23357 +                ")";
10.23358 +        },
10.23359 +        get cookieEnabled(){
10.23360 +            return true;
10.23361 +        },
10.23362 +        get mimeTypes(){
10.23363 +            return [];
10.23364 +        },
10.23365 +        get platform(){
10.23366 +            return Envjs.platform;
10.23367 +        },
10.23368 +        get plugins(){
10.23369 +            return [];
10.23370 +        },
10.23371 +        get userAgent(){
10.23372 +            return this.appCodeName + "/" + this.appVersion + " " + this.appName;
10.23373 +        },
10.23374 +        javaEnabled : function(){
10.23375 +            return Envjs.javaEnabled;
10.23376 +        }
10.23377 +    };
10.23378 +};
10.23379 +
10.23380 +
10.23381 +/**
10.23382 + * Screen
10.23383 + * @param {Object} __window__
10.23384 + */
10.23385 +
10.23386 +Screen = function(__window__){
10.23387 +
10.23388 +    var $availHeight  = 600,
10.23389 +        $availWidth   = 800,
10.23390 +        $colorDepth   = 16,
10.23391 +        $pixelDepth   = 24,
10.23392 +        $height       = 600,
10.23393 +        $width        = 800,
10.23394 +        $top          = 0,
10.23395 +        $left         = 0,
10.23396 +        $availTop     = 0,
10.23397 +        $availLeft    = 0;
10.23398 +
10.23399 +    __extend__( __window__, {
10.23400 +        moveBy : function(dx,dy){
10.23401 +            //TODO - modify $locals to reflect change
10.23402 +        },
10.23403 +        moveTo : function(x,y) {
10.23404 +            //TODO - modify $locals to reflect change
10.23405 +        },
10.23406 +        /*print : function(){
10.23407 +            //TODO - good global to modify to ensure print is not misused
10.23408 +        };*/
10.23409 +        resizeBy : function(dw, dh){
10.23410 +            __window__resizeTo($width + dw, $height + dh);
10.23411 +        },
10.23412 +        resizeTo : function(width, height){
10.23413 +            $width = (width <= $availWidth) ? width : $availWidth;
10.23414 +            $height = (height <= $availHeight) ? height : $availHeight;
10.23415 +        },
10.23416 +        scroll : function(x,y){
10.23417 +            //TODO - modify $locals to reflect change
10.23418 +        },
10.23419 +        scrollBy : function(dx, dy){
10.23420 +            //TODO - modify $locals to reflect change
10.23421 +        },
10.23422 +        scrollTo : function(x,y){
10.23423 +            //TODO - modify $locals to reflect change
10.23424 +        }
10.23425 +    });
10.23426 +
10.23427 +    return {
10.23428 +        get top(){
10.23429 +            return $top;
10.23430 +        },
10.23431 +        get left(){
10.23432 +            return $left;
10.23433 +        },
10.23434 +        get availTop(){
10.23435 +            return $availTop;
10.23436 +        },
10.23437 +        get availLeft(){
10.23438 +            return $availLeft;
10.23439 +        },
10.23440 +        get availHeight(){
10.23441 +            return $availHeight;
10.23442 +        },
10.23443 +        get availWidth(){
10.23444 +            return $availWidth;
10.23445 +        },
10.23446 +        get colorDepth(){
10.23447 +            return $colorDepth;
10.23448 +        },
10.23449 +        get pixelDepth(){
10.23450 +            return $pixelDepth;
10.23451 +        },
10.23452 +        get height(){
10.23453 +            return $height;
10.23454 +        },
10.23455 +        get width(){
10.23456 +            return $width;
10.23457 +        }
10.23458 +    };
10.23459 +};
10.23460 +
10.23461 +/*
10.23462 + * Copyright (c) 2010 Nick Galbreath
10.23463 + * http://code.google.com/p/stringencoders/source/browse/#svn/trunk/javascript
10.23464 + *
10.23465 + * Permission is hereby granted, free of charge, to any person
10.23466 + * obtaining a copy of this software and associated documentation
10.23467 + * files (the "Software"), to deal in the Software without
10.23468 + * restriction, including without limitation the rights to use,
10.23469 + * copy, modify, merge, publish, distribute, sublicense, and/or sell
10.23470 + * copies of the Software, and to permit persons to whom the
10.23471 + * Software is furnished to do so, subject to the following
10.23472 + * conditions:
10.23473 + *
10.23474 + * The above copyright notice and this permission notice shall be
10.23475 + * included in all copies or substantial portions of the Software.
10.23476 + *
10.23477 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
10.23478 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
10.23479 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
10.23480 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
10.23481 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
10.23482 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
10.23483 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
10.23484 + * OTHER DEALINGS IN THE SOFTWARE.
10.23485 + */
10.23486 +
10.23487 +/* base64 encode/decode compatible with window.btoa/atob
10.23488 + *
10.23489 + * window.atob/btoa is a Firefox extension to convert binary data (the "b")
10.23490 + * to base64 (ascii, the "a").
10.23491 + *
10.23492 + * It is also found in Safari and Chrome.  It is not available in IE.
10.23493 + *
10.23494 + * if (!window.btoa) window.btoa = base64.encode
10.23495 + * if (!window.atob) window.atob = base64.decode
10.23496 + *
10.23497 + * The original spec's for atob/btoa are a bit lacking
10.23498 + * https://developer.mozilla.org/en/DOM/window.atob
10.23499 + * https://developer.mozilla.org/en/DOM/window.btoa
10.23500 + *
10.23501 + * window.btoa and base64.encode takes a string where charCodeAt is [0,255]
10.23502 + * If any character is not [0,255], then an DOMException(5) is thrown.
10.23503 + *
10.23504 + * window.atob and base64.decode take a base64-encoded string
10.23505 + * If the input length is not a multiple of 4, or contains invalid characters
10.23506 + *   then an DOMException(5) is thrown.
10.23507 + */
10.23508 +var base64 = {};
10.23509 +base64.PADCHAR = '=';
10.23510 +base64.ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
10.23511 +
10.23512 +base64.makeDOMException = function() {
10.23513 +    // sadly in FF,Safari,Chrome you can't make a DOMException
10.23514 +    var e, tmp;
10.23515 +
10.23516 +    try {
10.23517 +        return new DOMException(DOMException.INVALID_CHARACTER_ERR);
10.23518 +    } catch (tmp) {
10.23519 +        // not available, just passback a duck-typed equiv
10.23520 +        // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error
10.23521 +        // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error/prototype
10.23522 +        var ex = new Error("DOM Exception 5");
10.23523 +
10.23524 +        // ex.number and ex.description is IE-specific.
10.23525 +        ex.code = ex.number = 5;
10.23526 +        ex.name = ex.description = "INVALID_CHARACTER_ERR";
10.23527 +
10.23528 +        // Safari/Chrome output format
10.23529 +        ex.toString = function() { return 'Error: ' + ex.name + ': ' + ex.message; };
10.23530 +        return ex;
10.23531 +    }
10.23532 +};
10.23533 +
10.23534 +base64.getbyte64 = function(s,i) {
10.23535 +    // This is oddly fast, except on Chrome/V8.
10.23536 +    //  Minimal or no improvement in performance by using a
10.23537 +    //   object with properties mapping chars to value (eg. 'A': 0)
10.23538 +    var idx = base64.ALPHA.indexOf(s.charAt(i));
10.23539 +    if (idx === -1) {
10.23540 +        throw base64.makeDOMException();
10.23541 +    }
10.23542 +    return idx;
10.23543 +};
10.23544 +
10.23545 +base64.decode = function(s) {
10.23546 +    // convert to string
10.23547 +    s = '' + s;
10.23548 +    var getbyte64 = base64.getbyte64;
10.23549 +    var pads, i, b10;
10.23550 +    var imax = s.length;
10.23551 +    if (imax === 0) {
10.23552 +        return s;
10.23553 +    }
10.23554 +
10.23555 +    if (imax % 4 !== 0) {
10.23556 +        throw base64.makeDOMException();
10.23557 +    }
10.23558 +
10.23559 +    pads = 0;
10.23560 +    if (s.charAt(imax - 1) === base64.PADCHAR) {
10.23561 +        pads = 1;
10.23562 +        if (s.charAt(imax - 2) === base64.PADCHAR) {
10.23563 +            pads = 2;
10.23564 +        }
10.23565 +        // either way, we want to ignore this last block
10.23566 +        imax -= 4;
10.23567 +    }
10.23568 +
10.23569 +    var x = [];
10.23570 +    for (i = 0; i < imax; i += 4) {
10.23571 +        b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) |
10.23572 +            (getbyte64(s,i+2) << 6) | getbyte64(s,i+3);
10.23573 +        x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff, b10 & 0xff));
10.23574 +    }
10.23575 +
10.23576 +    switch (pads) {
10.23577 +    case 1:
10.23578 +        b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) | (getbyte64(s,i+2) << 6);
10.23579 +        x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff));
10.23580 +        break;
10.23581 +    case 2:
10.23582 +        b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12);
10.23583 +        x.push(String.fromCharCode(b10 >> 16));
10.23584 +        break;
10.23585 +    }
10.23586 +    return x.join('');
10.23587 +};
10.23588 +
10.23589 +base64.getbyte = function(s,i) {
10.23590 +    var x = s.charCodeAt(i);
10.23591 +    if (x > 255) {
10.23592 +        throw base64.makeDOMException();
10.23593 +    }
10.23594 +    return x;
10.23595 +};
10.23596 +
10.23597 +base64.encode = function(s) {
10.23598 +    if (arguments.length !== 1) {
10.23599 +        throw new SyntaxError("Not enough arguments");
10.23600 +    }
10.23601 +    var padchar = base64.PADCHAR;
10.23602 +    var alpha   = base64.ALPHA;
10.23603 +    var getbyte = base64.getbyte;
10.23604 +
10.23605 +    var i, b10;
10.23606 +    var x = [];
10.23607 +
10.23608 +    // convert to string
10.23609 +    s = '' + s;
10.23610 +
10.23611 +    var imax = s.length - s.length % 3;
10.23612 +
10.23613 +    if (s.length === 0) {
10.23614 +        return s;
10.23615 +    }
10.23616 +    for (i = 0; i < imax; i += 3) {
10.23617 +        b10 = (getbyte(s,i) << 16) | (getbyte(s,i+1) << 8) | getbyte(s,i+2);
10.23618 +        x.push(alpha.charAt(b10 >> 18));
10.23619 +        x.push(alpha.charAt((b10 >> 12) & 0x3F));
10.23620 +        x.push(alpha.charAt((b10 >> 6) & 0x3f));
10.23621 +        x.push(alpha.charAt(b10 & 0x3f));
10.23622 +    }
10.23623 +    switch (s.length - imax) {
10.23624 +    case 1:
10.23625 +        b10 = getbyte(s,i) << 16;
10.23626 +        x.push(alpha.charAt(b10 >> 18) + alpha.charAt((b10 >> 12) & 0x3F) +
10.23627 +               padchar + padchar);
10.23628 +        break;
10.23629 +    case 2:
10.23630 +        b10 = (getbyte(s,i) << 16) | (getbyte(s,i+1) << 8);
10.23631 +        x.push(alpha.charAt(b10 >> 18) + alpha.charAt((b10 >> 12) & 0x3F) +
10.23632 +               alpha.charAt((b10 >> 6) & 0x3f) + padchar);
10.23633 +        break;
10.23634 +    }
10.23635 +    return x.join('');
10.23636 +};
10.23637 +//These descriptions of window properties are taken loosely David Flanagan's
10.23638 +//'JavaScript - The Definitive Guide' (O'Reilly)
10.23639 +
10.23640 +var __windows__ = {};
10.23641 +
10.23642 +var __top__ = function(_scope){
10.23643 +    var _parent = _scope.parent;
10.23644 +    while (_scope && _parent && _scope !== _parent) {
10.23645 +        if (_parent === _parent.parent) {
10.23646 +            break;
10.23647 +        }
10.23648 +        _parent = _parent.parent;
10.23649 +        //console.log('scope %s _parent %s', scope, _parent);
10.23650 +    }
10.23651 +    return _parent || null;
10.23652 +};
10.23653 +
10.23654 +/**
10.23655 + * Window
10.23656 + * @param {Object} scope
10.23657 + * @param {Object} parent
10.23658 + * @param {Object} opener
10.23659 + */
10.23660 +Window = function(scope, parent, opener){
10.23661 +
10.23662 +    // the window property is identical to the self property and to this obj
10.23663 +    //var proxy = new Envjs.proxy(scope, parent);
10.23664 +    //scope.__proxy__ = proxy;
10.23665 +    scope.__defineGetter__('window', function(){
10.23666 +        return scope;
10.23667 +    });
10.23668 +
10.23669 +    var $uuid = new Date().getTime()+'-'+Math.floor(Math.random()*1000000000000000);
10.23670 +    __windows__[$uuid] = scope;
10.23671 +    //console.log('opening window %s', $uuid);
10.23672 +
10.23673 +    // every window has one-and-only-one .document property which is always
10.23674 +    // an [object HTMLDocument].  also, only window.document objects are
10.23675 +    // html documents, all other documents created by the window.document are
10.23676 +    // [object XMLDocument]
10.23677 +    var $htmlImplementation =  new DOMImplementation();
10.23678 +    $htmlImplementation.namespaceAware = true;
10.23679 +    $htmlImplementation.errorChecking = false;
10.23680 +
10.23681 +    // read only reference to the Document object
10.23682 +    var $document = new HTMLDocument($htmlImplementation, scope);
10.23683 +
10.23684 +    // A read-only reference to the Window object that contains this window
10.23685 +    // or frame.  If the window is a top-level window, parent refers to
10.23686 +    // the window itself.  If this window is a frame, this property refers
10.23687 +    // to the window or frame that contains it.
10.23688 +    var $parent = parent;
10.23689 +
10.23690 +    /**> $cookies - see cookie.js <*/
10.23691 +    // read only boolean specifies whether the window has been closed
10.23692 +    var $closed = false;
10.23693 +
10.23694 +    // a read/write string that specifies the default message that
10.23695 +    // appears in the status line
10.23696 +    var $defaultStatus = "Done";
10.23697 +
10.23698 +    // IE only, refers to the most recent event object - this maybe be
10.23699 +    // removed after review
10.23700 +    var $event = null;
10.23701 +
10.23702 +    // a read-only reference to the History object
10.23703 +    var $history = new History();
10.23704 +
10.23705 +    // a read-only reference to the Location object.  the location object does
10.23706 +    // expose read/write properties
10.23707 +    var $location = new Location('about:blank', $document, $history);
10.23708 +
10.23709 +    // The name of window/frame. Set directly, when using open(), or in frameset.
10.23710 +    // May be used when specifying the target attribute of links
10.23711 +    var $name = null;
10.23712 +
10.23713 +    // a read-only reference to the Navigator object
10.23714 +    var $navigator = new Navigator();
10.23715 +
10.23716 +    // a read/write reference to the Window object that contained the script
10.23717 +    // that called open() to open this browser window.  This property is valid
10.23718 +    // only for top-level window objects.
10.23719 +    var $opener = opener?opener:null;
10.23720 +
10.23721 +    // read-only properties that specify the height and width, in pixels
10.23722 +    var $innerHeight = 600, $innerWidth = 800;
10.23723 +
10.23724 +    // Read-only properties that specify the total height and width, in pixels,
10.23725 +    // of the browser window. These dimensions include the height and width of
10.23726 +    // the menu bar, toolbars, scrollbars, window borders and so on.  These
10.23727 +    // properties are not supported by IE and IE offers no alternative
10.23728 +    // properties;
10.23729 +    var $outerHeight = $innerHeight,
10.23730 +        $outerWidth = $innerWidth;
10.23731 +
10.23732 +    // Read-only properties that specify the number of pixels that the current
10.23733 +    // document has been scrolled to the right and down.  These are not
10.23734 +    // supported by IE.
10.23735 +    var $pageXOffset = 0, $pageYOffset = 0;
10.23736 +
10.23737 +    // a read-only reference to the Screen object that specifies information
10.23738 +    // about the screen: the number of available pixels and the number of
10.23739 +    // available colors.
10.23740 +    var $screen = new Screen(scope);
10.23741 +
10.23742 +    // read only properties that specify the coordinates of the upper-left
10.23743 +    // corner of the screen.
10.23744 +    var $screenX = 1,
10.23745 +        $screenY = 1;
10.23746 +    var $screenLeft = $screenX,
10.23747 +        $screenTop = $screenY;
10.23748 +
10.23749 +    // a read/write string that specifies the current status line.
10.23750 +    var $status = '';
10.23751 +
10.23752 +    __extend__(scope, EventTarget.prototype);
10.23753 +
10.23754 +    return __extend__( scope, {
10.23755 +        get closed(){
10.23756 +            return $closed;
10.23757 +        },
10.23758 +        get defaultStatus(){
10.23759 +            return $defaultStatus;
10.23760 +        },
10.23761 +        set defaultStatus(defaultStatus){
10.23762 +            $defaultStatus = defaultStatus;
10.23763 +        },
10.23764 +        get document(){
10.23765 +            return $document;
10.23766 +        },
10.23767 +        set document(doc){
10.23768 +            $document = doc;
10.23769 +        },
10.23770 +        /*
10.23771 +        deprecated ie specific property probably not good to support
10.23772 +        get event(){
10.23773 +            return $event;
10.23774 +        },
10.23775 +        */
10.23776 +        get frames(){
10.23777 +        return new HTMLCollection($document.getElementsByTagName('frame'));
10.23778 +        },
10.23779 +        get length(){
10.23780 +            // should be frames.length,
10.23781 +            return this.frames.length;
10.23782 +        },
10.23783 +        get history(){
10.23784 +            return $history;
10.23785 +        },
10.23786 +        get innerHeight(){
10.23787 +            return $innerHeight;
10.23788 +        },
10.23789 +        get innerWidth(){
10.23790 +            return $innerWidth;
10.23791 +        },
10.23792 +        get clientHeight(){
10.23793 +            return $innerHeight;
10.23794 +        },
10.23795 +        get clientWidth(){
10.23796 +            return $innerWidth;
10.23797 +        },
10.23798 +        get location(){
10.23799 +            return $location;
10.23800 +        },
10.23801 +        set location(uri){
10.23802 +            uri = Envjs.uri(uri);
10.23803 +            //new Window(this, this.parent, this.opener);
10.23804 +            if($location.href == uri){
10.23805 +                $location.reload();
10.23806 +            }else if($location.href == 'about:blank'){
10.23807 +                $location.assign(uri);
10.23808 +            }else{
10.23809 +                $location.replace(uri);
10.23810 +            }
10.23811 +        },
10.23812 +        get name(){
10.23813 +            return $name;
10.23814 +        },
10.23815 +        set name(newName){
10.23816 +            $name = newName;
10.23817 +        },
10.23818 +        get navigator(){
10.23819 +            return $navigator;
10.23820 +        },
10.23821 +        get opener(){
10.23822 +            return $opener;
10.23823 +        },
10.23824 +        get outerHeight(){
10.23825 +            return $outerHeight;
10.23826 +        },
10.23827 +        get outerWidth(){
10.23828 +            return $outerWidth;
10.23829 +        },
10.23830 +        get pageXOffest(){
10.23831 +            return $pageXOffset;
10.23832 +        },
10.23833 +        get pageYOffset(){
10.23834 +            return $pageYOffset;
10.23835 +        },
10.23836 +        get parent(){
10.23837 +            return $parent;
10.23838 +        },
10.23839 +        get screen(){
10.23840 +            return $screen;
10.23841 +        },
10.23842 +        get screenLeft(){
10.23843 +            return $screenLeft;
10.23844 +        },
10.23845 +        get screenTop(){
10.23846 +            return $screenTop;
10.23847 +        },
10.23848 +        get screenX(){
10.23849 +            return $screenX;
10.23850 +        },
10.23851 +        get screenY(){
10.23852 +            return $screenY;
10.23853 +        },
10.23854 +        get self(){
10.23855 +            return scope;
10.23856 +        },
10.23857 +        get status(){
10.23858 +            return $status;
10.23859 +        },
10.23860 +        set status(status){
10.23861 +            $status = status;
10.23862 +        },
10.23863 +        // a read-only reference to the top-level window that contains this window.
10.23864 +        // If this window is a top-level window it is simply a reference to itself.
10.23865 +        // If this window is a frame, the top property refers to the top-level
10.23866 +        // window that contains the frame.
10.23867 +        get top(){
10.23868 +            return __top__(scope);
10.23869 +        },
10.23870 +        get window(){
10.23871 +            return this;
10.23872 +        },
10.23873 +        toString : function(){
10.23874 +            return '[Window]';
10.23875 +        },
10.23876 +
10.23877 +        /**
10.23878 +         * getComputedStyle
10.23879 +         *
10.23880 +         * Firefox 3.6:
10.23881 +         *  - Requires both elements to be present else an
10.23882 +         *    exception is thrown.
10.23883 +         *  - Returns a 'ComputedCSSStyleDeclaration' object.
10.23884 +         *    while a raw element.style returns a 'CSSStyleDeclaration' object.
10.23885 +         *  - Bogus input also throws exception
10.23886 +         *
10.23887 +         * Safari 4:
10.23888 +         *  - Requires one argument (second can be MIA)
10.23889 +         *  - Returns a CSSStyleDeclaration object
10.23890 +         *  - if bad imput, returns null
10.23891 +         *
10.23892 +         * getComputedStyle should really be an "add on" from the css
10.23893 +         * modules.  Unfortunately, 'window' comes way after the 'css'
10.23894 +         * so css can't add it.
10.23895 +         */
10.23896 +        getComputedStyle: function(element, pseudoElement) {
10.23897 +            return element.style;
10.23898 +        },
10.23899 +
10.23900 +        open: function(url, name, features, replace){
10.23901 +            if (features) {
10.23902 +                console.log("'features argument not yet implemented");
10.23903 +            }
10.23904 +            var _window = Envjs.proxy({}),
10.23905 +                open;
10.23906 +            if(replace && name){
10.23907 +                for(open in __windows__){
10.23908 +                    if(open.name === name) {
10.23909 +                        _window = open;
10.23910 +                    }
10.23911 +                }
10.23912 +            }
10.23913 +            new Window(_window, _window, this);
10.23914 +            if(name) {
10.23915 +                _window.name = name;
10.23916 +            }
10.23917 +            _window.document.async = false;
10.23918 +            _window.location.assign(Envjs.uri(url));
10.23919 +            return _window;
10.23920 +        },
10.23921 +        close: function(){
10.23922 +            //console.log('closing window %s', __windows__[$uuid]);
10.23923 +            try{
10.23924 +                delete __windows__[$uuid];
10.23925 +            }catch(e){
10.23926 +                console.log('%s',e);
10.23927 +            }
10.23928 +        },
10.23929 +        alert : function(message){
10.23930 +            Envjs.alert(message);
10.23931 +        },
10.23932 +        confirm : function(question){
10.23933 +            Envjs.confirm(question);
10.23934 +        },
10.23935 +        prompt : function(message, defaultMsg){
10.23936 +            Envjs.prompt(message, defaultMsg);
10.23937 +        },
10.23938 +        btoa: function(binary){
10.23939 +            return base64.encode(binary);
10.23940 +        },
10.23941 +        atob: function(ascii){
10.23942 +            return base64.decode(ascii);
10.23943 +        },
10.23944 +        onload: function(){},
10.23945 +        onunload: function(){},
10.23946 +        get guid(){
10.23947 +            return $uuid;
10.23948 +        }
10.23949 +    });
10.23950 +
10.23951 +};
10.23952 +
10.23953 +
10.23954 +//finally pre-supply the window with the window-like environment
10.23955 +//console.log('Default Window');
10.23956 +new Window(__this__, __this__);
10.23957 +console.log('[ %s ]',window.navigator.userAgent);
10.23958 +/**
10.23959 + *
10.23960 + * @param {Object} event
10.23961 + */
10.23962 +__extend__(Envjs.defaultEventBehaviors,{
10.23963 +
10.23964 +    'submit': function(event) {
10.23965 +        var target = event.target;
10.23966 +        while (target && target.nodeName !== 'FORM') {
10.23967 +            target = target.parentNode;
10.23968 +        }
10.23969 +        if (target && target.nodeName === 'FORM') {
10.23970 +            target.submit();
10.23971 +        }
10.23972 +    },
10.23973 +    'click': function(event) {
10.23974 +        // console.log('handling event target default behavior for click');
10.23975 +    }
10.23976 +
10.23977 +});
10.23978 +/**
10.23979 + * @author john resig & the envjs team
10.23980 + * @uri http://www.envjs.com/
10.23981 + * @copyright 2008-2010
10.23982 + * @license MIT
10.23983 + */
10.23984 +//CLOSURE_END
10.23985 +}());
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/boot-script/src/test/resources/net/java/html/boot/script/ko4j/test.html	Thu Jun 05 22:13:56 2014 +0200
    11.3 @@ -0,0 +1,56 @@
    11.4 +<!--
    11.5 +
    11.6 +    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    11.7 +
    11.8 +    Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
    11.9 +
   11.10 +    Oracle and Java are registered trademarks of Oracle and/or its affiliates.
   11.11 +    Other names may be trademarks of their respective owners.
   11.12 +
   11.13 +    The contents of this file are subject to the terms of either the GNU
   11.14 +    General Public License Version 2 only ("GPL") or the Common
   11.15 +    Development and Distribution License("CDDL") (collectively, the
   11.16 +    "License"). You may not use this file except in compliance with the
   11.17 +    License. You can obtain a copy of the License at
   11.18 +    http://www.netbeans.org/cddl-gplv2.html
   11.19 +    or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   11.20 +    specific language governing permissions and limitations under the
   11.21 +    License.  When distributing the software, include this License Header
   11.22 +    Notice in each file and include the License file at
   11.23 +    nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
   11.24 +    particular file as subject to the "Classpath" exception as provided
   11.25 +    by Oracle in the GPL Version 2 section of the License file that
   11.26 +    accompanied this code. If applicable, add the following below the
   11.27 +    License Header, with the fields enclosed by brackets [] replaced by
   11.28 +    your own identifying information:
   11.29 +    "Portions Copyrighted [year] [name of copyright owner]"
   11.30 +
   11.31 +    Contributor(s):
   11.32 +
   11.33 +    The Original Software is NetBeans. The Initial Developer of the Original
   11.34 +    Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
   11.35 +
   11.36 +    If you wish your version of this file to be governed by only the CDDL
   11.37 +    or only the GPL Version 2, indicate your decision by adding
   11.38 +    "[Contributor] elects to include this software in this distribution
   11.39 +    under the [CDDL or GPL Version 2] license." If you do not indicate a
   11.40 +    single choice of license, a recipient has the option to distribute
   11.41 +    your version of this file under either the CDDL, the GPL Version 2 or
   11.42 +    to extend the choice of license to its licensees as provided above.
   11.43 +    However, if you add GPL Version 2 code and therefore, elected the GPL
   11.44 +    Version 2 license, then the option applies only if the new code is
   11.45 +    made subject to such option by the copyright holder.
   11.46 +
   11.47 +-->
   11.48 +<!DOCTYPE html>
   11.49 +<html>
   11.50 +    <head>
   11.51 +        <title>Knockout.fx Execution Harness</title>
   11.52 +        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   11.53 +        <meta name="viewport" content="width=device-width">
   11.54 +    </head>
   11.55 +    <body>
   11.56 +        <h1>Knockout in Env.Execution Harness</h1>
   11.57 +        <script></script>
   11.58 +    </body>
   11.59 +</html>
    12.1 --- a/boot/src/main/java/net/java/html/boot/BrowserBuilder.java	Wed Jun 04 06:36:44 2014 +0200
    12.2 +++ b/boot/src/main/java/net/java/html/boot/BrowserBuilder.java	Thu Jun 05 22:13:56 2014 +0200
    12.3 @@ -72,7 +72,7 @@
    12.4   * <pre>
    12.5   * 
    12.6   * <b>public static void</b> <em>main</em>(String... args) {
    12.7 - *     BrowserBuilder.{@link #newBrowser}.
    12.8 + *     BrowserBuilder.{@link #newBrowser newBrowser()}.
    12.9   *          {@link #loadClass(java.lang.Class) loadClass(YourMain.class)}.
   12.10   *          {@link #loadPage(java.lang.String) loadPage("index.html")}.
   12.11   *          {@link #invoke(java.lang.String, java.lang.String[]) invoke("initialized", args)}.
    13.1 --- a/boot/src/main/java/org/apidesign/html/boot/spi/Fn.java	Wed Jun 04 06:36:44 2014 +0200
    13.2 +++ b/boot/src/main/java/org/apidesign/html/boot/spi/Fn.java	Thu Jun 05 22:13:56 2014 +0200
    13.3 @@ -43,6 +43,7 @@
    13.4  package org.apidesign.html.boot.spi;
    13.5  
    13.6  import java.io.Closeable;
    13.7 +import java.io.IOException;
    13.8  import java.io.InputStream;
    13.9  import java.io.InputStreamReader;
   13.10  import java.io.Reader;
   13.11 @@ -162,7 +163,14 @@
   13.12                          LOADED.put(resource, there);
   13.13                      }
   13.14                      if (there.add(p)) {
   13.15 -                        InputStream is = caller.getClassLoader().getResourceAsStream(resource);
   13.16 +                        final ClassLoader l = caller.getClassLoader();
   13.17 +                        InputStream is = l.getResourceAsStream(resource);
   13.18 +                        if (is == null && resource.startsWith("/")) {
   13.19 +                            is = l.getResourceAsStream(resource.substring(1));
   13.20 +                        }
   13.21 +                        if (is == null) {
   13.22 +                            throw new IOException("Cannot find " + resource + " in " + l);
   13.23 +                        }
   13.24                          try {
   13.25                              InputStreamReader r = new InputStreamReader(is, "UTF-8");
   13.26                              p.loadScript(r);
    14.1 --- a/boot/src/main/java/org/netbeans/html/boot/impl/JavaScriptProcesor.java	Wed Jun 04 06:36:44 2014 +0200
    14.2 +++ b/boot/src/main/java/org/netbeans/html/boot/impl/JavaScriptProcesor.java	Thu Jun 05 22:13:56 2014 +0200
    14.3 @@ -151,7 +151,7 @@
    14.4              }
    14.5              final String res;
    14.6              if (r.value().startsWith("/")) {
    14.7 -                res = r.value();
    14.8 +                res = r.value().substring(1);
    14.9              } else {
   14.10                  res = findPkg(e).replace('.', '/') + "/" + r.value();
   14.11              }
   14.12 @@ -164,7 +164,12 @@
   14.13                      FileObject os2 = processingEnv.getFiler().getResource(StandardLocation.CLASS_OUTPUT, "", res);
   14.14                      os2.openInputStream().close();
   14.15                  } catch (IOException ex2) {
   14.16 -                    msg.printMessage(Diagnostic.Kind.ERROR, "Cannot find " + res + " in " + res + " package", e);
   14.17 +                    try {
   14.18 +                        FileObject os3 = processingEnv.getFiler().getResource(StandardLocation.CLASS_PATH, "", res);
   14.19 +                        os3.openInputStream().close();
   14.20 +                    } catch (IOException ex3) {
   14.21 +                        msg.printMessage(Diagnostic.Kind.ERROR, "Cannot find resource " + res, e);
   14.22 +                    }
   14.23                  }
   14.24              }
   14.25              
    15.1 --- a/json-tck/src/main/java/net/java/html/json/tests/KnockoutTest.java	Wed Jun 04 06:36:44 2014 +0200
    15.2 +++ b/json-tck/src/main/java/net/java/html/json/tests/KnockoutTest.java	Thu Jun 05 22:13:56 2014 +0200
    15.3 @@ -142,10 +142,11 @@
    15.4          + "var n = window.document.getElementById('input'); \n "
    15.5          + "if (value != null) n['value'] = value; \n "
    15.6          + "return n['value'];";
    15.7 -        return (String)Utils.executeScript(
    15.8 +        Object ret = Utils.executeScript(
    15.9              KnockoutTest.class,
   15.10              s, value
   15.11          );
   15.12 +        return ret == null ? null : ret.toString();
   15.13      }
   15.14      
   15.15      public static void triggerEvent(String id, String ev) throws Exception {
   15.16 @@ -167,12 +168,12 @@
   15.17              m.getResults().add("Ahoj");
   15.18              m.applyBindings();
   15.19  
   15.20 -            int cnt = countChildren("ul");
   15.21 +            int cnt = Utils.countChildren(KnockoutTest.class, "ul");
   15.22              assert cnt == 1 : "One child, but was " + cnt;
   15.23  
   15.24              m.getResults().add("Hi");
   15.25  
   15.26 -            cnt = countChildren("ul");
   15.27 +            cnt = Utils.countChildren(KnockoutTest.class, "ul");
   15.28              assert cnt == 2 : "Two children now, but was " + cnt;
   15.29  
   15.30              triggerChildClick("ul", 1);
   15.31 @@ -194,7 +195,7 @@
   15.32              Pair m = Models.bind(new Pair("First", "Last", null), newContext());
   15.33              m.applyBindings();
   15.34  
   15.35 -            int cnt = countChildren("ul");
   15.36 +            int cnt = Utils.countChildren(KnockoutTest.class, "ul");
   15.37              assert cnt == 2 : "Two children now, but was " + cnt;
   15.38  
   15.39              triggerChildClick("ul", 1);
   15.40 @@ -203,7 +204,7 @@
   15.41              
   15.42              m.setLastName("Verylast");
   15.43  
   15.44 -            cnt = countChildren("ul");
   15.45 +            cnt = Utils.countChildren(KnockoutTest.class, "ul");
   15.46              assert cnt == 2 : "Two children now, but was " + cnt;
   15.47              
   15.48              triggerChildClick("ul", 1);
   15.49 @@ -228,7 +229,7 @@
   15.50              Pair m = Models.bind(new Pair(null, null, new Pair("First", "Last", null)), ctx);
   15.51              m.applyBindings();
   15.52  
   15.53 -            int cnt = countChildren("ul");
   15.54 +            int cnt = Utils.countChildren(KnockoutTest.class, "ul");
   15.55              assert cnt == 2 : "Two children now, but was " + cnt;
   15.56  
   15.57              triggerChildClick("ul", 1);
   15.58 @@ -253,7 +254,7 @@
   15.59              Pair m = Models.bind(new Pair(null, null, new Pair("First", "Last", null)), newContext());
   15.60              m.applyBindings();
   15.61  
   15.62 -            int cnt = countChildren("ul");
   15.63 +            int cnt = Utils.countChildren(KnockoutTest.class, "ul");
   15.64              assert cnt == 2 : "Two children now, but was " + cnt;
   15.65  
   15.66              triggerChildClick("ul", 1);
   15.67 @@ -295,12 +296,12 @@
   15.68              m.getResults().add("Ahoj");
   15.69              m.applyBindings();
   15.70  
   15.71 -            int cnt = countChildren("ul");
   15.72 +            int cnt = Utils.countChildren(KnockoutTest.class, "ul");
   15.73              assert cnt == 1 : "One child, but was " + cnt;
   15.74  
   15.75              m.getResults().add("hello");
   15.76  
   15.77 -            cnt = countChildren("ul");
   15.78 +            cnt = Utils.countChildren(KnockoutTest.class, "ul");
   15.79              assert cnt == 2 : "Two children now, but was " + cnt;
   15.80          } finally {
   15.81              Utils.exposeHTML(KnockoutTest.class, "");
   15.82 @@ -323,21 +324,21 @@
   15.83  
   15.84              m.applyBindings();
   15.85  
   15.86 -            int cnt = countChildren("ul");
   15.87 +            int cnt = Utils.countChildren(KnockoutTest.class, "ul");
   15.88              assert cnt == 1 : "One child, but was " + cnt;
   15.89  
   15.90              final Person second = Models.bind(new Person(), c);
   15.91              second.setFirstName("second");
   15.92              m.getPeople().add(second);
   15.93  
   15.94 -            cnt = countChildren("ul");
   15.95 +            cnt = Utils.countChildren(KnockoutTest.class, "ul");
   15.96              assert cnt == 2 : "Two children now, but was " + cnt;
   15.97  
   15.98              triggerChildClick("ul", 1);
   15.99  
  15.100              assert 1 == m.getCallbackCount() : "One callback " + m.getCallbackCount();
  15.101  
  15.102 -            cnt = countChildren("ul");
  15.103 +            cnt = Utils.countChildren(KnockoutTest.class, "ul");
  15.104              assert cnt == 1 : "Again one child, but was " + cnt;
  15.105  
  15.106              String txt = childText("ul", 0);
  15.107 @@ -394,7 +395,7 @@
  15.108  
  15.109          m.applyBindings();
  15.110  
  15.111 -        int cnt = countChildren("ul");
  15.112 +        int cnt = Utils.countChildren(KnockoutTest.class, "ul");
  15.113          assert cnt == 1 : "One child, but was " + cnt;
  15.114  
  15.115  
  15.116 @@ -426,42 +427,50 @@
  15.117          return results;
  15.118      }
  15.119      
  15.120 -    private static int countChildren(String id) throws Exception {
  15.121 -        return ((Number)Utils.executeScript(
  15.122 -          KnockoutTest.class,
  15.123 -          "var e = window.document.getElementById(arguments[0]);\n "
  15.124 -        + "if (typeof e === 'undefined') return -2;\n "
  15.125 -        + "return e.children.length;", 
  15.126 -            id
  15.127 -        )).intValue();
  15.128 -    }
  15.129 -
  15.130      private static void triggerClick(String id) throws Exception {
  15.131          String s = "var id = arguments[0];"
  15.132              + "var e = window.document.getElementById(id);\n "
  15.133 +            + "if (e.checked) throw 'It should not be checked yet: ' + e;\n "
  15.134              + "var ev = window.document.createEvent('MouseEvents');\n "
  15.135              + "ev.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n "
  15.136 -            + "e.dispatchEvent(ev);\n ";
  15.137 +            + "e.dispatchEvent(ev);\n "
  15.138 +            + "if (!e.checked) {\n"
  15.139 +            + "  e.checked = true;\n "
  15.140 +            + "  e.dispatchEvent(ev);\n "
  15.141 +            + "}\n";
  15.142          Utils.executeScript(
  15.143              KnockoutTest.class,
  15.144              s, id);
  15.145      }
  15.146      private static void triggerChildClick(String id, int pos) throws Exception {
  15.147 -        String s = "var id = arguments[0]; var pos = arguments[1];"
  15.148 -            + "var e = window.document.getElementById(id);\n "
  15.149 -            + "var ev = window.document.createEvent('MouseEvents');\n "
  15.150 -            + "ev.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n "
  15.151 -            + "e.children[pos].dispatchEvent(ev);\n ";
  15.152 +        String s = 
  15.153 +            "var id = arguments[0]; var pos = arguments[1];\n" +
  15.154 +            "var e = window.document.getElementById(id);\n " +
  15.155 +            "var ev = window.document.createEvent('MouseEvents');\n " +
  15.156 +            "ev.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n " +
  15.157 +            "var list = e.childNodes;\n" +
  15.158 +            "var cnt = -1;\n" + 
  15.159 +            "for (var i = 0; i < list.length; i++) {\n" + 
  15.160 +            "  if (list[i].nodeType == 1) cnt++;\n" + 
  15.161 +            "  if (cnt === pos) return list[i].dispatchEvent(ev);\n" + 
  15.162 +            "}\n" + 
  15.163 +            "return null;\n";
  15.164          Utils.executeScript(
  15.165              KnockoutTest.class,
  15.166              s, id, pos);
  15.167      }
  15.168  
  15.169      private static String childText(String id, int pos) throws Exception {
  15.170 -        String s = "var id = arguments[0]; var pos = arguments[1];"
  15.171 -        + "var e = window.document.getElementById(id);\n "
  15.172 -        + "var t = e.children[pos].innerHTML;\n "
  15.173 -        + "return t ? t : null;";
  15.174 +        String s = 
  15.175 +            "var id = arguments[0]; var pos = arguments[1];" +
  15.176 +            "var e = window.document.getElementById(id);\n" +
  15.177 +            "var list = e.childNodes;\n" +
  15.178 +            "var cnt = -1;\n" + 
  15.179 +            "for (var i = 0; i < list.length; i++) {\n" + 
  15.180 +            "  if (list[i].nodeType == 1) cnt++;\n" + 
  15.181 +            "  if (cnt === pos) return list[i].innerHTML;\n" + 
  15.182 +            "}\n" + 
  15.183 +            "return null;\n";
  15.184          return (String)Utils.executeScript(
  15.185              KnockoutTest.class,
  15.186              s, id, pos);
    16.1 --- a/json-tck/src/main/java/net/java/html/json/tests/MinesTest.java	Wed Jun 04 06:36:44 2014 +0200
    16.2 +++ b/json-tck/src/main/java/net/java/html/json/tests/MinesTest.java	Thu Jun 05 22:13:56 2014 +0200
    16.3 @@ -85,13 +85,13 @@
    16.4              );
    16.5              m = Models.bind(new Mines(), ctx);
    16.6              m.applyBindings();
    16.7 -            int cnt = countChildren("table");
    16.8 +            int cnt = Utils.countChildren(MinesTest.class, "table");
    16.9              assert cnt == 0 : "Table is empty: " + cnt;
   16.10              scheduleClick("init", 100);
   16.11          }
   16.12  
   16.13  
   16.14 -        int cnt = countChildren("table");
   16.15 +        int cnt = Utils.countChildren(MinesTest.class, "table");
   16.16          if (cnt == 0) {
   16.17              throw new InterruptedException();
   16.18          }
   16.19 @@ -111,16 +111,6 @@
   16.20          assert cnt == 3 : "There are three mines around. Was: " + cnt;
   16.21      }
   16.22      
   16.23 -    private static int countChildren(String id) throws Exception {
   16.24 -        return ((Number)Utils.executeScript(
   16.25 -          MinesTest.class,
   16.26 -          "var e = window.document.getElementById(arguments[0]);\n "
   16.27 -        + "if (typeof e === 'undefined') return -2;\n "
   16.28 -        + "return e.children.length;", 
   16.29 -            id
   16.30 -        )).intValue();
   16.31 -    }
   16.32 -
   16.33      private static void scheduleClick(String id, int delay) throws Exception {
   16.34          String s = "var id = arguments[0]; var delay = arguments[1];"
   16.35              + "var e = window.document.getElementById(id);\n "
    17.1 --- a/json-tck/src/main/java/net/java/html/json/tests/Utils.java	Wed Jun 04 06:36:44 2014 +0200
    17.2 +++ b/json-tck/src/main/java/net/java/html/json/tests/Utils.java	Thu Jun 05 22:13:56 2014 +0200
    17.3 @@ -55,7 +55,7 @@
    17.4   */
    17.5  public final class Utils {
    17.6      private static KnockoutTCK instantiatedTCK;
    17.7 -    
    17.8 +
    17.9      private Utils() {
   17.10      }
   17.11      
   17.12 @@ -110,6 +110,20 @@
   17.13          return executeScript(clazz, s, html);
   17.14      }
   17.15  
   17.16 +    static int countChildren(Class<?> caller, String id) throws Exception {
   17.17 +        return ((Number) executeScript(caller, 
   17.18 +            "var e = window.document.getElementById(arguments[0]);\n" + 
   17.19 +            "if (typeof e === 'undefined') return -2;\n " + 
   17.20 +            "var list = e.childNodes;\n" +
   17.21 +            "var cnt = 0;\n" + 
   17.22 +            "for (var i = 0; i < list.length; i++) {\n" + 
   17.23 +            "  if (list[i].nodeType == 1) cnt++;\n" + 
   17.24 +            "}\n" + 
   17.25 +            "return cnt;\n"
   17.26 +            , id
   17.27 +        )).intValue();
   17.28 +    }
   17.29 +    
   17.30      static String prepareURL(
   17.31          Class<?> clazz, String content, String mimeType, String... parameters) {
   17.32          for (KnockoutTCK tck : tcks(clazz)) {
    18.1 --- a/json/src/main/java/org/apidesign/html/json/spi/JSONCall.java	Wed Jun 04 06:36:44 2014 +0200
    18.2 +++ b/json/src/main/java/org/apidesign/html/json/spi/JSONCall.java	Thu Jun 05 22:13:56 2014 +0200
    18.3 @@ -45,8 +45,6 @@
    18.4  import java.io.IOException;
    18.5  import java.io.OutputStream;
    18.6  import net.java.html.BrwsrCtx;
    18.7 -import org.apidesign.html.context.spi.Contexts;
    18.8 -import org.netbeans.html.json.impl.JSON;
    18.9  import org.netbeans.html.json.impl.RcvrJSON;
   18.10  
   18.11  /** Description of a JSON call request that is supposed to be processed
    19.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/LoadJSON.java	Wed Jun 04 06:36:44 2014 +0200
    19.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/LoadJSON.java	Thu Jun 05 22:13:56 2014 +0200
    19.3 @@ -163,16 +163,17 @@
    19.4          + "request.open(method, url, true);\n"
    19.5          + "request.setRequestHeader('Content-Type', 'application/json; charset=utf-8');\n"
    19.6          + "request.onreadystatechange = function() {\n"
    19.7 -        + "  if (this.readyState!==4) return;\n"
    19.8 +        + "  if (request.readyState !== 4) return;\n"
    19.9 +        + "  var r = request.response || request.responseText;\n"
   19.10          + "  try {\n"
   19.11 -        + "    var r = this.response;\n"
   19.12 -        + "    try { r = eval('(' + this.response + ')'); } catch (ignore) { }"
   19.13 +        + "    try { r = eval('(' + r + ')'); } catch (ignore) { }"
   19.14          + "    done.@org.apidesign.html.json.spi.JSONCall::notifySuccess(Ljava/lang/Object;)(r);\n"
   19.15          + "  } catch (error) {;\n"
   19.16 -        + "    @org.netbeans.html.ko4j.LoadJSON::notifyError(Ljava/lang/Object;Ljava/lang/Object;)(done, this.response);\n"
   19.17 +        + "    @org.netbeans.html.ko4j.LoadJSON::notifyError(Ljava/lang/Object;Ljava/lang/Object;)(done, r);\n"
   19.18          + "  }\n"
   19.19          + "};\n"
   19.20 -        + "request.onerror = function (e) {console.log('eeeor:' + Object.getOwnPropertyNames(e));\n"
   19.21 +        + "request.onerror = function (e) {\n"
   19.22 +        + "  console.log('error loading :' + url + ' props: ' + Object.getOwnPropertyNames(e));\n"
   19.23          + "  @org.netbeans.html.ko4j.LoadJSON::notifyError(Ljava/lang/Object;Ljava/lang/Object;)(done, e);\n"
   19.24          + "}\n"
   19.25          + "if (data) request.send(data);"
    20.1 --- a/pom.xml	Wed Jun 04 06:36:44 2014 +0200
    20.2 +++ b/pom.xml	Thu Jun 05 22:13:56 2014 +0200
    20.3 @@ -95,6 +95,7 @@
    20.4                         <exclude>*</exclude>
    20.5                         <exclude>.*/**</exclude>
    20.6                         <exclude>ko4j/src/main/resources/org/netbeans/html/ko4j/knockout*.js</exclude>
    20.7 +                       <exclude>boot-script/src/test/resources/net/java/html/boot/script/ko4j/env.nashorn.1.2-debug.js</exclude>
    20.8                         <exclude>src/main/javadoc/resources/teavm.js</exclude>
    20.9                    </excludes>
   20.10                </configuration>
   20.11 @@ -136,6 +137,10 @@
   20.12                      <packages>net.java.html.sound</packages>
   20.13                    </group>
   20.14                    <group>
   20.15 +                    <title>Testing and Headless API</title>
   20.16 +                    <packages>net.java.html.boot.script</packages>
   20.17 +                  </group>
   20.18 +                  <group>
   20.19                      <title>Service Provider APIs (not commonly interesting)</title>
   20.20                      <packages>org.apidesign.html.*</packages>
   20.21                    </group>