<html>

   <head>
      <title>Google Web Toolkit @GWT_VERSION@</title>
      <style>
         body {
            background-color: white;
            color: black;
            font-family: Arial, sans-serif;
            font-size: 10pt;
            margin: 20px;
            overflow: hidden;
         }

         #title {
            font-size: 14pt;
            font-weight: bold;
         }

         #title a {
            text-decoration: none;
         }

         #version {
            font-size: 8pt;
            font-weight: bold;
            text-align: right;
         }
         
         #intro {
            margin: 10px 0px 10px 0px ;
         }
         
         #attribs {
         }
         
      </style>
   </head>

   <body>
      <table align="center">
         <tr>
            <td id="title"><a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a></td>
         </tr>
         <tr>
            <td id="version">Version @GWT_VERSION@ <br> (Git revision @GWT_GITREV@)</td>
         </tr>
      </table>

      <hr/>

      <div id="intro">
         Copyright &copy; 2009 <a href="http://www.google.com/">Google Inc.</a>
         All rights reserved.  
         All other product, service names, brands, or trademarks, are the property of their respective owners.
      </div>

      <div id="attribs">
         This product includes software developed by
         <ul>
            <li>
                The <a href="http://www.apache.org/">Apache Software Foundation</a>
                <ul>
                    <li><a href="http://tomcat.apache.org/">Tomcat</a> (with modifications)</li>
                    <li><a href="http://tapestry.apache.org/">Tapestry</a></li>
                </ul
            </li>
            <li>
                The <a href="http://www.eclipse.org/">Eclipse Foundation</a>
                <ul>
                    <li><a href="http://www.eclipse.org/jdt/">Java Development Tools</a></li>
                    <li><a href="http://www.eclipse.org/swt/">Standard Widget Toolkit</a> (with modifications)</li>
                </ul
            </li>
            <li>The <a href="http://www.mortbay.com/">Mort Bay Consulting</a>
              <ul>
                <li><a href="http://mortbay.org/jetty/">Jetty 6.1.11</a> </li>
              </ul>
            </li>
            <li>
                The <a href="http://www.mozilla.org/">Mozilla Foundation</a>
                <ul>
                    <li><a href="http://www.mozilla.org/releases/mozilla1.7.12/">Mozilla 1.7.12</a></li>
                    <li><a href="http://www.mozilla.org/rhino/">Rhino</a> (with modifications)</li>
                </ul
            </li>
            <li>The <a href="http://www.objectweb.org/">ObjectWeb</a>
              <ul>
                <li><a href="http://asm.objectweb.org/">ASM</a> (with modifications)</li>
              </ul>
            </li>
            <li>The <a href="http://openqa.org/">OpenQA Project</a>
              <ul>
                <li><a href="http://selenium-rc.openqa.org/">Selenium-RC</a> </li>
              </ul>
            </li>
            <li>The <a href="http://code.google.com/p/protobuf/">Protobuf Project</a> (with modifications)</li>
         </ul>
         For source availability and license information see COPYING.html.

      </div>
      
   </body>

</html>
