Bringing the chess server in front of everyone eyes
authorJaroslav Tulach <jtulach@netbeans.org>
Wed, 25 Sep 2013 04:28:19 +0200
changeset 558e8097c4fa2b
parent 47 4109cd3a4aa4
parent 54 386d1f27e2e6
child 56 68cecf6c3113
Bringing the chess server in front of everyone eyes
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/chess/nbactions-bck2brwsr.xml	Wed Sep 25 04:28:19 2013 +0200
     1.3 @@ -0,0 +1,39 @@
     1.4 +<?xml version="1.0" encoding="UTF-8"?>
     1.5 +<!--
     1.6 +
     1.7 +    The MIT License (MIT)
     1.8 +
     1.9 +    Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    1.10 +
    1.11 +    Permission is hereby granted, free of charge, to any person obtaining a copy
    1.12 +    of this software and associated documentation files (the "Software"), to deal
    1.13 +    in the Software without restriction, including without limitation the rights
    1.14 +    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    1.15 +    copies of the Software, and to permit persons to whom the Software is
    1.16 +    furnished to do so, subject to the following conditions:
    1.17 +
    1.18 +    The above copyright notice and this permission notice shall be included in
    1.19 +    all copies or substantial portions of the Software.
    1.20 +
    1.21 +    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    1.22 +    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    1.23 +    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    1.24 +    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    1.25 +    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    1.26 +    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    1.27 +    THE SOFTWARE.
    1.28 +
    1.29 +-->
    1.30 +<actions>
    1.31 +    <action>
    1.32 +        <actionName>run</actionName>
    1.33 +        <goals>
    1.34 +            <goal>package</goal>
    1.35 +            <goal>bck2brwsr:brwsr</goal>
    1.36 +        </goals>
    1.37 +        <properties>
    1.38 +            <skipTests>true</skipTests>
    1.39 +            <bck2brwsr.obfuscationlevel>NONE</bck2brwsr.obfuscationlevel>
    1.40 +        </properties>
    1.41 +    </action>
    1.42 +</actions>
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/chess/nbactions.xml	Wed Sep 25 04:28:19 2013 +0200
     2.3 @@ -0,0 +1,74 @@
     2.4 +<?xml version="1.0" encoding="UTF-8"?>
     2.5 +<!--
     2.6 +
     2.7 +    The MIT License (MIT)
     2.8 +
     2.9 +    Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    2.10 +
    2.11 +    Permission is hereby granted, free of charge, to any person obtaining a copy
    2.12 +    of this software and associated documentation files (the "Software"), to deal
    2.13 +    in the Software without restriction, including without limitation the rights
    2.14 +    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    2.15 +    copies of the Software, and to permit persons to whom the Software is
    2.16 +    furnished to do so, subject to the following conditions:
    2.17 +
    2.18 +    The above copyright notice and this permission notice shall be included in
    2.19 +    all copies or substantial portions of the Software.
    2.20 +
    2.21 +    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    2.22 +    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    2.23 +    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    2.24 +    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    2.25 +    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    2.26 +    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    2.27 +    THE SOFTWARE.
    2.28 +
    2.29 +-->
    2.30 +<actions>
    2.31 +    <action>
    2.32 +        <actionName>run</actionName>
    2.33 +        <goals>
    2.34 +            <goal>process-classes</goal>
    2.35 +            <goal>exec:java</goal>
    2.36 +        </goals>
    2.37 +    </action>
    2.38 +    <action>
    2.39 +        <actionName>debug</actionName>
    2.40 +        <goals>
    2.41 +            <goal>process-classes</goal>
    2.42 +            <goal>exec:java</goal>
    2.43 +        </goals>
    2.44 +        <properties>
    2.45 +            <jpda.listen>maven</jpda.listen>
    2.46 +        </properties>
    2.47 +    </action>
    2.48 +    <action>
    2.49 +        <actionName>CUSTOM-Build IPA</actionName>
    2.50 +        <displayName>Build IPA</displayName>
    2.51 +        <goals>
    2.52 +            <goal>package</goal>
    2.53 +            <goal>ios:build-IPA</goal>
    2.54 +        </goals>
    2.55 +        <properties>
    2.56 +            <skipTests>true</skipTests>
    2.57 +            <appjarDebug>true</appjarDebug>
    2.58 +            <appjarDebugName>${project.build.finalName}.jar</appjarDebugName>
    2.59 +        </properties>
    2.60 +    </action>
    2.61 +    <action>
    2.62 +        <actionName>CUSTOM-Debug IPA</actionName>
    2.63 +        <displayName>Debug IPA</displayName>
    2.64 +        <goals>
    2.65 +            <goal>package</goal>
    2.66 +            <goal>ios:ipaddress</goal>
    2.67 +            <goal>ios:build-IPA</goal>
    2.68 +        </goals>
    2.69 +        <properties>
    2.70 +            <skipTests>true</skipTests>            
    2.71 +            <jpda.listen>true</jpda.listen>
    2.72 +            <ipAddress>${ip.address}</ipAddress>
    2.73 +            <jpdaAddress>${jpda.address}</jpdaAddress>
    2.74 +            <runMode>Debug</runMode>            
    2.75 +        </properties>
    2.76 +    </action>
    2.77 +</actions>
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/chess/pom.xml	Wed Sep 25 04:28:19 2013 +0200
     3.3 @@ -0,0 +1,258 @@
     3.4 +<?xml version="1.0" encoding="UTF-8"?>
     3.5 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3.6 +  <modelVersion>4.0.0</modelVersion>
     3.7 +    <parent>
     3.8 +    <artifactId>demo</artifactId>
     3.9 +    <groupId>org.apidesign.html</groupId>
    3.10 +        <version>1.0-SNAPSHOT</version>
    3.11 +    </parent>
    3.12 +
    3.13 +  <groupId>org.apidesign.html.demo</groupId>
    3.14 +  <artifactId>chessdemo</artifactId>
    3.15 +  <version>1.0-SNAPSHOT</version>
    3.16 +  <packaging>jar</packaging>
    3.17 +
    3.18 +  <name>Chess_HTML_Java_Client</name>
    3.19 +
    3.20 +  <repositories>
    3.21 +      <repository>
    3.22 +          <id>netbeans</id>
    3.23 +          <name>NetBeans</name>
    3.24 +          <url>http://bits.netbeans.org/maven2/</url>
    3.25 +      </repository>
    3.26 +  </repositories>
    3.27 +  <pluginRepositories>
    3.28 +      <pluginRepository>
    3.29 +          <id>ios</id>
    3.30 +          <name>NetBeans iOS Maven Plugin</name>
    3.31 +          <url>http://beetle.cz.oracle.com/~jtulach/maven/</url>
    3.32 +          <snapshots>
    3.33 +          </snapshots>
    3.34 +      </pluginRepository>
    3.35 +  </pluginRepositories>
    3.36 +
    3.37 +  <properties>
    3.38 +    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    3.39 +    <netbeans.compile.on.save>none</netbeans.compile.on.save>
    3.40 +    <net.java.html.version>0.6</net.java.html.version>
    3.41 +    <bck2brwsr.version>0.8</bck2brwsr.version>
    3.42 +    <bck2brwsr.launcher.version>0.8</bck2brwsr.launcher.version>
    3.43 +    <bck2brwsr.obfuscationlevel>MINIMAL</bck2brwsr.obfuscationlevel>
    3.44 +    <brwsr.startpage>pages/index.html</brwsr.startpage>
    3.45 +  </properties>
    3.46 +  <build>
    3.47 +      <plugins>
    3.48 +          <plugin>
    3.49 +              <groupId>org.apache.maven.plugins</groupId>
    3.50 +              <artifactId>maven-compiler-plugin</artifactId>
    3.51 +              <version>2.3.2</version>
    3.52 +              <configuration>
    3.53 +                  <source>1.7</source>
    3.54 +                  <target>1.7</target>
    3.55 +              </configuration>
    3.56 +          </plugin>
    3.57 +          <plugin>
    3.58 +              <groupId>org.apache.maven.plugins</groupId>
    3.59 +              <artifactId>maven-jar-plugin</artifactId>
    3.60 +              <version>2.4</version>
    3.61 +              <configuration>
    3.62 +                  <archive>
    3.63 +                      <manifest>
    3.64 +                          <mainClass>org.apidesign.html.demo.chess.Main</mainClass>
    3.65 +                          <addClasspath>true</addClasspath>
    3.66 +                          <classpathPrefix>lib/</classpathPrefix>
    3.67 +                      </manifest>
    3.68 +                  </archive>
    3.69 +              </configuration>
    3.70 +          </plugin>
    3.71 +          <plugin>
    3.72 +              <groupId>org.codehaus.mojo</groupId>
    3.73 +              <artifactId>exec-maven-plugin</artifactId>
    3.74 +              <version>1.2.1</version>
    3.75 +              <configuration>
    3.76 +                  <systemProperties>
    3.77 +                      <systemProperty>
    3.78 +                          <key>browser.rootdir</key>
    3.79 +                          <value>${basedir}/src/main/webapp/</value>
    3.80 +                      </systemProperty>
    3.81 +                  </systemProperties>
    3.82 +                  <mainClass>org.apidesign.html.demo.chess.Main</mainClass>
    3.83 +              </configuration>
    3.84 +          </plugin>      
    3.85 +          <plugin>
    3.86 +              <artifactId>maven-assembly-plugin</artifactId>
    3.87 +              <version>2.4</version>
    3.88 +              <executions>
    3.89 +                  <execution>
    3.90 +                      <id>distro-assembly</id>
    3.91 +                      <phase>package</phase>
    3.92 +                      <goals>
    3.93 +                          <goal>single</goal>
    3.94 +                      </goals>
    3.95 +                      <configuration>
    3.96 +                          <descriptors>
    3.97 +                              <descriptor>src/main/assembly/html.java.net.xml</descriptor>
    3.98 +                          </descriptors>
    3.99 +                      </configuration>
   3.100 +                  </execution>
   3.101 +              </executions>                
   3.102 +          </plugin>
   3.103 +         <plugin>
   3.104 +            <artifactId>ios-maven-plugin</artifactId>
   3.105 +            <groupId>org.netbeans.ios</groupId>
   3.106 +            <version>0.4</version>
   3.107 +            <configuration>
   3.108 +               <targetDevices>1</targetDevices>
   3.109 +               <deploymentTarget>6.1</deploymentTarget>
   3.110 +               <bundleId>JavaOneChess</bundleId>
   3.111 +               <provisioningProfile></provisioningProfile>
   3.112 +               <supportedInterfaceOrientations>UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationPortrait,UIInterfaceOrientationLandscapeRight,UIInterfaceOrientationPortraitUpsideDown</supportedInterfaceOrientations>
   3.113 +               <prerenderedIcons>false</prerenderedIcons>
   3.114 +               <iPadSupportedInterfaceOrientations>UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationPortrait,UIInterfaceOrientationLandscapeRight,UIInterfaceOrientationPortraitUpsideDown</iPadSupportedInterfaceOrientations>
   3.115 +            </configuration>
   3.116 +         </plugin>
   3.117 +      </plugins>
   3.118 +  </build>
   3.119 +  <dependencies>
   3.120 +    <dependency>
   3.121 +        <groupId>org.apidesign.html</groupId>
   3.122 +        <artifactId>net.java.html.json</artifactId>
   3.123 +        <version>${net.java.html.version}</version>
   3.124 +    </dependency>
   3.125 +    <dependency>
   3.126 +        <groupId>org.apidesign.html</groupId>
   3.127 +        <artifactId>net.java.html.boot</artifactId>
   3.128 +        <version>${net.java.html.version}</version>
   3.129 +    </dependency>
   3.130 +    <dependency>
   3.131 +      <groupId>org.testng</groupId>
   3.132 +      <artifactId>testng</artifactId>
   3.133 +      <version>6.7</version>
   3.134 +      <scope>test</scope>
   3.135 +    </dependency>
   3.136 +    <dependency>
   3.137 +      <groupId>org.apidesign.html</groupId>
   3.138 +      <artifactId>net.java.html.sound</artifactId>
   3.139 +      <version>${net.java.html.version}</version>
   3.140 +      <type>jar</type>
   3.141 +    </dependency>
   3.142 +    <dependency>
   3.143 +      <groupId>org.apidesign.bck2brwsr</groupId>
   3.144 +      <artifactId>core</artifactId>
   3.145 +      <version>${bck2brwsr.version}</version>
   3.146 +      <scope>provided</scope>
   3.147 +      <type>jar</type>
   3.148 +    </dependency>
   3.149 +  </dependencies>
   3.150 +  <profiles>
   3.151 +      <profile>
   3.152 +          <id>fxbrwsr</id>
   3.153 +          <activation>
   3.154 +              <activeByDefault>true</activeByDefault>
   3.155 +          </activation>
   3.156 +          <dependencies>
   3.157 +              <dependency>
   3.158 +                  <groupId>org.apidesign.html</groupId>
   3.159 +                  <artifactId>ko-fx</artifactId>
   3.160 +                  <version>${net.java.html.version}</version>
   3.161 +                  <scope>runtime</scope>
   3.162 +              </dependency>
   3.163 +              <dependency>
   3.164 +                  <groupId>org.apidesign.html</groupId>
   3.165 +                  <artifactId>boot-fx</artifactId>
   3.166 +                  <version>${net.java.html.version}</version>
   3.167 +                  <scope>runtime</scope>
   3.168 +              </dependency>
   3.169 +              <dependency>
   3.170 +                  <groupId>org.apidesign.html</groupId>
   3.171 +                  <artifactId>ko-ws-tyrus</artifactId>
   3.172 +                  <scope>runtime</scope>
   3.173 +                  <version>${net.java.html.version}</version>
   3.174 +              </dependency>
   3.175 +          </dependencies>
   3.176 +      </profile>
   3.177 +      <profile>
   3.178 +          <id>bck2brwsr</id>
   3.179 +          <activation>
   3.180 +              <property>
   3.181 +                  <name>brwsr</name>
   3.182 +                  <value>bck2brwsr</value>
   3.183 +              </property>
   3.184 +          </activation>
   3.185 +          <build>
   3.186 +              <plugins>
   3.187 +                  <plugin>
   3.188 +                      <groupId>org.apidesign.bck2brwsr</groupId>
   3.189 +                      <artifactId>bck2brwsr-maven-plugin</artifactId>
   3.190 +                      <version>${bck2brwsr.launcher.version}</version>
   3.191 +                      <executions>
   3.192 +                          <execution>
   3.193 +                              <goals>
   3.194 +                                  <goal>brwsr</goal>
   3.195 +                              </goals>
   3.196 +                          </execution>
   3.197 +                      </executions>
   3.198 +                      <configuration>
   3.199 +                          <directory>${basedir}/src/main/webapp/</directory>
   3.200 +                          <startpage>${brwsr.startpage}</startpage>
   3.201 +                          <launcher>${brwsr}</launcher>
   3.202 +                          <javascript>${project.build.directory}/bck2brwsr.js</javascript>
   3.203 +                          <obfuscation>${bck2brwsr.obfuscationlevel}</obfuscation>
   3.204 +                      </configuration>
   3.205 +                  </plugin>
   3.206 +                  <plugin>
   3.207 +                      <groupId>org.apache.maven.plugins</groupId>
   3.208 +                      <artifactId>maven-compiler-plugin</artifactId>
   3.209 +                      <configuration>
   3.210 +                          <compilerArguments>
   3.211 +                              <!--
   3.212 +                              <bootclasspath>netbeans.ignore.jdk.bootclasspath</bootclasspath>
   3.213 +                              -->
   3.214 +                          </compilerArguments>
   3.215 +                      </configuration>
   3.216 +                  </plugin>
   3.217 +                  <plugin>
   3.218 +                      <artifactId>maven-assembly-plugin</artifactId>
   3.219 +                      <version>2.4</version>
   3.220 +                      <executions>
   3.221 +                          <execution>
   3.222 +                              <id>distro-assembly</id>
   3.223 +                              <phase>package</phase>
   3.224 +                              <goals>
   3.225 +                                  <goal>single</goal>
   3.226 +                              </goals>
   3.227 +                              <configuration>
   3.228 +                                  <descriptors>
   3.229 +                                      <descriptor>src/main/assembly/bck2brwsr.xml</descriptor>
   3.230 +                                  </descriptors>
   3.231 +                              </configuration>
   3.232 +                          </execution>
   3.233 +                      </executions>                
   3.234 +                  </plugin>      
   3.235 +              </plugins>
   3.236 +          </build>
   3.237 +          <dependencies>
   3.238 +              <dependency>
   3.239 +                  <groupId>org.apidesign.bck2brwsr</groupId>
   3.240 +                  <artifactId>emul</artifactId>
   3.241 +                  <version>${bck2brwsr.version}</version>
   3.242 +                  <classifier>rt</classifier>
   3.243 +              </dependency>
   3.244 +              <dependency>
   3.245 +                  <groupId>org.apidesign.bck2brwsr</groupId>
   3.246 +                  <artifactId>ko-bck2brwsr</artifactId>
   3.247 +                  <version>${bck2brwsr.version}</version>
   3.248 +                  <scope>runtime</scope>
   3.249 +              </dependency>
   3.250 +              <dependency>
   3.251 +                  <groupId>org.apidesign.bck2brwsr</groupId>
   3.252 +                  <artifactId>vm4brwsr</artifactId>
   3.253 +                  <classifier>js</classifier>
   3.254 +                  <type>zip</type>
   3.255 +                  <version>${bck2brwsr.version}</version>
   3.256 +                  <scope>provided</scope>
   3.257 +              </dependency>
   3.258 +          </dependencies>
   3.259 +      </profile>
   3.260 +  </profiles>
   3.261 +</project>
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/chess/src/main/assembly/bck2brwsr.xml	Wed Sep 25 04:28:19 2013 +0200
     4.3 @@ -0,0 +1,79 @@
     4.4 +<?xml version="1.0"?>
     4.5 +<!--
     4.6 +
     4.7 +    The MIT License (MIT)
     4.8 +
     4.9 +    Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    4.10 +
    4.11 +    Permission is hereby granted, free of charge, to any person obtaining a copy
    4.12 +    of this software and associated documentation files (the "Software"), to deal
    4.13 +    in the Software without restriction, including without limitation the rights
    4.14 +    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    4.15 +    copies of the Software, and to permit persons to whom the Software is
    4.16 +    furnished to do so, subject to the following conditions:
    4.17 +
    4.18 +    The above copyright notice and this permission notice shall be included in
    4.19 +    all copies or substantial portions of the Software.
    4.20 +
    4.21 +    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    4.22 +    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    4.23 +    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    4.24 +    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    4.25 +    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    4.26 +    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    4.27 +    THE SOFTWARE.
    4.28 +
    4.29 +-->
    4.30 +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4.31 +  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    4.32 +  
    4.33 +  <id>bck2brwsr</id>
    4.34 +  <formats>
    4.35 +      <format>zip</format>
    4.36 +  </formats>
    4.37 +  <baseDirectory>public_html</baseDirectory>
    4.38 +  <dependencySets>
    4.39 +    <dependencySet>
    4.40 +        <useProjectArtifact>false</useProjectArtifact>
    4.41 +        <scope>runtime</scope>
    4.42 +        <outputDirectory>lib</outputDirectory>
    4.43 +        <includes>
    4.44 +            <include>*:jar</include>
    4.45 +            <include>*:rt</include>
    4.46 +        </includes>
    4.47 +    </dependencySet>
    4.48 +    <dependencySet>
    4.49 +        <useProjectArtifact>false</useProjectArtifact>
    4.50 +        <scope>provided</scope>
    4.51 +        <includes>
    4.52 +            <include>*:js</include>
    4.53 +        </includes>
    4.54 +        <unpack>true</unpack>
    4.55 +        <outputDirectory>/</outputDirectory>
    4.56 +    </dependencySet>
    4.57 +  </dependencySets> 
    4.58 +  <fileSets>
    4.59 +      <fileSet>
    4.60 +          <directory>src/main/webapp/pages</directory>
    4.61 +          <outputDirectory>/</outputDirectory>
    4.62 +          <excludes>
    4.63 +              <exclude>*.png</exclude>
    4.64 +          </excludes>
    4.65 +          <filtered>true</filtered>
    4.66 +      </fileSet>
    4.67 +      <fileSet>
    4.68 +          <directory>src/main/webapp/pages</directory>
    4.69 +          <outputDirectory>/</outputDirectory>
    4.70 +          <includes>
    4.71 +              <include>*.png</include>
    4.72 +          </includes>
    4.73 +          <filtered>false</filtered>
    4.74 +      </fileSet>
    4.75 +  </fileSets>
    4.76 +  <files>
    4.77 +    <file>
    4.78 +      <source>${project.build.directory}/${project.build.finalName}.jar</source>
    4.79 +      <outputDirectory>/</outputDirectory>
    4.80 +    </file>
    4.81 +  </files>
    4.82 +</assembly>
    4.83 \ No newline at end of file
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/chess/src/main/assembly/html.java.net.xml	Wed Sep 25 04:28:19 2013 +0200
     5.3 @@ -0,0 +1,57 @@
     5.4 +<?xml version="1.0"?>
     5.5 +<!--
     5.6 +
     5.7 +    The MIT License (MIT)
     5.8 +
     5.9 +    Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    5.10 +
    5.11 +    Permission is hereby granted, free of charge, to any person obtaining a copy
    5.12 +    of this software and associated documentation files (the "Software"), to deal
    5.13 +    in the Software without restriction, including without limitation the rights
    5.14 +    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    5.15 +    copies of the Software, and to permit persons to whom the Software is
    5.16 +    furnished to do so, subject to the following conditions:
    5.17 +
    5.18 +    The above copyright notice and this permission notice shall be included in
    5.19 +    all copies or substantial portions of the Software.
    5.20 +
    5.21 +    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    5.22 +    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    5.23 +    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    5.24 +    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    5.25 +    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    5.26 +    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    5.27 +    THE SOFTWARE.
    5.28 +
    5.29 +-->
    5.30 +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    5.31 +  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    5.32 +  
    5.33 +  <id>html.java.net</id>
    5.34 +  <formats>
    5.35 +      <format>zip</format>
    5.36 +  </formats>
    5.37 +  <baseDirectory>${project.build.finalName}-app</baseDirectory>
    5.38 +  <dependencySets>
    5.39 +    <dependencySet>
    5.40 +        <useProjectArtifact>false</useProjectArtifact>
    5.41 +        <scope>runtime</scope>
    5.42 +        <outputDirectory>lib</outputDirectory>
    5.43 +    </dependencySet>
    5.44 +  </dependencySets> 
    5.45 +  <files>
    5.46 +    <file>
    5.47 +      <source>${project.build.directory}/${project.build.finalName}.jar</source>
    5.48 +      <outputDirectory>/</outputDirectory>
    5.49 +    </file>
    5.50 +  </files>
    5.51 +  <fileSets>
    5.52 +    <fileSet>
    5.53 +       <directory>src/main/webapp/</directory>
    5.54 +       <outputDirectory>/</outputDirectory>
    5.55 +       <includes>
    5.56 +          <include>pages/**</include>
    5.57 +       </includes>
    5.58 +    </fileSet>
    5.59 +  </fileSets>
    5.60 +</assembly>
    5.61 \ No newline at end of file
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/BoardModel.java	Wed Sep 25 04:28:19 2013 +0200
     6.3 @@ -0,0 +1,392 @@
     6.4 +/**
     6.5 + * The MIT License (MIT)
     6.6 + *
     6.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     6.8 + *
     6.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
    6.10 + * of this software and associated documentation files (the "Software"), to deal
    6.11 + * in the Software without restriction, including without limitation the rights
    6.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    6.13 + * copies of the Software, and to permit persons to whom the Software is
    6.14 + * furnished to do so, subject to the following conditions:
    6.15 + *
    6.16 + * The above copyright notice and this permission notice shall be included in
    6.17 + * all copies or substantial portions of the Software.
    6.18 + *
    6.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    6.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    6.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    6.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    6.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    6.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    6.25 + * THE SOFTWARE.
    6.26 + */
    6.27 +package org.apidesign.html.demo.chess;
    6.28 +
    6.29 +import java.util.Arrays;
    6.30 +import java.util.Collections;
    6.31 +import java.util.List;
    6.32 +import java.util.Timer;
    6.33 +import java.util.TimerTask;
    6.34 +import net.java.html.json.ComputedProperty;
    6.35 +import net.java.html.json.Function;
    6.36 +import net.java.html.json.Model;
    6.37 +import net.java.html.json.ModelOperation;
    6.38 +import net.java.html.json.OnPropertyChange;
    6.39 +import net.java.html.json.Property;
    6.40 +import net.java.html.sound.AudioClip;
    6.41 +
    6.42 +@Model(className="Board", properties={
    6.43 +    @Property(name = "player", type = String.class),
    6.44 +    @Property(name = "gameId", type = String.class),
    6.45 +    @Property(name = "whitePlayer", type = String.class),
    6.46 +    @Property(name = "blackPlayer", type = String.class),
    6.47 +    @Property(name = "alertMessage", type = String.class),
    6.48 +    @Property(name = "status", type = String.class),
    6.49 +    @Property(name = "rows", type = Row.class, array = true),
    6.50 +    @Property(name = "turn", type = Color.class),
    6.51 +    @Property(name = "moves", type = Move.class, array = true),
    6.52 +    @Property(name = "pendingMove", type = Move.class),
    6.53 +    @Property(name = "active", type = boolean.class),
    6.54 +})
    6.55 +public class BoardModel {
    6.56 +    @ComputedProperty static String title(String status, String gameId) {
    6.57 +        String t = status != null ? status : gameId;
    6.58 +        if (t != null && t.length() > 10) {
    6.59 +            return t.substring(0, 10);
    6.60 +        }
    6.61 +        return t;
    6.62 +    }
    6.63 +
    6.64 +    @ModelOperation static void updateSummary(Board b, String summary) {
    6.65 +        if (summary != null) {
    6.66 +            b.setStatus(summary);
    6.67 +        }
    6.68 +    }
    6.69 +    
    6.70 +    private static final AudioClip MOVE = AudioClip.create("sounds/move.mp3");
    6.71 +    @OnPropertyChange("moves") static void playMove() {
    6.72 +        MOVE.play();
    6.73 +    }
    6.74 +
    6.75 +    private static final AudioClip CHECK = AudioClip.create("sounds/check.mp3");
    6.76 +    private static final AudioClip CHECKMATE = AudioClip.create("sounds/checkmate.mp3");
    6.77 +    
    6.78 +    @Function static void selected(Board b, Square data) {
    6.79 +        Square previoslySelected = findSelectedSquare(b);
    6.80 +        if (previoslySelected == null) {
    6.81 +            if (data.getPiece() != null && data.getPieceColor() == b.getTurn()) {
    6.82 +                data.setSelected(true);
    6.83 +                Rules.computeAccessible(b, data);
    6.84 +            }
    6.85 +        } else {
    6.86 +            if (previoslySelected == data) {
    6.87 +                data.setSelected(false);
    6.88 +                Rules.computeAccessible(b, null);
    6.89 +                return;
    6.90 +            }
    6.91 +            if (data.getPiece() != null && data.getPieceColor() == previoslySelected.getPieceColor()) {
    6.92 +                previoslySelected.setSelected(false);
    6.93 +                data.setSelected(true);
    6.94 +                Rules.computeAccessible(b, data);
    6.95 +                return;
    6.96 +            }
    6.97 +            if (data.isAccessible()) {
    6.98 +                previoslySelected.setSelected(false);
    6.99 +
   6.100 +                Move newMove = new Move();
   6.101 +                newMove.setFrom(previoslySelected.getPosition());
   6.102 +                newMove.setTo(data.getPosition());
   6.103 +                newMove.setRound(b.getMoves().size() / 2 + 1);
   6.104 +                newMove.setPiece(previoslySelected.getPiece());
   6.105 +                newMove.setTurn(previoslySelected.getPieceColor());
   6.106 +                newMove.setTakes(data.getPiece() != null);
   6.107 +                b.getMoves().add(newMove);
   6.108 +                b.setPendingMove(newMove);
   6.109 +
   6.110 +                data.setPieceColor(previoslySelected.getPieceColor());
   6.111 +                data.setPiece(previoslySelected.getPiece());
   6.112 +                previoslySelected.setPiece(null);
   6.113 +                previoslySelected.setPieceColor(null);
   6.114 +                b.setTurn(b.getTurn() == Color.W ? Color.B : Color.W);
   6.115 +                Rules.computeAccessible(b, null);
   6.116 +            }
   6.117 +        }
   6.118 +    }
   6.119 +    
   6.120 +    static class NextMove extends TimerTask {
   6.121 +        private static final Timer T = new Timer("Animate moves");
   6.122 +        private final Board b;
   6.123 +        private final Move m;
   6.124 +
   6.125 +        public NextMove(Board b, Move m) {
   6.126 +            this.b = b;
   6.127 +            this.m = m;
   6.128 +            T.schedule(this, 1000);
   6.129 +        }
   6.130 +        
   6.131 +        
   6.132 +        @Override
   6.133 +        public void run() {
   6.134 +            b.showPosition(m);
   6.135 +        }
   6.136 +    }
   6.137 +    
   6.138 +    @ModelOperation @Function static void showPosition(Board b, Move data) {
   6.139 +        Rules.initBoard(b);
   6.140 +        boolean found = false;
   6.141 +        for (Move m : b.getMoves()) {
   6.142 +            if (found) {
   6.143 +                b.setTurn(null);
   6.144 +                new NextMove(b, m);
   6.145 +                return;
   6.146 +            }
   6.147 +            Square from = findSquare(b, (char)m.getFrom().getX(), m.getFrom().getY());
   6.148 +            Square to = findSquare(b, (char)m.getTo().getX(), m.getTo().getY());
   6.149 +            to.setPiece(from.getPiece());
   6.150 +            to.setPieceColor(from.getPieceColor());
   6.151 +            from.setPiece(null);
   6.152 +            from.setPieceColor(null);
   6.153 +            if (m == data) {
   6.154 +                found = true;
   6.155 +            }
   6.156 +        }
   6.157 +        b.setTurn(b.getMoves().size() % 2 == 0 ? Color.W : Color.B);
   6.158 +    }
   6.159 +    
   6.160 +    
   6.161 +
   6.162 +    @Function static void rotateBoard(Board b) {
   6.163 +        Collections.reverse(b.getRows());
   6.164 +        for (Row r : b.getRows()) {
   6.165 +            Collections.reverse(r.getColumns());
   6.166 +        }
   6.167 +        Square sq = findSelectedSquare(b);
   6.168 +        if (sq != null) {
   6.169 +            sq.setSelected(false);
   6.170 +            Rules.computeAccessible(b, null);
   6.171 +        }
   6.172 +    }
   6.173 +    
   6.174 +    @ComputedProperty static boolean whiteTurn(Color turn) {
   6.175 +        return turn == Color.W;
   6.176 +    }
   6.177 +
   6.178 +    @ComputedProperty static boolean blackTurn(Color turn) {
   6.179 +        return turn == Color.B;
   6.180 +    }
   6.181 +    
   6.182 +    @ComputedProperty static List<String> columnNames(List<Row> rows) {
   6.183 +        boolean whiteDown = rows.isEmpty() || rows.get(0).getY() == 8;
   6.184 +        String[] arr = new String[8];
   6.185 +        for (int i = 0; i < 8; i++) {
   6.186 +            String s;
   6.187 +            if (whiteDown) {
   6.188 +                s = "" + (char)('A' + i);
   6.189 +            } else {
   6.190 +                s = "" + (char)('H' - i);
   6.191 +            }
   6.192 +            arr[i] = s;
   6.193 +        }
   6.194 +        return Arrays.asList(arr);
   6.195 +    }
   6.196 +    
   6.197 +    static Square findSquare(Board b, char column, int row) {
   6.198 +        for (Row r : b.getRows()) {
   6.199 +            for (Square square : r.getColumns()) {
   6.200 +                if (square.getPosition().getX() == column && square.getPosition().getY() == row) {
   6.201 +                    return square;
   6.202 +                }
   6.203 +            }
   6.204 +        }
   6.205 +        return null;
   6.206 +    }
   6.207 +
   6.208 +    private static Square findSquare(Board b, Position to) {
   6.209 +        return findSquare(b, (char)to.getX(), to.getY());
   6.210 +    }
   6.211 +    
   6.212 +    static Square findSelectedSquare(Board b) {
   6.213 +        for (Row row : b.getRows()) {
   6.214 +            for (Square square : row.getColumns()) {
   6.215 +                if (square.isSelected()) {
   6.216 +                    return square;
   6.217 +                }
   6.218 +            }
   6.219 +        }
   6.220 +        return null;
   6.221 +    }
   6.222 +
   6.223 +    static void moveUpdate(
   6.224 +        final Board b, final Move move, 
   6.225 +        final List<String> whites, final List<String> blacks, 
   6.226 +        final Color turn, Object alert
   6.227 +    ) {
   6.228 +        final Square from = BoardModel.findSquare(b, move.getFrom());
   6.229 +        final Square to = BoardModel.findSquare(b, move.getTo());
   6.230 +        move.setPiece(from.getPiece());
   6.231 +        move.setTurn(from.getPieceColor());
   6.232 +        if (to.getPiece() != null) {
   6.233 +            move.setTakes(true);
   6.234 +        }
   6.235 +        move.setRound(b.getMoves().size() / 2 + 1);
   6.236 +        b.getMoves().add(move);
   6.237 +        Rules.initBoard(b, whites, blacks, turn);
   6.238 +    }
   6.239 +
   6.240 +    @Model(className="Row", properties = {
   6.241 +        @Property(name = "columns", type = Square.class, array = true)
   6.242 +    })
   6.243 +    static class RowsImpl {
   6.244 +        @ComputedProperty static int y(List<Square> columns) {
   6.245 +            return columns.isEmpty() ? 0 : columns.get(0).getY();
   6.246 +        }
   6.247 +    }
   6.248 +    
   6.249 +    enum PieceType {
   6.250 +        PAWN(5), ROCK(2), KNIGHT(4), BISHOP(3), QUEEN(1), KING(0);
   6.251 +
   6.252 +        final int entityIndex;
   6.253 +        
   6.254 +        PieceType(int ei) {
   6.255 +            this.entityIndex = ei;
   6.256 +        }
   6.257 +
   6.258 +        static PieceType fromNotation(char notation) {
   6.259 +            switch (notation) {
   6.260 +                case 'R': return ROCK;
   6.261 +                case 'N': return KNIGHT;
   6.262 +                case 'B': return BISHOP;
   6.263 +                case 'Q': return QUEEN;
   6.264 +                case 'K': return KING;
   6.265 +                case 'P': return PAWN;
   6.266 +            }
   6.267 +            throw new IllegalStateException("Unexpected: " + notation);
   6.268 +        }
   6.269 +        
   6.270 +        String computeEntity(Color color) {
   6.271 +            if (color == null) {
   6.272 +                color = Color.W;
   6.273 +            }
   6.274 +            int base;
   6.275 +            switch (color) {
   6.276 +                case W: base = 12; break;
   6.277 +                case B: base = 18; break;
   6.278 +                default:
   6.279 +                    throw new AssertionError();
   6.280 +            }
   6.281 +            return "&#98" + String.valueOf(base + entityIndex) + ";";
   6.282 +        }
   6.283 +    }
   6.284 +    
   6.285 +    @Model(className="Position", properties = {
   6.286 +        @Property(name = "x", type = char.class),
   6.287 +        @Property(name = "y", type = int.class),
   6.288 +    })
   6.289 +    static class PositionImpl {
   6.290 +        @ComputedProperty static String location(int x, int y) {
   6.291 +            return "" + (char)(x - 'A' + 'a') + y;
   6.292 +        }
   6.293 +    }
   6.294 +    
   6.295 +    @Model(className="Square", properties = {
   6.296 +        @Property(name = "position", type = Position.class),
   6.297 +        @Property(name = "color", type = Color.class),
   6.298 +        @Property(name = "piece", type = PieceType.class),
   6.299 +        @Property(name = "pieceColor", type = Color.class),
   6.300 +        @Property(name = "selected", type = boolean.class),
   6.301 +        @Property(name = "accessible", type = boolean.class),
   6.302 +    })
   6.303 +    static class SquareModel {
   6.304 +        @ComputedProperty static String pieceEntity(
   6.305 +            PieceType piece, Color pieceColor
   6.306 +        ) {
   6.307 +            if (piece == null) {
   6.308 +                return "";
   6.309 +            }
   6.310 +            return piece.computeEntity(pieceColor);
   6.311 +        }
   6.312 +        
   6.313 +        @ComputedProperty static String squareColor(
   6.314 +            Color color, boolean selected, boolean accessible
   6.315 +        ) {
   6.316 +            if (selected) {
   6.317 +                return "selected";
   6.318 +            }
   6.319 +            if (accessible) {
   6.320 +                return "accessible";
   6.321 +            }
   6.322 +            
   6.323 +            if (color == null) {
   6.324 +                return "";
   6.325 +            } else {
   6.326 +                if (color == Color.W) {
   6.327 +                    return "white";
   6.328 +                } else {
   6.329 +                    return "black";
   6.330 +                }
   6.331 +            }
   6.332 +        }
   6.333 +        
   6.334 +        @ComputedProperty static char x(Position position) {
   6.335 +            return position == null ? 'A' : position.getX();
   6.336 +        }
   6.337 +
   6.338 +        @ComputedProperty static int y(Position position) {
   6.339 +            return position == null ? 1 : position.getY();
   6.340 +        }
   6.341 +    }
   6.342 +    
   6.343 +    @Model(className = "Move", properties = {
   6.344 +        @Property(name = "round", type = int.class),
   6.345 +        @Property(name = "turn", type = Color.class),
   6.346 +        @Property(name = "piece", type = PieceType.class),
   6.347 +        @Property(name = "from", type = Position.class),
   6.348 +        @Property(name = "to", type = Position.class),
   6.349 +        @Property(name = "promoted", type = PieceType.class),
   6.350 +        @Property(name = "takes", type = boolean.class),
   6.351 +        @Property(name = "check", type = boolean.class),
   6.352 +    })
   6.353 +    static class MoveImpl {
   6.354 +        @ComputedProperty static boolean whiteMove(Color turn) {
   6.355 +            return turn == Color.W;
   6.356 +        }
   6.357 +        
   6.358 +        @ComputedProperty static String html(
   6.359 +            Position from, Position to, boolean takes, PieceType piece, Color turn
   6.360 +        ) {
   6.361 +            if (from == null || to == null) {
   6.362 +                return "";
   6.363 +            }
   6.364 +            StringBuilder sb = new StringBuilder();
   6.365 +            if (piece != null && piece != PieceType.PAWN) {
   6.366 +                sb.append(piece.computeEntity(turn));
   6.367 +            }
   6.368 +            
   6.369 +            sb.append(from.getLocation());
   6.370 +            if (takes) {
   6.371 +                sb.append("x");
   6.372 +            }
   6.373 +            sb.append(to.getLocation());
   6.374 +            return sb.toString();
   6.375 +        }
   6.376 +
   6.377 +        static Move valueOf(String move) {
   6.378 +            move = move.toUpperCase();
   6.379 +            Move m = new Move();
   6.380 +            {
   6.381 +                Position p = new Position();
   6.382 +                p.setX(move.charAt(0));
   6.383 +                p.setY(move.charAt(1) - '0');
   6.384 +                m.setFrom(p);
   6.385 +            }
   6.386 +            {
   6.387 +                Position p = new Position();
   6.388 +                p.setX(move.charAt(2));
   6.389 +                p.setY(move.charAt(3) - '0');
   6.390 +                m.setTo(p);
   6.391 +            }
   6.392 +            return m;
   6.393 +        }
   6.394 +    }
   6.395 +}
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/Color.java	Wed Sep 25 04:28:19 2013 +0200
     7.3 @@ -0,0 +1,32 @@
     7.4 +/**
     7.5 + * The MIT License (MIT)
     7.6 + *
     7.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     7.8 + *
     7.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
    7.10 + * of this software and associated documentation files (the "Software"), to deal
    7.11 + * in the Software without restriction, including without limitation the rights
    7.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    7.13 + * copies of the Software, and to permit persons to whom the Software is
    7.14 + * furnished to do so, subject to the following conditions:
    7.15 + *
    7.16 + * The above copyright notice and this permission notice shall be included in
    7.17 + * all copies or substantial portions of the Software.
    7.18 + *
    7.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    7.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    7.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    7.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    7.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    7.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    7.25 + * THE SOFTWARE.
    7.26 + */
    7.27 +package org.apidesign.html.demo.chess;
    7.28 +
    7.29 +/**
    7.30 + *
    7.31 + * @author Jaroslav Tulach <jtulach@netbeans.org>
    7.32 + */
    7.33 +public enum Color {
    7.34 +    W, B;
    7.35 +}
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/GamesModel.java	Wed Sep 25 04:28:19 2013 +0200
     8.3 @@ -0,0 +1,46 @@
     8.4 +/**
     8.5 + * The MIT License (MIT)
     8.6 + *
     8.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     8.8 + *
     8.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
    8.10 + * of this software and associated documentation files (the "Software"), to deal
    8.11 + * in the Software without restriction, including without limitation the rights
    8.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    8.13 + * copies of the Software, and to permit persons to whom the Software is
    8.14 + * furnished to do so, subject to the following conditions:
    8.15 + *
    8.16 + * The above copyright notice and this permission notice shall be included in
    8.17 + * all copies or substantial portions of the Software.
    8.18 + *
    8.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    8.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    8.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    8.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    8.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    8.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    8.25 + * THE SOFTWARE.
    8.26 + */
    8.27 +package org.apidesign.html.demo.chess;
    8.28 +
    8.29 +import net.java.html.json.ComputedProperty;
    8.30 +import net.java.html.json.Model;
    8.31 +import net.java.html.json.Property;
    8.32 +
    8.33 +/**
    8.34 + *
    8.35 + * @author Jaroslav Tulach <jtulach@netbeans.org>
    8.36 + */
    8.37 +@Model(className = "Games", properties = {
    8.38 +    @Property(name = "whitePlayer", type = String.class),
    8.39 +    @Property(name = "blackPlayer", type = String.class),
    8.40 +    @Property(name = "selectedColor", type = String.class),
    8.41 +})
    8.42 +class GamesModel {
    8.43 +    @ComputedProperty static boolean correctNames(
    8.44 +        String whitePlayer, String blackPlayer
    8.45 +    ) {
    8.46 +        return whitePlayer != null && blackPlayer != null && !whitePlayer.isEmpty() &&
    8.47 +            !blackPlayer.isEmpty();
    8.48 +    }
    8.49 +}
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/LoadMain.java	Wed Sep 25 04:28:19 2013 +0200
     9.3 @@ -0,0 +1,41 @@
     9.4 +/**
     9.5 + * The MIT License (MIT)
     9.6 + *
     9.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     9.8 + *
     9.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
    9.10 + * of this software and associated documentation files (the "Software"), to deal
    9.11 + * in the Software without restriction, including without limitation the rights
    9.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    9.13 + * copies of the Software, and to permit persons to whom the Software is
    9.14 + * furnished to do so, subject to the following conditions:
    9.15 + *
    9.16 + * The above copyright notice and this permission notice shall be included in
    9.17 + * all copies or substantial portions of the Software.
    9.18 + *
    9.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    9.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    9.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    9.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    9.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    9.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    9.25 + * THE SOFTWARE.
    9.26 + */
    9.27 +package org.apidesign.html.demo.chess;
    9.28 +
    9.29 +
    9.30 +public final class LoadMain {
    9.31 +    private LoadMain() {
    9.32 +    }
    9.33 +    
    9.34 +    /**
    9.35 +     * Called when the page is ready.
    9.36 +     */
    9.37 +    static {
    9.38 +        try {
    9.39 +            UIModel.initialize();
    9.40 +        } catch (Throwable ex) {
    9.41 +            ex.printStackTrace();
    9.42 +        }
    9.43 +    }
    9.44 +}
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/Main.java	Wed Sep 25 04:28:19 2013 +0200
    10.3 @@ -0,0 +1,42 @@
    10.4 +/**
    10.5 + * The MIT License (MIT)
    10.6 + *
    10.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    10.8 + *
    10.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   10.10 + * of this software and associated documentation files (the "Software"), to deal
   10.11 + * in the Software without restriction, including without limitation the rights
   10.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   10.13 + * copies of the Software, and to permit persons to whom the Software is
   10.14 + * furnished to do so, subject to the following conditions:
   10.15 + *
   10.16 + * The above copyright notice and this permission notice shall be included in
   10.17 + * all copies or substantial portions of the Software.
   10.18 + *
   10.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   10.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   10.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   10.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   10.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   10.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   10.25 + * THE SOFTWARE.
   10.26 + */
   10.27 +package org.apidesign.html.demo.chess;
   10.28 +
   10.29 +import net.java.html.boot.BrowserBuilder;
   10.30 +import org.apidesign.bck2brwsr.core.JavaScriptOnly;
   10.31 +
   10.32 +public final class Main {
   10.33 +    private Main() {
   10.34 +    }
   10.35 +
   10.36 +    @JavaScriptOnly(name = "main", value = "null")
   10.37 +    public static void main(String... args) throws Exception {
   10.38 +        BrowserBuilder.newBrowser().
   10.39 +            loadPage("pages/index.html").
   10.40 +            loadClass(UIModel.class).
   10.41 +            invoke("initialize", args).
   10.42 +            showAndWait();
   10.43 +        System.exit(0);
   10.44 +    }
   10.45 +}
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/MsgType.java	Wed Sep 25 04:28:19 2013 +0200
    11.3 @@ -0,0 +1,40 @@
    11.4 +/**
    11.5 + * The MIT License (MIT)
    11.6 + *
    11.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    11.8 + *
    11.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   11.10 + * of this software and associated documentation files (the "Software"), to deal
   11.11 + * in the Software without restriction, including without limitation the rights
   11.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   11.13 + * copies of the Software, and to permit persons to whom the Software is
   11.14 + * furnished to do so, subject to the following conditions:
   11.15 + *
   11.16 + * The above copyright notice and this permission notice shall be included in
   11.17 + * all copies or substantial portions of the Software.
   11.18 + *
   11.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   11.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   11.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   11.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   11.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   11.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   11.25 + * THE SOFTWARE.
   11.26 + */
   11.27 +package org.apidesign.html.demo.chess;
   11.28 +
   11.29 +/**
   11.30 + *
   11.31 + * @author Jaroslav Tulach <jtulach@netbeans.org>
   11.32 + */
   11.33 + enum MsgType {
   11.34 +    CreateGame, QueryGames, SendMove, JoinGame, UpdateGame, CheckCredentials;
   11.35 +
   11.36 +    static MsgType forResponse(String msg) {
   11.37 +        if (msg.endsWith("Rsp")) {
   11.38 +            msg = msg.substring(0, msg.length() - 3);
   11.39 +        }
   11.40 +        return MsgType.valueOf(msg);
   11.41 +    }
   11.42 +    
   11.43 +}
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/Rules.java	Wed Sep 25 04:28:19 2013 +0200
    12.3 @@ -0,0 +1,312 @@
    12.4 +/**
    12.5 + * The MIT License (MIT)
    12.6 + *
    12.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    12.8 + *
    12.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   12.10 + * of this software and associated documentation files (the "Software"), to deal
   12.11 + * in the Software without restriction, including without limitation the rights
   12.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   12.13 + * copies of the Software, and to permit persons to whom the Software is
   12.14 + * furnished to do so, subject to the following conditions:
   12.15 + *
   12.16 + * The above copyright notice and this permission notice shall be included in
   12.17 + * all copies or substantial portions of the Software.
   12.18 + *
   12.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   12.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   12.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   12.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   12.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   12.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   12.25 + * THE SOFTWARE.
   12.26 + */
   12.27 +package org.apidesign.html.demo.chess;
   12.28 +
   12.29 +import java.util.ArrayList;
   12.30 +import java.util.List;
   12.31 +
   12.32 +/** Common chess rules.
   12.33 + *
   12.34 + * @author Jaroslav Tulach <jtulach@netbeans.org>
   12.35 + */
   12.36 +class Rules {
   12.37 +    static void computeAccessible(Board b, Square s) {
   12.38 +        for (Row r : b.getRows()) {
   12.39 +            for (Square ts : r.getColumns()) {
   12.40 +                ts.setAccessible(false);
   12.41 +            }
   12.42 +        }
   12.43 +        if (s == null) {
   12.44 +            return;
   12.45 +        }
   12.46 +        
   12.47 +        switch (s.getPiece()) {
   12.48 +            case BISHOP: 
   12.49 +                moveBishop(b, s);
   12.50 +                break;
   12.51 +            case KING:
   12.52 +                computeAccessible(b, s, 1, 1, 1);
   12.53 +                computeAccessible(b, s, 1, -1, 1);
   12.54 +                computeAccessible(b, s, -1, -1, 1);
   12.55 +                computeAccessible(b, s, -1, 1, 1);
   12.56 +                computeAccessible(b, s, 1, 0, 1);
   12.57 +                computeAccessible(b, s, 0, -1, 1);
   12.58 +                computeAccessible(b, s, 0, 1, 1);
   12.59 +                computeAccessible(b, s, -1, 0, 1);
   12.60 +                checkRochade(b, s);
   12.61 +                break;
   12.62 +            case ROCK:
   12.63 +                moveRock(b, s);
   12.64 +                break;
   12.65 +            case QUEEN:
   12.66 +                moveRock(b, s);
   12.67 +                moveBishop(b, s);
   12.68 +                break;
   12.69 +            case KNIGHT:
   12.70 +                computeAccessible(b, s, 2, 1, 1);
   12.71 +                computeAccessible(b, s, 2, -1, 1);
   12.72 +                computeAccessible(b, s, -2, -1, 1);
   12.73 +                computeAccessible(b, s, -2, 1, 1);
   12.74 +                computeAccessible(b, s, 1, 2, 1);
   12.75 +                computeAccessible(b, s, -1, 2, 1);
   12.76 +                computeAccessible(b, s, -1, -2, 1);
   12.77 +                computeAccessible(b, s, 1, -2, 1);
   12.78 +                break;
   12.79 +            case PAWN:
   12.80 +                pawns(b, s);
   12.81 +                break;
   12.82 +        }
   12.83 +    }
   12.84 +
   12.85 +    private static void moveRock(Board b, Square s) {
   12.86 +        computeAccessible(b, s, 1, 0, 8);
   12.87 +        computeAccessible(b, s, 0, -1, 8);
   12.88 +        computeAccessible(b, s, -1, 0, 8);
   12.89 +        computeAccessible(b, s, 0, 1, 8);
   12.90 +    }
   12.91 +
   12.92 +    private static void moveBishop(Board b, Square s) {
   12.93 +        computeAccessible(b, s, 1, 1, 8);
   12.94 +        computeAccessible(b, s, 1, -1, 8);
   12.95 +        computeAccessible(b, s, -1, -1, 8);
   12.96 +        computeAccessible(b, s, -1, 1, 8);
   12.97 +    }
   12.98 +    
   12.99 +    private static void computeAccessible(
  12.100 +        Board b, Square s, int dx, int dy,
  12.101 +        int limit
  12.102 +    ) {
  12.103 +        int x = s.getX();
  12.104 +        int y = s.getY();
  12.105 +        
  12.106 +        while (limit-- > 0) {
  12.107 +            x += dx;
  12.108 +            y += dy;
  12.109 +            Square next = BoardModel.findSquare(b, (char)x, y);
  12.110 +            if (next == null) {
  12.111 +                break;
  12.112 +            }
  12.113 +            if (next.getPieceColor() == s.getPieceColor()) {
  12.114 +                break;
  12.115 +            }
  12.116 +            next.setAccessible(true);
  12.117 +            if (next.getPieceColor() != null) {
  12.118 +                break;
  12.119 +            }
  12.120 +        }
  12.121 +    }
  12.122 +    
  12.123 +    private static void pawns(Board b, Square s) {
  12.124 +        final boolean white = s.getPieceColor() == Color.W;
  12.125 +        int dy = white ? 1 : -1;
  12.126 +        Square step = BoardModel.findSquare(b, (char)s.getX(), s.getY() + dy);
  12.127 +        if (step != null && step.getPiece() == null) {
  12.128 +            step.setAccessible(true);
  12.129 +            if ((s.getY() == 2 && white) || (s.getY() == 7 && !white)) {
  12.130 +                Square nextSTep = BoardModel.findSquare(b, (char)s.getX(), step.getY() + dy);
  12.131 +                if (nextSTep != null && step.getPiece() == null && nextSTep.getPiece() == null) {
  12.132 +                    nextSTep.setAccessible(true);
  12.133 +                }
  12.134 +            }
  12.135 +        }
  12.136 +        Color opposite = white ? Color.B : Color.W;
  12.137 +        Square takeLeft = BoardModel.findSquare(b, (char)(s.getX() - 1), s.getY() + dy);
  12.138 +        if (takeLeft != null && takeLeft.getPieceColor() == opposite) {
  12.139 +            takeLeft.setAccessible(true);
  12.140 +        }
  12.141 +        Square takeRight = BoardModel.findSquare(b, (char)(s.getX() + 1), s.getY() + dy);
  12.142 +        if (takeRight != null && takeRight.getPieceColor() == opposite) {
  12.143 +            takeRight.setAccessible(true);
  12.144 +        }
  12.145 +        if ((white && s.getY() == 5) || (!white && s.getY() == 4)) {
  12.146 +            int enPassantFrom = white ? 7 : 2;
  12.147 +            int enPassantTo = white ? 5 : 4;
  12.148 +            if (!b.getMoves().isEmpty()) {
  12.149 +                Move last = b.getMoves().get(b.getMoves().size() - 1);
  12.150 +                if (
  12.151 +                    last.getPiece() == BoardModel.PieceType.PAWN &&
  12.152 +                    last.getFrom().getY() == enPassantFrom &&
  12.153 +                    last.getTo().getY() == enPassantTo
  12.154 +                ) {
  12.155 +                    if (takeLeft != null && last.getFrom().getX() == s.getX() - 1) {
  12.156 +                        takeLeft.setAccessible(true);
  12.157 +                    }
  12.158 +                    if (takeRight != null && last.getFrom().getX() == s.getX() + 1) {
  12.159 +                        takeRight.setAccessible(true);
  12.160 +                    }
  12.161 +                }
  12.162 +            }
  12.163 +        }
  12.164 +    }
  12.165 +
  12.166 +    static Board createBoard() {
  12.167 +        Board b = new Board();
  12.168 +        initBoardField(b);
  12.169 +        initBoard(b);
  12.170 +        return b;
  12.171 +    }
  12.172 +
  12.173 +    private static void initBoardField(Board b) {
  12.174 +        List<Row> addRows = new ArrayList<>(8);
  12.175 +        for (int i = 8; i > 0; i--) {
  12.176 +            Square[] arr = new Square[8];
  12.177 +            for (char j = 'A'; j <= 'H'; j++) {
  12.178 +                arr[j - 'A'] = new Square(
  12.179 +                    new Position(j, i),
  12.180 +                    (i + j) % 2 == 1 ? Color.W : Color.B,
  12.181 +                    null, null, // figure
  12.182 +                    false, false
  12.183 +                );
  12.184 +            }
  12.185 +            addRows.add(new Row(arr));
  12.186 +        }
  12.187 +        b.getRows().addAll(addRows);
  12.188 +    }
  12.189 +    
  12.190 +    static void initBoard(Board b) {
  12.191 +        initBoard(b, true);
  12.192 +    }
  12.193 +    private static void initBoard(Board b, boolean init) {
  12.194 +        if (init) {
  12.195 +            b.setTurn(Color.W);
  12.196 +        }
  12.197 +        if (b.getRows().isEmpty()) {
  12.198 +            for (int i = 8; i > 0; i--) {
  12.199 +                Row r = b.getRows().get(8 - i);
  12.200 +                for (char j = 'A'; j <= 'H'; j++) {
  12.201 +                    Square s = r.getColumns().get(j - 'A');
  12.202 +                    s.setAccessible(false);
  12.203 +                    r.getColumns().set(j - 'A', s);
  12.204 +                    initialPosition(s, init);
  12.205 +                }
  12.206 +            }
  12.207 +        } else {
  12.208 +            for (Row r : b.getRows()) {
  12.209 +                for (Square square : r.getColumns()) {
  12.210 +                    square.setAccessible(false);
  12.211 +                    square.setPiece(null);
  12.212 +                    square.setPieceColor(null);
  12.213 +                    square.setSelected(false);
  12.214 +                    initialPosition(square, init);
  12.215 +                }
  12.216 +            }
  12.217 +        }
  12.218 +        b.setPendingMove(null);
  12.219 +    }
  12.220 +
  12.221 +    private static void initialPosition(Square s, boolean init) {
  12.222 +        int row = s.getPosition().getY();
  12.223 +        char column = s.getPosition().getX();
  12.224 +        s.setPiece(null);
  12.225 +        s.setPieceColor(null);
  12.226 +        if (init) {
  12.227 +            if (row == 2) {
  12.228 +                s.setPiece(BoardModel.PieceType.PAWN);
  12.229 +                s.setPieceColor(Color.W);
  12.230 +            } else if (row == 7) {
  12.231 +                s.setPiece(BoardModel.PieceType.PAWN);
  12.232 +                s.setPieceColor(Color.B);
  12.233 +            } else if (row == 8 || row == 1) {
  12.234 +                s.setPieceColor(row == 1 ? Color.W : Color.B);
  12.235 +                BoardModel.PieceType t;
  12.236 +                switch (column) {
  12.237 +                    case 'A':
  12.238 +                    case 'H':
  12.239 +                        t = BoardModel.PieceType.ROCK;
  12.240 +                        break;
  12.241 +                    case 'B':
  12.242 +                    case 'G':
  12.243 +                        t = BoardModel.PieceType.KNIGHT;
  12.244 +                        break;
  12.245 +                    case 'C':
  12.246 +                    case 'F':
  12.247 +                        t = BoardModel.PieceType.BISHOP;
  12.248 +                        break;
  12.249 +                    case 'D':
  12.250 +                        t = BoardModel.PieceType.QUEEN;
  12.251 +                        break;
  12.252 +                    default:
  12.253 +                        t = BoardModel.PieceType.KING;
  12.254 +                        break;
  12.255 +                }
  12.256 +                s.setPiece(t);
  12.257 +            }
  12.258 +        }
  12.259 +    }
  12.260 +
  12.261 +    static void initBoard(
  12.262 +        Board board, List<String> whites, List<String> blacks, Color turn
  12.263 +    ) {
  12.264 +        initBoard(board, false);
  12.265 +        for (String w : whites) {
  12.266 +            assert w.length() == 3 : "Expecting three letter string: '" + w + "'";
  12.267 +            w = w.toUpperCase();
  12.268 +            char column = w.charAt(1);
  12.269 +            int row = (w.charAt(2) - '0');
  12.270 +            
  12.271 +            Square s = BoardModel.findSquare(board, column, row);
  12.272 +            s.setPieceColor(Color.W);
  12.273 +            s.setPiece(BoardModel.PieceType.fromNotation(w.charAt(0)));
  12.274 +        }
  12.275 +        for (String w : blacks) {
  12.276 +            assert w.length() == 3 : "Expecting three letter string: '" + w + "'";
  12.277 +            w = w.toUpperCase();
  12.278 +            char column = w.charAt(1);
  12.279 +            int row = (w.charAt(2) - '0');
  12.280 +            
  12.281 +            Square s = BoardModel.findSquare(board, column, row);
  12.282 +            s.setPieceColor(Color.B);
  12.283 +            s.setPiece(BoardModel.PieceType.fromNotation(w.charAt(0)));
  12.284 +        }
  12.285 +        board.setTurn(turn);
  12.286 +    }
  12.287 +
  12.288 +    private static void checkRochade(Board b, Square s) {
  12.289 +        if (s.getPosition().getX() == 'E') {
  12.290 +            int y = s.getPosition().getY();
  12.291 +            final Square gRow = BoardModel.findSquare(b, 'G', y);
  12.292 +            if (
  12.293 +                BoardModel.findSquare(b, 'H', y).getPiece() == BoardModel.PieceType.ROCK 
  12.294 +                &&
  12.295 +                BoardModel.findSquare(b, 'F', y).getPiece() == null
  12.296 +                &&
  12.297 +                gRow.getPiece() == null
  12.298 +            ) {
  12.299 +                gRow.setAccessible(true);
  12.300 +            }
  12.301 +            final Square cRow = BoardModel.findSquare(b, 'C', y);
  12.302 +            if (
  12.303 +                BoardModel.findSquare(b, 'A', y).getPiece() == BoardModel.PieceType.ROCK 
  12.304 +                &&
  12.305 +                BoardModel.findSquare(b, 'B', y).getPiece() == null
  12.306 +                &&
  12.307 +                BoardModel.findSquare(b, 'D', y).getPiece() == null
  12.308 +                &&
  12.309 +                cRow.getPiece() == null
  12.310 +            ) {
  12.311 +                cRow.setAccessible(true);
  12.312 +            }
  12.313 +        }
  12.314 +    }
  12.315 +}
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/UIModel.java	Wed Sep 25 04:28:19 2013 +0200
    13.3 @@ -0,0 +1,116 @@
    13.4 +/**
    13.5 + * The MIT License (MIT)
    13.6 + *
    13.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    13.8 + *
    13.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   13.10 + * of this software and associated documentation files (the "Software"), to deal
   13.11 + * in the Software without restriction, including without limitation the rights
   13.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   13.13 + * copies of the Software, and to permit persons to whom the Software is
   13.14 + * furnished to do so, subject to the following conditions:
   13.15 + *
   13.16 + * The above copyright notice and this permission notice shall be included in
   13.17 + * all copies or substantial portions of the Software.
   13.18 + *
   13.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   13.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   13.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   13.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   13.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   13.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   13.25 + * THE SOFTWARE.
   13.26 + */
   13.27 +package org.apidesign.html.demo.chess;
   13.28 +
   13.29 +import java.io.IOException;
   13.30 +import java.net.URISyntaxException;
   13.31 +import java.util.List;
   13.32 +import java.util.logging.Logger;
   13.33 +import net.java.html.json.ComputedProperty;
   13.34 +import net.java.html.json.Function;
   13.35 +import net.java.html.json.Model;
   13.36 +import net.java.html.json.Property;
   13.37 +
   13.38 +/**
   13.39 + *
   13.40 + * @author Jaroslav Tulach <jtulach@netbeans.org>
   13.41 + */
   13.42 +@Model(className = "UI", properties = {
   13.43 +    @Property(name = "status", type = String.class),
   13.44 +    @Property(name = "selectedGameId", type = String.class),
   13.45 +    @Property(name = "boards", type = Board.class, array = true),
   13.46 +    @Property(name = "viewGames", type = Games.class),
   13.47 +})
   13.48 +public class UIModel {
   13.49 +    private static final Logger LOG = Logger.getLogger(UIModel.class.getName());
   13.50 +    
   13.51 +    @ComputedProperty static boolean viewGamesActive(String selectedGameId) {
   13.52 +        return selectedGameId == null;
   13.53 +    }
   13.54 +    
   13.55 +    @ComputedProperty static Board selectedBoard(String selectedGameId, List<Board> boards) {
   13.56 +        Board active = null;
   13.57 +        for (Board b : boards) {
   13.58 +            b.setActive(false);
   13.59 +            if (selectedGameId != null && selectedGameId.equals(b.getGameId())) {
   13.60 +                b.setActive(true);
   13.61 +                active = b;
   13.62 +            }
   13.63 +        }
   13.64 +        return active;
   13.65 +    }
   13.66 +    
   13.67 +    @Function static void activateGame(UI m, Board data) {
   13.68 +        m.setSelectedGameId(data.getGameId());
   13.69 +    }
   13.70 +
   13.71 +    @Function static void activateSettings(UI m) {
   13.72 +        m.setSelectedGameId(null);
   13.73 +    }
   13.74 +    
   13.75 +    private static int boardCnt;
   13.76 +    
   13.77 +    @Function static void createGame(UI u) {
   13.78 +        Board b = Rules.createBoard();
   13.79 +        b.setGameId("id" + ++boardCnt);
   13.80 +        final String wp = u.getViewGames().getWhitePlayer();
   13.81 +        b.setWhitePlayer(wp);
   13.82 +        final String bp = u.getViewGames().getBlackPlayer();
   13.83 +        b.setBlackPlayer(bp);
   13.84 +        b.setStatus(wp + " vs. " + bp);
   13.85 +        u.getBoards().add(b);
   13.86 +        u.setSelectedGameId(b.getGameId());
   13.87 +        
   13.88 +        u.getViewGames().setWhitePlayer(null);
   13.89 +        u.getViewGames().setBlackPlayer(null);
   13.90 +    }
   13.91 +
   13.92 +    
   13.93 +
   13.94 +
   13.95 +    private static Board findBoard(UI ui, String gameId) {
   13.96 +        for (Board tmp : ui.getBoards()) {
   13.97 +            if (tmp.getGameId().equals(gameId)) {
   13.98 +                return tmp;
   13.99 +            }
  13.100 +        }
  13.101 +        return null;
  13.102 +    }
  13.103 +    
  13.104 +    
  13.105 +    @Function static void joinGame(UI u) {
  13.106 +    }
  13.107 +
  13.108 +    @Function static void leave(UI ui, Board data) {
  13.109 +        ui.getBoards().remove(data);
  13.110 +        ui.setSelectedGameId(null);
  13.111 +    }
  13.112 +    
  13.113 +    public static void initialize(String... args) throws URISyntaxException, IOException {
  13.114 +        UI ui = new UI();
  13.115 +        ui.setStatus("Ready.");
  13.116 +        ui.applyBindings();
  13.117 +    }
  13.118 +
  13.119 +}
    14.1 Binary file chess/src/main/webapp/pages/DukeHTML.png has changed
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/chess/src/main/webapp/pages/css/bootstrap-responsive.css	Wed Sep 25 04:28:19 2013 +0200
    15.3 @@ -0,0 +1,1122 @@
    15.4 +/**
    15.5 + * The MIT License (MIT)
    15.6 + *
    15.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    15.8 + *
    15.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   15.10 + * of this software and associated documentation files (the "Software"), to deal
   15.11 + * in the Software without restriction, including without limitation the rights
   15.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   15.13 + * copies of the Software, and to permit persons to whom the Software is
   15.14 + * furnished to do so, subject to the following conditions:
   15.15 + *
   15.16 + * The above copyright notice and this permission notice shall be included in
   15.17 + * all copies or substantial portions of the Software.
   15.18 + *
   15.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   15.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   15.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   15.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   15.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   15.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   15.25 + * THE SOFTWARE.
   15.26 + */
   15.27 +.clearfix {
   15.28 +  *zoom: 1;
   15.29 +}
   15.30 +
   15.31 +.clearfix:before,
   15.32 +.clearfix:after {
   15.33 +  display: table;
   15.34 +  line-height: 0;
   15.35 +  content: "";
   15.36 +}
   15.37 +
   15.38 +.clearfix:after {
   15.39 +  clear: both;
   15.40 +}
   15.41 +
   15.42 +.hide-text {
   15.43 +  font: 0/0 a;
   15.44 +  color: transparent;
   15.45 +  text-shadow: none;
   15.46 +  background-color: transparent;
   15.47 +  border: 0;
   15.48 +}
   15.49 +
   15.50 +.input-block-level {
   15.51 +  display: block;
   15.52 +  width: 100%;
   15.53 +  min-height: 30px;
   15.54 +  -webkit-box-sizing: border-box;
   15.55 +     -moz-box-sizing: border-box;
   15.56 +          box-sizing: border-box;
   15.57 +}
   15.58 +
   15.59 +@-ms-viewport {
   15.60 +  width: device-width;
   15.61 +}
   15.62 +
   15.63 +.hidden {
   15.64 +  display: none;
   15.65 +  visibility: hidden;
   15.66 +}
   15.67 +
   15.68 +.visible-phone {
   15.69 +  display: none !important;
   15.70 +}
   15.71 +
   15.72 +.visible-tablet {
   15.73 +  display: none !important;
   15.74 +}
   15.75 +
   15.76 +.hidden-desktop {
   15.77 +  display: none !important;
   15.78 +}
   15.79 +
   15.80 +.visible-desktop {
   15.81 +  display: inherit !important;
   15.82 +}
   15.83 +
   15.84 +@media (min-width: 768px) and (max-width: 979px) {
   15.85 +  .hidden-desktop {
   15.86 +    display: inherit !important;
   15.87 +  }
   15.88 +  .visible-desktop {
   15.89 +    display: none !important ;
   15.90 +  }
   15.91 +  .visible-tablet {
   15.92 +    display: inherit !important;
   15.93 +  }
   15.94 +  .hidden-tablet {
   15.95 +    display: none !important;
   15.96 +  }
   15.97 +}
   15.98 +
   15.99 +@media (max-width: 767px) {
  15.100 +  .hidden-desktop {
  15.101 +    display: inherit !important;
  15.102 +  }
  15.103 +  .visible-desktop {
  15.104 +    display: none !important;
  15.105 +  }
  15.106 +  .visible-phone {
  15.107 +    display: inherit !important;
  15.108 +  }
  15.109 +  .hidden-phone {
  15.110 +    display: none !important;
  15.111 +  }
  15.112 +}
  15.113 +
  15.114 +.visible-print {
  15.115 +  display: none !important;
  15.116 +}
  15.117 +
  15.118 +@media print {
  15.119 +  .visible-print {
  15.120 +    display: inherit !important;
  15.121 +  }
  15.122 +  .hidden-print {
  15.123 +    display: none !important;
  15.124 +  }
  15.125 +}
  15.126 +
  15.127 +@media (min-width: 1200px) {
  15.128 +  .row {
  15.129 +    margin-left: -30px;
  15.130 +    *zoom: 1;
  15.131 +  }
  15.132 +  .row:before,
  15.133 +  .row:after {
  15.134 +    display: table;
  15.135 +    line-height: 0;
  15.136 +    content: "";
  15.137 +  }
  15.138 +  .row:after {
  15.139 +    clear: both;
  15.140 +  }
  15.141 +  [class*="span"] {
  15.142 +    float: left;
  15.143 +    min-height: 1px;
  15.144 +    margin-left: 30px;
  15.145 +  }
  15.146 +  .container,
  15.147 +  .navbar-static-top .container,
  15.148 +  .navbar-fixed-top .container,
  15.149 +  .navbar-fixed-bottom .container {
  15.150 +    width: 1170px;
  15.151 +  }
  15.152 +  .span12 {
  15.153 +    width: 1170px;
  15.154 +  }
  15.155 +  .span11 {
  15.156 +    width: 1070px;
  15.157 +  }
  15.158 +  .span10 {
  15.159 +    width: 970px;
  15.160 +  }
  15.161 +  .span9 {
  15.162 +    width: 870px;
  15.163 +  }
  15.164 +  .span8 {
  15.165 +    width: 770px;
  15.166 +  }
  15.167 +  .span7 {
  15.168 +    width: 670px;
  15.169 +  }
  15.170 +  .span6 {
  15.171 +    width: 570px;
  15.172 +  }
  15.173 +  .span5 {
  15.174 +    width: 470px;
  15.175 +  }
  15.176 +  .span4 {
  15.177 +    width: 370px;
  15.178 +  }
  15.179 +  .span3 {
  15.180 +    width: 270px;
  15.181 +  }
  15.182 +  .span2 {
  15.183 +    width: 170px;
  15.184 +  }
  15.185 +  .span1 {
  15.186 +    width: 70px;
  15.187 +  }
  15.188 +  .offset12 {
  15.189 +    margin-left: 1230px;
  15.190 +  }
  15.191 +  .offset11 {
  15.192 +    margin-left: 1130px;
  15.193 +  }
  15.194 +  .offset10 {
  15.195 +    margin-left: 1030px;
  15.196 +  }
  15.197 +  .offset9 {
  15.198 +    margin-left: 930px;
  15.199 +  }
  15.200 +  .offset8 {
  15.201 +    margin-left: 830px;
  15.202 +  }
  15.203 +  .offset7 {
  15.204 +    margin-left: 730px;
  15.205 +  }
  15.206 +  .offset6 {
  15.207 +    margin-left: 630px;
  15.208 +  }
  15.209 +  .offset5 {
  15.210 +    margin-left: 530px;
  15.211 +  }
  15.212 +  .offset4 {
  15.213 +    margin-left: 430px;
  15.214 +  }
  15.215 +  .offset3 {
  15.216 +    margin-left: 330px;
  15.217 +  }
  15.218 +  .offset2 {
  15.219 +    margin-left: 230px;
  15.220 +  }
  15.221 +  .offset1 {
  15.222 +    margin-left: 130px;
  15.223 +  }
  15.224 +  .row-fluid {
  15.225 +    width: 100%;
  15.226 +    *zoom: 1;
  15.227 +  }
  15.228 +  .row-fluid:before,
  15.229 +  .row-fluid:after {
  15.230 +    display: table;
  15.231 +    line-height: 0;
  15.232 +    content: "";
  15.233 +  }
  15.234 +  .row-fluid:after {
  15.235 +    clear: both;
  15.236 +  }
  15.237 +  .row-fluid [class*="span"] {
  15.238 +    display: block;
  15.239 +    float: left;
  15.240 +    width: 100%;
  15.241 +    min-height: 30px;
  15.242 +    margin-left: 2.564102564102564%;
  15.243 +    *margin-left: 2.5109110747408616%;
  15.244 +    -webkit-box-sizing: border-box;
  15.245 +       -moz-box-sizing: border-box;
  15.246 +            box-sizing: border-box;
  15.247 +  }
  15.248 +  .row-fluid [class*="span"]:first-child {
  15.249 +    margin-left: 0;
  15.250 +  }
  15.251 +  .row-fluid .controls-row [class*="span"] + [class*="span"] {
  15.252 +    margin-left: 2.564102564102564%;
  15.253 +  }
  15.254 +  .row-fluid .span12 {
  15.255 +    width: 100%;
  15.256 +    *width: 99.94680851063829%;
  15.257 +  }
  15.258 +  .row-fluid .span11 {
  15.259 +    width: 91.45299145299145%;
  15.260 +    *width: 91.39979996362975%;
  15.261 +  }
  15.262 +  .row-fluid .span10 {
  15.263 +    width: 82.90598290598291%;
  15.264 +    *width: 82.8527914166212%;
  15.265 +  }
  15.266 +  .row-fluid .span9 {
  15.267 +    width: 74.35897435897436%;
  15.268 +    *width: 74.30578286961266%;
  15.269 +  }
  15.270 +  .row-fluid .span8 {
  15.271 +    width: 65.81196581196582%;
  15.272 +    *width: 65.75877432260411%;
  15.273 +  }
  15.274 +  .row-fluid .span7 {
  15.275 +    width: 57.26495726495726%;
  15.276 +    *width: 57.21176577559556%;
  15.277 +  }
  15.278 +  .row-fluid .span6 {
  15.279 +    width: 48.717948717948715%;
  15.280 +    *width: 48.664757228587014%;
  15.281 +  }
  15.282 +  .row-fluid .span5 {
  15.283 +    width: 40.17094017094017%;
  15.284 +    *width: 40.11774868157847%;
  15.285 +  }
  15.286 +  .row-fluid .span4 {
  15.287 +    width: 31.623931623931625%;
  15.288 +    *width: 31.570740134569924%;
  15.289 +  }
  15.290 +  .row-fluid .span3 {
  15.291 +    width: 23.076923076923077%;
  15.292 +    *width: 23.023731587561375%;
  15.293 +  }
  15.294 +  .row-fluid .span2 {
  15.295 +    width: 14.52991452991453%;
  15.296 +    *width: 14.476723040552828%;
  15.297 +  }
  15.298 +  .row-fluid .span1 {
  15.299 +    width: 5.982905982905983%;
  15.300 +    *width: 5.929714493544281%;
  15.301 +  }
  15.302 +  .row-fluid .offset12 {
  15.303 +    margin-left: 105.12820512820512%;
  15.304 +    *margin-left: 105.02182214948171%;
  15.305 +  }
  15.306 +  .row-fluid .offset12:first-child {
  15.307 +    margin-left: 102.56410256410257%;
  15.308 +    *margin-left: 102.45771958537915%;
  15.309 +  }
  15.310 +  .row-fluid .offset11 {
  15.311 +    margin-left: 96.58119658119658%;
  15.312 +    *margin-left: 96.47481360247316%;
  15.313 +  }
  15.314 +  .row-fluid .offset11:first-child {
  15.315 +    margin-left: 94.01709401709402%;
  15.316 +    *margin-left: 93.91071103837061%;
  15.317 +  }
  15.318 +  .row-fluid .offset10 {
  15.319 +    margin-left: 88.03418803418803%;
  15.320 +    *margin-left: 87.92780505546462%;
  15.321 +  }
  15.322 +  .row-fluid .offset10:first-child {
  15.323 +    margin-left: 85.47008547008548%;
  15.324 +    *margin-left: 85.36370249136206%;
  15.325 +  }
  15.326 +  .row-fluid .offset9 {
  15.327 +    margin-left: 79.48717948717949%;
  15.328 +    *margin-left: 79.38079650845607%;
  15.329 +  }
  15.330 +  .row-fluid .offset9:first-child {
  15.331 +    margin-left: 76.92307692307693%;
  15.332 +    *margin-left: 76.81669394435352%;
  15.333 +  }
  15.334 +  .row-fluid .offset8 {
  15.335 +    margin-left: 70.94017094017094%;
  15.336 +    *margin-left: 70.83378796144753%;
  15.337 +  }
  15.338 +  .row-fluid .offset8:first-child {
  15.339 +    margin-left: 68.37606837606839%;
  15.340 +    *margin-left: 68.26968539734497%;
  15.341 +  }
  15.342 +  .row-fluid .offset7 {
  15.343 +    margin-left: 62.393162393162385%;
  15.344 +    *margin-left: 62.28677941443899%;
  15.345 +  }
  15.346 +  .row-fluid .offset7:first-child {
  15.347 +    margin-left: 59.82905982905982%;
  15.348 +    *margin-left: 59.72267685033642%;
  15.349 +  }
  15.350 +  .row-fluid .offset6 {
  15.351 +    margin-left: 53.84615384615384%;
  15.352 +    *margin-left: 53.739770867430444%;
  15.353 +  }
  15.354 +  .row-fluid .offset6:first-child {
  15.355 +    margin-left: 51.28205128205128%;
  15.356 +    *margin-left: 51.175668303327875%;
  15.357 +  }
  15.358 +  .row-fluid .offset5 {
  15.359 +    margin-left: 45.299145299145295%;
  15.360 +    *margin-left: 45.1927623204219%;
  15.361 +  }
  15.362 +  .row-fluid .offset5:first-child {
  15.363 +    margin-left: 42.73504273504273%;
  15.364 +    *margin-left: 42.62865975631933%;
  15.365 +  }
  15.366 +  .row-fluid .offset4 {
  15.367 +    margin-left: 36.75213675213675%;
  15.368 +    *margin-left: 36.645753773413354%;
  15.369 +  }
  15.370 +  .row-fluid .offset4:first-child {
  15.371 +    margin-left: 34.18803418803419%;
  15.372 +    *margin-left: 34.081651209310785%;
  15.373 +  }
  15.374 +  .row-fluid .offset3 {
  15.375 +    margin-left: 28.205128205128204%;
  15.376 +    *margin-left: 28.0987452264048%;
  15.377 +  }
  15.378 +  .row-fluid .offset3:first-child {
  15.379 +    margin-left: 25.641025641025642%;
  15.380 +    *margin-left: 25.53464266230224%;
  15.381 +  }
  15.382 +  .row-fluid .offset2 {
  15.383 +    margin-left: 19.65811965811966%;
  15.384 +    *margin-left: 19.551736679396257%;
  15.385 +  }
  15.386 +  .row-fluid .offset2:first-child {
  15.387 +    margin-left: 17.094017094017094%;
  15.388 +    *margin-left: 16.98763411529369%;
  15.389 +  }
  15.390 +  .row-fluid .offset1 {
  15.391 +    margin-left: 11.11111111111111%;
  15.392 +    *margin-left: 11.004728132387708%;
  15.393 +  }
  15.394 +  .row-fluid .offset1:first-child {
  15.395 +    margin-left: 8.547008547008547%;
  15.396 +    *margin-left: 8.440625568285142%;
  15.397 +  }
  15.398 +  input,
  15.399 +  textarea,
  15.400 +  .uneditable-input {
  15.401 +    margin-left: 0;
  15.402 +  }
  15.403 +  .controls-row [class*="span"] + [class*="span"] {
  15.404 +    margin-left: 30px;
  15.405 +  }
  15.406 +  input.span12,
  15.407 +  textarea.span12,
  15.408 +  .uneditable-input.span12 {
  15.409 +    width: 1156px;
  15.410 +  }
  15.411 +  input.span11,
  15.412 +  textarea.span11,
  15.413 +  .uneditable-input.span11 {
  15.414 +    width: 1056px;
  15.415 +  }
  15.416 +  input.span10,
  15.417 +  textarea.span10,
  15.418 +  .uneditable-input.span10 {
  15.419 +    width: 956px;
  15.420 +  }
  15.421 +  input.span9,
  15.422 +  textarea.span9,
  15.423 +  .uneditable-input.span9 {
  15.424 +    width: 856px;
  15.425 +  }
  15.426 +  input.span8,
  15.427 +  textarea.span8,
  15.428 +  .uneditable-input.span8 {
  15.429 +    width: 756px;
  15.430 +  }
  15.431 +  input.span7,
  15.432 +  textarea.span7,
  15.433 +  .uneditable-input.span7 {
  15.434 +    width: 656px;
  15.435 +  }
  15.436 +  input.span6,
  15.437 +  textarea.span6,
  15.438 +  .uneditable-input.span6 {
  15.439 +    width: 556px;
  15.440 +  }
  15.441 +  input.span5,
  15.442 +  textarea.span5,
  15.443 +  .uneditable-input.span5 {
  15.444 +    width: 456px;
  15.445 +  }
  15.446 +  input.span4,
  15.447 +  textarea.span4,
  15.448 +  .uneditable-input.span4 {
  15.449 +    width: 356px;
  15.450 +  }
  15.451 +  input.span3,
  15.452 +  textarea.span3,
  15.453 +  .uneditable-input.span3 {
  15.454 +    width: 256px;
  15.455 +  }
  15.456 +  input.span2,
  15.457 +  textarea.span2,
  15.458 +  .uneditable-input.span2 {
  15.459 +    width: 156px;
  15.460 +  }
  15.461 +  input.span1,
  15.462 +  textarea.span1,
  15.463 +  .uneditable-input.span1 {
  15.464 +    width: 56px;
  15.465 +  }
  15.466 +  .thumbnails {
  15.467 +    margin-left: -30px;
  15.468 +  }
  15.469 +  .thumbnails > li {
  15.470 +    margin-left: 30px;
  15.471 +  }
  15.472 +  .row-fluid .thumbnails {
  15.473 +    margin-left: 0;
  15.474 +  }
  15.475 +}
  15.476 +
  15.477 +@media (min-width: 768px) and (max-width: 979px) {
  15.478 +  .row {
  15.479 +    margin-left: -20px;
  15.480 +    *zoom: 1;
  15.481 +  }
  15.482 +  .row:before,
  15.483 +  .row:after {
  15.484 +    display: table;
  15.485 +    line-height: 0;
  15.486 +    content: "";
  15.487 +  }
  15.488 +  .row:after {
  15.489 +    clear: both;
  15.490 +  }
  15.491 +  [class*="span"] {
  15.492 +    float: left;
  15.493 +    min-height: 1px;
  15.494 +    margin-left: 20px;
  15.495 +  }
  15.496 +  .container,
  15.497 +  .navbar-static-top .container,
  15.498 +  .navbar-fixed-top .container,
  15.499 +  .navbar-fixed-bottom .container {
  15.500 +    width: 724px;
  15.501 +  }
  15.502 +  .span12 {
  15.503 +    width: 724px;
  15.504 +  }
  15.505 +  .span11 {
  15.506 +    width: 662px;
  15.507 +  }
  15.508 +  .span10 {
  15.509 +    width: 600px;
  15.510 +  }
  15.511 +  .span9 {
  15.512 +    width: 538px;
  15.513 +  }
  15.514 +  .span8 {
  15.515 +    width: 476px;
  15.516 +  }
  15.517 +  .span7 {
  15.518 +    width: 414px;
  15.519 +  }
  15.520 +  .span6 {
  15.521 +    width: 352px;
  15.522 +  }
  15.523 +  .span5 {
  15.524 +    width: 290px;
  15.525 +  }
  15.526 +  .span4 {
  15.527 +    width: 228px;
  15.528 +  }
  15.529 +  .span3 {
  15.530 +    width: 166px;
  15.531 +  }
  15.532 +  .span2 {
  15.533 +    width: 104px;
  15.534 +  }
  15.535 +  .span1 {
  15.536 +    width: 42px;
  15.537 +  }
  15.538 +  .offset12 {
  15.539 +    margin-left: 764px;
  15.540 +  }
  15.541 +  .offset11 {
  15.542 +    margin-left: 702px;
  15.543 +  }
  15.544 +  .offset10 {
  15.545 +    margin-left: 640px;
  15.546 +  }
  15.547 +  .offset9 {
  15.548 +    margin-left: 578px;
  15.549 +  }
  15.550 +  .offset8 {
  15.551 +    margin-left: 516px;
  15.552 +  }
  15.553 +  .offset7 {
  15.554 +    margin-left: 454px;
  15.555 +  }
  15.556 +  .offset6 {
  15.557 +    margin-left: 392px;
  15.558 +  }
  15.559 +  .offset5 {
  15.560 +    margin-left: 330px;
  15.561 +  }
  15.562 +  .offset4 {
  15.563 +    margin-left: 268px;
  15.564 +  }
  15.565 +  .offset3 {
  15.566 +    margin-left: 206px;
  15.567 +  }
  15.568 +  .offset2 {
  15.569 +    margin-left: 144px;
  15.570 +  }
  15.571 +  .offset1 {
  15.572 +    margin-left: 82px;
  15.573 +  }
  15.574 +  .row-fluid {
  15.575 +    width: 100%;
  15.576 +    *zoom: 1;
  15.577 +  }
  15.578 +  .row-fluid:before,
  15.579 +  .row-fluid:after {
  15.580 +    display: table;
  15.581 +    line-height: 0;
  15.582 +    content: "";
  15.583 +  }
  15.584 +  .row-fluid:after {
  15.585 +    clear: both;
  15.586 +  }
  15.587 +  .row-fluid [class*="span"] {
  15.588 +    display: block;
  15.589 +    float: left;
  15.590 +    width: 100%;
  15.591 +    min-height: 30px;
  15.592 +    margin-left: 2.7624309392265194%;
  15.593 +    *margin-left: 2.709239449864817%;
  15.594 +    -webkit-box-sizing: border-box;
  15.595 +       -moz-box-sizing: border-box;
  15.596 +            box-sizing: border-box;
  15.597 +  }
  15.598 +  .row-fluid [class*="span"]:first-child {
  15.599 +    margin-left: 0;
  15.600 +  }
  15.601 +  .row-fluid .controls-row [class*="span"] + [class*="span"] {
  15.602 +    margin-left: 2.7624309392265194%;
  15.603 +  }
  15.604 +  .row-fluid .span12 {
  15.605 +    width: 100%;
  15.606 +    *width: 99.94680851063829%;
  15.607 +  }
  15.608 +  .row-fluid .span11 {
  15.609 +    width: 91.43646408839778%;
  15.610 +    *width: 91.38327259903608%;
  15.611 +  }
  15.612 +  .row-fluid .span10 {
  15.613 +    width: 82.87292817679558%;
  15.614 +    *width: 82.81973668743387%;
  15.615 +  }
  15.616 +  .row-fluid .span9 {
  15.617 +    width: 74.30939226519337%;
  15.618 +    *width: 74.25620077583166%;
  15.619 +  }
  15.620 +  .row-fluid .span8 {
  15.621 +    width: 65.74585635359117%;
  15.622 +    *width: 65.69266486422946%;
  15.623 +  }
  15.624 +  .row-fluid .span7 {
  15.625 +    width: 57.18232044198895%;
  15.626 +    *width: 57.12912895262725%;
  15.627 +  }
  15.628 +  .row-fluid .span6 {
  15.629 +    width: 48.61878453038674%;
  15.630 +    *width: 48.56559304102504%;
  15.631 +  }
  15.632 +  .row-fluid .span5 {
  15.633 +    width: 40.05524861878453%;
  15.634 +    *width: 40.00205712942283%;
  15.635 +  }
  15.636 +  .row-fluid .span4 {
  15.637 +    width: 31.491712707182323%;
  15.638 +    *width: 31.43852121782062%;
  15.639 +  }
  15.640 +  .row-fluid .span3 {
  15.641 +    width: 22.92817679558011%;
  15.642 +    *width: 22.87498530621841%;
  15.643 +  }
  15.644 +  .row-fluid .span2 {
  15.645 +    width: 14.3646408839779%;
  15.646 +    *width: 14.311449394616199%;
  15.647 +  }
  15.648 +  .row-fluid .span1 {
  15.649 +    width: 5.801104972375691%;
  15.650 +    *width: 5.747913483013988%;
  15.651 +  }
  15.652 +  .row-fluid .offset12 {
  15.653 +    margin-left: 105.52486187845304%;
  15.654 +    *margin-left: 105.41847889972962%;
  15.655 +  }
  15.656 +  .row-fluid .offset12:first-child {
  15.657 +    margin-left: 102.76243093922652%;
  15.658 +    *margin-left: 102.6560479605031%;
  15.659 +  }
  15.660 +  .row-fluid .offset11 {
  15.661 +    margin-left: 96.96132596685082%;
  15.662 +    *margin-left: 96.8549429881274%;
  15.663 +  }
  15.664 +  .row-fluid .offset11:first-child {
  15.665 +    margin-left: 94.1988950276243%;
  15.666 +    *margin-left: 94.09251204890089%;
  15.667 +  }
  15.668 +  .row-fluid .offset10 {
  15.669 +    margin-left: 88.39779005524862%;
  15.670 +    *margin-left: 88.2914070765252%;
  15.671 +  }
  15.672 +  .row-fluid .offset10:first-child {
  15.673 +    margin-left: 85.6353591160221%;
  15.674 +    *margin-left: 85.52897613729868%;
  15.675 +  }
  15.676 +  .row-fluid .offset9 {
  15.677 +    margin-left: 79.8342541436464%;
  15.678 +    *margin-left: 79.72787116492299%;
  15.679 +  }
  15.680 +  .row-fluid .offset9:first-child {
  15.681 +    margin-left: 77.07182320441989%;
  15.682 +    *margin-left: 76.96544022569647%;
  15.683 +  }
  15.684 +  .row-fluid .offset8 {
  15.685 +    margin-left: 71.2707182320442%;
  15.686 +    *margin-left: 71.16433525332079%;
  15.687 +  }
  15.688 +  .row-fluid .offset8:first-child {
  15.689 +    margin-left: 68.50828729281768%;
  15.690 +    *margin-left: 68.40190431409427%;
  15.691 +  }
  15.692 +  .row-fluid .offset7 {
  15.693 +    margin-left: 62.70718232044199%;
  15.694 +    *margin-left: 62.600799341718584%;
  15.695 +  }
  15.696 +  .row-fluid .offset7:first-child {
  15.697 +    margin-left: 59.94475138121547%;
  15.698 +    *margin-left: 59.838368402492065%;
  15.699 +  }
  15.700 +  .row-fluid .offset6 {
  15.701 +    margin-left: 54.14364640883978%;
  15.702 +    *margin-left: 54.037263430116376%;
  15.703 +  }
  15.704 +  .row-fluid .offset6:first-child {
  15.705 +    margin-left: 51.38121546961326%;
  15.706 +    *margin-left: 51.27483249088986%;
  15.707 +  }
  15.708 +  .row-fluid .offset5 {
  15.709 +    margin-left: 45.58011049723757%;
  15.710 +    *margin-left: 45.47372751851417%;
  15.711 +  }
  15.712 +  .row-fluid .offset5:first-child {
  15.713 +    margin-left: 42.81767955801105%;
  15.714 +    *margin-left: 42.71129657928765%;
  15.715 +  }
  15.716 +  .row-fluid .offset4 {
  15.717 +    margin-left: 37.01657458563536%;
  15.718 +    *margin-left: 36.91019160691196%;
  15.719 +  }
  15.720 +  .row-fluid .offset4:first-child {
  15.721 +    margin-left: 34.25414364640884%;
  15.722 +    *margin-left: 34.14776066768544%;
  15.723 +  }
  15.724 +  .row-fluid .offset3 {
  15.725 +    margin-left: 28.45303867403315%;
  15.726 +    *margin-left: 28.346655695309746%;
  15.727 +  }
  15.728 +  .row-fluid .offset3:first-child {
  15.729 +    margin-left: 25.69060773480663%;
  15.730 +    *margin-left: 25.584224756083227%;
  15.731 +  }
  15.732 +  .row-fluid .offset2 {
  15.733 +    margin-left: 19.88950276243094%;
  15.734 +    *margin-left: 19.783119783707537%;
  15.735 +  }
  15.736 +  .row-fluid .offset2:first-child {
  15.737 +    margin-left: 17.12707182320442%;
  15.738 +    *margin-left: 17.02068884448102%;
  15.739 +  }
  15.740 +  .row-fluid .offset1 {
  15.741 +    margin-left: 11.32596685082873%;
  15.742 +    *margin-left: 11.219583872105325%;
  15.743 +  }
  15.744 +  .row-fluid .offset1:first-child {
  15.745 +    margin-left: 8.56353591160221%;
  15.746 +    *margin-left: 8.457152932878806%;
  15.747 +  }
  15.748 +  input,
  15.749 +  textarea,
  15.750 +  .uneditable-input {
  15.751 +    margin-left: 0;
  15.752 +  }
  15.753 +  .controls-row [class*="span"] + [class*="span"] {
  15.754 +    margin-left: 20px;
  15.755 +  }
  15.756 +  input.span12,
  15.757 +  textarea.span12,
  15.758 +  .uneditable-input.span12 {
  15.759 +    width: 710px;
  15.760 +  }
  15.761 +  input.span11,
  15.762 +  textarea.span11,
  15.763 +  .uneditable-input.span11 {
  15.764 +    width: 648px;
  15.765 +  }
  15.766 +  input.span10,
  15.767 +  textarea.span10,
  15.768 +  .uneditable-input.span10 {
  15.769 +    width: 586px;
  15.770 +  }
  15.771 +  input.span9,
  15.772 +  textarea.span9,
  15.773 +  .uneditable-input.span9 {
  15.774 +    width: 524px;
  15.775 +  }
  15.776 +  input.span8,
  15.777 +  textarea.span8,
  15.778 +  .uneditable-input.span8 {
  15.779 +    width: 462px;
  15.780 +  }
  15.781 +  input.span7,
  15.782 +  textarea.span7,
  15.783 +  .uneditable-input.span7 {
  15.784 +    width: 400px;
  15.785 +  }
  15.786 +  input.span6,
  15.787 +  textarea.span6,
  15.788 +  .uneditable-input.span6 {
  15.789 +    width: 338px;
  15.790 +  }
  15.791 +  input.span5,
  15.792 +  textarea.span5,
  15.793 +  .uneditable-input.span5 {
  15.794 +    width: 276px;
  15.795 +  }
  15.796 +  input.span4,
  15.797 +  textarea.span4,
  15.798 +  .uneditable-input.span4 {
  15.799 +    width: 214px;
  15.800 +  }
  15.801 +  input.span3,
  15.802 +  textarea.span3,
  15.803 +  .uneditable-input.span3 {
  15.804 +    width: 152px;
  15.805 +  }
  15.806 +  input.span2,
  15.807 +  textarea.span2,
  15.808 +  .uneditable-input.span2 {
  15.809 +    width: 90px;
  15.810 +  }
  15.811 +  input.span1,
  15.812 +  textarea.span1,
  15.813 +  .uneditable-input.span1 {
  15.814 +    width: 28px;
  15.815 +  }
  15.816 +}
  15.817 +
  15.818 +@media (max-width: 767px) {
  15.819 +  body {
  15.820 +    padding-right: 20px;
  15.821 +    padding-left: 20px;
  15.822 +  }
  15.823 +  .navbar-fixed-top,
  15.824 +  .navbar-fixed-bottom,
  15.825 +  .navbar-static-top {
  15.826 +    margin-right: -20px;
  15.827 +    margin-left: -20px;
  15.828 +  }
  15.829 +  .container-fluid {
  15.830 +    padding: 0;
  15.831 +  }
  15.832 +  .dl-horizontal dt {
  15.833 +    float: none;
  15.834 +    width: auto;
  15.835 +    clear: none;
  15.836 +    text-align: left;
  15.837 +  }
  15.838 +  .dl-horizontal dd {
  15.839 +    margin-left: 0;
  15.840 +  }
  15.841 +  .container {
  15.842 +    width: auto;
  15.843 +  }
  15.844 +  .row-fluid {
  15.845 +    width: 100%;
  15.846 +  }
  15.847 +  .row,
  15.848 +  .thumbnails {
  15.849 +    margin-left: 0;
  15.850 +  }
  15.851 +  .thumbnails > li {
  15.852 +    float: none;
  15.853 +    margin-left: 0;
  15.854 +  }
  15.855 +  [class*="span"],
  15.856 +  .uneditable-input[class*="span"],
  15.857 +  .row-fluid [class*="span"] {
  15.858 +    display: block;
  15.859 +    float: none;
  15.860 +    width: 100%;
  15.861 +    margin-left: 0;
  15.862 +    -webkit-box-sizing: border-box;
  15.863 +       -moz-box-sizing: border-box;
  15.864 +            box-sizing: border-box;
  15.865 +  }
  15.866 +  .span12,
  15.867 +  .row-fluid .span12 {
  15.868 +    width: 100%;
  15.869 +    -webkit-box-sizing: border-box;
  15.870 +       -moz-box-sizing: border-box;
  15.871 +            box-sizing: border-box;
  15.872 +  }
  15.873 +  .row-fluid [class*="offset"]:first-child {
  15.874 +    margin-left: 0;
  15.875 +  }
  15.876 +  .input-large,
  15.877 +  .input-xlarge,
  15.878 +  .input-xxlarge,
  15.879 +  input[class*="span"],
  15.880 +  select[class*="span"],
  15.881 +  textarea[class*="span"],
  15.882 +  .uneditable-input {
  15.883 +    display: block;
  15.884 +    width: 100%;
  15.885 +    min-height: 30px;
  15.886 +    -webkit-box-sizing: border-box;
  15.887 +       -moz-box-sizing: border-box;
  15.888 +            box-sizing: border-box;
  15.889 +  }
  15.890 +  .input-prepend input,
  15.891 +  .input-append input,
  15.892 +  .input-prepend input[class*="span"],
  15.893 +  .input-append input[class*="span"] {
  15.894 +    display: inline-block;
  15.895 +    width: auto;
  15.896 +  }
  15.897 +  .controls-row [class*="span"] + [class*="span"] {
  15.898 +    margin-left: 0;
  15.899 +  }
  15.900 +  .modal {
  15.901 +    position: fixed;
  15.902 +    top: 20px;
  15.903 +    right: 20px;
  15.904 +    left: 20px;
  15.905 +    width: auto;
  15.906 +    margin: 0;
  15.907 +  }
  15.908 +  .modal.fade {
  15.909 +    top: -100px;
  15.910 +  }
  15.911 +  .modal.fade.in {
  15.912 +    top: 20px;
  15.913 +  }
  15.914 +}
  15.915 +
  15.916 +@media (max-width: 480px) {
  15.917 +  .nav-collapse {
  15.918 +    -webkit-transform: translate3d(0, 0, 0);
  15.919 +  }
  15.920 +  .page-header h1 small {
  15.921 +    display: block;
  15.922 +    line-height: 20px;
  15.923 +  }
  15.924 +  input[type="checkbox"],
  15.925 +  input[type="radio"] {
  15.926 +    border: 1px solid #ccc;
  15.927 +  }
  15.928 +  .form-horizontal .control-label {
  15.929 +    float: none;
  15.930 +    width: auto;
  15.931 +    padding-top: 0;
  15.932 +    text-align: left;
  15.933 +  }
  15.934 +  .form-horizontal .controls {
  15.935 +    margin-left: 0;
  15.936 +  }
  15.937 +  .form-horizontal .control-list {
  15.938 +    padding-top: 0;
  15.939 +  }
  15.940 +  .form-horizontal .form-actions {
  15.941 +    padding-right: 10px;
  15.942 +    padding-left: 10px;
  15.943 +  }
  15.944 +  .media .pull-left,
  15.945 +  .media .pull-right {
  15.946 +    display: block;
  15.947 +    float: none;
  15.948 +    margin-bottom: 10px;
  15.949 +  }
  15.950 +  .media-object {
  15.951 +    margin-right: 0;
  15.952 +    margin-left: 0;
  15.953 +  }
  15.954 +  .modal {
  15.955 +    top: 10px;
  15.956 +    right: 10px;
  15.957 +    left: 10px;
  15.958 +  }
  15.959 +  .modal-header .close {
  15.960 +    padding: 10px;
  15.961 +    margin: -10px;
  15.962 +  }
  15.963 +  .carousel-caption {
  15.964 +    position: static;
  15.965 +  }
  15.966 +}
  15.967 +
  15.968 +@media (max-width: 979px) {
  15.969 +  body {
  15.970 +    padding-top: 0;
  15.971 +  }
  15.972 +  .navbar-fixed-top,
  15.973 +  .navbar-fixed-bottom {
  15.974 +    position: static;
  15.975 +  }
  15.976 +  .navbar-fixed-top {
  15.977 +    margin-bottom: 20px;
  15.978 +  }
  15.979 +  .navbar-fixed-bottom {
  15.980 +    margin-top: 20px;
  15.981 +  }
  15.982 +  .navbar-fixed-top .navbar-inner,
  15.983 +  .navbar-fixed-bottom .navbar-inner {
  15.984 +    padding: 5px;
  15.985 +  }
  15.986 +  .navbar .container {
  15.987 +    width: auto;
  15.988 +    padding: 0;
  15.989 +  }
  15.990 +  .navbar .brand {
  15.991 +    padding-right: 10px;
  15.992 +    padding-left: 10px;
  15.993 +    margin: 0 0 0 -5px;
  15.994 +  }
  15.995 +  .nav-collapse {
  15.996 +    clear: both;
  15.997 +  }
  15.998 +  .nav-collapse .nav {
  15.999 +    float: none;
 15.1000 +    margin: 0 0 10px;
 15.1001 +  }
 15.1002 +  .nav-collapse .nav > li {
 15.1003 +    float: none;
 15.1004 +  }
 15.1005 +  .nav-collapse .nav > li > a {
 15.1006 +    margin-bottom: 2px;
 15.1007 +  }
 15.1008 +  .nav-collapse .nav > .divider-vertical {
 15.1009 +    display: none;
 15.1010 +  }
 15.1011 +  .nav-collapse .nav .nav-header {
 15.1012 +    color: #777777;
 15.1013 +    text-shadow: none;
 15.1014 +  }
 15.1015 +  .nav-collapse .nav > li > a,
 15.1016 +  .nav-collapse .dropdown-menu a {
 15.1017 +    padding: 9px 15px;
 15.1018 +    font-weight: bold;
 15.1019 +    color: #777777;
 15.1020 +    -webkit-border-radius: 3px;
 15.1021 +       -moz-border-radius: 3px;
 15.1022 +            border-radius: 3px;
 15.1023 +  }
 15.1024 +  .nav-collapse .btn {
 15.1025 +    padding: 4px 10px 4px;
 15.1026 +    font-weight: normal;
 15.1027 +    -webkit-border-radius: 4px;
 15.1028 +       -moz-border-radius: 4px;
 15.1029 +            border-radius: 4px;
 15.1030 +  }
 15.1031 +  .nav-collapse .dropdown-menu li + li a {
 15.1032 +    margin-bottom: 2px;
 15.1033 +  }
 15.1034 +  .nav-collapse .nav > li > a:hover,
 15.1035 +  .nav-collapse .nav > li > a:focus,
 15.1036 +  .nav-collapse .dropdown-menu a:hover,
 15.1037 +  .nav-collapse .dropdown-menu a:focus {
 15.1038 +    background-color: #f2f2f2;
 15.1039 +  }
 15.1040 +  .navbar-inverse .nav-collapse .nav > li > a,
 15.1041 +  .navbar-inverse .nav-collapse .dropdown-menu a {
 15.1042 +    color: #999999;
 15.1043 +  }
 15.1044 +  .navbar-inverse .nav-collapse .nav > li > a:hover,
 15.1045 +  .navbar-inverse .nav-collapse .nav > li > a:focus,
 15.1046 +  .navbar-inverse .nav-collapse .dropdown-menu a:hover,
 15.1047 +  .navbar-inverse .nav-collapse .dropdown-menu a:focus {
 15.1048 +    background-color: #111111;
 15.1049 +  }
 15.1050 +  .nav-collapse.in .btn-group {
 15.1051 +    padding: 0;
 15.1052 +    margin-top: 5px;
 15.1053 +  }
 15.1054 +  .nav-collapse .dropdown-menu {
 15.1055 +    position: static;
 15.1056 +    top: auto;
 15.1057 +    left: auto;
 15.1058 +    display: none;
 15.1059 +    float: none;
 15.1060 +    max-width: none;
 15.1061 +    padding: 0;
 15.1062 +    margin: 0 15px;
 15.1063 +    background-color: transparent;
 15.1064 +    border: none;
 15.1065 +    -webkit-border-radius: 0;
 15.1066 +       -moz-border-radius: 0;
 15.1067 +            border-radius: 0;
 15.1068 +    -webkit-box-shadow: none;
 15.1069 +       -moz-box-shadow: none;
 15.1070 +            box-shadow: none;
 15.1071 +  }
 15.1072 +  .nav-collapse .open > .dropdown-menu {
 15.1073 +    display: block;
 15.1074 +  }
 15.1075 +  .nav-collapse .dropdown-menu:before,
 15.1076 +  .nav-collapse .dropdown-menu:after {
 15.1077 +    display: none;
 15.1078 +  }
 15.1079 +  .nav-collapse .dropdown-menu .divider {
 15.1080 +    display: none;
 15.1081 +  }
 15.1082 +  .nav-collapse .nav > li > .dropdown-menu:before,
 15.1083 +  .nav-collapse .nav > li > .dropdown-menu:after {
 15.1084 +    display: none;
 15.1085 +  }
 15.1086 +  .nav-collapse .navbar-form,
 15.1087 +  .nav-collapse .navbar-search {
 15.1088 +    float: none;
 15.1089 +    padding: 10px 15px;
 15.1090 +    margin: 10px 0;
 15.1091 +    border-top: 1px solid #f2f2f2;
 15.1092 +    border-bottom: 1px solid #f2f2f2;
 15.1093 +    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
 15.1094 +       -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
 15.1095 +            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
 15.1096 +  }
 15.1097 +  .navbar-inverse .nav-collapse .navbar-form,
 15.1098 +  .navbar-inverse .nav-collapse .navbar-search {
 15.1099 +    border-top-color: #111111;
 15.1100 +    border-bottom-color: #111111;
 15.1101 +  }
 15.1102 +  .navbar .nav-collapse .nav.pull-right {
 15.1103 +    float: none;
 15.1104 +    margin-left: 0;
 15.1105 +  }
 15.1106 +  .nav-collapse,
 15.1107 +  .nav-collapse.collapse {
 15.1108 +    height: 0;
 15.1109 +    overflow: hidden;
 15.1110 +  }
 15.1111 +  .navbar .btn-navbar {
 15.1112 +    display: block;
 15.1113 +  }
 15.1114 +  .navbar-static .navbar-inner {
 15.1115 +    padding-right: 10px;
 15.1116 +    padding-left: 10px;
 15.1117 +  }
 15.1118 +}
 15.1119 +
 15.1120 +@media (min-width: 980px) {
 15.1121 +  .nav-collapse.collapse {
 15.1122 +    height: auto !important;
 15.1123 +    overflow: visible !important;
 15.1124 +  }
 15.1125 +}
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/chess/src/main/webapp/pages/css/bootstrap.css	Wed Sep 25 04:28:19 2013 +0200
    16.3 @@ -0,0 +1,6181 @@
    16.4 +/**
    16.5 + * The MIT License (MIT)
    16.6 + *
    16.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    16.8 + *
    16.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   16.10 + * of this software and associated documentation files (the "Software"), to deal
   16.11 + * in the Software without restriction, including without limitation the rights
   16.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   16.13 + * copies of the Software, and to permit persons to whom the Software is
   16.14 + * furnished to do so, subject to the following conditions:
   16.15 + *
   16.16 + * The above copyright notice and this permission notice shall be included in
   16.17 + * all copies or substantial portions of the Software.
   16.18 + *
   16.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   16.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   16.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   16.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   16.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   16.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   16.25 + * THE SOFTWARE.
   16.26 + */
   16.27 +.clearfix {
   16.28 +  *zoom: 1;
   16.29 +}
   16.30 +
   16.31 +.clearfix:before,
   16.32 +.clearfix:after {
   16.33 +  display: table;
   16.34 +  line-height: 0;
   16.35 +  content: "";
   16.36 +}
   16.37 +
   16.38 +.clearfix:after {
   16.39 +  clear: both;
   16.40 +}
   16.41 +
   16.42 +.hide-text {
   16.43 +  font: 0/0 a;
   16.44 +  color: transparent;
   16.45 +  text-shadow: none;
   16.46 +  background-color: transparent;
   16.47 +  border: 0;
   16.48 +}
   16.49 +
   16.50 +.input-block-level {
   16.51 +  display: block;
   16.52 +  width: 100%;
   16.53 +  min-height: 30px;
   16.54 +  -webkit-box-sizing: border-box;
   16.55 +     -moz-box-sizing: border-box;
   16.56 +          box-sizing: border-box;
   16.57 +}
   16.58 +
   16.59 +article,
   16.60 +aside,
   16.61 +details,
   16.62 +figcaption,
   16.63 +figure,
   16.64 +footer,
   16.65 +header,
   16.66 +hgroup,
   16.67 +nav,
   16.68 +section {
   16.69 +  display: block;
   16.70 +}
   16.71 +
   16.72 +audio,
   16.73 +canvas,
   16.74 +video {
   16.75 +  display: inline-block;
   16.76 +  *display: inline;
   16.77 +  *zoom: 1;
   16.78 +}
   16.79 +
   16.80 +audio:not([controls]) {
   16.81 +  display: none;
   16.82 +}
   16.83 +
   16.84 +html {
   16.85 +  font-size: 100%;
   16.86 +  -webkit-text-size-adjust: 100%;
   16.87 +      -ms-text-size-adjust: 100%;
   16.88 +}
   16.89 +
   16.90 +a:focus {
   16.91 +  outline: thin dotted #333;
   16.92 +  outline: 5px auto -webkit-focus-ring-color;
   16.93 +  outline-offset: -2px;
   16.94 +}
   16.95 +
   16.96 +a:hover,
   16.97 +a:active {
   16.98 +  outline: 0;
   16.99 +}
  16.100 +
  16.101 +sub,
  16.102 +sup {
  16.103 +  position: relative;
  16.104 +  font-size: 75%;
  16.105 +  line-height: 0;
  16.106 +  vertical-align: baseline;
  16.107 +}
  16.108 +
  16.109 +sup {
  16.110 +  top: -0.5em;
  16.111 +}
  16.112 +
  16.113 +sub {
  16.114 +  bottom: -0.25em;
  16.115 +}
  16.116 +
  16.117 +img {
  16.118 +  width: auto\9;
  16.119 +  height: auto;
  16.120 +  max-width: 100%;
  16.121 +  vertical-align: middle;
  16.122 +  border: 0;
  16.123 +  -ms-interpolation-mode: bicubic;
  16.124 +}
  16.125 +
  16.126 +#map_canvas img,
  16.127 +.google-maps img {
  16.128 +  max-width: none;
  16.129 +}
  16.130 +
  16.131 +button,
  16.132 +input,
  16.133 +select,
  16.134 +textarea {
  16.135 +  margin: 0;
  16.136 +  font-size: 100%;
  16.137 +  vertical-align: middle;
  16.138 +}
  16.139 +
  16.140 +button,
  16.141 +input {
  16.142 +  *overflow: visible;
  16.143 +  line-height: normal;
  16.144 +}
  16.145 +
  16.146 +button::-moz-focus-inner,
  16.147 +input::-moz-focus-inner {
  16.148 +  padding: 0;
  16.149 +  border: 0;
  16.150 +}
  16.151 +
  16.152 +button,
  16.153 +html input[type="button"],
  16.154 +input[type="reset"],
  16.155 +input[type="submit"] {
  16.156 +  cursor: pointer;
  16.157 +  -webkit-appearance: button;
  16.158 +}
  16.159 +
  16.160 +label,
  16.161 +select,
  16.162 +button,
  16.163 +input[type="button"],
  16.164 +input[type="reset"],
  16.165 +input[type="submit"],
  16.166 +input[type="radio"],
  16.167 +input[type="checkbox"] {
  16.168 +  cursor: pointer;
  16.169 +}
  16.170 +
  16.171 +input[type="search"] {
  16.172 +  -webkit-box-sizing: content-box;
  16.173 +     -moz-box-sizing: content-box;
  16.174 +          box-sizing: content-box;
  16.175 +  -webkit-appearance: textfield;
  16.176 +}
  16.177 +
  16.178 +input[type="search"]::-webkit-search-decoration,
  16.179 +input[type="search"]::-webkit-search-cancel-button {
  16.180 +  -webkit-appearance: none;
  16.181 +}
  16.182 +
  16.183 +textarea {
  16.184 +  overflow: auto;
  16.185 +  vertical-align: top;
  16.186 +}
  16.187 +
  16.188 +@media print {
  16.189 +  * {
  16.190 +    color: #000 !important;
  16.191 +    text-shadow: none !important;
  16.192 +    background: transparent !important;
  16.193 +    box-shadow: none !important;
  16.194 +  }
  16.195 +  a,
  16.196 +  a:visited {
  16.197 +    text-decoration: underline;
  16.198 +  }
  16.199 +  a[href]:after {
  16.200 +    content: " (" attr(href) ")";
  16.201 +  }
  16.202 +  abbr[title]:after {
  16.203 +    content: " (" attr(title) ")";
  16.204 +  }
  16.205 +  .ir a:after,
  16.206 +  a[href^="javascript:"]:after,
  16.207 +  a[href^="#"]:after {
  16.208 +    content: "";
  16.209 +  }
  16.210 +  pre,
  16.211 +  blockquote {
  16.212 +    border: 1px solid #999;
  16.213 +    page-break-inside: avoid;
  16.214 +  }
  16.215 +  thead {
  16.216 +    display: table-header-group;
  16.217 +  }
  16.218 +  tr,
  16.219 +  img {
  16.220 +    page-break-inside: avoid;
  16.221 +  }
  16.222 +  img {
  16.223 +    max-width: 100% !important;
  16.224 +  }
  16.225 +  @page  {
  16.226 +    margin: 0.5cm;
  16.227 +  }
  16.228 +  p,
  16.229 +  h2,
  16.230 +  h3 {
  16.231 +    orphans: 3;
  16.232 +    widows: 3;
  16.233 +  }
  16.234 +  h2,
  16.235 +  h3 {
  16.236 +    page-break-after: avoid;
  16.237 +  }
  16.238 +}
  16.239 +
  16.240 +body {
  16.241 +  margin: 0;
  16.242 +  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  16.243 +  font-size: 14px;
  16.244 +  line-height: 20px;
  16.245 +  color: #333333;
  16.246 +  background-color: #ffffff;
  16.247 +}
  16.248 +
  16.249 +a {
  16.250 +  color: #0088cc;
  16.251 +  text-decoration: none;
  16.252 +}
  16.253 +
  16.254 +a:hover,
  16.255 +a:focus {
  16.256 +  color: #005580;
  16.257 +  text-decoration: underline;
  16.258 +}
  16.259 +
  16.260 +.img-rounded {
  16.261 +  -webkit-border-radius: 6px;
  16.262 +     -moz-border-radius: 6px;
  16.263 +          border-radius: 6px;
  16.264 +}
  16.265 +
  16.266 +.img-polaroid {
  16.267 +  padding: 4px;
  16.268 +  background-color: #fff;
  16.269 +  border: 1px solid #ccc;
  16.270 +  border: 1px solid rgba(0, 0, 0, 0.2);
  16.271 +  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  16.272 +     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  16.273 +          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  16.274 +}
  16.275 +
  16.276 +.img-circle {
  16.277 +  -webkit-border-radius: 500px;
  16.278 +     -moz-border-radius: 500px;
  16.279 +          border-radius: 500px;
  16.280 +}
  16.281 +
  16.282 +.row {
  16.283 +  margin-left: -20px;
  16.284 +  *zoom: 1;
  16.285 +}
  16.286 +
  16.287 +.row:before,
  16.288 +.row:after {
  16.289 +  display: table;
  16.290 +  line-height: 0;
  16.291 +  content: "";
  16.292 +}
  16.293 +
  16.294 +.row:after {
  16.295 +  clear: both;
  16.296 +}
  16.297 +
  16.298 +[class*="span"] {
  16.299 +  float: left;
  16.300 +  min-height: 1px;
  16.301 +  margin-left: 20px;
  16.302 +}
  16.303 +
  16.304 +.container,
  16.305 +.navbar-static-top .container,
  16.306 +.navbar-fixed-top .container,
  16.307 +.navbar-fixed-bottom .container {
  16.308 +  width: 940px;
  16.309 +}
  16.310 +
  16.311 +.span12 {
  16.312 +  width: 940px;
  16.313 +}
  16.314 +
  16.315 +.span11 {
  16.316 +  width: 860px;
  16.317 +}
  16.318 +
  16.319 +.span10 {
  16.320 +  width: 780px;
  16.321 +}
  16.322 +
  16.323 +.span9 {
  16.324 +  width: 700px;
  16.325 +}
  16.326 +
  16.327 +.span8 {
  16.328 +  width: 620px;
  16.329 +}
  16.330 +
  16.331 +.span7 {
  16.332 +  width: 540px;
  16.333 +}
  16.334 +
  16.335 +.span6 {
  16.336 +  width: 460px;
  16.337 +}
  16.338 +
  16.339 +.span5 {
  16.340 +  width: 380px;
  16.341 +}
  16.342 +
  16.343 +.span4 {
  16.344 +  width: 300px;
  16.345 +}
  16.346 +
  16.347 +.span3 {
  16.348 +  width: 220px;
  16.349 +}
  16.350 +
  16.351 +.span2 {
  16.352 +  width: 140px;
  16.353 +}
  16.354 +
  16.355 +.span1 {
  16.356 +  width: 60px;
  16.357 +}
  16.358 +
  16.359 +.offset12 {
  16.360 +  margin-left: 980px;
  16.361 +}
  16.362 +
  16.363 +.offset11 {
  16.364 +  margin-left: 900px;
  16.365 +}
  16.366 +
  16.367 +.offset10 {
  16.368 +  margin-left: 820px;
  16.369 +}
  16.370 +
  16.371 +.offset9 {
  16.372 +  margin-left: 740px;
  16.373 +}
  16.374 +
  16.375 +.offset8 {
  16.376 +  margin-left: 660px;
  16.377 +}
  16.378 +
  16.379 +.offset7 {
  16.380 +  margin-left: 580px;
  16.381 +}
  16.382 +
  16.383 +.offset6 {
  16.384 +  margin-left: 500px;
  16.385 +}
  16.386 +
  16.387 +.offset5 {
  16.388 +  margin-left: 420px;
  16.389 +}
  16.390 +
  16.391 +.offset4 {
  16.392 +  margin-left: 340px;
  16.393 +}
  16.394 +
  16.395 +.offset3 {
  16.396 +  margin-left: 260px;
  16.397 +}
  16.398 +
  16.399 +.offset2 {
  16.400 +  margin-left: 180px;
  16.401 +}
  16.402 +
  16.403 +.offset1 {
  16.404 +  margin-left: 100px;
  16.405 +}
  16.406 +
  16.407 +.row-fluid {
  16.408 +  width: 100%;
  16.409 +  *zoom: 1;
  16.410 +}
  16.411 +
  16.412 +.row-fluid:before,
  16.413 +.row-fluid:after {
  16.414 +  display: table;
  16.415 +  line-height: 0;
  16.416 +  content: "";
  16.417 +}
  16.418 +
  16.419 +.row-fluid:after {
  16.420 +  clear: both;
  16.421 +}
  16.422 +
  16.423 +.row-fluid [class*="span"] {
  16.424 +  display: block;
  16.425 +  float: left;
  16.426 +  width: 100%;
  16.427 +  min-height: 30px;
  16.428 +  margin-left: 2.127659574468085%;
  16.429 +  *margin-left: 2.074468085106383%;
  16.430 +  -webkit-box-sizing: border-box;
  16.431 +     -moz-box-sizing: border-box;
  16.432 +          box-sizing: border-box;
  16.433 +}
  16.434 +
  16.435 +.row-fluid [class*="span"]:first-child {
  16.436 +  margin-left: 0;
  16.437 +}
  16.438 +
  16.439 +.row-fluid .controls-row [class*="span"] + [class*="span"] {
  16.440 +  margin-left: 2.127659574468085%;
  16.441 +}
  16.442 +
  16.443 +.row-fluid .span12 {
  16.444 +  width: 100%;
  16.445 +  *width: 99.94680851063829%;
  16.446 +}
  16.447 +
  16.448 +.row-fluid .span11 {
  16.449 +  width: 91.48936170212765%;
  16.450 +  *width: 91.43617021276594%;
  16.451 +}
  16.452 +
  16.453 +.row-fluid .span10 {
  16.454 +  width: 82.97872340425532%;
  16.455 +  *width: 82.92553191489361%;
  16.456 +}
  16.457 +
  16.458 +.row-fluid .span9 {
  16.459 +  width: 74.46808510638297%;
  16.460 +  *width: 74.41489361702126%;
  16.461 +}
  16.462 +
  16.463 +.row-fluid .span8 {
  16.464 +  width: 65.95744680851064%;
  16.465 +  *width: 65.90425531914893%;
  16.466 +}
  16.467 +
  16.468 +.row-fluid .span7 {
  16.469 +  width: 57.44680851063829%;
  16.470 +  *width: 57.39361702127659%;
  16.471 +}
  16.472 +
  16.473 +.row-fluid .span6 {
  16.474 +  width: 48.93617021276595%;
  16.475 +  *width: 48.88297872340425%;
  16.476 +}
  16.477 +
  16.478 +.row-fluid .span5 {
  16.479 +  width: 40.42553191489362%;
  16.480 +  *width: 40.37234042553192%;
  16.481 +}
  16.482 +
  16.483 +.row-fluid .span4 {
  16.484 +  width: 31.914893617021278%;
  16.485 +  *width: 31.861702127659576%;
  16.486 +}
  16.487 +
  16.488 +.row-fluid .span3 {
  16.489 +  width: 23.404255319148934%;
  16.490 +  *width: 23.351063829787233%;
  16.491 +}
  16.492 +
  16.493 +.row-fluid .span2 {
  16.494 +  width: 14.893617021276595%;
  16.495 +  *width: 14.840425531914894%;
  16.496 +}
  16.497 +
  16.498 +.row-fluid .span1 {
  16.499 +  width: 6.382978723404255%;
  16.500 +  *width: 6.329787234042553%;
  16.501 +}
  16.502 +
  16.503 +.row-fluid .offset12 {
  16.504 +  margin-left: 104.25531914893617%;
  16.505 +  *margin-left: 104.14893617021275%;
  16.506 +}
  16.507 +
  16.508 +.row-fluid .offset12:first-child {
  16.509 +  margin-left: 102.12765957446808%;
  16.510 +  *margin-left: 102.02127659574467%;
  16.511 +}
  16.512 +
  16.513 +.row-fluid .offset11 {
  16.514 +  margin-left: 95.74468085106382%;
  16.515 +  *margin-left: 95.6382978723404%;
  16.516 +}
  16.517 +
  16.518 +.row-fluid .offset11:first-child {
  16.519 +  margin-left: 93.61702127659574%;
  16.520 +  *margin-left: 93.51063829787232%;
  16.521 +}
  16.522 +
  16.523 +.row-fluid .offset10 {
  16.524 +  margin-left: 87.23404255319149%;
  16.525 +  *margin-left: 87.12765957446807%;
  16.526 +}
  16.527 +
  16.528 +.row-fluid .offset10:first-child {
  16.529 +  margin-left: 85.1063829787234%;
  16.530 +  *margin-left: 84.99999999999999%;
  16.531 +}
  16.532 +
  16.533 +.row-fluid .offset9 {
  16.534 +  margin-left: 78.72340425531914%;
  16.535 +  *margin-left: 78.61702127659572%;
  16.536 +}
  16.537 +
  16.538 +.row-fluid .offset9:first-child {
  16.539 +  margin-left: 76.59574468085106%;
  16.540 +  *margin-left: 76.48936170212764%;
  16.541 +}
  16.542 +
  16.543 +.row-fluid .offset8 {
  16.544 +  margin-left: 70.2127659574468%;
  16.545 +  *margin-left: 70.10638297872339%;
  16.546 +}
  16.547 +
  16.548 +.row-fluid .offset8:first-child {
  16.549 +  margin-left: 68.08510638297872%;
  16.550 +  *margin-left: 67.9787234042553%;
  16.551 +}
  16.552 +
  16.553 +.row-fluid .offset7 {
  16.554 +  margin-left: 61.70212765957446%;
  16.555 +  *margin-left: 61.59574468085106%;
  16.556 +}
  16.557 +
  16.558 +.row-fluid .offset7:first-child {
  16.559 +  margin-left: 59.574468085106375%;
  16.560 +  *margin-left: 59.46808510638297%;
  16.561 +}
  16.562 +
  16.563 +.row-fluid .offset6 {
  16.564 +  margin-left: 53.191489361702125%;
  16.565 +  *margin-left: 53.085106382978715%;
  16.566 +}
  16.567 +
  16.568 +.row-fluid .offset6:first-child {
  16.569 +  margin-left: 51.063829787234035%;
  16.570 +  *margin-left: 50.95744680851063%;
  16.571 +}
  16.572 +
  16.573 +.row-fluid .offset5 {
  16.574 +  margin-left: 44.68085106382979%;
  16.575 +  *margin-left: 44.57446808510638%;
  16.576 +}
  16.577 +
  16.578 +.row-fluid .offset5:first-child {
  16.579 +  margin-left: 42.5531914893617%;
  16.580 +  *margin-left: 42.4468085106383%;
  16.581 +}
  16.582 +
  16.583 +.row-fluid .offset4 {
  16.584 +  margin-left: 36.170212765957444%;
  16.585 +  *margin-left: 36.06382978723405%;
  16.586 +}
  16.587 +
  16.588 +.row-fluid .offset4:first-child {
  16.589 +  margin-left: 34.04255319148936%;
  16.590 +  *margin-left: 33.93617021276596%;
  16.591 +}
  16.592 +
  16.593 +.row-fluid .offset3 {
  16.594 +  margin-left: 27.659574468085104%;
  16.595 +  *margin-left: 27.5531914893617%;
  16.596 +}
  16.597 +
  16.598 +.row-fluid .offset3:first-child {
  16.599 +  margin-left: 25.53191489361702%;
  16.600 +  *margin-left: 25.425531914893618%;
  16.601 +}
  16.602 +
  16.603 +.row-fluid .offset2 {
  16.604 +  margin-left: 19.148936170212764%;
  16.605 +  *margin-left: 19.04255319148936%;
  16.606 +}
  16.607 +
  16.608 +.row-fluid .offset2:first-child {
  16.609 +  margin-left: 17.02127659574468%;
  16.610 +  *margin-left: 16.914893617021278%;
  16.611 +}
  16.612 +
  16.613 +.row-fluid .offset1 {
  16.614 +  margin-left: 10.638297872340425%;
  16.615 +  *margin-left: 10.53191489361702%;
  16.616 +}
  16.617 +
  16.618 +.row-fluid .offset1:first-child {
  16.619 +  margin-left: 8.51063829787234%;
  16.620 +  *margin-left: 8.404255319148938%;
  16.621 +}
  16.622 +
  16.623 +[class*="span"].hide,
  16.624 +.row-fluid [class*="span"].hide {
  16.625 +  display: none;
  16.626 +}
  16.627 +
  16.628 +[class*="span"].pull-right,
  16.629 +.row-fluid [class*="span"].pull-right {
  16.630 +  float: right;
  16.631 +}
  16.632 +
  16.633 +.container {
  16.634 +  margin-right: auto;
  16.635 +  margin-left: auto;
  16.636 +  *zoom: 1;
  16.637 +}
  16.638 +
  16.639 +.container:before,
  16.640 +.container:after {
  16.641 +  display: table;
  16.642 +  line-height: 0;
  16.643 +  content: "";
  16.644 +}
  16.645 +
  16.646 +.container:after {
  16.647 +  clear: both;
  16.648 +}
  16.649 +
  16.650 +.container-fluid {
  16.651 +  padding-right: 20px;
  16.652 +  padding-left: 20px;
  16.653 +  *zoom: 1;
  16.654 +}
  16.655 +
  16.656 +.container-fluid:before,
  16.657 +.container-fluid:after {
  16.658 +  display: table;
  16.659 +  line-height: 0;
  16.660 +  content: "";
  16.661 +}
  16.662 +
  16.663 +.container-fluid:after {
  16.664 +  clear: both;
  16.665 +}
  16.666 +
  16.667 +p {
  16.668 +  margin: 0 0 10px;
  16.669 +}
  16.670 +
  16.671 +.lead {
  16.672 +  margin-bottom: 20px;
  16.673 +  font-size: 21px;
  16.674 +  font-weight: 200;
  16.675 +  line-height: 30px;
  16.676 +}
  16.677 +
  16.678 +small {
  16.679 +  font-size: 85%;
  16.680 +}
  16.681 +
  16.682 +strong {
  16.683 +  font-weight: bold;
  16.684 +}
  16.685 +
  16.686 +em {
  16.687 +  font-style: italic;
  16.688 +}
  16.689 +
  16.690 +cite {
  16.691 +  font-style: normal;
  16.692 +}
  16.693 +
  16.694 +.muted {
  16.695 +  color: #999999;
  16.696 +}
  16.697 +
  16.698 +a.muted:hover,
  16.699 +a.muted:focus {
  16.700 +  color: #808080;
  16.701 +}
  16.702 +
  16.703 +.text-warning {
  16.704 +  color: #c09853;
  16.705 +}
  16.706 +
  16.707 +a.text-warning:hover,
  16.708 +a.text-warning:focus {
  16.709 +  color: #a47e3c;
  16.710 +}
  16.711 +
  16.712 +.text-error {
  16.713 +  color: #b94a48;
  16.714 +}
  16.715 +
  16.716 +a.text-error:hover,
  16.717 +a.text-error:focus {
  16.718 +  color: #953b39;
  16.719 +}
  16.720 +
  16.721 +.text-info {
  16.722 +  color: #3a87ad;
  16.723 +}
  16.724 +
  16.725 +a.text-info:hover,
  16.726 +a.text-info:focus {
  16.727 +  color: #2d6987;
  16.728 +}
  16.729 +
  16.730 +.text-success {
  16.731 +  color: #468847;
  16.732 +}
  16.733 +
  16.734 +a.text-success:hover,
  16.735 +a.text-success:focus {
  16.736 +  color: #356635;
  16.737 +}
  16.738 +
  16.739 +.text-left {
  16.740 +  text-align: left;
  16.741 +}
  16.742 +
  16.743 +.text-right {
  16.744 +  text-align: right;
  16.745 +}
  16.746 +
  16.747 +.text-center {
  16.748 +  text-align: center;
  16.749 +}
  16.750 +
  16.751 +h1,
  16.752 +h2,
  16.753 +h3,
  16.754 +h4,
  16.755 +h5,
  16.756 +h6 {
  16.757 +  margin: 10px 0;
  16.758 +  font-family: inherit;
  16.759 +  font-weight: bold;
  16.760 +  line-height: 20px;
  16.761 +  color: inherit;
  16.762 +  text-rendering: optimizelegibility;
  16.763 +}
  16.764 +
  16.765 +h1 small,
  16.766 +h2 small,
  16.767 +h3 small,
  16.768 +h4 small,
  16.769 +h5 small,
  16.770 +h6 small {
  16.771 +  font-weight: normal;
  16.772 +  line-height: 1;
  16.773 +  color: #999999;
  16.774 +}
  16.775 +
  16.776 +h1,
  16.777 +h2,
  16.778 +h3 {
  16.779 +  line-height: 40px;
  16.780 +}
  16.781 +
  16.782 +h1 {
  16.783 +  font-size: 38.5px;
  16.784 +}
  16.785 +
  16.786 +h2 {
  16.787 +  font-size: 31.5px;
  16.788 +}
  16.789 +
  16.790 +h3 {
  16.791 +  font-size: 24.5px;
  16.792 +}
  16.793 +
  16.794 +h4 {
  16.795 +  font-size: 17.5px;
  16.796 +}
  16.797 +
  16.798 +h5 {
  16.799 +  font-size: 14px;
  16.800 +}
  16.801 +
  16.802 +h6 {
  16.803 +  font-size: 11.9px;
  16.804 +}
  16.805 +
  16.806 +h1 small {
  16.807 +  font-size: 24.5px;
  16.808 +}
  16.809 +
  16.810 +h2 small {
  16.811 +  font-size: 17.5px;
  16.812 +}
  16.813 +
  16.814 +h3 small {
  16.815 +  font-size: 14px;
  16.816 +}
  16.817 +
  16.818 +h4 small {
  16.819 +  font-size: 14px;
  16.820 +}
  16.821 +
  16.822 +.page-header {
  16.823 +  padding-bottom: 9px;
  16.824 +  margin: 20px 0 30px;
  16.825 +  border-bottom: 1px solid #eeeeee;
  16.826 +}
  16.827 +
  16.828 +ul,
  16.829 +ol {
  16.830 +  padding: 0;
  16.831 +  margin: 0 0 10px 25px;
  16.832 +}
  16.833 +
  16.834 +ul ul,
  16.835 +ul ol,
  16.836 +ol ol,
  16.837 +ol ul {
  16.838 +  margin-bottom: 0;
  16.839 +}
  16.840 +
  16.841 +li {
  16.842 +  line-height: 20px;
  16.843 +}
  16.844 +
  16.845 +ul.unstyled,
  16.846 +ol.unstyled {
  16.847 +  margin-left: 0;
  16.848 +  list-style: none;
  16.849 +}
  16.850 +
  16.851 +ul.inline,
  16.852 +ol.inline {
  16.853 +  margin-left: 0;
  16.854 +  list-style: none;
  16.855 +}
  16.856 +
  16.857 +ul.inline > li,
  16.858 +ol.inline > li {
  16.859 +  display: inline-block;
  16.860 +  *display: inline;
  16.861 +  padding-right: 5px;
  16.862 +  padding-left: 5px;
  16.863 +  *zoom: 1;
  16.864 +}
  16.865 +
  16.866 +dl {
  16.867 +  margin-bottom: 20px;
  16.868 +}
  16.869 +
  16.870 +dt,
  16.871 +dd {
  16.872 +  line-height: 20px;
  16.873 +}
  16.874 +
  16.875 +dt {
  16.876 +  font-weight: bold;
  16.877 +}
  16.878 +
  16.879 +dd {
  16.880 +  margin-left: 10px;
  16.881 +}
  16.882 +
  16.883 +.dl-horizontal {
  16.884 +  *zoom: 1;
  16.885 +}
  16.886 +
  16.887 +.dl-horizontal:before,
  16.888 +.dl-horizontal:after {
  16.889 +  display: table;
  16.890 +  line-height: 0;
  16.891 +  content: "";
  16.892 +}
  16.893 +
  16.894 +.dl-horizontal:after {
  16.895 +  clear: both;
  16.896 +}
  16.897 +
  16.898 +.dl-horizontal dt {
  16.899 +  float: left;
  16.900 +  width: 160px;
  16.901 +  overflow: hidden;
  16.902 +  clear: left;
  16.903 +  text-align: right;
  16.904 +  text-overflow: ellipsis;
  16.905 +  white-space: nowrap;
  16.906 +}
  16.907 +
  16.908 +.dl-horizontal dd {
  16.909 +  margin-left: 180px;
  16.910 +}
  16.911 +
  16.912 +hr {
  16.913 +  margin: 20px 0;
  16.914 +  border: 0;
  16.915 +  border-top: 1px solid #eeeeee;
  16.916 +  border-bottom: 1px solid #ffffff;
  16.917 +}
  16.918 +
  16.919 +abbr[title],
  16.920 +abbr[data-original-title] {
  16.921 +  cursor: help;
  16.922 +  border-bottom: 1px dotted #999999;
  16.923 +}
  16.924 +
  16.925 +abbr.initialism {
  16.926 +  font-size: 90%;
  16.927 +  text-transform: uppercase;
  16.928 +}
  16.929 +
  16.930 +blockquote {
  16.931 +  padding: 0 0 0 15px;
  16.932 +  margin: 0 0 20px;
  16.933 +  border-left: 5px solid #eeeeee;
  16.934 +}
  16.935 +
  16.936 +blockquote p {
  16.937 +  margin-bottom: 0;
  16.938 +  font-size: 17.5px;
  16.939 +  font-weight: 300;
  16.940 +  line-height: 1.25;
  16.941 +}
  16.942 +
  16.943 +blockquote small {
  16.944 +  display: block;
  16.945 +  line-height: 20px;
  16.946 +  color: #999999;
  16.947 +}
  16.948 +
  16.949 +blockquote small:before {
  16.950 +  content: '\2014 \00A0';
  16.951 +}
  16.952 +
  16.953 +blockquote.pull-right {
  16.954 +  float: right;
  16.955 +  padding-right: 15px;
  16.956 +  padding-left: 0;
  16.957 +  border-right: 5px solid #eeeeee;
  16.958 +  border-left: 0;
  16.959 +}
  16.960 +
  16.961 +blockquote.pull-right p,
  16.962 +blockquote.pull-right small {
  16.963 +  text-align: right;
  16.964 +}
  16.965 +
  16.966 +blockquote.pull-right small:before {
  16.967 +  content: '';
  16.968 +}
  16.969 +
  16.970 +blockquote.pull-right small:after {
  16.971 +  content: '\00A0 \2014';
  16.972 +}
  16.973 +
  16.974 +q:before,
  16.975 +q:after,
  16.976 +blockquote:before,
  16.977 +blockquote:after {
  16.978 +  content: "";
  16.979 +}
  16.980 +
  16.981 +address {
  16.982 +  display: block;
  16.983 +  margin-bottom: 20px;
  16.984 +  font-style: normal;
  16.985 +  line-height: 20px;
  16.986 +}
  16.987 +
  16.988 +code,
  16.989 +pre {
  16.990 +  padding: 0 3px 2px;
  16.991 +  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
  16.992 +  font-size: 12px;
  16.993 +  color: #333333;
  16.994 +  -webkit-border-radius: 3px;
  16.995 +     -moz-border-radius: 3px;
  16.996 +          border-radius: 3px;
  16.997 +}
  16.998 +
  16.999 +code {
 16.1000 +  padding: 2px 4px;
 16.1001 +  color: #d14;
 16.1002 +  white-space: nowrap;
 16.1003 +  background-color: #f7f7f9;
 16.1004 +  border: 1px solid #e1e1e8;
 16.1005 +}
 16.1006 +
 16.1007 +pre {
 16.1008 +  display: block;
 16.1009 +  padding: 9.5px;
 16.1010 +  margin: 0 0 10px;
 16.1011 +  font-size: 13px;
 16.1012 +  line-height: 20px;
 16.1013 +  word-break: break-all;
 16.1014 +  word-wrap: break-word;
 16.1015 +  white-space: pre;
 16.1016 +  white-space: pre-wrap;
 16.1017 +  background-color: #f5f5f5;
 16.1018 +  border: 1px solid #ccc;
 16.1019 +  border: 1px solid rgba(0, 0, 0, 0.15);
 16.1020 +  -webkit-border-radius: 4px;
 16.1021 +     -moz-border-radius: 4px;
 16.1022 +          border-radius: 4px;
 16.1023 +}
 16.1024 +
 16.1025 +pre.prettyprint {
 16.1026 +  margin-bottom: 20px;
 16.1027 +}
 16.1028 +
 16.1029 +pre code {
 16.1030 +  padding: 0;
 16.1031 +  color: inherit;
 16.1032 +  white-space: pre;
 16.1033 +  white-space: pre-wrap;
 16.1034 +  background-color: transparent;
 16.1035 +  border: 0;
 16.1036 +}
 16.1037 +
 16.1038 +.pre-scrollable {
 16.1039 +  max-height: 340px;
 16.1040 +  overflow-y: scroll;
 16.1041 +}
 16.1042 +
 16.1043 +form {
 16.1044 +  margin: 0 0 20px;
 16.1045 +}
 16.1046 +
 16.1047 +fieldset {
 16.1048 +  padding: 0;
 16.1049 +  margin: 0;
 16.1050 +  border: 0;
 16.1051 +}
 16.1052 +
 16.1053 +legend {
 16.1054 +  display: block;
 16.1055 +  width: 100%;
 16.1056 +  padding: 0;
 16.1057 +  margin-bottom: 20px;
 16.1058 +  font-size: 21px;
 16.1059 +  line-height: 40px;
 16.1060 +  color: #333333;
 16.1061 +  border: 0;
 16.1062 +  border-bottom: 1px solid #e5e5e5;
 16.1063 +}
 16.1064 +
 16.1065 +legend small {
 16.1066 +  font-size: 15px;
 16.1067 +  color: #999999;
 16.1068 +}
 16.1069 +
 16.1070 +label,
 16.1071 +input,
 16.1072 +button,
 16.1073 +select,
 16.1074 +textarea {
 16.1075 +  font-size: 14px;
 16.1076 +  font-weight: normal;
 16.1077 +  line-height: 20px;
 16.1078 +}
 16.1079 +
 16.1080 +input,
 16.1081 +button,
 16.1082 +select,
 16.1083 +textarea {
 16.1084 +  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
 16.1085 +}
 16.1086 +
 16.1087 +label {
 16.1088 +  display: block;
 16.1089 +  margin-bottom: 5px;
 16.1090 +}
 16.1091 +
 16.1092 +select,
 16.1093 +textarea,
 16.1094 +input[type="text"],
 16.1095 +input[type="password"],
 16.1096 +input[type="datetime"],
 16.1097 +input[type="datetime-local"],
 16.1098 +input[type="date"],
 16.1099 +input[type="month"],
 16.1100 +input[type="time"],
 16.1101 +input[type="week"],
 16.1102 +input[type="number"],
 16.1103 +input[type="email"],
 16.1104 +input[type="url"],
 16.1105 +input[type="search"],
 16.1106 +input[type="tel"],
 16.1107 +input[type="color"],
 16.1108 +.uneditable-input {
 16.1109 +  display: inline-block;
 16.1110 +  height: 20px;
 16.1111 +  padding: 4px 6px;
 16.1112 +  margin-bottom: 10px;
 16.1113 +  font-size: 14px;
 16.1114 +  line-height: 20px;
 16.1115 +  color: #555555;
 16.1116 +  vertical-align: middle;
 16.1117 +  -webkit-border-radius: 4px;
 16.1118 +     -moz-border-radius: 4px;
 16.1119 +          border-radius: 4px;
 16.1120 +}
 16.1121 +
 16.1122 +input,
 16.1123 +textarea,
 16.1124 +.uneditable-input {
 16.1125 +  width: 300px;
 16.1126 +}
 16.1127 +
 16.1128 +textarea {
 16.1129 +  height: auto;
 16.1130 +}
 16.1131 +
 16.1132 +textarea,
 16.1133 +input[type="text"],
 16.1134 +input[type="password"],
 16.1135 +input[type="datetime"],
 16.1136 +input[type="datetime-local"],
 16.1137 +input[type="date"],
 16.1138 +input[type="month"],
 16.1139 +input[type="time"],
 16.1140 +input[type="week"],
 16.1141 +input[type="number"],
 16.1142 +input[type="email"],
 16.1143 +input[type="url"],
 16.1144 +input[type="search"],
 16.1145 +input[type="tel"],
 16.1146 +input[type="color"],
 16.1147 +.uneditable-input {
 16.1148 +  background-color: #ffffff;
 16.1149 +  border: 1px solid #cccccc;
 16.1150 +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1151 +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1152 +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1153 +  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
 16.1154 +     -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
 16.1155 +       -o-transition: border linear 0.2s, box-shadow linear 0.2s;
 16.1156 +          transition: border linear 0.2s, box-shadow linear 0.2s;
 16.1157 +}
 16.1158 +
 16.1159 +textarea:focus,
 16.1160 +input[type="text"]:focus,
 16.1161 +input[type="password"]:focus,
 16.1162 +input[type="datetime"]:focus,
 16.1163 +input[type="datetime-local"]:focus,
 16.1164 +input[type="date"]:focus,
 16.1165 +input[type="month"]:focus,
 16.1166 +input[type="time"]:focus,
 16.1167 +input[type="week"]:focus,
 16.1168 +input[type="number"]:focus,
 16.1169 +input[type="email"]:focus,
 16.1170 +input[type="url"]:focus,
 16.1171 +input[type="search"]:focus,
 16.1172 +input[type="tel"]:focus,
 16.1173 +input[type="color"]:focus,
 16.1174 +.uneditable-input:focus {
 16.1175 +  border-color: rgba(82, 168, 236, 0.8);
 16.1176 +  outline: 0;
 16.1177 +  outline: thin dotted \9;
 16.1178 +  /* IE6-9 */
 16.1179 +
 16.1180 +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
 16.1181 +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
 16.1182 +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
 16.1183 +}
 16.1184 +
 16.1185 +input[type="radio"],
 16.1186 +input[type="checkbox"] {
 16.1187 +  margin: 4px 0 0;
 16.1188 +  margin-top: 1px \9;
 16.1189 +  *margin-top: 0;
 16.1190 +  line-height: normal;
 16.1191 +}
 16.1192 +
 16.1193 +input[type="file"],
 16.1194 +input[type="image"],
 16.1195 +input[type="submit"],
 16.1196 +input[type="reset"],
 16.1197 +input[type="button"],
 16.1198 +input[type="radio"],
 16.1199 +input[type="checkbox"] {
 16.1200 +  width: auto;
 16.1201 +}
 16.1202 +
 16.1203 +select,
 16.1204 +input[type="file"] {
 16.1205 +  height: 30px;
 16.1206 +  /* In IE7, the height of the select element cannot be changed by height, only font-size */
 16.1207 +
 16.1208 +  *margin-top: 4px;
 16.1209 +  /* For IE7, add top margin to align select with labels */
 16.1210 +
 16.1211 +    vertical-align: middle;
 16.1212 +}
 16.1213 +
 16.1214 +select {
 16.1215 +  width: 220px;
 16.1216 +  background-color: #ffffff;
 16.1217 +  border: 1px solid #cccccc;
 16.1218 +}
 16.1219 +
 16.1220 +select[multiple],
 16.1221 +select[size] {
 16.1222 +  height: auto;
 16.1223 +}
 16.1224 +
 16.1225 +select:focus,
 16.1226 +input[type="file"]:focus,
 16.1227 +input[type="radio"]:focus,
 16.1228 +input[type="checkbox"]:focus {
 16.1229 +  outline: thin dotted #333;
 16.1230 +  outline: 5px auto -webkit-focus-ring-color;
 16.1231 +  outline-offset: -2px;
 16.1232 +}
 16.1233 +
 16.1234 +.uneditable-input,
 16.1235 +.uneditable-textarea {
 16.1236 +  color: #999999;
 16.1237 +  cursor: not-allowed;
 16.1238 +  background-color: #fcfcfc;
 16.1239 +  border-color: #cccccc;
 16.1240 +  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
 16.1241 +     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
 16.1242 +          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
 16.1243 +}
 16.1244 +
 16.1245 +.uneditable-input {
 16.1246 +  overflow: hidden;
 16.1247 +  white-space: nowrap;
 16.1248 +}
 16.1249 +
 16.1250 +.uneditable-textarea {
 16.1251 +  width: auto;
 16.1252 +  height: auto;
 16.1253 +}
 16.1254 +
 16.1255 +input:-moz-placeholder,
 16.1256 +textarea:-moz-placeholder {
 16.1257 +  color: #999999;
 16.1258 +}
 16.1259 +
 16.1260 +input:-ms-input-placeholder,
 16.1261 +textarea:-ms-input-placeholder {
 16.1262 +  color: #999999;
 16.1263 +}
 16.1264 +
 16.1265 +input::-webkit-input-placeholder,
 16.1266 +textarea::-webkit-input-placeholder {
 16.1267 +  color: #999999;
 16.1268 +}
 16.1269 +
 16.1270 +.radio,
 16.1271 +.checkbox {
 16.1272 +  min-height: 20px;
 16.1273 +  padding-left: 20px;
 16.1274 +}
 16.1275 +
 16.1276 +.radio input[type="radio"],
 16.1277 +.checkbox input[type="checkbox"] {
 16.1278 +  float: left;
 16.1279 +  margin-left: -20px;
 16.1280 +}
 16.1281 +
 16.1282 +.controls > .radio:first-child,
 16.1283 +.controls > .checkbox:first-child {
 16.1284 +  padding-top: 5px;
 16.1285 +}
 16.1286 +
 16.1287 +.radio.inline,
 16.1288 +.checkbox.inline {
 16.1289 +  display: inline-block;
 16.1290 +  padding-top: 5px;
 16.1291 +  margin-bottom: 0;
 16.1292 +  vertical-align: middle;
 16.1293 +}
 16.1294 +
 16.1295 +.radio.inline + .radio.inline,
 16.1296 +.checkbox.inline + .checkbox.inline {
 16.1297 +  margin-left: 10px;
 16.1298 +}
 16.1299 +
 16.1300 +.input-mini {
 16.1301 +  width: 60px;
 16.1302 +}
 16.1303 +
 16.1304 +.input-small {
 16.1305 +  width: 90px;
 16.1306 +}
 16.1307 +
 16.1308 +.input-medium {
 16.1309 +  width: 150px;
 16.1310 +}
 16.1311 +
 16.1312 +.input-large {
 16.1313 +  width: 210px;
 16.1314 +}
 16.1315 +
 16.1316 +.input-xlarge {
 16.1317 +  width: 270px;
 16.1318 +}
 16.1319 +
 16.1320 +.input-xxlarge {
 16.1321 +  width: 530px;
 16.1322 +}
 16.1323 +
 16.1324 +input[class*="span"],
 16.1325 +select[class*="span"],
 16.1326 +textarea[class*="span"],
 16.1327 +.uneditable-input[class*="span"],
 16.1328 +.row-fluid input[class*="span"],
 16.1329 +.row-fluid select[class*="span"],
 16.1330 +.row-fluid textarea[class*="span"],
 16.1331 +.row-fluid .uneditable-input[class*="span"] {
 16.1332 +  float: none;
 16.1333 +  margin-left: 0;
 16.1334 +}
 16.1335 +
 16.1336 +.input-append input[class*="span"],
 16.1337 +.input-append .uneditable-input[class*="span"],
 16.1338 +.input-prepend input[class*="span"],
 16.1339 +.input-prepend .uneditable-input[class*="span"],
 16.1340 +.row-fluid input[class*="span"],
 16.1341 +.row-fluid select[class*="span"],
 16.1342 +.row-fluid textarea[class*="span"],
 16.1343 +.row-fluid .uneditable-input[class*="span"],
 16.1344 +.row-fluid .input-prepend [class*="span"],
 16.1345 +.row-fluid .input-append [class*="span"] {
 16.1346 +  display: inline-block;
 16.1347 +}
 16.1348 +
 16.1349 +input,
 16.1350 +textarea,
 16.1351 +.uneditable-input {
 16.1352 +  margin-left: 0;
 16.1353 +}
 16.1354 +
 16.1355 +.controls-row [class*="span"] + [class*="span"] {
 16.1356 +  margin-left: 20px;
 16.1357 +}
 16.1358 +
 16.1359 +input.span12,
 16.1360 +textarea.span12,
 16.1361 +.uneditable-input.span12 {
 16.1362 +  width: 926px;
 16.1363 +}
 16.1364 +
 16.1365 +input.span11,
 16.1366 +textarea.span11,
 16.1367 +.uneditable-input.span11 {
 16.1368 +  width: 846px;
 16.1369 +}
 16.1370 +
 16.1371 +input.span10,
 16.1372 +textarea.span10,
 16.1373 +.uneditable-input.span10 {
 16.1374 +  width: 766px;
 16.1375 +}
 16.1376 +
 16.1377 +input.span9,
 16.1378 +textarea.span9,
 16.1379 +.uneditable-input.span9 {
 16.1380 +  width: 686px;
 16.1381 +}
 16.1382 +
 16.1383 +input.span8,
 16.1384 +textarea.span8,
 16.1385 +.uneditable-input.span8 {
 16.1386 +  width: 606px;
 16.1387 +}
 16.1388 +
 16.1389 +input.span7,
 16.1390 +textarea.span7,
 16.1391 +.uneditable-input.span7 {
 16.1392 +  width: 526px;
 16.1393 +}
 16.1394 +
 16.1395 +input.span6,
 16.1396 +textarea.span6,
 16.1397 +.uneditable-input.span6 {
 16.1398 +  width: 446px;
 16.1399 +}
 16.1400 +
 16.1401 +input.span5,
 16.1402 +textarea.span5,
 16.1403 +.uneditable-input.span5 {
 16.1404 +  width: 366px;
 16.1405 +}
 16.1406 +
 16.1407 +input.span4,
 16.1408 +textarea.span4,
 16.1409 +.uneditable-input.span4 {
 16.1410 +  width: 286px;
 16.1411 +}
 16.1412 +
 16.1413 +input.span3,
 16.1414 +textarea.span3,
 16.1415 +.uneditable-input.span3 {
 16.1416 +  width: 206px;
 16.1417 +}
 16.1418 +
 16.1419 +input.span2,
 16.1420 +textarea.span2,
 16.1421 +.uneditable-input.span2 {
 16.1422 +  width: 126px;
 16.1423 +}
 16.1424 +
 16.1425 +input.span1,
 16.1426 +textarea.span1,
 16.1427 +.uneditable-input.span1 {
 16.1428 +  width: 46px;
 16.1429 +}
 16.1430 +
 16.1431 +.controls-row {
 16.1432 +  *zoom: 1;
 16.1433 +}
 16.1434 +
 16.1435 +.controls-row:before,
 16.1436 +.controls-row:after {
 16.1437 +  display: table;
 16.1438 +  line-height: 0;
 16.1439 +  content: "";
 16.1440 +}
 16.1441 +
 16.1442 +.controls-row:after {
 16.1443 +  clear: both;
 16.1444 +}
 16.1445 +
 16.1446 +.controls-row [class*="span"],
 16.1447 +.row-fluid .controls-row [class*="span"] {
 16.1448 +  float: left;
 16.1449 +}
 16.1450 +
 16.1451 +.controls-row .checkbox[class*="span"],
 16.1452 +.controls-row .radio[class*="span"] {
 16.1453 +  padding-top: 5px;
 16.1454 +}
 16.1455 +
 16.1456 +input[disabled],
 16.1457 +select[disabled],
 16.1458 +textarea[disabled],
 16.1459 +input[readonly],
 16.1460 +select[readonly],
 16.1461 +textarea[readonly] {
 16.1462 +  cursor: not-allowed;
 16.1463 +  background-color: #eeeeee;
 16.1464 +}
 16.1465 +
 16.1466 +input[type="radio"][disabled],
 16.1467 +input[type="checkbox"][disabled],
 16.1468 +input[type="radio"][readonly],
 16.1469 +input[type="checkbox"][readonly] {
 16.1470 +  background-color: transparent;
 16.1471 +}
 16.1472 +
 16.1473 +.control-group.warning .control-label,
 16.1474 +.control-group.warning .help-block,
 16.1475 +.control-group.warning .help-inline {
 16.1476 +  color: #c09853;
 16.1477 +}
 16.1478 +
 16.1479 +.control-group.warning .checkbox,
 16.1480 +.control-group.warning .radio,
 16.1481 +.control-group.warning input,
 16.1482 +.control-group.warning select,
 16.1483 +.control-group.warning textarea {
 16.1484 +  color: #c09853;
 16.1485 +}
 16.1486 +
 16.1487 +.control-group.warning input,
 16.1488 +.control-group.warning select,
 16.1489 +.control-group.warning textarea {
 16.1490 +  border-color: #c09853;
 16.1491 +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1492 +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1493 +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1494 +}
 16.1495 +
 16.1496 +.control-group.warning input:focus,
 16.1497 +.control-group.warning select:focus,
 16.1498 +.control-group.warning textarea:focus {
 16.1499 +  border-color: #a47e3c;
 16.1500 +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
 16.1501 +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
 16.1502 +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
 16.1503 +}
 16.1504 +
 16.1505 +.control-group.warning .input-prepend .add-on,
 16.1506 +.control-group.warning .input-append .add-on {
 16.1507 +  color: #c09853;
 16.1508 +  background-color: #fcf8e3;
 16.1509 +  border-color: #c09853;
 16.1510 +}
 16.1511 +
 16.1512 +.control-group.error .control-label,
 16.1513 +.control-group.error .help-block,
 16.1514 +.control-group.error .help-inline {
 16.1515 +  color: #b94a48;
 16.1516 +}
 16.1517 +
 16.1518 +.control-group.error .checkbox,
 16.1519 +.control-group.error .radio,
 16.1520 +.control-group.error input,
 16.1521 +.control-group.error select,
 16.1522 +.control-group.error textarea {
 16.1523 +  color: #b94a48;
 16.1524 +}
 16.1525 +
 16.1526 +.control-group.error input,
 16.1527 +.control-group.error select,
 16.1528 +.control-group.error textarea {
 16.1529 +  border-color: #b94a48;
 16.1530 +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1531 +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1532 +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1533 +}
 16.1534 +
 16.1535 +.control-group.error input:focus,
 16.1536 +.control-group.error select:focus,
 16.1537 +.control-group.error textarea:focus {
 16.1538 +  border-color: #953b39;
 16.1539 +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
 16.1540 +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
 16.1541 +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
 16.1542 +}
 16.1543 +
 16.1544 +.control-group.error .input-prepend .add-on,
 16.1545 +.control-group.error .input-append .add-on {
 16.1546 +  color: #b94a48;
 16.1547 +  background-color: #f2dede;
 16.1548 +  border-color: #b94a48;
 16.1549 +}
 16.1550 +
 16.1551 +.control-group.success .control-label,
 16.1552 +.control-group.success .help-block,
 16.1553 +.control-group.success .help-inline {
 16.1554 +  color: #468847;
 16.1555 +}
 16.1556 +
 16.1557 +.control-group.success .checkbox,
 16.1558 +.control-group.success .radio,
 16.1559 +.control-group.success input,
 16.1560 +.control-group.success select,
 16.1561 +.control-group.success textarea {
 16.1562 +  color: #468847;
 16.1563 +}
 16.1564 +
 16.1565 +.control-group.success input,
 16.1566 +.control-group.success select,
 16.1567 +.control-group.success textarea {
 16.1568 +  border-color: #468847;
 16.1569 +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1570 +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1571 +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1572 +}
 16.1573 +
 16.1574 +.control-group.success input:focus,
 16.1575 +.control-group.success select:focus,
 16.1576 +.control-group.success textarea:focus {
 16.1577 +  border-color: #356635;
 16.1578 +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
 16.1579 +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
 16.1580 +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
 16.1581 +}
 16.1582 +
 16.1583 +.control-group.success .input-prepend .add-on,
 16.1584 +.control-group.success .input-append .add-on {
 16.1585 +  color: #468847;
 16.1586 +  background-color: #dff0d8;
 16.1587 +  border-color: #468847;
 16.1588 +}
 16.1589 +
 16.1590 +.control-group.info .control-label,
 16.1591 +.control-group.info .help-block,
 16.1592 +.control-group.info .help-inline {
 16.1593 +  color: #3a87ad;
 16.1594 +}
 16.1595 +
 16.1596 +.control-group.info .checkbox,
 16.1597 +.control-group.info .radio,
 16.1598 +.control-group.info input,
 16.1599 +.control-group.info select,
 16.1600 +.control-group.info textarea {
 16.1601 +  color: #3a87ad;
 16.1602 +}
 16.1603 +
 16.1604 +.control-group.info input,
 16.1605 +.control-group.info select,
 16.1606 +.control-group.info textarea {
 16.1607 +  border-color: #3a87ad;
 16.1608 +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1609 +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1610 +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 16.1611 +}
 16.1612 +
 16.1613 +.control-group.info input:focus,
 16.1614 +.control-group.info select:focus,
 16.1615 +.control-group.info textarea:focus {
 16.1616 +  border-color: #2d6987;
 16.1617 +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
 16.1618 +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
 16.1619 +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
 16.1620 +}
 16.1621 +
 16.1622 +.control-group.info .input-prepend .add-on,
 16.1623 +.control-group.info .input-append .add-on {
 16.1624 +  color: #3a87ad;
 16.1625 +  background-color: #d9edf7;
 16.1626 +  border-color: #3a87ad;
 16.1627 +}
 16.1628 +
 16.1629 +input:focus:invalid,
 16.1630 +textarea:focus:invalid,
 16.1631 +select:focus:invalid {
 16.1632 +  color: #b94a48;
 16.1633 +  border-color: #ee5f5b;
 16.1634 +}
 16.1635 +
 16.1636 +input:focus:invalid:focus,
 16.1637 +textarea:focus:invalid:focus,
 16.1638 +select:focus:invalid:focus {
 16.1639 +  border-color: #e9322d;
 16.1640 +  -webkit-box-shadow: 0 0 6px #f8b9b7;
 16.1641 +     -moz-box-shadow: 0 0 6px #f8b9b7;
 16.1642 +          box-shadow: 0 0 6px #f8b9b7;
 16.1643 +}
 16.1644 +
 16.1645 +.form-actions {
 16.1646 +  padding: 19px 20px 20px;
 16.1647 +  margin-top: 20px;
 16.1648 +  margin-bottom: 20px;
 16.1649 +  background-color: #f5f5f5;
 16.1650 +  border-top: 1px solid #e5e5e5;
 16.1651 +  *zoom: 1;
 16.1652 +}
 16.1653 +
 16.1654 +.form-actions:before,
 16.1655 +.form-actions:after {
 16.1656 +  display: table;
 16.1657 +  line-height: 0;
 16.1658 +  content: "";
 16.1659 +}
 16.1660 +
 16.1661 +.form-actions:after {
 16.1662 +  clear: both;
 16.1663 +}
 16.1664 +
 16.1665 +.help-block,
 16.1666 +.help-inline {
 16.1667 +  color: #595959;
 16.1668 +}
 16.1669 +
 16.1670 +.help-block {
 16.1671 +  display: block;
 16.1672 +  margin-bottom: 10px;
 16.1673 +}
 16.1674 +
 16.1675 +.help-inline {
 16.1676 +  display: inline-block;
 16.1677 +  *display: inline;
 16.1678 +  padding-left: 5px;
 16.1679 +  vertical-align: middle;
 16.1680 +  *zoom: 1;
 16.1681 +}
 16.1682 +
 16.1683 +.input-append,
 16.1684 +.input-prepend {
 16.1685 +  display: inline-block;
 16.1686 +  margin-bottom: 10px;
 16.1687 +  font-size: 0;
 16.1688 +  white-space: nowrap;
 16.1689 +  vertical-align: middle;
 16.1690 +}
 16.1691 +
 16.1692 +.input-append input,
 16.1693 +.input-prepend input,
 16.1694 +.input-append select,
 16.1695 +.input-prepend select,
 16.1696 +.input-append .uneditable-input,
 16.1697 +.input-prepend .uneditable-input,
 16.1698 +.input-append .dropdown-menu,
 16.1699 +.input-prepend .dropdown-menu,
 16.1700 +.input-append .popover,
 16.1701 +.input-prepend .popover {
 16.1702 +  font-size: 14px;
 16.1703 +}
 16.1704 +
 16.1705 +.input-append input,
 16.1706 +.input-prepend input,
 16.1707 +.input-append select,
 16.1708 +.input-prepend select,
 16.1709 +.input-append .uneditable-input,
 16.1710 +.input-prepend .uneditable-input {
 16.1711 +  position: relative;
 16.1712 +  margin-bottom: 0;
 16.1713 +  *margin-left: 0;
 16.1714 +  vertical-align: top;
 16.1715 +  -webkit-border-radius: 0 4px 4px 0;
 16.1716 +     -moz-border-radius: 0 4px 4px 0;
 16.1717 +          border-radius: 0 4px 4px 0;
 16.1718 +}
 16.1719 +
 16.1720 +.input-append input:focus,
 16.1721 +.input-prepend input:focus,
 16.1722 +.input-append select:focus,
 16.1723 +.input-prepend select:focus,
 16.1724 +.input-append .uneditable-input:focus,
 16.1725 +.input-prepend .uneditable-input:focus {
 16.1726 +  z-index: 2;
 16.1727 +}
 16.1728 +
 16.1729 +.input-append .add-on,
 16.1730 +.input-prepend .add-on {
 16.1731 +  display: inline-block;
 16.1732 +  width: auto;
 16.1733 +  height: 20px;
 16.1734 +  min-width: 16px;
 16.1735 +  padding: 4px 5px;
 16.1736 +  font-size: 14px;
 16.1737 +  font-weight: normal;
 16.1738 +  line-height: 20px;
 16.1739 +  text-align: center;
 16.1740 +  text-shadow: 0 1px 0 #ffffff;
 16.1741 +  background-color: #eeeeee;
 16.1742 +  border: 1px solid #ccc;
 16.1743 +}
 16.1744 +
 16.1745 +.input-append .add-on,
 16.1746 +.input-prepend .add-on,
 16.1747 +.input-append .btn,
 16.1748 +.input-prepend .btn,
 16.1749 +.input-append .btn-group > .dropdown-toggle,
 16.1750 +.input-prepend .btn-group > .dropdown-toggle {
 16.1751 +  vertical-align: top;
 16.1752 +  -webkit-border-radius: 0;
 16.1753 +     -moz-border-radius: 0;
 16.1754 +          border-radius: 0;
 16.1755 +}
 16.1756 +
 16.1757 +.input-append .active,
 16.1758 +.input-prepend .active {
 16.1759 +  background-color: #a9dba9;
 16.1760 +  border-color: #46a546;
 16.1761 +}
 16.1762 +
 16.1763 +.input-prepend .add-on,
 16.1764 +.input-prepend .btn {
 16.1765 +  margin-right: -1px;
 16.1766 +}
 16.1767 +
 16.1768 +.input-prepend .add-on:first-child,
 16.1769 +.input-prepend .btn:first-child {
 16.1770 +  -webkit-border-radius: 4px 0 0 4px;
 16.1771 +     -moz-border-radius: 4px 0 0 4px;
 16.1772 +          border-radius: 4px 0 0 4px;
 16.1773 +}
 16.1774 +
 16.1775 +.input-append input,
 16.1776 +.input-append select,
 16.1777 +.input-append .uneditable-input {
 16.1778 +  -webkit-border-radius: 4px 0 0 4px;
 16.1779 +     -moz-border-radius: 4px 0 0 4px;
 16.1780 +          border-radius: 4px 0 0 4px;
 16.1781 +    color: black;
 16.1782 +}
 16.1783 +
 16.1784 +.input-append input + .btn-group .btn:last-child,
 16.1785 +.input-append select + .btn-group .btn:last-child,
 16.1786 +.input-append .uneditable-input + .btn-group .btn:last-child {
 16.1787 +  -webkit-border-radius: 0 4px 4px 0;
 16.1788 +     -moz-border-radius: 0 4px 4px 0;
 16.1789 +          border-radius: 0 4px 4px 0;
 16.1790 +}
 16.1791 +
 16.1792 +.input-append .add-on,
 16.1793 +.input-append .btn,
 16.1794 +.input-append .btn-group {
 16.1795 +  margin-left: -1px;
 16.1796 +}
 16.1797 +
 16.1798 +.input-append .add-on:last-child,
 16.1799 +.input-append .btn:last-child,
 16.1800 +.input-append .btn-group:last-child > .dropdown-toggle {
 16.1801 +  -webkit-border-radius: 0 4px 4px 0;
 16.1802 +     -moz-border-radius: 0 4px 4px 0;
 16.1803 +          border-radius: 0 4px 4px 0;
 16.1804 +}
 16.1805 +
 16.1806 +.input-prepend.input-append input,
 16.1807 +.input-prepend.input-append select,
 16.1808 +.input-prepend.input-append .uneditable-input {
 16.1809 +  -webkit-border-radius: 0;
 16.1810 +     -moz-border-radius: 0;
 16.1811 +          border-radius: 0;
 16.1812 +}
 16.1813 +
 16.1814 +.input-prepend.input-append input + .btn-group .btn,
 16.1815 +.input-prepend.input-append select + .btn-group .btn,
 16.1816 +.input-prepend.input-append .uneditable-input + .btn-group .btn {
 16.1817 +  -webkit-border-radius: 0 4px 4px 0;
 16.1818 +     -moz-border-radius: 0 4px 4px 0;
 16.1819 +          border-radius: 0 4px 4px 0;
 16.1820 +}
 16.1821 +
 16.1822 +.input-prepend.input-append .add-on:first-child,
 16.1823 +.input-prepend.input-append .btn:first-child {
 16.1824 +  margin-right: -1px;
 16.1825 +  -webkit-border-radius: 4px 0 0 4px;
 16.1826 +     -moz-border-radius: 4px 0 0 4px;
 16.1827 +          border-radius: 4px 0 0 4px;
 16.1828 +}
 16.1829 +
 16.1830 +.input-prepend.input-append .add-on:last-child,
 16.1831 +.input-prepend.input-append .btn:last-child {
 16.1832 +  margin-left: -1px;
 16.1833 +  -webkit-border-radius: 0 4px 4px 0;
 16.1834 +     -moz-border-radius: 0 4px 4px 0;
 16.1835 +          border-radius: 0 4px 4px 0;
 16.1836 +}
 16.1837 +
 16.1838 +.input-prepend.input-append .btn-group:first-child {
 16.1839 +  margin-left: 0;
 16.1840 +}
 16.1841 +
 16.1842 +input.search-query {
 16.1843 +  padding-right: 14px;
 16.1844 +  padding-right: 4px \9;
 16.1845 +  padding-left: 14px;
 16.1846 +  padding-left: 4px \9;
 16.1847 +  /* IE7-8 doesn't have border-radius, so don't indent the padding */
 16.1848 +
 16.1849 +  margin-bottom: 0;
 16.1850 +  -webkit-border-radius: 15px;
 16.1851 +     -moz-border-radius: 15px;
 16.1852 +          border-radius: 15px;
 16.1853 +}
 16.1854 +
 16.1855 +/* Allow for input prepend/append in search forms */
 16.1856 +
 16.1857 +.form-search .input-append .search-query,
 16.1858 +.form-search .input-prepend .search-query {
 16.1859 +  -webkit-border-radius: 0;
 16.1860 +     -moz-border-radius: 0;
 16.1861 +          border-radius: 0;
 16.1862 +}
 16.1863 +
 16.1864 +.form-search .input-append .search-query {
 16.1865 +  -webkit-border-radius: 14px 0 0 14px;
 16.1866 +     -moz-border-radius: 14px 0 0 14px;
 16.1867 +          border-radius: 14px 0 0 14px;
 16.1868 +}
 16.1869 +
 16.1870 +.form-search .input-append .btn {
 16.1871 +  -webkit-border-radius: 0 14px 14px 0;
 16.1872 +     -moz-border-radius: 0 14px 14px 0;
 16.1873 +          border-radius: 0 14px 14px 0;
 16.1874 +}
 16.1875 +
 16.1876 +.form-search .input-prepend .search-query {
 16.1877 +  -webkit-border-radius: 0 14px 14px 0;
 16.1878 +     -moz-border-radius: 0 14px 14px 0;
 16.1879 +          border-radius: 0 14px 14px 0;
 16.1880 +}
 16.1881 +
 16.1882 +.form-search .input-prepend .btn {
 16.1883 +  -webkit-border-radius: 14px 0 0 14px;
 16.1884 +     -moz-border-radius: 14px 0 0 14px;
 16.1885 +          border-radius: 14px 0 0 14px;
 16.1886 +}
 16.1887 +
 16.1888 +.form-search input,
 16.1889 +.form-inline input,
 16.1890 +.form-horizontal input,
 16.1891 +.form-search textarea,
 16.1892 +.form-inline textarea,
 16.1893 +.form-horizontal textarea,
 16.1894 +.form-search select,
 16.1895 +.form-inline select,
 16.1896 +.form-horizontal select,
 16.1897 +.form-search .help-inline,
 16.1898 +.form-inline .help-inline,
 16.1899 +.form-horizontal .help-inline,
 16.1900 +.form-search .uneditable-input,
 16.1901 +.form-inline .uneditable-input,
 16.1902 +.form-horizontal .uneditable-input,
 16.1903 +.form-search .input-prepend,
 16.1904 +.form-inline .input-prepend,
 16.1905 +.form-horizontal .input-prepend,
 16.1906 +.form-search .input-append,
 16.1907 +.form-inline .input-append,
 16.1908 +.form-horizontal .input-append {
 16.1909 +  display: inline-block;
 16.1910 +  *display: inline;
 16.1911 +  margin-bottom: 0;
 16.1912 +  vertical-align: middle;
 16.1913 +  *zoom: 1;
 16.1914 +}
 16.1915 +
 16.1916 +.form-search .hide,
 16.1917 +.form-inline .hide,
 16.1918 +.form-horizontal .hide {
 16.1919 +  display: none;
 16.1920 +}
 16.1921 +
 16.1922 +.form-search label,
 16.1923 +.form-inline label,
 16.1924 +.form-search .btn-group,
 16.1925 +.form-inline .btn-group {
 16.1926 +  display: inline-block;
 16.1927 +}
 16.1928 +
 16.1929 +.form-search .input-append,
 16.1930 +.form-inline .input-append,
 16.1931 +.form-search .input-prepend,
 16.1932 +.form-inline .input-prepend {
 16.1933 +  margin-bottom: 0;
 16.1934 +}
 16.1935 +
 16.1936 +.form-search .radio,
 16.1937 +.form-search .checkbox,
 16.1938 +.form-inline .radio,
 16.1939 +.form-inline .checkbox {
 16.1940 +  padding-left: 0;
 16.1941 +  margin-bottom: 0;
 16.1942 +  vertical-align: middle;
 16.1943 +}
 16.1944 +
 16.1945 +.form-search .radio input[type="radio"],
 16.1946 +.form-search .checkbox input[type="checkbox"],
 16.1947 +.form-inline .radio input[type="radio"],
 16.1948 +.form-inline .checkbox input[type="checkbox"] {
 16.1949 +  float: left;
 16.1950 +  margin-right: 3px;
 16.1951 +  margin-left: 0;
 16.1952 +}
 16.1953 +
 16.1954 +.control-group {
 16.1955 +  margin-bottom: 10px;
 16.1956 +}
 16.1957 +
 16.1958 +legend + .control-group {
 16.1959 +  margin-top: 20px;
 16.1960 +  -webkit-margin-top-collapse: separate;
 16.1961 +}
 16.1962 +
 16.1963 +.form-horizontal .control-group {
 16.1964 +  margin-bottom: 20px;
 16.1965 +  *zoom: 1;
 16.1966 +}
 16.1967 +
 16.1968 +.form-horizontal .control-group:before,
 16.1969 +.form-horizontal .control-group:after {
 16.1970 +  display: table;
 16.1971 +  line-height: 0;
 16.1972 +  content: "";
 16.1973 +}
 16.1974 +
 16.1975 +.form-horizontal .control-group:after {
 16.1976 +  clear: both;
 16.1977 +}
 16.1978 +
 16.1979 +.form-horizontal .control-label {
 16.1980 +  float: left;
 16.1981 +  width: 160px;
 16.1982 +  padding-top: 5px;
 16.1983 +  text-align: right;
 16.1984 +}
 16.1985 +
 16.1986 +.form-horizontal .controls {
 16.1987 +  *display: inline-block;
 16.1988 +  *padding-left: 20px;
 16.1989 +  margin-left: 180px;
 16.1990 +  *margin-left: 0;
 16.1991 +}
 16.1992 +
 16.1993 +.form-horizontal .controls:first-child {
 16.1994 +  *padding-left: 180px;
 16.1995 +}
 16.1996 +
 16.1997 +.form-horizontal .help-block {
 16.1998 +  margin-bottom: 0;
 16.1999 +}
 16.2000 +
 16.2001 +.form-horizontal input + .help-block,
 16.2002 +.form-horizontal select + .help-block,
 16.2003 +.form-horizontal textarea + .help-block,
 16.2004 +.form-horizontal .uneditable-input + .help-block,
 16.2005 +.form-horizontal .input-prepend + .help-block,
 16.2006 +.form-horizontal .input-append + .help-block {
 16.2007 +  margin-top: 10px;
 16.2008 +}
 16.2009 +
 16.2010 +.form-horizontal .form-actions {
 16.2011 +  padding-left: 180px;
 16.2012 +}
 16.2013 +
 16.2014 +table {
 16.2015 +  max-width: 100%;
 16.2016 +  background-color: transparent;
 16.2017 +  border-collapse: collapse;
 16.2018 +  border-spacing: 0;
 16.2019 +}
 16.2020 +
 16.2021 +.table {
 16.2022 +  width: 100%;
 16.2023 +  margin-bottom: 20px;
 16.2024 +}
 16.2025 +
 16.2026 +.table th,
 16.2027 +.table td {
 16.2028 +  padding: 8px;
 16.2029 +  line-height: 20px;
 16.2030 +  text-align: left;
 16.2031 +  vertical-align: top;
 16.2032 +  border-top: 1px solid #dddddd;
 16.2033 +}
 16.2034 +
 16.2035 +.table th {
 16.2036 +  font-weight: bold;
 16.2037 +}
 16.2038 +
 16.2039 +.table thead th {
 16.2040 +  vertical-align: bottom;
 16.2041 +}
 16.2042 +
 16.2043 +.table caption + thead tr:first-child th,
 16.2044 +.table caption + thead tr:first-child td,
 16.2045 +.table colgroup + thead tr:first-child th,
 16.2046 +.table colgroup + thead tr:first-child td,
 16.2047 +.table thead:first-child tr:first-child th,
 16.2048 +.table thead:first-child tr:first-child td {
 16.2049 +  border-top: 0;
 16.2050 +}
 16.2051 +
 16.2052 +.table tbody + tbody {
 16.2053 +  border-top: 2px solid #dddddd;
 16.2054 +}
 16.2055 +
 16.2056 +.table .table {
 16.2057 +  background-color: #ffffff;
 16.2058 +}
 16.2059 +
 16.2060 +.table-condensed th,
 16.2061 +.table-condensed td {
 16.2062 +  padding: 4px 5px;
 16.2063 +}
 16.2064 +
 16.2065 +.table-bordered {
 16.2066 +  border: 1px solid #dddddd;
 16.2067 +  border-collapse: separate;
 16.2068 +  *border-collapse: collapse;
 16.2069 +  border-left: 0;
 16.2070 +  -webkit-border-radius: 4px;
 16.2071 +     -moz-border-radius: 4px;
 16.2072 +          border-radius: 4px;
 16.2073 +}
 16.2074 +
 16.2075 +.table-bordered th,
 16.2076 +.table-bordered td {
 16.2077 +  border-left: 1px solid #dddddd;
 16.2078 +}
 16.2079 +
 16.2080 +.table-bordered caption + thead tr:first-child th,
 16.2081 +.table-bordered caption + tbody tr:first-child th,
 16.2082 +.table-bordered caption + tbody tr:first-child td,
 16.2083 +.table-bordered colgroup + thead tr:first-child th,
 16.2084 +.table-bordered colgroup + tbody tr:first-child th,
 16.2085 +.table-bordered colgroup + tbody tr:first-child td,
 16.2086 +.table-bordered thead:first-child tr:first-child th,
 16.2087 +.table-bordered tbody:first-child tr:first-child th,
 16.2088 +.table-bordered tbody:first-child tr:first-child td {
 16.2089 +  border-top: 0;
 16.2090 +}
 16.2091 +
 16.2092 +.table-bordered thead:first-child tr:first-child > th:first-child,
 16.2093 +.table-bordered tbody:first-child tr:first-child > td:first-child,
 16.2094 +.table-bordered tbody:first-child tr:first-child > th:first-child {
 16.2095 +  -webkit-border-top-left-radius: 4px;
 16.2096 +          border-top-left-radius: 4px;
 16.2097 +  -moz-border-radius-topleft: 4px;
 16.2098 +}
 16.2099 +
 16.2100 +.table-bordered thead:first-child tr:first-child > th:last-child,
 16.2101 +.table-bordered tbody:first-child tr:first-child > td:last-child,
 16.2102 +.table-bordered tbody:first-child tr:first-child > th:last-child {
 16.2103 +  -webkit-border-top-right-radius: 4px;
 16.2104 +          border-top-right-radius: 4px;
 16.2105 +  -moz-border-radius-topright: 4px;
 16.2106 +}
 16.2107 +
 16.2108 +.table-bordered thead:last-child tr:last-child > th:first-child,
 16.2109 +.table-bordered tbody:last-child tr:last-child > td:first-child,
 16.2110 +.table-bordered tbody:last-child tr:last-child > th:first-child,
 16.2111 +.table-bordered tfoot:last-child tr:last-child > td:first-child,
 16.2112 +.table-bordered tfoot:last-child tr:last-child > th:first-child {
 16.2113 +  -webkit-border-bottom-left-radius: 4px;
 16.2114 +          border-bottom-left-radius: 4px;
 16.2115 +  -moz-border-radius-bottomleft: 4px;
 16.2116 +}
 16.2117 +
 16.2118 +.table-bordered thead:last-child tr:last-child > th:last-child,
 16.2119 +.table-bordered tbody:last-child tr:last-child > td:last-child,
 16.2120 +.table-bordered tbody:last-child tr:last-child > th:last-child,
 16.2121 +.table-bordered tfoot:last-child tr:last-child > td:last-child,
 16.2122 +.table-bordered tfoot:last-child tr:last-child > th:last-child {
 16.2123 +  -webkit-border-bottom-right-radius: 4px;
 16.2124 +          border-bottom-right-radius: 4px;
 16.2125 +  -moz-border-radius-bottomright: 4px;
 16.2126 +}
 16.2127 +
 16.2128 +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
 16.2129 +  -webkit-border-bottom-left-radius: 0;
 16.2130 +          border-bottom-left-radius: 0;
 16.2131 +  -moz-border-radius-bottomleft: 0;
 16.2132 +}
 16.2133 +
 16.2134 +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
 16.2135 +  -webkit-border-bottom-right-radius: 0;
 16.2136 +          border-bottom-right-radius: 0;
 16.2137 +  -moz-border-radius-bottomright: 0;
 16.2138 +}
 16.2139 +
 16.2140 +.table-bordered caption + thead tr:first-child th:first-child,
 16.2141 +.table-bordered caption + tbody tr:first-child td:first-child,
 16.2142 +.table-bordered colgroup + thead tr:first-child th:first-child,
 16.2143 +.table-bordered colgroup + tbody tr:first-child td:first-child {
 16.2144 +  -webkit-border-top-left-radius: 4px;
 16.2145 +          border-top-left-radius: 4px;
 16.2146 +  -moz-border-radius-topleft: 4px;
 16.2147 +}
 16.2148 +
 16.2149 +.table-bordered caption + thead tr:first-child th:last-child,
 16.2150 +.table-bordered caption + tbody tr:first-child td:last-child,
 16.2151 +.table-bordered colgroup + thead tr:first-child th:last-child,
 16.2152 +.table-bordered colgroup + tbody tr:first-child td:last-child {
 16.2153 +  -webkit-border-top-right-radius: 4px;
 16.2154 +          border-top-right-radius: 4px;
 16.2155 +  -moz-border-radius-topright: 4px;
 16.2156 +}
 16.2157 +
 16.2158 +.table-striped tbody > tr:nth-child(odd) > td,
 16.2159 +.table-striped tbody > tr:nth-child(odd) > th {
 16.2160 +  background-color: #f9f9f9;
 16.2161 +}
 16.2162 +
 16.2163 +.table-hover tbody tr:hover > td,
 16.2164 +.table-hover tbody tr:hover > th {
 16.2165 +  background-color: #f5f5f5;
 16.2166 +}
 16.2167 +
 16.2168 +table td[class*="span"],
 16.2169 +table th[class*="span"],
 16.2170 +.row-fluid table td[class*="span"],
 16.2171 +.row-fluid table th[class*="span"] {
 16.2172 +  display: table-cell;
 16.2173 +  float: none;
 16.2174 +  margin-left: 0;
 16.2175 +}
 16.2176 +
 16.2177 +.table td.span1,
 16.2178 +.table th.span1 {
 16.2179 +  float: none;
 16.2180 +  width: 44px;
 16.2181 +  margin-left: 0;
 16.2182 +}
 16.2183 +
 16.2184 +.table td.span2,
 16.2185 +.table th.span2 {
 16.2186 +  float: none;
 16.2187 +  width: 124px;
 16.2188 +  margin-left: 0;
 16.2189 +}
 16.2190 +
 16.2191 +.table td.span3,
 16.2192 +.table th.span3 {
 16.2193 +  float: none;
 16.2194 +  width: 204px;
 16.2195 +  margin-left: 0;
 16.2196 +}
 16.2197 +
 16.2198 +.table td.span4,
 16.2199 +.table th.span4 {
 16.2200 +  float: none;
 16.2201 +  width: 284px;
 16.2202 +  margin-left: 0;
 16.2203 +}
 16.2204 +
 16.2205 +.table td.span5,
 16.2206 +.table th.span5 {
 16.2207 +  float: none;
 16.2208 +  width: 364px;
 16.2209 +  margin-left: 0;
 16.2210 +}
 16.2211 +
 16.2212 +.table td.span6,
 16.2213 +.table th.span6 {
 16.2214 +  float: none;
 16.2215 +  width: 444px;
 16.2216 +  margin-left: 0;
 16.2217 +}
 16.2218 +
 16.2219 +.table td.span7,
 16.2220 +.table th.span7 {
 16.2221 +  float: none;
 16.2222 +  width: 524px;
 16.2223 +  margin-left: 0;
 16.2224 +}
 16.2225 +
 16.2226 +.table td.span8,
 16.2227 +.table th.span8 {
 16.2228 +  float: none;
 16.2229 +  width: 604px;
 16.2230 +  margin-left: 0;
 16.2231 +}
 16.2232 +
 16.2233 +.table td.span9,
 16.2234 +.table th.span9 {
 16.2235 +  float: none;
 16.2236 +  width: 684px;
 16.2237 +  margin-left: 0;
 16.2238 +}
 16.2239 +
 16.2240 +.table td.span10,
 16.2241 +.table th.span10 {
 16.2242 +  float: none;
 16.2243 +  width: 764px;
 16.2244 +  margin-left: 0;
 16.2245 +}
 16.2246 +
 16.2247 +.table td.span11,
 16.2248 +.table th.span11 {
 16.2249 +  float: none;
 16.2250 +  width: 844px;
 16.2251 +  margin-left: 0;
 16.2252 +}
 16.2253 +
 16.2254 +.table td.span12,
 16.2255 +.table th.span12 {
 16.2256 +  float: none;
 16.2257 +  width: 924px;
 16.2258 +  margin-left: 0;
 16.2259 +}
 16.2260 +
 16.2261 +.table tbody tr.success > td {
 16.2262 +  background-color: #dff0d8;
 16.2263 +}
 16.2264 +
 16.2265 +.table tbody tr.error > td {
 16.2266 +  background-color: #f2dede;
 16.2267 +}
 16.2268 +
 16.2269 +.table tbody tr.warning > td {
 16.2270 +  background-color: #fcf8e3;
 16.2271 +}
 16.2272 +
 16.2273 +.table tbody tr.info > td {
 16.2274 +  background-color: #d9edf7;
 16.2275 +}
 16.2276 +
 16.2277 +.table-hover tbody tr.success:hover > td {
 16.2278 +  background-color: #d0e9c6;
 16.2279 +}
 16.2280 +
 16.2281 +.table-hover tbody tr.error:hover > td {
 16.2282 +  background-color: #ebcccc;
 16.2283 +}
 16.2284 +
 16.2285 +.table-hover tbody tr.warning:hover > td {
 16.2286 +  background-color: #faf2cc;
 16.2287 +}
 16.2288 +
 16.2289 +.table-hover tbody tr.info:hover > td {
 16.2290 +  background-color: #c4e3f3;
 16.2291 +}
 16.2292 +
 16.2293 +[class^="icon-"],
 16.2294 +[class*=" icon-"] {
 16.2295 +  display: inline-block;
 16.2296 +  width: 14px;
 16.2297 +  height: 14px;
 16.2298 +  margin-top: 1px;
 16.2299 +  *margin-right: .3em;
 16.2300 +  line-height: 14px;
 16.2301 +  vertical-align: text-top;
 16.2302 +  background-image: url("../img/glyphicons-halflings.png");
 16.2303 +  background-position: 14px 14px;
 16.2304 +  background-repeat: no-repeat;
 16.2305 +}
 16.2306 +
 16.2307 +/* White icons with optional class, or on hover/focus/active states of certain elements */
 16.2308 +
 16.2309 +.icon-white,
 16.2310 +.nav-pills > .active > a > [class^="icon-"],
 16.2311 +.nav-pills > .active > a > [class*=" icon-"],
 16.2312 +.nav-list > .active > a > [class^="icon-"],
 16.2313 +.nav-list > .active > a > [class*=" icon-"],
 16.2314 +.navbar-inverse .nav > .active > a > [class^="icon-"],
 16.2315 +.navbar-inverse .nav > .active > a > [class*=" icon-"],
 16.2316 +.dropdown-menu > li > a:hover > [class^="icon-"],
 16.2317 +.dropdown-menu > li > a:focus > [class^="icon-"],
 16.2318 +.dropdown-menu > li > a:hover > [class*=" icon-"],
 16.2319 +.dropdown-menu > li > a:focus > [class*=" icon-"],
 16.2320 +.dropdown-menu > .active > a > [class^="icon-"],
 16.2321 +.dropdown-menu > .active > a > [class*=" icon-"],
 16.2322 +.dropdown-submenu:hover > a > [class^="icon-"],
 16.2323 +.dropdown-submenu:focus > a > [class^="icon-"],
 16.2324 +.dropdown-submenu:hover > a > [class*=" icon-"],
 16.2325 +.dropdown-submenu:focus > a > [class*=" icon-"] {
 16.2326 +  background-image: url("../img/glyphicons-halflings-white.png");
 16.2327 +}
 16.2328 +
 16.2329 +.icon-glass {
 16.2330 +  background-position: 0      0;
 16.2331 +}
 16.2332 +
 16.2333 +.icon-music {
 16.2334 +  background-position: -24px 0;
 16.2335 +}
 16.2336 +
 16.2337 +.icon-search {
 16.2338 +  background-position: -48px 0;
 16.2339 +}
 16.2340 +
 16.2341 +.icon-envelope {
 16.2342 +  background-position: -72px 0;
 16.2343 +}
 16.2344 +
 16.2345 +.icon-heart {
 16.2346 +  background-position: -96px 0;
 16.2347 +}
 16.2348 +
 16.2349 +.icon-star {
 16.2350 +  background-position: -120px 0;
 16.2351 +}
 16.2352 +
 16.2353 +.icon-star-empty {
 16.2354 +  background-position: -144px 0;
 16.2355 +}
 16.2356 +
 16.2357 +.icon-user {
 16.2358 +  background-position: -168px 0;
 16.2359 +}
 16.2360 +
 16.2361 +.icon-film {
 16.2362 +  background-position: -192px 0;
 16.2363 +}
 16.2364 +
 16.2365 +.icon-th-large {
 16.2366 +  background-position: -216px 0;
 16.2367 +}
 16.2368 +
 16.2369 +.icon-th {
 16.2370 +  background-position: -240px 0;
 16.2371 +}
 16.2372 +
 16.2373 +.icon-th-list {
 16.2374 +  background-position: -264px 0;
 16.2375 +}
 16.2376 +
 16.2377 +.icon-ok {
 16.2378 +  background-position: -288px 0;
 16.2379 +}
 16.2380 +
 16.2381 +.icon-remove {
 16.2382 +  background-position: -312px 0;
 16.2383 +}
 16.2384 +
 16.2385 +.icon-zoom-in {
 16.2386 +  background-position: -336px 0;
 16.2387 +}
 16.2388 +
 16.2389 +.icon-zoom-out {
 16.2390 +  background-position: -360px 0;
 16.2391 +}
 16.2392 +
 16.2393 +.icon-off {
 16.2394 +  background-position: -384px 0;
 16.2395 +}
 16.2396 +
 16.2397 +.icon-signal {
 16.2398 +  background-position: -408px 0;
 16.2399 +}
 16.2400 +
 16.2401 +.icon-cog {
 16.2402 +  background-position: -432px 0;
 16.2403 +}
 16.2404 +
 16.2405 +.icon-trash {
 16.2406 +  background-position: -456px 0;
 16.2407 +}
 16.2408 +
 16.2409 +.icon-home {
 16.2410 +  background-position: 0 -24px;
 16.2411 +}
 16.2412 +
 16.2413 +.icon-file {
 16.2414 +  background-position: -24px -24px;
 16.2415 +}
 16.2416 +
 16.2417 +.icon-time {
 16.2418 +  background-position: -48px -24px;
 16.2419 +}
 16.2420 +
 16.2421 +.icon-road {
 16.2422 +  background-position: -72px -24px;
 16.2423 +}
 16.2424 +
 16.2425 +.icon-download-alt {
 16.2426 +  background-position: -96px -24px;
 16.2427 +}
 16.2428 +
 16.2429 +.icon-download {
 16.2430 +  background-position: -120px -24px;
 16.2431 +}
 16.2432 +
 16.2433 +.icon-upload {
 16.2434 +  background-position: -144px -24px;
 16.2435 +}
 16.2436 +
 16.2437 +.icon-inbox {
 16.2438 +  background-position: -168px -24px;
 16.2439 +}
 16.2440 +
 16.2441 +.icon-play-circle {
 16.2442 +  background-position: -192px -24px;
 16.2443 +}
 16.2444 +
 16.2445 +.icon-repeat {
 16.2446 +  background-position: -216px -24px;
 16.2447 +}
 16.2448 +
 16.2449 +.icon-refresh {
 16.2450 +  background-position: -240px -24px;
 16.2451 +}
 16.2452 +
 16.2453 +.icon-list-alt {
 16.2454 +  background-position: -264px -24px;
 16.2455 +}
 16.2456 +
 16.2457 +.icon-lock {
 16.2458 +  background-position: -287px -24px;
 16.2459 +}
 16.2460 +
 16.2461 +.icon-flag {
 16.2462 +  background-position: -312px -24px;
 16.2463 +}
 16.2464 +
 16.2465 +.icon-headphones {
 16.2466 +  background-position: -336px -24px;
 16.2467 +}
 16.2468 +
 16.2469 +.icon-volume-off {
 16.2470 +  background-position: -360px -24px;
 16.2471 +}
 16.2472 +
 16.2473 +.icon-volume-down {
 16.2474 +  background-position: -384px -24px;
 16.2475 +}
 16.2476 +
 16.2477 +.icon-volume-up {
 16.2478 +  background-position: -408px -24px;
 16.2479 +}
 16.2480 +
 16.2481 +.icon-qrcode {
 16.2482 +  background-position: -432px -24px;
 16.2483 +}
 16.2484 +
 16.2485 +.icon-barcode {
 16.2486 +  background-position: -456px -24px;
 16.2487 +}
 16.2488 +
 16.2489 +.icon-tag {
 16.2490 +  background-position: 0 -48px;
 16.2491 +}
 16.2492 +
 16.2493 +.icon-tags {
 16.2494 +  background-position: -25px -48px;
 16.2495 +}
 16.2496 +
 16.2497 +.icon-book {
 16.2498 +  background-position: -48px -48px;
 16.2499 +}
 16.2500 +
 16.2501 +.icon-bookmark {
 16.2502 +  background-position: -72px -48px;
 16.2503 +}
 16.2504 +
 16.2505 +.icon-print {
 16.2506 +  background-position: -96px -48px;
 16.2507 +}
 16.2508 +
 16.2509 +.icon-camera {
 16.2510 +  background-position: -120px -48px;
 16.2511 +}
 16.2512 +
 16.2513 +.icon-font {
 16.2514 +  background-position: -144px -48px;
 16.2515 +}
 16.2516 +
 16.2517 +.icon-bold {
 16.2518 +  background-position: -167px -48px;
 16.2519 +}
 16.2520 +
 16.2521 +.icon-italic {
 16.2522 +  background-position: -192px -48px;
 16.2523 +}
 16.2524 +
 16.2525 +.icon-text-height {
 16.2526 +  background-position: -216px -48px;
 16.2527 +}
 16.2528 +
 16.2529 +.icon-text-width {
 16.2530 +  background-position: -240px -48px;
 16.2531 +}
 16.2532 +
 16.2533 +.icon-align-left {
 16.2534 +  background-position: -264px -48px;
 16.2535 +}
 16.2536 +
 16.2537 +.icon-align-center {
 16.2538 +  background-position: -288px -48px;
 16.2539 +}
 16.2540 +
 16.2541 +.icon-align-right {
 16.2542 +  background-position: -312px -48px;
 16.2543 +}
 16.2544 +
 16.2545 +.icon-align-justify {
 16.2546 +  background-position: -336px -48px;
 16.2547 +}
 16.2548 +
 16.2549 +.icon-list {
 16.2550 +  background-position: -360px -48px;
 16.2551 +}
 16.2552 +
 16.2553 +.icon-indent-left {
 16.2554 +  background-position: -384px -48px;
 16.2555 +}
 16.2556 +
 16.2557 +.icon-indent-right {
 16.2558 +  background-position: -408px -48px;
 16.2559 +}
 16.2560 +
 16.2561 +.icon-facetime-video {
 16.2562 +  background-position: -432px -48px;
 16.2563 +}
 16.2564 +
 16.2565 +.icon-picture {
 16.2566 +  background-position: -456px -48px;
 16.2567 +}
 16.2568 +
 16.2569 +.icon-pencil {
 16.2570 +  background-position: 0 -72px;
 16.2571 +}
 16.2572 +
 16.2573 +.icon-map-marker {
 16.2574 +  background-position: -24px -72px;
 16.2575 +}
 16.2576 +
 16.2577 +.icon-adjust {
 16.2578 +  background-position: -48px -72px;
 16.2579 +}
 16.2580 +
 16.2581 +.icon-tint {
 16.2582 +  background-position: -72px -72px;
 16.2583 +}
 16.2584 +
 16.2585 +.icon-edit {
 16.2586 +  background-position: -96px -72px;
 16.2587 +}
 16.2588 +
 16.2589 +.icon-share {
 16.2590 +  background-position: -120px -72px;
 16.2591 +}
 16.2592 +
 16.2593 +.icon-check {
 16.2594 +  background-position: -144px -72px;
 16.2595 +}
 16.2596 +
 16.2597 +.icon-move {
 16.2598 +  background-position: -168px -72px;
 16.2599 +}
 16.2600 +
 16.2601 +.icon-step-backward {
 16.2602 +  background-position: -192px -72px;
 16.2603 +}
 16.2604 +
 16.2605 +.icon-fast-backward {
 16.2606 +  background-position: -216px -72px;
 16.2607 +}
 16.2608 +
 16.2609 +.icon-backward {
 16.2610 +  background-position: -240px -72px;
 16.2611 +}
 16.2612 +
 16.2613 +.icon-play {
 16.2614 +  background-position: -264px -72px;
 16.2615 +}
 16.2616 +
 16.2617 +.icon-pause {
 16.2618 +  background-position: -288px -72px;
 16.2619 +}
 16.2620 +
 16.2621 +.icon-stop {
 16.2622 +  background-position: -312px -72px;
 16.2623 +}
 16.2624 +
 16.2625 +.icon-forward {
 16.2626 +  background-position: -336px -72px;
 16.2627 +}
 16.2628 +
 16.2629 +.icon-fast-forward {
 16.2630 +  background-position: -360px -72px;
 16.2631 +}
 16.2632 +
 16.2633 +.icon-step-forward {
 16.2634 +  background-position: -384px -72px;
 16.2635 +}
 16.2636 +
 16.2637 +.icon-eject {
 16.2638 +  background-position: -408px -72px;
 16.2639 +}
 16.2640 +
 16.2641 +.icon-chevron-left {
 16.2642 +  background-position: -432px -72px;
 16.2643 +}
 16.2644 +
 16.2645 +.icon-chevron-right {
 16.2646 +  background-position: -456px -72px;
 16.2647 +}
 16.2648 +
 16.2649 +.icon-plus-sign {
 16.2650 +  background-position: 0 -96px;
 16.2651 +}
 16.2652 +
 16.2653 +.icon-minus-sign {
 16.2654 +  background-position: -24px -96px;
 16.2655 +}
 16.2656 +
 16.2657 +.icon-remove-sign {
 16.2658 +  background-position: -48px -96px;
 16.2659 +}
 16.2660 +
 16.2661 +.icon-ok-sign {
 16.2662 +  background-position: -72px -96px;
 16.2663 +}
 16.2664 +
 16.2665 +.icon-question-sign {
 16.2666 +  background-position: -96px -96px;
 16.2667 +}
 16.2668 +
 16.2669 +.icon-info-sign {
 16.2670 +  background-position: -120px -96px;
 16.2671 +}
 16.2672 +
 16.2673 +.icon-screenshot {
 16.2674 +  background-position: -144px -96px;
 16.2675 +}
 16.2676 +
 16.2677 +.icon-remove-circle {
 16.2678 +  background-position: -168px -96px;
 16.2679 +}
 16.2680 +
 16.2681 +.icon-ok-circle {
 16.2682 +  background-position: -192px -96px;
 16.2683 +}
 16.2684 +
 16.2685 +.icon-ban-circle {
 16.2686 +  background-position: -216px -96px;
 16.2687 +}
 16.2688 +
 16.2689 +.icon-arrow-left {
 16.2690 +  background-position: -240px -96px;
 16.2691 +}
 16.2692 +
 16.2693 +.icon-arrow-right {
 16.2694 +  background-position: -264px -96px;
 16.2695 +}
 16.2696 +
 16.2697 +.icon-arrow-up {
 16.2698 +  background-position: -289px -96px;
 16.2699 +}
 16.2700 +
 16.2701 +.icon-arrow-down {
 16.2702 +  background-position: -312px -96px;
 16.2703 +}
 16.2704 +
 16.2705 +.icon-share-alt {
 16.2706 +  background-position: -336px -96px;
 16.2707 +}
 16.2708 +
 16.2709 +.icon-resize-full {
 16.2710 +  background-position: -360px -96px;
 16.2711 +}
 16.2712 +
 16.2713 +.icon-resize-small {
 16.2714 +  background-position: -384px -96px;
 16.2715 +}
 16.2716 +
 16.2717 +.icon-plus {
 16.2718 +  background-position: -408px -96px;
 16.2719 +}
 16.2720 +
 16.2721 +.icon-minus {
 16.2722 +  background-position: -433px -96px;
 16.2723 +}
 16.2724 +
 16.2725 +.icon-asterisk {
 16.2726 +  background-position: -456px -96px;
 16.2727 +}
 16.2728 +
 16.2729 +.icon-exclamation-sign {
 16.2730 +  background-position: 0 -120px;
 16.2731 +}
 16.2732 +
 16.2733 +.icon-gift {
 16.2734 +  background-position: -24px -120px;
 16.2735 +}
 16.2736 +
 16.2737 +.icon-leaf {
 16.2738 +  background-position: -48px -120px;
 16.2739 +}
 16.2740 +
 16.2741 +.icon-fire {
 16.2742 +  background-position: -72px -120px;
 16.2743 +}
 16.2744 +
 16.2745 +.icon-eye-open {
 16.2746 +  background-position: -96px -120px;
 16.2747 +}
 16.2748 +
 16.2749 +.icon-eye-close {
 16.2750 +  background-position: -120px -120px;
 16.2751 +}
 16.2752 +
 16.2753 +.icon-warning-sign {
 16.2754 +  background-position: -144px -120px;
 16.2755 +}
 16.2756 +
 16.2757 +.icon-plane {
 16.2758 +  background-position: -168px -120px;
 16.2759 +}
 16.2760 +
 16.2761 +.icon-calendar {
 16.2762 +  background-position: -192px -120px;
 16.2763 +}
 16.2764 +
 16.2765 +.icon-random {
 16.2766 +  width: 16px;
 16.2767 +  background-position: -216px -120px;
 16.2768 +}
 16.2769 +
 16.2770 +.icon-comment {
 16.2771 +  background-position: -240px -120px;
 16.2772 +}
 16.2773 +
 16.2774 +.icon-magnet {
 16.2775 +  background-position: -264px -120px;
 16.2776 +}
 16.2777 +
 16.2778 +.icon-chevron-up {
 16.2779 +  background-position: -288px -120px;
 16.2780 +}
 16.2781 +
 16.2782 +.icon-chevron-down {
 16.2783 +  background-position: -313px -119px;
 16.2784 +}
 16.2785 +
 16.2786 +.icon-retweet {
 16.2787 +  background-position: -336px -120px;
 16.2788 +}
 16.2789 +
 16.2790 +.icon-shopping-cart {
 16.2791 +  background-position: -360px -120px;
 16.2792 +}
 16.2793 +
 16.2794 +.icon-folder-close {
 16.2795 +  width: 16px;
 16.2796 +  background-position: -384px -120px;
 16.2797 +}
 16.2798 +
 16.2799 +.icon-folder-open {
 16.2800 +  width: 16px;
 16.2801 +  background-position: -408px -120px;
 16.2802 +}
 16.2803 +
 16.2804 +.icon-resize-vertical {
 16.2805 +  background-position: -432px -119px;
 16.2806 +}
 16.2807 +
 16.2808 +.icon-resize-horizontal {
 16.2809 +  background-position: -456px -118px;
 16.2810 +}
 16.2811 +
 16.2812 +.icon-hdd {
 16.2813 +  background-position: 0 -144px;
 16.2814 +}
 16.2815 +
 16.2816 +.icon-bullhorn {
 16.2817 +  background-position: -24px -144px;
 16.2818 +}
 16.2819 +
 16.2820 +.icon-bell {
 16.2821 +  background-position: -48px -144px;
 16.2822 +}
 16.2823 +
 16.2824 +.icon-certificate {
 16.2825 +  background-position: -72px -144px;
 16.2826 +}
 16.2827 +
 16.2828 +.icon-thumbs-up {
 16.2829 +  background-position: -96px -144px;
 16.2830 +}
 16.2831 +
 16.2832 +.icon-thumbs-down {
 16.2833 +  background-position: -120px -144px;
 16.2834 +}
 16.2835 +
 16.2836 +.icon-hand-right {
 16.2837 +  background-position: -144px -144px;
 16.2838 +}
 16.2839 +
 16.2840 +.icon-hand-left {
 16.2841 +  background-position: -168px -144px;
 16.2842 +}
 16.2843 +
 16.2844 +.icon-hand-up {
 16.2845 +  background-position: -192px -144px;
 16.2846 +}
 16.2847 +
 16.2848 +.icon-hand-down {
 16.2849 +  background-position: -216px -144px;
 16.2850 +}
 16.2851 +
 16.2852 +.icon-circle-arrow-right {
 16.2853 +  background-position: -240px -144px;
 16.2854 +}
 16.2855 +
 16.2856 +.icon-circle-arrow-left {
 16.2857 +  background-position: -264px -144px;
 16.2858 +}
 16.2859 +
 16.2860 +.icon-circle-arrow-up {
 16.2861 +  background-position: -288px -144px;
 16.2862 +}
 16.2863 +
 16.2864 +.icon-circle-arrow-down {
 16.2865 +  background-position: -312px -144px;
 16.2866 +}
 16.2867 +
 16.2868 +.icon-globe {
 16.2869 +  background-position: -336px -144px;
 16.2870 +}
 16.2871 +
 16.2872 +.icon-wrench {
 16.2873 +  background-position: -360px -144px;
 16.2874 +}
 16.2875 +
 16.2876 +.icon-tasks {
 16.2877 +  background-position: -384px -144px;
 16.2878 +}
 16.2879 +
 16.2880 +.icon-filter {
 16.2881 +  background-position: -408px -144px;
 16.2882 +}
 16.2883 +
 16.2884 +.icon-briefcase {
 16.2885 +  background-position: -432px -144px;
 16.2886 +}
 16.2887 +
 16.2888 +.icon-fullscreen {
 16.2889 +  background-position: -456px -144px;
 16.2890 +}
 16.2891 +
 16.2892 +.dropup,
 16.2893 +.dropdown {
 16.2894 +  position: relative;
 16.2895 +}
 16.2896 +
 16.2897 +.dropdown-toggle {
 16.2898 +  *margin-bottom: -3px;
 16.2899 +}
 16.2900 +
 16.2901 +.dropdown-toggle:active,
 16.2902 +.open .dropdown-toggle {
 16.2903 +  outline: 0;
 16.2904 +}
 16.2905 +
 16.2906 +.caret {
 16.2907 +  display: inline-block;
 16.2908 +  width: 0;
 16.2909 +  height: 0;
 16.2910 +  vertical-align: top;
 16.2911 +  border-top: 4px solid #000000;
 16.2912 +  border-right: 4px solid transparent;
 16.2913 +  border-left: 4px solid transparent;
 16.2914 +  content: "";
 16.2915 +}
 16.2916 +
 16.2917 +.dropdown .caret {
 16.2918 +  margin-top: 8px;
 16.2919 +  margin-left: 2px;
 16.2920 +}
 16.2921 +
 16.2922 +.dropdown-menu {
 16.2923 +  position: absolute;
 16.2924 +  top: 100%;
 16.2925 +  left: 0;
 16.2926 +  z-index: 1000;
 16.2927 +  display: none;
 16.2928 +  float: left;
 16.2929 +  min-width: 160px;
 16.2930 +  padding: 5px 0;
 16.2931 +  margin: 2px 0 0;
 16.2932 +  list-style: none;
 16.2933 +  background-color: #ffffff;
 16.2934 +  border: 1px solid #ccc;
 16.2935 +  border: 1px solid rgba(0, 0, 0, 0.2);
 16.2936 +  *border-right-width: 2px;
 16.2937 +  *border-bottom-width: 2px;
 16.2938 +  -webkit-border-radius: 6px;
 16.2939 +     -moz-border-radius: 6px;
 16.2940 +          border-radius: 6px;
 16.2941 +  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
 16.2942 +     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
 16.2943 +          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
 16.2944 +  -webkit-background-clip: padding-box;
 16.2945 +     -moz-background-clip: padding;
 16.2946 +          background-clip: padding-box;
 16.2947 +}
 16.2948 +
 16.2949 +.dropdown-menu.pull-right {
 16.2950 +  right: 0;
 16.2951 +  left: auto;
 16.2952 +}
 16.2953 +
 16.2954 +.dropdown-menu .divider {
 16.2955 +  *width: 100%;
 16.2956 +  height: 1px;
 16.2957 +  margin: 9px 1px;
 16.2958 +  *margin: -5px 0 5px;
 16.2959 +  overflow: hidden;
 16.2960 +  background-color: #e5e5e5;
 16.2961 +  border-bottom: 1px solid #ffffff;
 16.2962 +}
 16.2963 +
 16.2964 +.dropdown-menu > li > a {
 16.2965 +  display: block;
 16.2966 +  padding: 3px 20px;
 16.2967 +  clear: both;
 16.2968 +  font-weight: normal;
 16.2969 +  line-height: 20px;
 16.2970 +  color: #333333;
 16.2971 +  white-space: nowrap;
 16.2972 +}
 16.2973 +
 16.2974 +.dropdown-menu > li > a:hover,
 16.2975 +.dropdown-menu > li > a:focus,
 16.2976 +.dropdown-submenu:hover > a,
 16.2977 +.dropdown-submenu:focus > a {
 16.2978 +  color: #ffffff;
 16.2979 +  text-decoration: none;
 16.2980 +  background-color: #0081c2;
 16.2981 +  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
 16.2982 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
 16.2983 +  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
 16.2984 +  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
 16.2985 +  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
 16.2986 +  background-repeat: repeat-x;
 16.2987 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
 16.2988 +}
 16.2989 +
 16.2990 +.dropdown-menu > .active > a,
 16.2991 +.dropdown-menu > .active > a:hover,
 16.2992 +.dropdown-menu > .active > a:focus {
 16.2993 +  color: #ffffff;
 16.2994 +  text-decoration: none;
 16.2995 +  background-color: #0081c2;
 16.2996 +  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
 16.2997 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
 16.2998 +  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
 16.2999 +  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
 16.3000 +  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
 16.3001 +  background-repeat: repeat-x;
 16.3002 +  outline: 0;
 16.3003 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
 16.3004 +}
 16.3005 +
 16.3006 +.dropdown-menu > .disabled > a,
 16.3007 +.dropdown-menu > .disabled > a:hover,
 16.3008 +.dropdown-menu > .disabled > a:focus {
 16.3009 +  color: #999999;
 16.3010 +}
 16.3011 +
 16.3012 +.dropdown-menu > .disabled > a:hover,
 16.3013 +.dropdown-menu > .disabled > a:focus {
 16.3014 +  text-decoration: none;
 16.3015 +  cursor: default;
 16.3016 +  background-color: transparent;
 16.3017 +  background-image: none;
 16.3018 +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
 16.3019 +}
 16.3020 +
 16.3021 +.open {
 16.3022 +  *z-index: 1000;
 16.3023 +}
 16.3024 +
 16.3025 +.open > .dropdown-menu {
 16.3026 +  display: block;
 16.3027 +}
 16.3028 +
 16.3029 +.dropdown-backdrop {
 16.3030 +  position: fixed;
 16.3031 +  top: 0;
 16.3032 +  right: 0;
 16.3033 +  bottom: 0;
 16.3034 +  left: 0;
 16.3035 +  z-index: 990;
 16.3036 +}
 16.3037 +
 16.3038 +.pull-right > .dropdown-menu {
 16.3039 +  right: 0;
 16.3040 +  left: auto;
 16.3041 +}
 16.3042 +
 16.3043 +.dropup .caret,
 16.3044 +.navbar-fixed-bottom .dropdown .caret {
 16.3045 +  border-top: 0;
 16.3046 +  border-bottom: 4px solid #000000;
 16.3047 +  content: "";
 16.3048 +}
 16.3049 +
 16.3050 +.dropup .dropdown-menu,
 16.3051 +.navbar-fixed-bottom .dropdown .dropdown-menu {
 16.3052 +  top: auto;
 16.3053 +  bottom: 100%;
 16.3054 +  margin-bottom: 1px;
 16.3055 +}
 16.3056 +
 16.3057 +.dropdown-submenu {
 16.3058 +  position: relative;
 16.3059 +}
 16.3060 +
 16.3061 +.dropdown-submenu > .dropdown-menu {
 16.3062 +  top: 0;
 16.3063 +  left: 100%;
 16.3064 +  margin-top: -6px;
 16.3065 +  margin-left: -1px;
 16.3066 +  -webkit-border-radius: 0 6px 6px 6px;
 16.3067 +     -moz-border-radius: 0 6px 6px 6px;
 16.3068 +          border-radius: 0 6px 6px 6px;
 16.3069 +}
 16.3070 +
 16.3071 +.dropdown-submenu:hover > .dropdown-menu {
 16.3072 +  display: block;
 16.3073 +}
 16.3074 +
 16.3075 +.dropup .dropdown-submenu > .dropdown-menu {
 16.3076 +  top: auto;
 16.3077 +  bottom: 0;
 16.3078 +  margin-top: 0;
 16.3079 +  margin-bottom: -2px;
 16.3080 +  -webkit-border-radius: 5px 5px 5px 0;
 16.3081 +     -moz-border-radius: 5px 5px 5px 0;
 16.3082 +          border-radius: 5px 5px 5px 0;
 16.3083 +}
 16.3084 +
 16.3085 +.dropdown-submenu > a:after {
 16.3086 +  display: block;
 16.3087 +  float: right;
 16.3088 +  width: 0;
 16.3089 +  height: 0;
 16.3090 +  margin-top: 5px;
 16.3091 +  margin-right: -10px;
 16.3092 +  border-color: transparent;
 16.3093 +  border-left-color: #cccccc;
 16.3094 +  border-style: solid;
 16.3095 +  border-width: 5px 0 5px 5px;
 16.3096 +  content: " ";
 16.3097 +}
 16.3098 +
 16.3099 +.dropdown-submenu:hover > a:after {
 16.3100 +  border-left-color: #ffffff;
 16.3101 +}
 16.3102 +
 16.3103 +.dropdown-submenu.pull-left {
 16.3104 +  float: none;
 16.3105 +}
 16.3106 +
 16.3107 +.dropdown-submenu.pull-left > .dropdown-menu {
 16.3108 +  left: -100%;
 16.3109 +  margin-left: 10px;
 16.3110 +  -webkit-border-radius: 6px 0 6px 6px;
 16.3111 +     -moz-border-radius: 6px 0 6px 6px;
 16.3112 +          border-radius: 6px 0 6px 6px;
 16.3113 +}
 16.3114 +
 16.3115 +.dropdown .dropdown-menu .nav-header {
 16.3116 +  padding-right: 20px;
 16.3117 +  padding-left: 20px;
 16.3118 +}
 16.3119 +
 16.3120 +.typeahead {
 16.3121 +  z-index: 1051;
 16.3122 +  margin-top: 2px;
 16.3123 +  -webkit-border-radius: 4px;
 16.3124 +     -moz-border-radius: 4px;
 16.3125 +          border-radius: 4px;
 16.3126 +}
 16.3127 +
 16.3128 +.well {
 16.3129 +  min-height: 20px;
 16.3130 +  padding: 19px;
 16.3131 +  margin-bottom: 20px;
 16.3132 +  background-color: #f5f5f5;
 16.3133 +  border: 1px solid #e3e3e3;
 16.3134 +  -webkit-border-radius: 4px;
 16.3135 +     -moz-border-radius: 4px;
 16.3136 +          border-radius: 4px;
 16.3137 +  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
 16.3138 +     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
 16.3139 +          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
 16.3140 +}
 16.3141 +
 16.3142 +.well blockquote {
 16.3143 +  border-color: #ddd;
 16.3144 +  border-color: rgba(0, 0, 0, 0.15);
 16.3145 +}
 16.3146 +
 16.3147 +.well-large {
 16.3148 +  padding: 24px;
 16.3149 +  -webkit-border-radius: 6px;
 16.3150 +     -moz-border-radius: 6px;
 16.3151 +          border-radius: 6px;
 16.3152 +}
 16.3153 +
 16.3154 +.well-small {
 16.3155 +  padding: 9px;
 16.3156 +  -webkit-border-radius: 3px;
 16.3157 +     -moz-border-radius: 3px;
 16.3158 +          border-radius: 3px;
 16.3159 +}
 16.3160 +
 16.3161 +.fade {
 16.3162 +  opacity: 0;
 16.3163 +  -webkit-transition: opacity 0.15s linear;
 16.3164 +     -moz-transition: opacity 0.15s linear;
 16.3165 +       -o-transition: opacity 0.15s linear;
 16.3166 +          transition: opacity 0.15s linear;
 16.3167 +}
 16.3168 +
 16.3169 +.fade.in {
 16.3170 +  opacity: 1;
 16.3171 +}
 16.3172 +
 16.3173 +.collapse {
 16.3174 +  position: relative;
 16.3175 +  height: 0;
 16.3176 +  overflow: hidden;
 16.3177 +  -webkit-transition: height 0.35s ease;
 16.3178 +     -moz-transition: height 0.35s ease;
 16.3179 +       -o-transition: height 0.35s ease;
 16.3180 +          transition: height 0.35s ease;
 16.3181 +}
 16.3182 +
 16.3183 +.collapse.in {
 16.3184 +  height: auto;
 16.3185 +}
 16.3186 +
 16.3187 +.close {
 16.3188 +  float: right;
 16.3189 +  font-size: 20px;
 16.3190 +  font-weight: bold;
 16.3191 +  line-height: 20px;
 16.3192 +  color: #000000;
 16.3193 +  text-shadow: 0 1px 0 #ffffff;
 16.3194 +  opacity: 0.2;
 16.3195 +  filter: alpha(opacity=20);
 16.3196 +}
 16.3197 +
 16.3198 +.close:hover,
 16.3199 +.close:focus {
 16.3200 +  color: #000000;
 16.3201 +  text-decoration: none;
 16.3202 +  cursor: pointer;
 16.3203 +  opacity: 0.4;
 16.3204 +  filter: alpha(opacity=40);
 16.3205 +}
 16.3206 +
 16.3207 +button.close {
 16.3208 +  padding: 0;
 16.3209 +  cursor: pointer;
 16.3210 +  background: transparent;
 16.3211 +  border: 0;
 16.3212 +  -webkit-appearance: none;
 16.3213 +}
 16.3214 +
 16.3215 +.btn {
 16.3216 +  display: inline-block;
 16.3217 +  *display: inline;
 16.3218 +  padding: 4px 12px;
 16.3219 +  margin-bottom: 0;
 16.3220 +  *margin-left: .3em;
 16.3221 +  font-size: 14px;
 16.3222 +  line-height: 20px;
 16.3223 +  color: #333333;
 16.3224 +  text-align: center;
 16.3225 +  text-shadow: none;
 16.3226 +  vertical-align: middle;
 16.3227 +  cursor: pointer;
 16.3228 +  background-color: #f5f5f5;
 16.3229 +  *background-color: #e6e6e6;
 16.3230 +  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
 16.3231 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
 16.3232 +  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
 16.3233 +  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
 16.3234 +  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
 16.3235 +  background-repeat: repeat-x;
 16.3236 +  border: 1px solid #cccccc;
 16.3237 +  *border: 0;
 16.3238 +  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
 16.3239 +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
 16.3240 +  border-bottom-color: #b3b3b3;
 16.3241 +  -webkit-border-radius: 4px;
 16.3242 +     -moz-border-radius: 4px;
 16.3243 +          border-radius: 4px;
 16.3244 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
 16.3245 +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
 16.3246 +  *zoom: 1;
 16.3247 +  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
 16.3248 +     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
 16.3249 +          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
 16.3250 +}
 16.3251 +
 16.3252 +.btn:hover,
 16.3253 +.btn:focus,
 16.3254 +.btn:active,
 16.3255 +.btn.active,
 16.3256 +.btn.disabled,
 16.3257 +.btn[disabled] {
 16.3258 +  color: #333333;
 16.3259 +  background-color: #e6e6e6;
 16.3260 +  *background-color: #d9d9d9;
 16.3261 +}
 16.3262 +
 16.3263 +.btn:active,
 16.3264 +.btn.active {
 16.3265 +  background-color: #cccccc \9;
 16.3266 +}
 16.3267 +
 16.3268 +.btn:first-child {
 16.3269 +  *margin-left: 0;
 16.3270 +}
 16.3271 +
 16.3272 +.btn:hover,
 16.3273 +.btn:focus {
 16.3274 +  color: #333333;
 16.3275 +  text-decoration: none;
 16.3276 +  background-position: 0 -15px;
 16.3277 +  -webkit-transition: background-position 0.1s linear;
 16.3278 +     -moz-transition: background-position 0.1s linear;
 16.3279 +       -o-transition: background-position 0.1s linear;
 16.3280 +          transition: background-position 0.1s linear;
 16.3281 +}
 16.3282 +
 16.3283 +.btn:focus {
 16.3284 +  outline: thin dotted #333;
 16.3285 +  outline: 5px auto -webkit-focus-ring-color;
 16.3286 +  outline-offset: -2px;
 16.3287 +}
 16.3288 +
 16.3289 +.btn.active,
 16.3290 +.btn:active {
 16.3291 +  background-image: none;
 16.3292 +  outline: 0;
 16.3293 +  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
 16.3294 +     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
 16.3295 +          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
 16.3296 +}
 16.3297 +
 16.3298 +.btn.disabled,
 16.3299 +.btn[disabled] {
 16.3300 +  cursor: default;
 16.3301 +  background-image: none;
 16.3302 +  opacity: 0.65;
 16.3303 +  filter: alpha(opacity=65);
 16.3304 +  -webkit-box-shadow: none;
 16.3305 +     -moz-box-shadow: none;
 16.3306 +          box-shadow: none;
 16.3307 +}
 16.3308 +
 16.3309 +.btn-large {
 16.3310 +  padding: 11px 19px;
 16.3311 +  font-size: 17.5px;
 16.3312 +  -webkit-border-radius: 6px;
 16.3313 +     -moz-border-radius: 6px;
 16.3314 +          border-radius: 6px;
 16.3315 +}
 16.3316 +
 16.3317 +.btn-large [class^="icon-"],
 16.3318 +.btn-large [class*=" icon-"] {
 16.3319 +  margin-top: 4px;
 16.3320 +}
 16.3321 +
 16.3322 +.btn-small {
 16.3323 +  padding: 2px 10px;
 16.3324 +  font-size: 11.9px;
 16.3325 +  -webkit-border-radius: 3px;
 16.3326 +     -moz-border-radius: 3px;
 16.3327 +          border-radius: 3px;
 16.3328 +}
 16.3329 +
 16.3330 +.btn-small [class^="icon-"],
 16.3331 +.btn-small [class*=" icon-"] {
 16.3332 +  margin-top: 0;
 16.3333 +}
 16.3334 +
 16.3335 +.btn-mini [class^="icon-"],
 16.3336 +.btn-mini [class*=" icon-"] {
 16.3337 +  margin-top: -1px;
 16.3338 +}
 16.3339 +
 16.3340 +.btn-mini {
 16.3341 +  padding: 0 6px;
 16.3342 +  font-size: 10.5px;
 16.3343 +  -webkit-border-radius: 3px;
 16.3344 +     -moz-border-radius: 3px;
 16.3345 +          border-radius: 3px;
 16.3346 +}
 16.3347 +
 16.3348 +.btn-block {
 16.3349 +  display: block;
 16.3350 +  width: 100%;
 16.3351 +  padding-right: 0;
 16.3352 +  padding-left: 0;
 16.3353 +  -webkit-box-sizing: border-box;
 16.3354 +     -moz-box-sizing: border-box;
 16.3355 +          box-sizing: border-box;
 16.3356 +}
 16.3357 +
 16.3358 +.btn-block + .btn-block {
 16.3359 +  margin-top: 5px;
 16.3360 +}
 16.3361 +
 16.3362 +input[type="submit"].btn-block,
 16.3363 +input[type="reset"].btn-block,
 16.3364 +input[type="button"].btn-block {
 16.3365 +  width: 100%;
 16.3366 +}
 16.3367 +
 16.3368 +.btn-primary.active,
 16.3369 +.btn-warning.active,
 16.3370 +.btn-danger.active,
 16.3371 +.btn-success.active,
 16.3372 +.btn-info.active,
 16.3373 +.btn-inverse.active {
 16.3374 +  color: rgba(255, 255, 255, 0.75);
 16.3375 +}
 16.3376 +
 16.3377 +.btn-primary {
 16.3378 +  color: #ffffff;
 16.3379 +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 16.3380 +  background-color: #006dcc;
 16.3381 +  *background-color: #0044cc;
 16.3382 +  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
 16.3383 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
 16.3384 +  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
 16.3385 +  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
 16.3386 +  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
 16.3387 +  background-repeat: repeat-x;
 16.3388 +  border-color: #0044cc #0044cc #002a80;
 16.3389 +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
 16.3390 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
 16.3391 +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
 16.3392 +}
 16.3393 +
 16.3394 +.btn-primary:hover,
 16.3395 +.btn-primary:focus,
 16.3396 +.btn-primary:active,
 16.3397 +.btn-primary.active,
 16.3398 +.btn-primary.disabled,
 16.3399 +.btn-primary[disabled] {
 16.3400 +  color: #ffffff;
 16.3401 +  background-color: #0044cc;
 16.3402 +  *background-color: #003bb3;
 16.3403 +}
 16.3404 +
 16.3405 +.btn-primary:active,
 16.3406 +.btn-primary.active {
 16.3407 +  background-color: #003399 \9;
 16.3408 +}
 16.3409 +
 16.3410 +.btn-warning {
 16.3411 +  color: #ffffff;
 16.3412 +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 16.3413 +  background-color: #faa732;
 16.3414 +  *background-color: #f89406;
 16.3415 +  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
 16.3416 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
 16.3417 +  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
 16.3418 +  background-image: -o-linear-gradient(top, #fbb450, #f89406);
 16.3419 +  background-image: linear-gradient(to bottom, #fbb450, #f89406);
 16.3420 +  background-repeat: repeat-x;
 16.3421 +  border-color: #f89406 #f89406 #ad6704;
 16.3422 +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
 16.3423 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
 16.3424 +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
 16.3425 +}
 16.3426 +
 16.3427 +.btn-warning:hover,
 16.3428 +.btn-warning:focus,
 16.3429 +.btn-warning:active,
 16.3430 +.btn-warning.active,
 16.3431 +.btn-warning.disabled,
 16.3432 +.btn-warning[disabled] {
 16.3433 +  color: #ffffff;
 16.3434 +  background-color: #f89406;
 16.3435 +  *background-color: #df8505;
 16.3436 +}
 16.3437 +
 16.3438 +.btn-warning:active,
 16.3439 +.btn-warning.active {
 16.3440 +  background-color: #c67605 \9;
 16.3441 +}
 16.3442 +
 16.3443 +.btn-danger {
 16.3444 +  color: #ffffff;
 16.3445 +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 16.3446 +  background-color: #da4f49;
 16.3447 +  *background-color: #bd362f;
 16.3448 +  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
 16.3449 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
 16.3450 +  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
 16.3451 +  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
 16.3452 +  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
 16.3453 +  background-repeat: repeat-x;
 16.3454 +  border-color: #bd362f #bd362f #802420;
 16.3455 +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
 16.3456 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
 16.3457 +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
 16.3458 +}
 16.3459 +
 16.3460 +.btn-danger:hover,
 16.3461 +.btn-danger:focus,
 16.3462 +.btn-danger:active,
 16.3463 +.btn-danger.active,
 16.3464 +.btn-danger.disabled,
 16.3465 +.btn-danger[disabled] {
 16.3466 +  color: #ffffff;
 16.3467 +  background-color: #bd362f;
 16.3468 +  *background-color: #a9302a;
 16.3469 +}
 16.3470 +
 16.3471 +.btn-danger:active,
 16.3472 +.btn-danger.active {
 16.3473 +  background-color: #942a25 \9;
 16.3474 +}
 16.3475 +
 16.3476 +.btn-success {
 16.3477 +  color: #ffffff;
 16.3478 +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 16.3479 +  background-color: #5bb75b;
 16.3480 +  *background-color: #51a351;
 16.3481 +  background-image: -moz-linear-gradient(top, #62c462, #51a351);
 16.3482 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
 16.3483 +  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
 16.3484 +  background-image: -o-linear-gradient(top, #62c462, #51a351);
 16.3485 +  background-image: linear-gradient(to bottom, #62c462, #51a351);
 16.3486 +  background-repeat: repeat-x;
 16.3487 +  border-color: #51a351 #51a351 #387038;
 16.3488 +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
 16.3489 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
 16.3490 +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
 16.3491 +}
 16.3492 +
 16.3493 +.btn-success:hover,
 16.3494 +.btn-success:focus,
 16.3495 +.btn-success:active,
 16.3496 +.btn-success.active,
 16.3497 +.btn-success.disabled,
 16.3498 +.btn-success[disabled] {
 16.3499 +  color: #ffffff;
 16.3500 +  background-color: #51a351;
 16.3501 +  *background-color: #499249;
 16.3502 +}
 16.3503 +
 16.3504 +.btn-success:active,
 16.3505 +.btn-success.active {
 16.3506 +  background-color: #408140 \9;
 16.3507 +}
 16.3508 +
 16.3509 +.btn-info {
 16.3510 +  color: #ffffff;
 16.3511 +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 16.3512 +  background-color: #49afcd;
 16.3513 +  *background-color: #2f96b4;
 16.3514 +  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
 16.3515 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
 16.3516 +  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
 16.3517 +  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
 16.3518 +  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
 16.3519 +  background-repeat: repeat-x;
 16.3520 +  border-color: #2f96b4 #2f96b4 #1f6377;
 16.3521 +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
 16.3522 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
 16.3523 +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
 16.3524 +}
 16.3525 +
 16.3526 +.btn-info:hover,
 16.3527 +.btn-info:focus,
 16.3528 +.btn-info:active,
 16.3529 +.btn-info.active,
 16.3530 +.btn-info.disabled,
 16.3531 +.btn-info[disabled] {
 16.3532 +  color: #ffffff;
 16.3533 +  background-color: #2f96b4;
 16.3534 +  *background-color: #2a85a0;
 16.3535 +}
 16.3536 +
 16.3537 +.btn-info:active,
 16.3538 +.btn-info.active {
 16.3539 +  background-color: #24748c \9;
 16.3540 +}
 16.3541 +
 16.3542 +.btn-inverse {
 16.3543 +  color: #ffffff;
 16.3544 +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 16.3545 +  background-color: #363636;
 16.3546 +  *background-color: #222222;
 16.3547 +  background-image: -moz-linear-gradient(top, #444444, #222222);
 16.3548 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
 16.3549 +  background-image: -webkit-linear-gradient(top, #444444, #222222);
 16.3550 +  background-image: -o-linear-gradient(top, #444444, #222222);
 16.3551 +  background-image: linear-gradient(to bottom, #444444, #222222);
 16.3552 +  background-repeat: repeat-x;
 16.3553 +  border-color: #222222 #222222 #000000;
 16.3554 +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
 16.3555 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
 16.3556 +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
 16.3557 +}
 16.3558 +
 16.3559 +.btn-inverse:hover,
 16.3560 +.btn-inverse:focus,
 16.3561 +.btn-inverse:active,
 16.3562 +.btn-inverse.active,
 16.3563 +.btn-inverse.disabled,
 16.3564 +.btn-inverse[disabled] {
 16.3565 +  color: #ffffff;
 16.3566 +  background-color: #222222;
 16.3567 +  *background-color: #151515;
 16.3568 +}
 16.3569 +
 16.3570 +.btn-inverse:active,
 16.3571 +.btn-inverse.active {
 16.3572 +  background-color: #080808 \9;
 16.3573 +}
 16.3574 +
 16.3575 +button.btn,
 16.3576 +input[type="submit"].btn {
 16.3577 +  *padding-top: 3px;
 16.3578 +  *padding-bottom: 3px;
 16.3579 +}
 16.3580 +
 16.3581 +button.btn::-moz-focus-inner,
 16.3582 +input[type="submit"].btn::-moz-focus-inner {
 16.3583 +  padding: 0;
 16.3584 +  border: 0;
 16.3585 +}
 16.3586 +
 16.3587 +button.btn.btn-large,
 16.3588 +input[type="submit"].btn.btn-large {
 16.3589 +  *padding-top: 7px;
 16.3590 +  *padding-bottom: 7px;
 16.3591 +}
 16.3592 +
 16.3593 +button.btn.btn-small,
 16.3594 +input[type="submit"].btn.btn-small {
 16.3595 +  *padding-top: 3px;
 16.3596 +  *padding-bottom: 3px;
 16.3597 +}
 16.3598 +
 16.3599 +button.btn.btn-mini,
 16.3600 +input[type="submit"].btn.btn-mini {
 16.3601 +  *padding-top: 1px;
 16.3602 +  *padding-bottom: 1px;
 16.3603 +}
 16.3604 +
 16.3605 +.btn-link,
 16.3606 +.btn-link:active,
 16.3607 +.btn-link[disabled] {
 16.3608 +  background-color: transparent;
 16.3609 +  background-image: none;
 16.3610 +  -webkit-box-shadow: none;
 16.3611 +     -moz-box-shadow: none;
 16.3612 +          box-shadow: none;
 16.3613 +}
 16.3614 +
 16.3615 +.btn-link {
 16.3616 +  color: #0088cc;
 16.3617 +  cursor: pointer;
 16.3618 +  border-color: transparent;
 16.3619 +  -webkit-border-radius: 0;
 16.3620 +     -moz-border-radius: 0;
 16.3621 +          border-radius: 0;
 16.3622 +}
 16.3623 +
 16.3624 +.btn-link:hover,
 16.3625 +.btn-link:focus {
 16.3626 +  color: #005580;
 16.3627 +  text-decoration: underline;
 16.3628 +  background-color: transparent;
 16.3629 +}
 16.3630 +
 16.3631 +.btn-link[disabled]:hover,
 16.3632 +.btn-link[disabled]:focus {
 16.3633 +  color: #333333;
 16.3634 +  text-decoration: none;
 16.3635 +}
 16.3636 +
 16.3637 +.btn-group {
 16.3638 +  position: relative;
 16.3639 +  display: inline-block;
 16.3640 +  *display: inline;
 16.3641 +  *margin-left: .3em;
 16.3642 +  font-size: 0;
 16.3643 +  white-space: nowrap;
 16.3644 +  vertical-align: middle;
 16.3645 +  *zoom: 1;
 16.3646 +}
 16.3647 +
 16.3648 +.btn-group:first-child {
 16.3649 +  *margin-left: 0;
 16.3650 +}
 16.3651 +
 16.3652 +.btn-group + .btn-group {
 16.3653 +  margin-left: 5px;
 16.3654 +}
 16.3655 +
 16.3656 +.btn-toolbar {
 16.3657 +  margin-top: 10px;
 16.3658 +  margin-bottom: 10px;
 16.3659 +  font-size: 0;
 16.3660 +}
 16.3661 +
 16.3662 +.btn-toolbar > .btn + .btn,
 16.3663 +.btn-toolbar > .btn-group + .btn,
 16.3664 +.btn-toolbar > .btn + .btn-group {
 16.3665 +  margin-left: 5px;
 16.3666 +}
 16.3667 +
 16.3668 +.btn-group > .btn {
 16.3669 +  position: relative;
 16.3670 +  -webkit-border-radius: 0;
 16.3671 +     -moz-border-radius: 0;
 16.3672 +          border-radius: 0;
 16.3673 +}
 16.3674 +
 16.3675 +.btn-group > .btn + .btn {
 16.3676 +  margin-left: -1px;
 16.3677 +}
 16.3678 +
 16.3679 +.btn-group > .btn,
 16.3680 +.btn-group > .dropdown-menu,
 16.3681 +.btn-group > .popover {
 16.3682 +  font-size: 14px;
 16.3683 +}
 16.3684 +
 16.3685 +.btn-group > .btn-mini {
 16.3686 +  font-size: 10.5px;
 16.3687 +}
 16.3688 +
 16.3689 +.btn-group > .btn-small {
 16.3690 +  font-size: 11.9px;
 16.3691 +}
 16.3692 +
 16.3693 +.btn-group > .btn-large {
 16.3694 +  font-size: 17.5px;
 16.3695 +}
 16.3696 +
 16.3697 +.btn-group > .btn:first-child {
 16.3698 +  margin-left: 0;
 16.3699 +  -webkit-border-bottom-left-radius: 4px;
 16.3700 +          border-bottom-left-radius: 4px;
 16.3701 +  -webkit-border-top-left-radius: 4px;
 16.3702 +          border-top-left-radius: 4px;
 16.3703 +  -moz-border-radius-bottomleft: 4px;
 16.3704 +  -moz-border-radius-topleft: 4px;
 16.3705 +}
 16.3706 +
 16.3707 +.btn-group > .btn:last-child,
 16.3708 +.btn-group > .dropdown-toggle {
 16.3709 +  -webkit-border-top-right-radius: 4px;
 16.3710 +          border-top-right-radius: 4px;
 16.3711 +  -webkit-border-bottom-right-radius: 4px;
 16.3712 +          border-bottom-right-radius: 4px;
 16.3713 +  -moz-border-radius-topright: 4px;
 16.3714 +  -moz-border-radius-bottomright: 4px;
 16.3715 +}
 16.3716 +
 16.3717 +.btn-group > .btn.large:first-child {
 16.3718 +  margin-left: 0;
 16.3719 +  -webkit-border-bottom-left-radius: 6px;
 16.3720 +          border-bottom-left-radius: 6px;
 16.3721 +  -webkit-border-top-left-radius: 6px;
 16.3722 +          border-top-left-radius: 6px;
 16.3723 +  -moz-border-radius-bottomleft: 6px;
 16.3724 +  -moz-border-radius-topleft: 6px;
 16.3725 +}
 16.3726 +
 16.3727 +.btn-group > .btn.large:last-child,
 16.3728 +.btn-group > .large.dropdown-toggle {
 16.3729 +  -webkit-border-top-right-radius: 6px;
 16.3730 +          border-top-right-radius: 6px;
 16.3731 +  -webkit-border-bottom-right-radius: 6px;
 16.3732 +          border-bottom-right-radius: 6px;
 16.3733 +  -moz-border-radius-topright: 6px;
 16.3734 +  -moz-border-radius-bottomright: 6px;
 16.3735 +}
 16.3736 +
 16.3737 +.btn-group > .btn:hover,
 16.3738 +.btn-group > .btn:focus,
 16.3739 +.btn-group > .btn:active,
 16.3740 +.btn-group > .btn.active {
 16.3741 +  z-index: 2;
 16.3742 +}
 16.3743 +
 16.3744 +.btn-group .dropdown-toggle:active,
 16.3745 +.btn-group.open .dropdown-toggle {
 16.3746 +  outline: 0;
 16.3747 +}
 16.3748 +
 16.3749 +.btn-group > .btn + .dropdown-toggle {
 16.3750 +  *padding-top: 5px;
 16.3751 +  padding-right: 8px;
 16.3752 +  *padding-bottom: 5px;
 16.3753 +  padding-left: 8px;
 16.3754 +  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
 16.3755 +     -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
 16.3756 +          box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
 16.3757 +}
 16.3758 +
 16.3759 +.btn-group > .btn-mini + .dropdown-toggle {
 16.3760 +  *padding-top: 2px;
 16.3761 +  padding-right: 5px;
 16.3762 +  *padding-bottom: 2px;
 16.3763 +  padding-left: 5px;
 16.3764 +}
 16.3765 +
 16.3766 +.btn-group > .btn-small + .dropdown-toggle {
 16.3767 +  *padding-top: 5px;
 16.3768 +  *padding-bottom: 4px;
 16.3769 +}
 16.3770 +
 16.3771 +.btn-group > .btn-large + .dropdown-toggle {
 16.3772 +  *padding-top: 7px;
 16.3773 +  padding-right: 12px;
 16.3774 +  *padding-bottom: 7px;
 16.3775 +  padding-left: 12px;
 16.3776 +}
 16.3777 +
 16.3778 +.btn-group.open .dropdown-toggle {
 16.3779 +  background-image: none;
 16.3780 +  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
 16.3781 +     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
 16.3782 +          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
 16.3783 +}
 16.3784 +
 16.3785 +.btn-group.open .btn.dropdown-toggle {
 16.3786 +  background-color: #e6e6e6;
 16.3787 +}
 16.3788 +
 16.3789 +.btn-group.open .btn-primary.dropdown-toggle {
 16.3790 +  background-color: #0044cc;
 16.3791 +}
 16.3792 +
 16.3793 +.btn-group.open .btn-warning.dropdown-toggle {
 16.3794 +  background-color: #f89406;
 16.3795 +}
 16.3796 +
 16.3797 +.btn-group.open .btn-danger.dropdown-toggle {
 16.3798 +  background-color: #bd362f;
 16.3799 +}
 16.3800 +
 16.3801 +.btn-group.open .btn-success.dropdown-toggle {
 16.3802 +  background-color: #51a351;
 16.3803 +}
 16.3804 +
 16.3805 +.btn-group.open .btn-info.dropdown-toggle {
 16.3806 +  background-color: #2f96b4;
 16.3807 +}
 16.3808 +
 16.3809 +.btn-group.open .btn-inverse.dropdown-toggle {
 16.3810 +  background-color: #222222;
 16.3811 +}
 16.3812 +
 16.3813 +.btn .caret {
 16.3814 +  margin-top: 8px;
 16.3815 +  margin-left: 0;
 16.3816 +}
 16.3817 +
 16.3818 +.btn-large .caret {
 16.3819 +  margin-top: 6px;
 16.3820 +}
 16.3821 +
 16.3822 +.btn-large .caret {
 16.3823 +  border-top-width: 5px;
 16.3824 +  border-right-width: 5px;
 16.3825 +  border-left-width: 5px;
 16.3826 +}
 16.3827 +
 16.3828 +.btn-mini .caret,
 16.3829 +.btn-small .caret {
 16.3830 +  margin-top: 8px;
 16.3831 +}
 16.3832 +
 16.3833 +.dropup .btn-large .caret {
 16.3834 +  border-bottom-width: 5px;
 16.3835 +}
 16.3836 +
 16.3837 +.btn-primary .caret,
 16.3838 +.btn-warning .caret,
 16.3839 +.btn-danger .caret,
 16.3840 +.btn-info .caret,
 16.3841 +.btn-success .caret,
 16.3842 +.btn-inverse .caret {
 16.3843 +  border-top-color: #ffffff;
 16.3844 +  border-bottom-color: #ffffff;
 16.3845 +}
 16.3846 +
 16.3847 +.btn-group-vertical {
 16.3848 +  display: inline-block;
 16.3849 +  *display: inline;
 16.3850 +  /* IE7 inline-block hack */
 16.3851 +
 16.3852 +  *zoom: 1;
 16.3853 +}
 16.3854 +
 16.3855 +.btn-group-vertical > .btn {
 16.3856 +  display: block;
 16.3857 +  float: none;
 16.3858 +  max-width: 100%;
 16.3859 +  -webkit-border-radius: 0;
 16.3860 +     -moz-border-radius: 0;
 16.3861 +          border-radius: 0;
 16.3862 +}
 16.3863 +
 16.3864 +.btn-group-vertical > .btn + .btn {
 16.3865 +  margin-top: -1px;
 16.3866 +  margin-left: 0;
 16.3867 +}
 16.3868 +
 16.3869 +.btn-group-vertical > .btn:first-child {
 16.3870 +  -webkit-border-radius: 4px 4px 0 0;
 16.3871 +     -moz-border-radius: 4px 4px 0 0;
 16.3872 +          border-radius: 4px 4px 0 0;
 16.3873 +}
 16.3874 +
 16.3875 +.btn-group-vertical > .btn:last-child {
 16.3876 +  -webkit-border-radius: 0 0 4px 4px;
 16.3877 +     -moz-border-radius: 0 0 4px 4px;
 16.3878 +          border-radius: 0 0 4px 4px;
 16.3879 +}
 16.3880 +
 16.3881 +.btn-group-vertical > .btn-large:first-child {
 16.3882 +  -webkit-border-radius: 6px 6px 0 0;
 16.3883 +     -moz-border-radius: 6px 6px 0 0;
 16.3884 +          border-radius: 6px 6px 0 0;
 16.3885 +}
 16.3886 +
 16.3887 +.btn-group-vertical > .btn-large:last-child {
 16.3888 +  -webkit-border-radius: 0 0 6px 6px;
 16.3889 +     -moz-border-radius: 0 0 6px 6px;
 16.3890 +          border-radius: 0 0 6px 6px;
 16.3891 +}
 16.3892 +
 16.3893 +.alert {
 16.3894 +  padding: 8px 35px 8px 14px;
 16.3895 +  margin-bottom: 20px;
 16.3896 +  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
 16.3897 +  background-color: #fcf8e3;
 16.3898 +  border: 1px solid #fbeed5;
 16.3899 +  -webkit-border-radius: 4px;
 16.3900 +     -moz-border-radius: 4px;
 16.3901 +          border-radius: 4px;
 16.3902 +}
 16.3903 +
 16.3904 +.alert,
 16.3905 +.alert h4 {
 16.3906 +  color: #c09853;
 16.3907 +}
 16.3908 +
 16.3909 +.alert h4 {
 16.3910 +  margin: 0;
 16.3911 +}
 16.3912 +
 16.3913 +.alert .close {
 16.3914 +  position: relative;
 16.3915 +  top: -2px;
 16.3916 +  right: -21px;
 16.3917 +  line-height: 20px;
 16.3918 +}
 16.3919 +
 16.3920 +.alert-success {
 16.3921 +  color: #468847;
 16.3922 +  background-color: #dff0d8;
 16.3923 +  border-color: #d6e9c6;
 16.3924 +}
 16.3925 +
 16.3926 +.alert-success h4 {
 16.3927 +  color: #468847;
 16.3928 +}
 16.3929 +
 16.3930 +.alert-danger,
 16.3931 +.alert-error {
 16.3932 +  color: #b94a48;
 16.3933 +  background-color: #f2dede;
 16.3934 +  border-color: #eed3d7;
 16.3935 +}
 16.3936 +
 16.3937 +.alert-danger h4,
 16.3938 +.alert-error h4 {
 16.3939 +  color: #b94a48;
 16.3940 +}
 16.3941 +
 16.3942 +.alert-info {
 16.3943 +  color: #3a87ad;
 16.3944 +  background-color: #d9edf7;
 16.3945 +  border-color: #bce8f1;
 16.3946 +}
 16.3947 +
 16.3948 +.alert-info h4 {
 16.3949 +  color: #3a87ad;
 16.3950 +}
 16.3951 +
 16.3952 +.alert-block {
 16.3953 +  padding-top: 14px;
 16.3954 +  padding-bottom: 14px;
 16.3955 +}
 16.3956 +
 16.3957 +.alert-block > p,
 16.3958 +.alert-block > ul {
 16.3959 +  margin-bottom: 0;
 16.3960 +}
 16.3961 +
 16.3962 +.alert-block p + p {
 16.3963 +  margin-top: 5px;
 16.3964 +}
 16.3965 +
 16.3966 +.nav {
 16.3967 +  margin-bottom: 20px;
 16.3968 +  margin-left: 0;
 16.3969 +  list-style: none;
 16.3970 +}
 16.3971 +
 16.3972 +.nav > li > a {
 16.3973 +  display: inline-block;
 16.3974 +}
 16.3975 +
 16.3976 +.nav > li > a:hover,
 16.3977 +.nav > li > a:focus {
 16.3978 +  text-decoration: none;
 16.3979 +  background-color: #eeeeee;
 16.3980 +}
 16.3981 +
 16.3982 +.nav > li > a > img {
 16.3983 +  max-width: none;
 16.3984 +}
 16.3985 +
 16.3986 +.nav > .pull-right {
 16.3987 +  float: right;
 16.3988 +}
 16.3989 +
 16.3990 +.nav-header {
 16.3991 +  display: block;
 16.3992 +  padding: 3px 15px;
 16.3993 +  font-size: 11px;
 16.3994 +  font-weight: bold;
 16.3995 +  line-height: 20px;
 16.3996 +  color: #999999;
 16.3997 +  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
 16.3998 +  text-transform: uppercase;
 16.3999 +}
 16.4000 +
 16.4001 +.nav li + .nav-header {
 16.4002 +  margin-top: 9px;
 16.4003 +}
 16.4004 +
 16.4005 +.nav-list {
 16.4006 +  padding-right: 15px;
 16.4007 +  padding-left: 15px;
 16.4008 +  margin-bottom: 0;
 16.4009 +}
 16.4010 +
 16.4011 +.nav-list > li > a,
 16.4012 +.nav-list .nav-header {
 16.4013 +  margin-right: -15px;
 16.4014 +  margin-left: -15px;
 16.4015 +  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
 16.4016 +}
 16.4017 +
 16.4018 +.nav-list > li > a {
 16.4019 +  padding: 3px 15px;
 16.4020 +}
 16.4021 +
 16.4022 +.nav-list > .active > a,
 16.4023 +.nav-list > .active > a:hover,
 16.4024 +.nav-list > .active > a:focus {
 16.4025 +  color: #ffffff;
 16.4026 +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
 16.4027 +  background-color: #0088cc;
 16.4028 +}
 16.4029 +
 16.4030 +.nav-list [class^="icon-"],
 16.4031 +.nav-list [class*=" icon-"] {
 16.4032 +  margin-right: 2px;
 16.4033 +}
 16.4034 +
 16.4035 +.nav-list .divider {
 16.4036 +  *width: 100%;
 16.4037 +  height: 1px;
 16.4038 +  margin: 9px 1px;
 16.4039 +  *margin: -5px 0 5px;
 16.4040 +  overflow: hidden;
 16.4041 +  background-color: #e5e5e5;
 16.4042 +  border-bottom: 1px solid #ffffff;
 16.4043 +}
 16.4044 +
 16.4045 +.nav-tabs,
 16.4046 +.nav-pills {
 16.4047 +  *zoom: 1;
 16.4048 +}
 16.4049 +
 16.4050 +.nav-tabs:before,
 16.4051 +.nav-pills:before,
 16.4052 +.nav-tabs:after,
 16.4053 +.nav-pills:after {
 16.4054 +  display: table;
 16.4055 +  line-height: 0;
 16.4056 +  content: "";
 16.4057 +}
 16.4058 +
 16.4059 +.nav-tabs:after,
 16.4060 +.nav-pills:after {
 16.4061 +  clear: both;
 16.4062 +}
 16.4063 +
 16.4064 +.nav-tabs > li,
 16.4065 +.nav-pills > li {
 16.4066 +  float: left;
 16.4067 +}
 16.4068 +
 16.4069 +.nav-tabs > li > a,
 16.4070 +.nav-pills > li > a {
 16.4071 +  padding-right: 12px;
 16.4072 +  padding-left: 12px;
 16.4073 +  margin-right: 2px;
 16.4074 +  line-height: 14px;
 16.4075 +}
 16.4076 +
 16.4077 +.nav-tabs {
 16.4078 +  border-bottom: 1px solid #ddd;
 16.4079 +}
 16.4080 +
 16.4081 +.nav-tabs > li {
 16.4082 +  margin-bottom: -1px;
 16.4083 +}
 16.4084 +
 16.4085 +.nav-tabs > li > a {
 16.4086 +  padding-top: 8px;
 16.4087 +  padding-bottom: 8px;
 16.4088 +  line-height: 20px;
 16.4089 +  border: 1px solid transparent;
 16.4090 +  -webkit-border-radius: 4px 4px 0 0;
 16.4091 +     -moz-border-radius: 4px 4px 0 0;
 16.4092 +          border-radius: 4px 4px 0 0;
 16.4093 +}
 16.4094 +
 16.4095 +.nav-tabs > li > a:hover,
 16.4096 +.nav-tabs > li > a:focus {
 16.4097 +  border-color: #eeeeee #eeeeee #dddddd;
 16.4098 +}
 16.4099 +
 16.4100 +.nav-tabs > .active > a,
 16.4101 +.nav-tabs > .active > a:hover,
 16.4102 +.nav-tabs > .active > a:focus {
 16.4103 +  color: #555555;
 16.4104 +  cursor: default;
 16.4105 +  background-color: #ffffff;
 16.4106 +  border: 1px solid #ddd;
 16.4107 +  border-bottom-color: transparent;
 16.4108 +}
 16.4109 +
 16.4110 +.nav-pills > li > a {
 16.4111 +  padding-top: 8px;
 16.4112 +  padding-bottom: 8px;
 16.4113 +  margin-top: 2px;
 16.4114 +  margin-bottom: 2px;
 16.4115 +  -webkit-border-radius: 5px;
 16.4116 +     -moz-border-radius: 5px;
 16.4117 +          border-radius: 5px;
 16.4118 +}
 16.4119 +
 16.4120 +.nav-pills > .active > a,
 16.4121 +.nav-pills > .active > a:hover,
 16.4122 +.nav-pills > .active > a:focus {
 16.4123 +  color: #ffffff;
 16.4124 +  background-color: #0088cc;
 16.4125 +}
 16.4126 +
 16.4127 +.nav-stacked > li {
 16.4128 +  float: none;
 16.4129 +}
 16.4130 +
 16.4131 +.nav-stacked > li > a {
 16.4132 +  margin-right: 0;
 16.4133 +}
 16.4134 +
 16.4135 +.nav-tabs.nav-stacked {
 16.4136 +  border-bottom: 0;
 16.4137 +}
 16.4138 +
 16.4139 +.nav-tabs.nav-stacked > li > a {
 16.4140 +  border: 1px solid #ddd;
 16.4141 +  -webkit-border-radius: 0;
 16.4142 +     -moz-border-radius: 0;
 16.4143 +          border-radius: 0;
 16.4144 +}
 16.4145 +
 16.4146 +.nav-tabs.nav-stacked > li:first-child > a {
 16.4147 +  -webkit-border-top-right-radius: 4px;
 16.4148 +          border-top-right-radius: 4px;
 16.4149 +  -webkit-border-top-left-radius: 4px;
 16.4150 +          border-top-left-radius: 4px;
 16.4151 +  -moz-border-radius-topright: 4px;
 16.4152 +  -moz-border-radius-topleft: 4px;
 16.4153 +}
 16.4154 +
 16.4155 +.nav-tabs.nav-stacked > li:last-child > a {
 16.4156 +  -webkit-border-bottom-right-radius: 4px;
 16.4157 +          border-bottom-right-radius: 4px;
 16.4158 +  -webkit-border-bottom-left-radius: 4px;
 16.4159 +          border-bottom-left-radius: 4px;
 16.4160 +  -moz-border-radius-bottomright: 4px;
 16.4161 +  -moz-border-radius-bottomleft: 4px;
 16.4162 +}
 16.4163 +
 16.4164 +.nav-tabs.nav-stacked > li > a:hover,
 16.4165 +.nav-tabs.nav-stacked > li > a:focus {
 16.4166 +  z-index: 2;
 16.4167 +  border-color: #ddd;
 16.4168 +}
 16.4169 +
 16.4170 +.nav-pills.nav-stacked > li > a {
 16.4171 +  margin-bottom: 3px;
 16.4172 +}
 16.4173 +
 16.4174 +.nav-pills.nav-stacked > li:last-child > a {
 16.4175 +  margin-bottom: 1px;
 16.4176 +}
 16.4177 +
 16.4178 +.nav-tabs .dropdown-menu {
 16.4179 +  -webkit-border-radius: 0 0 6px 6px;
 16.4180 +     -moz-border-radius: 0 0 6px 6px;
 16.4181 +          border-radius: 0 0 6px 6px;
 16.4182 +}
 16.4183 +
 16.4184 +.nav-pills .dropdown-menu {
 16.4185 +  -webkit-border-radius: 6px;
 16.4186 +     -moz-border-radius: 6px;
 16.4187 +          border-radius: 6px;
 16.4188 +}
 16.4189 +
 16.4190 +.nav .dropdown-toggle .caret {
 16.4191 +  margin-top: 6px;
 16.4192 +  border-top-color: #0088cc;
 16.4193 +  border-bottom-color: #0088cc;
 16.4194 +}
 16.4195 +
 16.4196 +.nav .dropdown-toggle:hover .caret,
 16.4197 +.nav .dropdown-toggle:focus .caret {
 16.4198 +  border-top-color: #005580;
 16.4199 +  border-bottom-color: #005580;
 16.4200 +}
 16.4201 +
 16.4202 +/* move down carets for tabs */
 16.4203 +
 16.4204 +.nav-tabs .dropdown-toggle .caret {
 16.4205 +  margin-top: 8px;
 16.4206 +}
 16.4207 +
 16.4208 +.nav .active .dropdown-toggle .caret {
 16.4209 +  border-top-color: #fff;
 16.4210 +  border-bottom-color: #fff;
 16.4211 +}
 16.4212 +
 16.4213 +.nav-tabs .active .dropdown-toggle .caret {
 16.4214 +  border-top-color: #555555;
 16.4215 +  border-bottom-color: #555555;
 16.4216 +}
 16.4217 +
 16.4218 +.nav > .dropdown.active > a:hover,
 16.4219 +.nav > .dropdown.active > a:focus {
 16.4220 +  cursor: pointer;
 16.4221 +}
 16.4222 +
 16.4223 +.nav-tabs .open .dropdown-toggle,
 16.4224 +.nav-pills .open .dropdown-toggle,
 16.4225 +.nav > li.dropdown.open.active > a:hover,
 16.4226 +.nav > li.dropdown.open.active > a:focus {
 16.4227 +  color: #ffffff;
 16.4228 +  background-color: #999999;
 16.4229 +  border-color: #999999;
 16.4230 +}
 16.4231 +
 16.4232 +.nav li.dropdown.open .caret,
 16.4233 +.nav li.dropdown.open.active .caret,
 16.4234 +.nav li.dropdown.open a:hover .caret,
 16.4235 +.nav li.dropdown.open a:focus .caret {
 16.4236 +  border-top-color: #ffffff;
 16.4237 +  border-bottom-color: #ffffff;
 16.4238 +  opacity: 1;
 16.4239 +  filter: alpha(opacity=100);
 16.4240 +}
 16.4241 +
 16.4242 +.tabs-stacked .open > a:hover,
 16.4243 +.tabs-stacked .open > a:focus {
 16.4244 +  border-color: #999999;
 16.4245 +}
 16.4246 +
 16.4247 +.tabbable {
 16.4248 +  *zoom: 1;
 16.4249 +}
 16.4250 +
 16.4251 +.tabbable:before,
 16.4252 +.tabbable:after {
 16.4253 +  display: table;
 16.4254 +  line-height: 0;
 16.4255 +  content: "";
 16.4256 +}
 16.4257 +
 16.4258 +.tabbable:after {
 16.4259 +  clear: both;
 16.4260 +}
 16.4261 +
 16.4262 +.tab-content {
 16.4263 +  overflow: auto;
 16.4264 +}
 16.4265 +
 16.4266 +.tabs-below > .nav-tabs,
 16.4267 +.tabs-right > .nav-tabs,
 16.4268 +.tabs-left > .nav-tabs {
 16.4269 +  border-bottom: 0;
 16.4270 +}
 16.4271 +
 16.4272 +.tab-content > .tab-pane,
 16.4273 +.pill-content > .pill-pane {
 16.4274 +  display: none;
 16.4275 +}
 16.4276 +
 16.4277 +.tab-content > .active,
 16.4278 +.pill-content > .active {
 16.4279 +  display: block;
 16.4280 +}
 16.4281 +
 16.4282 +.tabs-below > .nav-tabs {
 16.4283 +  border-top: 1px solid #ddd;
 16.4284 +}
 16.4285 +
 16.4286 +.tabs-below > .nav-tabs > li {
 16.4287 +  margin-top: -1px;
 16.4288 +  margin-bottom: 0;
 16.4289 +}
 16.4290 +
 16.4291 +.tabs-below > .nav-tabs > li > a {
 16.4292 +  -webkit-border-radius: 0 0 4px 4px;
 16.4293 +     -moz-border-radius: 0 0 4px 4px;
 16.4294 +          border-radius: 0 0 4px 4px;
 16.4295 +}
 16.4296 +
 16.4297 +.tabs-below > .nav-tabs > li > a:hover,
 16.4298 +.tabs-below > .nav-tabs > li > a:focus {
 16.4299 +  border-top-color: #ddd;
 16.4300 +  border-bottom-color: transparent;
 16.4301 +}
 16.4302 +
 16.4303 +.tabs-below > .nav-tabs > .active > a,
 16.4304 +.tabs-below > .nav-tabs > .active > a:hover,
 16.4305 +.tabs-below > .nav-tabs > .active > a:focus {
 16.4306 +  border-color: transparent #ddd #ddd #ddd;
 16.4307 +}
 16.4308 +
 16.4309 +.tabs-left > .nav-tabs > li,
 16.4310 +.tabs-right > .nav-tabs > li {
 16.4311 +  float: none;
 16.4312 +}
 16.4313 +
 16.4314 +.tabs-left > .nav-tabs > li > a,
 16.4315 +.tabs-right > .nav-tabs > li > a {
 16.4316 +  min-width: 74px;
 16.4317 +  margin-right: 0;
 16.4318 +  margin-bottom: 3px;
 16.4319 +}
 16.4320 +
 16.4321 +.tabs-left > .nav-tabs {
 16.4322 +  float: left;
 16.4323 +  margin-right: 19px;
 16.4324 +  border-right: 1px solid #ddd;
 16.4325 +}
 16.4326 +
 16.4327 +.tabs-left > .nav-tabs > li > a {
 16.4328 +  margin-right: -1px;
 16.4329 +  -webkit-border-radius: 4px 0 0 4px;
 16.4330 +     -moz-border-radius: 4px 0 0 4px;
 16.4331 +          border-radius: 4px 0 0 4px;
 16.4332 +}
 16.4333 +
 16.4334 +.tabs-left > .nav-tabs > li > a:hover,
 16.4335 +.tabs-left > .nav-tabs > li > a:focus {
 16.4336 +  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
 16.4337 +}
 16.4338 +
 16.4339 +.tabs-left > .nav-tabs .active > a,
 16.4340 +.tabs-left > .nav-tabs .active > a:hover,
 16.4341 +.tabs-left > .nav-tabs .active > a:focus {
 16.4342 +  border-color: #ddd transparent #ddd #ddd;
 16.4343 +  *border-right-color: #ffffff;
 16.4344 +}
 16.4345 +
 16.4346 +.tabs-right > .nav-tabs {
 16.4347 +  float: right;
 16.4348 +  margin-left: 19px;
 16.4349 +  border-left: 1px solid #ddd;
 16.4350 +}
 16.4351 +
 16.4352 +.tabs-right > .nav-tabs > li > a {
 16.4353 +  margin-left: -1px;
 16.4354 +  -webkit-border-radius: 0 4px 4px 0;
 16.4355 +     -moz-border-radius: 0 4px 4px 0;
 16.4356 +          border-radius: 0 4px 4px 0;
 16.4357 +}
 16.4358 +
 16.4359 +.tabs-right > .nav-tabs > li > a:hover,
 16.4360 +.tabs-right > .nav-tabs > li > a:focus {
 16.4361 +  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
 16.4362 +}
 16.4363 +
 16.4364 +.tabs-right > .nav-tabs .active > a,
 16.4365 +.tabs-right > .nav-tabs .active > a:hover,
 16.4366 +.tabs-right > .nav-tabs .active > a:focus {
 16.4367 +  border-color: #ddd #ddd #ddd transparent;
 16.4368 +  *border-left-color: #ffffff;
 16.4369 +}
 16.4370 +
 16.4371 +.nav > .disabled > a {
 16.4372 +  color: #999999;
 16.4373 +}
 16.4374 +
 16.4375 +.nav > .disabled > a:hover,
 16.4376 +.nav > .disabled > a:focus {
 16.4377 +  text-decoration: none;
 16.4378 +  cursor: default;
 16.4379 +  background-color: transparent;
 16.4380 +}
 16.4381 +
 16.4382 +.navbar {
 16.4383 +  *position: relative;
 16.4384 +  *z-index: 2;
 16.4385 +  margin-bottom: 20px;
 16.4386 +  overflow: visible;
 16.4387 +}
 16.4388 +
 16.4389 +.navbar-inner {
 16.4390 +  min-height: 40px;
 16.4391 +  padding-right: 20px;
 16.4392 +  padding-left: 20px;
 16.4393 +  background-color: #fafafa;
 16.4394 +  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
 16.4395 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
 16.4396 +  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
 16.4397 +  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
 16.4398 +  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
 16.4399 +  background-repeat: repeat-x;
 16.4400 +  border: 1px solid #d4d4d4;
 16.4401 +  -webkit-border-radius: 4px;
 16.4402 +     -moz-border-radius: 4px;
 16.4403 +          border-radius: 4px;
 16.4404 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
 16.4405 +  *zoom: 1;
 16.4406 +  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
 16.4407 +     -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
 16.4408 +          box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
 16.4409 +}
 16.4410 +
 16.4411 +.navbar-inner:before,
 16.4412 +.navbar-inner:after {
 16.4413 +  display: table;
 16.4414 +  line-height: 0;
 16.4415 +  content: "";
 16.4416 +}
 16.4417 +
 16.4418 +.navbar-inner:after {
 16.4419 +  clear: both;
 16.4420 +}
 16.4421 +
 16.4422 +.navbar .container {
 16.4423 +  width: auto;
 16.4424 +}
 16.4425 +
 16.4426 +.nav-collapse.collapse {
 16.4427 +  height: auto;
 16.4428 +  overflow: visible;
 16.4429 +}
 16.4430 +
 16.4431 +.navbar .brand {
 16.4432 +  display: block;
 16.4433 +  float: left;
 16.4434 +  padding: 10px 20px 10px;
 16.4435 +  margin-left: -20px;
 16.4436 +  font-size: 20px;
 16.4437 +  font-weight: 200;
 16.4438 +  color: #777777;
 16.4439 +  text-shadow: 0 1px 0 #ffffff;
 16.4440 +}
 16.4441 +
 16.4442 +.navbar .brand:hover,
 16.4443 +.navbar .brand:focus {
 16.4444 +  text-decoration: none;
 16.4445 +}
 16.4446 +
 16.4447 +.navbar-text {
 16.4448 +  margin-bottom: 0;
 16.4449 +  line-height: 40px;
 16.4450 +  color: #777777;
 16.4451 +}
 16.4452 +
 16.4453 +.navbar-link {
 16.4454 +  color: #777777;
 16.4455 +}
 16.4456 +
 16.4457 +.navbar-link:hover,
 16.4458 +.navbar-link:focus {
 16.4459 +  color: #333333;
 16.4460 +}
 16.4461 +
 16.4462 +.navbar .divider-vertical {
 16.4463 +  height: 40px;
 16.4464 +  margin: 0 9px;
 16.4465 +  border-right: 1px solid #ffffff;
 16.4466 +  border-left: 1px solid #f2f2f2;
 16.4467 +}
 16.4468 +
 16.4469 +.navbar .btn,
 16.4470 +.navbar .btn-group {
 16.4471 +  margin-top: 5px;
 16.4472 +}
 16.4473 +
 16.4474 +.navbar .btn-group .btn,
 16.4475 +.navbar .input-prepend .btn,
 16.4476 +.navbar .input-append .btn,
 16.4477 +.navbar .input-prepend .btn-group,
 16.4478 +.navbar .input-append .btn-group {
 16.4479 +  margin-top: 0;
 16.4480 +}
 16.4481 +
 16.4482 +.navbar-form {
 16.4483 +  margin-bottom: 0;
 16.4484 +  *zoom: 1;
 16.4485 +}
 16.4486 +
 16.4487 +.navbar-form:before,
 16.4488 +.navbar-form:after {
 16.4489 +  display: table;
 16.4490 +  line-height: 0;
 16.4491 +  content: "";
 16.4492 +}
 16.4493 +
 16.4494 +.navbar-form:after {
 16.4495 +  clear: both;
 16.4496 +}
 16.4497 +
 16.4498 +.navbar-form input,
 16.4499 +.navbar-form select,
 16.4500 +.navbar-form .radio,
 16.4501 +.navbar-form .checkbox {
 16.4502 +  margin-top: 5px;
 16.4503 +}
 16.4504 +
 16.4505 +.navbar-form input,
 16.4506 +.navbar-form select,
 16.4507 +.navbar-form .btn {
 16.4508 +  display: inline-block;
 16.4509 +  margin-bottom: 0;
 16.4510 +}
 16.4511 +
 16.4512 +.navbar-form input[type="image"],
 16.4513 +.navbar-form input[type="checkbox"],
 16.4514 +.navbar-form input[type="radio"] {
 16.4515 +  margin-top: 3px;
 16.4516 +}
 16.4517 +
 16.4518 +.navbar-form .input-append,
 16.4519 +.navbar-form .input-prepend {
 16.4520 +  margin-top: 5px;
 16.4521 +  white-space: nowrap;
 16.4522 +}
 16.4523 +
 16.4524 +.navbar-form .input-append input,
 16.4525 +.navbar-form .input-prepend input {
 16.4526 +  margin-top: 0;
 16.4527 +}
 16.4528 +
 16.4529 +.navbar-search {
 16.4530 +  position: relative;
 16.4531 +  float: left;
 16.4532 +  margin-top: 5px;
 16.4533 +  margin-bottom: 0;
 16.4534 +}
 16.4535 +
 16.4536 +.navbar-search .search-query {
 16.4537 +  padding: 4px 14px;
 16.4538 +  margin-bottom: 0;
 16.4539 +  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
 16.4540 +  font-size: 13px;
 16.4541 +  font-weight: normal;
 16.4542 +  line-height: 1;
 16.4543 +  -webkit-border-radius: 15px;
 16.4544 +     -moz-border-radius: 15px;
 16.4545 +          border-radius: 15px;
 16.4546 +}
 16.4547 +
 16.4548 +.navbar-static-top {
 16.4549 +  position: static;
 16.4550 +  margin-bottom: 0;
 16.4551 +}
 16.4552 +
 16.4553 +.navbar-static-top .navbar-inner {
 16.4554 +  -webkit-border-radius: 0;
 16.4555 +     -moz-border-radius: 0;
 16.4556 +          border-radius: 0;
 16.4557 +}
 16.4558 +
 16.4559 +.navbar-fixed-top,
 16.4560 +.navbar-fixed-bottom {
 16.4561 +  position: fixed;
 16.4562 +  right: 0;
 16.4563 +  left: 0;
 16.4564 +  z-index: 1030;
 16.4565 +  margin-bottom: 0;
 16.4566 +}
 16.4567 +
 16.4568 +.navbar-fixed-top .navbar-inner,
 16.4569 +.navbar-static-top .navbar-inner {
 16.4570 +  border-width: 0 0 1px;
 16.4571 +}
 16.4572 +
 16.4573 +.navbar-fixed-bottom .navbar-inner {
 16.4574 +  border-width: 1px 0 0;
 16.4575 +}
 16.4576 +
 16.4577 +.navbar-fixed-top .navbar-inner,
 16.4578 +.navbar-fixed-bottom .navbar-inner {
 16.4579 +  padding-right: 0;
 16.4580 +  padding-left: 0;
 16.4581 +  -webkit-border-radius: 0;
 16.4582 +     -moz-border-radius: 0;
 16.4583 +          border-radius: 0;
 16.4584 +}
 16.4585 +
 16.4586 +.navbar-static-top .container,
 16.4587 +.navbar-fixed-top .container,
 16.4588 +.navbar-fixed-bottom .container {
 16.4589 +  width: 940px;
 16.4590 +}
 16.4591 +
 16.4592 +.navbar-fixed-top {
 16.4593 +  top: 0;
 16.4594 +}
 16.4595 +
 16.4596 +.navbar-fixed-top .navbar-inner,
 16.4597 +.navbar-static-top .navbar-inner {
 16.4598 +  -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
 16.4599 +     -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
 16.4600 +          box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
 16.4601 +}
 16.4602 +
 16.4603 +.navbar-fixed-bottom {
 16.4604 +  bottom: 0;
 16.4605 +}
 16.4606 +
 16.4607 +.navbar-fixed-bottom .navbar-inner {
 16.4608 +  -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
 16.4609 +     -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
 16.4610 +          box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
 16.4611 +}
 16.4612 +
 16.4613 +.navbar .nav {
 16.4614 +  position: relative;
 16.4615 +  left: 0;
 16.4616 +  display: block;
 16.4617 +  float: left;
 16.4618 +  margin: 0 10px 0 0;
 16.4619 +}
 16.4620 +
 16.4621 +.navbar .nav.pull-right {
 16.4622 +  float: right;
 16.4623 +  margin-right: 0;
 16.4624 +}
 16.4625 +
 16.4626 +.navbar .nav > li {
 16.4627 +  float: left;
 16.4628 +}
 16.4629 +
 16.4630 +.navbar .nav > li > a {
 16.4631 +  float: none;
 16.4632 +  padding: 10px 23px 10px;
 16.4633 +  color: #777777;
 16.4634 +  text-decoration: none;
 16.4635 +  text-shadow: 0 1px 0 #ffffff;
 16.4636 +}
 16.4637 +
 16.4638 +.navbar .nav .dropdown-toggle .caret {
 16.4639 +  margin-top: 8px;
 16.4640 +}
 16.4641 +
 16.4642 +.navbar .nav > li > a:focus,
 16.4643 +.navbar .nav > li > a:hover {
 16.4644 +  color: #333333;
 16.4645 +  text-decoration: none;
 16.4646 +  background-color: transparent;
 16.4647 +}
 16.4648 +
 16.4649 +.navbar .nav > .active > a,
 16.4650 +.navbar .nav > .active > a:hover,
 16.4651 +.navbar .nav > .active > a:focus {
 16.4652 +  color: #555555;
 16.4653 +  text-decoration: none;
 16.4654 +  background-color: #e5e5e5;
 16.4655 +  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
 16.4656 +     -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
 16.4657 +          box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
 16.4658 +}
 16.4659 +
 16.4660 +.navbar .btn-navbar {
 16.4661 +  display: none;
 16.4662 +  float: right;
 16.4663 +  padding: 7px 10px;
 16.4664 +  margin-right: 5px;
 16.4665 +  margin-left: 5px;
 16.4666 +  color: #ffffff;
 16.4667 +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 16.4668 +  background-color: #ededed;
 16.4669 +  *background-color: #e5e5e5;
 16.4670 +  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
 16.4671 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
 16.4672 +  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
 16.4673 +  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
 16.4674 +  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
 16.4675 +  background-repeat: repeat-x;
 16.4676 +  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
 16.4677 +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
 16.4678 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
 16.4679 +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
 16.4680 +  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
 16.4681 +     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
 16.4682 +          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
 16.4683 +}
 16.4684 +
 16.4685 +.navbar .btn-navbar:hover,
 16.4686 +.navbar .btn-navbar:focus,
 16.4687 +.navbar .btn-navbar:active,
 16.4688 +.navbar .btn-navbar.active,
 16.4689 +.navbar .btn-navbar.disabled,
 16.4690 +.navbar .btn-navbar[disabled] {
 16.4691 +  color: #ffffff;
 16.4692 +  background-color: #e5e5e5;
 16.4693 +  *background-color: #d9d9d9;
 16.4694 +}
 16.4695 +
 16.4696 +.navbar .btn-navbar:active,
 16.4697 +.navbar .btn-navbar.active {
 16.4698 +  background-color: #cccccc \9;
 16.4699 +}
 16.4700 +
 16.4701 +.navbar .btn-navbar .icon-bar {
 16.4702 +  display: block;
 16.4703 +  width: 18px;
 16.4704 +  height: 2px;
 16.4705 +  background-color: #f5f5f5;
 16.4706 +  -webkit-border-radius: 1px;
 16.4707 +     -moz-border-radius: 1px;
 16.4708 +          border-radius: 1px;
 16.4709 +  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
 16.4710 +     -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
 16.4711 +          box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
 16.4712 +}
 16.4713 +
 16.4714 +.btn-navbar .icon-bar + .icon-bar {
 16.4715 +  margin-top: 3px;
 16.4716 +}
 16.4717 +
 16.4718 +.navbar .nav > li > .dropdown-menu:before {
 16.4719 +  position: absolute;
 16.4720 +  top: -7px;
 16.4721 +  left: 9px;
 16.4722 +  display: inline-block;
 16.4723 +  border-right: 7px solid transparent;
 16.4724 +  border-bottom: 7px solid #ccc;
 16.4725 +  border-left: 7px solid transparent;
 16.4726 +  border-bottom-color: rgba(0, 0, 0, 0.2);
 16.4727 +  content: '';
 16.4728 +}
 16.4729 +
 16.4730 +.navbar .nav > li > .dropdown-menu:after {
 16.4731 +  position: absolute;
 16.4732 +  top: -6px;
 16.4733 +  left: 10px;
 16.4734 +  display: inline-block;
 16.4735 +  border-right: 6px solid transparent;
 16.4736 +  border-bottom: 6px solid #ffffff;
 16.4737 +  border-left: 6px solid transparent;
 16.4738 +  content: '';
 16.4739 +}
 16.4740 +
 16.4741 +.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
 16.4742 +  top: auto;
 16.4743 +  bottom: -7px;
 16.4744 +  border-top: 7px solid #ccc;
 16.4745 +  border-bottom: 0;
 16.4746 +  border-top-color: rgba(0, 0, 0, 0.2);
 16.4747 +}
 16.4748 +
 16.4749 +.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
 16.4750 +  top: auto;
 16.4751 +  bottom: -6px;
 16.4752 +  border-top: 6px solid #ffffff;
 16.4753 +  border-bottom: 0;
 16.4754 +}
 16.4755 +
 16.4756 +.navbar .nav li.dropdown > a:hover .caret,
 16.4757 +.navbar .nav li.dropdown > a:focus .caret {
 16.4758 +  border-top-color: #333333;
 16.4759 +  border-bottom-color: #333333;
 16.4760 +}
 16.4761 +
 16.4762 +.navbar .nav li.dropdown.open > .dropdown-toggle,
 16.4763 +.navbar .nav li.dropdown.active > .dropdown-toggle,
 16.4764 +.navbar .nav li.dropdown.open.active > .dropdown-toggle {
 16.4765 +  color: #555555;
 16.4766 +  background-color: #e5e5e5;
 16.4767 +}
 16.4768 +
 16.4769 +.navbar .nav li.dropdown > .dropdown-toggle .caret {
 16.4770 +  border-top-color: #777777;
 16.4771 +  border-bottom-color: #777777;
 16.4772 +}
 16.4773 +
 16.4774 +.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
 16.4775 +.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
 16.4776 +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
 16.4777 +  border-top-color: #555555;
 16.4778 +  border-bottom-color: #555555;
 16.4779 +}
 16.4780 +
 16.4781 +.navbar .pull-right > li > .dropdown-menu,
 16.4782 +.navbar .nav > li > .dropdown-menu.pull-right {
 16.4783 +  right: 0;
 16.4784 +  left: auto;
 16.4785 +}
 16.4786 +
 16.4787 +.navbar .pull-right > li > .dropdown-menu:before,
 16.4788 +.navbar .nav > li > .dropdown-menu.pull-right:before {
 16.4789 +  right: 12px;
 16.4790 +  left: auto;
 16.4791 +}
 16.4792 +
 16.4793 +.navbar .pull-right > li > .dropdown-menu:after,
 16.4794 +.navbar .nav > li > .dropdown-menu.pull-right:after {
 16.4795 +  right: 13px;
 16.4796 +  left: auto;
 16.4797 +}
 16.4798 +
 16.4799 +.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
 16.4800 +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
 16.4801 +  right: 100%;
 16.4802 +  left: auto;
 16.4803 +  margin-right: -1px;
 16.4804 +  margin-left: 0;
 16.4805 +  -webkit-border-radius: 6px 0 6px 6px;
 16.4806 +     -moz-border-radius: 6px 0 6px 6px;
 16.4807 +          border-radius: 6px 0 6px 6px;
 16.4808 +}
 16.4809 +
 16.4810 +.navbar-inverse .navbar-inner {
 16.4811 +  background-color: #1b1b1b;
 16.4812 +  background-image: -moz-linear-gradient(top, #222222, #111111);
 16.4813 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
 16.4814 +  background-image: -webkit-linear-gradient(top, #222222, #111111);
 16.4815 +  background-image: -o-linear-gradient(top, #222222, #111111);
 16.4816 +  background-image: linear-gradient(to bottom, #222222, #111111);
 16.4817 +  background-repeat: repeat-x;
 16.4818 +  border-color: #252525;
 16.4819 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
 16.4820 +}
 16.4821 +
 16.4822 +.navbar-inverse .brand,
 16.4823 +.navbar-inverse .nav > li > a {
 16.4824 +  color: #999999;
 16.4825 +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 16.4826 +}
 16.4827 +
 16.4828 +.navbar-inverse .brand:hover,
 16.4829 +.navbar-inverse .nav > li > a:hover,
 16.4830 +.navbar-inverse .brand:focus,
 16.4831 +.navbar-inverse .nav > li > a:focus {
 16.4832 +  color: #ffffff;
 16.4833 +}
 16.4834 +
 16.4835 +.navbar-inverse .brand {
 16.4836 +  color: #999999;
 16.4837 +}
 16.4838 +
 16.4839 +.navbar-inverse .navbar-text {
 16.4840 +  color: #999999;
 16.4841 +}
 16.4842 +
 16.4843 +.navbar-inverse .nav > li > a:focus,
 16.4844 +.navbar-inverse .nav > li > a:hover {
 16.4845 +  color: #ffffff;
 16.4846 +  background-color: transparent;
 16.4847 +}
 16.4848 +
 16.4849 +.navbar-inverse .nav .active > a,
 16.4850 +.navbar-inverse .nav .active > a:hover,
 16.4851 +.navbar-inverse .nav .active > a:focus {
 16.4852 +  color: #ffffff;
 16.4853 +  background-color: #111111;
 16.4854 +}
 16.4855 +
 16.4856 +.navbar-inverse .navbar-link {
 16.4857 +  color: #999999;
 16.4858 +}
 16.4859 +
 16.4860 +.navbar-inverse .navbar-link:hover,
 16.4861 +.navbar-inverse .navbar-link:focus {
 16.4862 +  color: #ffffff;
 16.4863 +}
 16.4864 +
 16.4865 +.navbar-inverse .divider-vertical {
 16.4866 +  border-right-color: #222222;
 16.4867 +  border-left-color: #111111;
 16.4868 +}
 16.4869 +
 16.4870 +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
 16.4871 +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
 16.4872 +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
 16.4873 +  color: #ffffff;
 16.4874 +  background-color: #111111;
 16.4875 +}
 16.4876 +
 16.4877 +.navbar-inverse .nav li.dropdown > a:hover .caret,
 16.4878 +.navbar-inverse .nav li.dropdown > a:focus .caret {
 16.4879 +  border-top-color: #ffffff;
 16.4880 +  border-bottom-color: #ffffff;
 16.4881 +}
 16.4882 +
 16.4883 +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
 16.4884 +  border-top-color: #999999;
 16.4885 +  border-bottom-color: #999999;
 16.4886 +}
 16.4887 +
 16.4888 +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
 16.4889 +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
 16.4890 +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
 16.4891 +  border-top-color: #ffffff;
 16.4892 +  border-bottom-color: #ffffff;
 16.4893 +}
 16.4894 +
 16.4895 +.navbar-inverse .navbar-search .search-query {
 16.4896 +  color: #ffffff;
 16.4897 +  background-color: #515151;
 16.4898 +  border-color: #111111;
 16.4899 +  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
 16.4900 +     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
 16.4901 +          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
 16.4902 +  -webkit-transition: none;
 16.4903 +     -moz-transition: none;
 16.4904 +       -o-transition: none;
 16.4905 +          transition: none;
 16.4906 +}
 16.4907 +
 16.4908 +.navbar-inverse .navbar-search .search-query:-moz-placeholder {
 16.4909 +  color: #cccccc;
 16.4910 +}
 16.4911 +
 16.4912 +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
 16.4913 +  color: #cccccc;
 16.4914 +}
 16.4915 +
 16.4916 +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
 16.4917 +  color: #cccccc;
 16.4918 +}
 16.4919 +
 16.4920 +.navbar-inverse .navbar-search .search-query:focus,
 16.4921 +.navbar-inverse .navbar-search .search-query.focused {
 16.4922 +  padding: 5px 15px;
 16.4923 +  color: #333333;
 16.4924 +  text-shadow: 0 1px 0 #ffffff;
 16.4925 +  background-color: #ffffff;
 16.4926 +  border: 0;
 16.4927 +  outline: 0;
 16.4928 +  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
 16.4929 +     -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
 16.4930 +          box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
 16.4931 +}
 16.4932 +
 16.4933 +.navbar-inverse .btn-navbar {
 16.4934 +  color: #ffffff;
 16.4935 +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 16.4936 +  background-color: #0e0e0e;
 16.4937 +  *background-color: #040404;
 16.4938 +  background-image: -moz-linear-gradient(top, #151515, #040404);
 16.4939 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
 16.4940 +  background-image: -webkit-linear-gradient(top, #151515, #040404);
 16.4941 +  background-image: -o-linear-gradient(top, #151515, #040404);
 16.4942 +  background-image: linear-gradient(to bottom, #151515, #040404);
 16.4943 +  background-repeat: repeat-x;
 16.4944 +  border-color: #040404 #040404 #000000;
 16.4945 +  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
 16.4946 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
 16.4947 +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
 16.4948 +}
 16.4949 +
 16.4950 +.navbar-inverse .btn-navbar:hover,
 16.4951 +.navbar-inverse .btn-navbar:focus,
 16.4952 +.navbar-inverse .btn-navbar:active,
 16.4953 +.navbar-inverse .btn-navbar.active,
 16.4954 +.navbar-inverse .btn-navbar.disabled,
 16.4955 +.navbar-inverse .btn-navbar[disabled] {
 16.4956 +  color: #ffffff;
 16.4957 +  background-color: #040404;
 16.4958 +  *background-color: #000000;
 16.4959 +}
 16.4960 +
 16.4961 +.navbar-inverse .btn-navbar:active,
 16.4962 +.navbar-inverse .btn-navbar.active {
 16.4963 +  background-color: #000000 \9;
 16.4964 +}
 16.4965 +
 16.4966 +.breadcrumb {
 16.4967 +  padding: 8px 15px;
 16.4968 +  margin: 0 0 20px;
 16.4969 +  list-style: none;
 16.4970 +  background-color: #f5f5f5;
 16.4971 +  -webkit-border-radius: 4px;
 16.4972 +     -moz-border-radius: 4px;
 16.4973 +          border-radius: 4px;
 16.4974 +}
 16.4975 +
 16.4976 +.breadcrumb > li {
 16.4977 +  display: inline-block;
 16.4978 +  *display: inline;
 16.4979 +  text-shadow: 0 1px 0 #ffffff;
 16.4980 +  *zoom: 1;
 16.4981 +}
 16.4982 +
 16.4983 +.breadcrumb > li > .divider {
 16.4984 +  padding: 0 5px;
 16.4985 +  color: #ccc;
 16.4986 +}
 16.4987 +
 16.4988 +.breadcrumb > .active {
 16.4989 +  color: #999999;
 16.4990 +}
 16.4991 +
 16.4992 +.pagination {
 16.4993 +  margin: 20px 0;
 16.4994 +}
 16.4995 +
 16.4996 +.pagination ul {
 16.4997 +  display: inline-block;
 16.4998 +  *display: inline;
 16.4999 +  margin-bottom: 0;
 16.5000 +  margin-left: 0;
 16.5001 +  -webkit-border-radius: 4px;
 16.5002 +     -moz-border-radius: 4px;
 16.5003 +          border-radius: 4px;
 16.5004 +  *zoom: 1;
 16.5005 +  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
 16.5006 +     -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
 16.5007 +          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
 16.5008 +}
 16.5009 +
 16.5010 +.pagination ul > li {
 16.5011 +  display: inline;
 16.5012 +}
 16.5013 +
 16.5014 +.pagination ul > li > a,
 16.5015 +.pagination ul > li > span {
 16.5016 +  float: left;
 16.5017 +  padding: 4px 12px;
 16.5018 +  line-height: 20px;
 16.5019 +  text-decoration: none;
 16.5020 +  background-color: #ffffff;
 16.5021 +  border: 1px solid #dddddd;
 16.5022 +  border-left-width: 0;
 16.5023 +}
 16.5024 +
 16.5025 +.pagination ul > li > a:hover,
 16.5026 +.pagination ul > li > a:focus,
 16.5027 +.pagination ul > .active > a,
 16.5028 +.pagination ul > .active > span {
 16.5029 +  background-color: #f5f5f5;
 16.5030 +}
 16.5031 +
 16.5032 +.pagination ul > .active > a,
 16.5033 +.pagination ul > .active > span {
 16.5034 +  color: #999999;
 16.5035 +  cursor: default;
 16.5036 +}
 16.5037 +
 16.5038 +.pagination ul > .disabled > span,
 16.5039 +.pagination ul > .disabled > a,
 16.5040 +.pagination ul > .disabled > a:hover,
 16.5041 +.pagination ul > .disabled > a:focus {
 16.5042 +  color: #999999;
 16.5043 +  cursor: default;
 16.5044 +  background-color: transparent;
 16.5045 +}
 16.5046 +
 16.5047 +.pagination ul > li:first-child > a,
 16.5048 +.pagination ul > li:first-child > span {
 16.5049 +  border-left-width: 1px;
 16.5050 +  -webkit-border-bottom-left-radius: 4px;
 16.5051 +          border-bottom-left-radius: 4px;
 16.5052 +  -webkit-border-top-left-radius: 4px;
 16.5053 +          border-top-left-radius: 4px;
 16.5054 +  -moz-border-radius-bottomleft: 4px;
 16.5055 +  -moz-border-radius-topleft: 4px;
 16.5056 +}
 16.5057 +
 16.5058 +.pagination ul > li:last-child > a,
 16.5059 +.pagination ul > li:last-child > span {
 16.5060 +  -webkit-border-top-right-radius: 4px;
 16.5061 +          border-top-right-radius: 4px;
 16.5062 +  -webkit-border-bottom-right-radius: 4px;
 16.5063 +          border-bottom-right-radius: 4px;
 16.5064 +  -moz-border-radius-topright: 4px;
 16.5065 +  -moz-border-radius-bottomright: 4px;
 16.5066 +}
 16.5067 +
 16.5068 +.pagination-centered {
 16.5069 +  text-align: center;
 16.5070 +}
 16.5071 +
 16.5072 +.pagination-right {
 16.5073 +  text-align: right;
 16.5074 +}
 16.5075 +
 16.5076 +.pagination-large ul > li > a,
 16.5077 +.pagination-large ul > li > span {
 16.5078 +  padding: 11px 19px;
 16.5079 +  font-size: 17.5px;
 16.5080 +}
 16.5081 +
 16.5082 +.pagination-large ul > li:first-child > a,
 16.5083 +.pagination-large ul > li:first-child > span {
 16.5084 +  -webkit-border-bottom-left-radius: 6px;
 16.5085 +          border-bottom-left-radius: 6px;
 16.5086 +  -webkit-border-top-left-radius: 6px;
 16.5087 +          border-top-left-radius: 6px;
 16.5088 +  -moz-border-radius-bottomleft: 6px;
 16.5089 +  -moz-border-radius-topleft: 6px;
 16.5090 +}
 16.5091 +
 16.5092 +.pagination-large ul > li:last-child > a,
 16.5093 +.pagination-large ul > li:last-child > span {
 16.5094 +  -webkit-border-top-right-radius: 6px;
 16.5095 +          border-top-right-radius: 6px;
 16.5096 +  -webkit-border-bottom-right-radius: 6px;
 16.5097 +          border-bottom-right-radius: 6px;
 16.5098 +  -moz-border-radius-topright: 6px;
 16.5099 +  -moz-border-radius-bottomright: 6px;
 16.5100 +}
 16.5101 +
 16.5102 +.pagination-mini ul > li:first-child > a,
 16.5103 +.pagination-small ul > li:first-child > a,
 16.5104 +.pagination-mini ul > li:first-child > span,
 16.5105 +.pagination-small ul > li:first-child > span {
 16.5106 +  -webkit-border-bottom-left-radius: 3px;
 16.5107 +          border-bottom-left-radius: 3px;
 16.5108 +  -webkit-border-top-left-radius: 3px;
 16.5109 +          border-top-left-radius: 3px;
 16.5110 +  -moz-border-radius-bottomleft: 3px;
 16.5111 +  -moz-border-radius-topleft: 3px;
 16.5112 +}
 16.5113 +
 16.5114 +.pagination-mini ul > li:last-child > a,
 16.5115 +.pagination-small ul > li:last-child > a,
 16.5116 +.pagination-mini ul > li:last-child > span,
 16.5117 +.pagination-small ul > li:last-child > span {
 16.5118 +  -webkit-border-top-right-radius: 3px;
 16.5119 +          border-top-right-radius: 3px;
 16.5120 +  -webkit-border-bottom-right-radius: 3px;
 16.5121 +          border-bottom-right-radius: 3px;
 16.5122 +  -moz-border-radius-topright: 3px;
 16.5123 +  -moz-border-radius-bottomright: 3px;
 16.5124 +}
 16.5125 +
 16.5126 +.pagination-small ul > li > a,
 16.5127 +.pagination-small ul > li > span {
 16.5128 +  padding: 2px 10px;
 16.5129 +  font-size: 11.9px;
 16.5130 +}
 16.5131 +
 16.5132 +.pagination-mini ul > li > a,
 16.5133 +.pagination-mini ul > li > span {
 16.5134 +  padding: 0 6px;
 16.5135 +  font-size: 10.5px;
 16.5136 +}
 16.5137 +
 16.5138 +.pager {
 16.5139 +  margin: 20px 0;
 16.5140 +  text-align: center;
 16.5141 +  list-style: none;
 16.5142 +  *zoom: 1;
 16.5143 +}
 16.5144 +
 16.5145 +.pager:before,
 16.5146 +.pager:after {
 16.5147 +  display: table;
 16.5148 +  line-height: 0;
 16.5149 +  content: "";
 16.5150 +}
 16.5151 +
 16.5152 +.pager:after {
 16.5153 +  clear: both;
 16.5154 +}
 16.5155 +
 16.5156 +.pager li {
 16.5157 +  display: inline;
 16.5158 +}
 16.5159 +
 16.5160 +.pager li > a,
 16.5161 +.pager li > span {
 16.5162 +  display: inline-block;
 16.5163 +  padding: 5px 14px;
 16.5164 +  background-color: #fff;
 16.5165 +  border: 1px solid #ddd;
 16.5166 +  -webkit-border-radius: 15px;
 16.5167 +     -moz-border-radius: 15px;
 16.5168 +          border-radius: 15px;
 16.5169 +}
 16.5170 +
 16.5171 +.pager li > a:hover,
 16.5172 +.pager li > a:focus {
 16.5173 +  text-decoration: none;
 16.5174 +  background-color: #f5f5f5;
 16.5175 +}
 16.5176 +
 16.5177 +.pager .next > a,
 16.5178 +.pager .next > span {
 16.5179 +  float: right;
 16.5180 +}
 16.5181 +
 16.5182 +.pager .previous > a,
 16.5183 +.pager .previous > span {
 16.5184 +  float: left;
 16.5185 +}
 16.5186 +
 16.5187 +.pager .disabled > a,
 16.5188 +.pager .disabled > a:hover,
 16.5189 +.pager .disabled > a:focus,
 16.5190 +.pager .disabled > span {
 16.5191 +  color: #999999;
 16.5192 +  cursor: default;
 16.5193 +  background-color: #fff;
 16.5194 +}
 16.5195 +
 16.5196 +.modal-backdrop {
 16.5197 +  position: fixed;
 16.5198 +  top: 0;
 16.5199 +  right: 0;
 16.5200 +  bottom: 0;
 16.5201 +  left: 0;
 16.5202 +  z-index: 1040;
 16.5203 +  background-color: #000000;
 16.5204 +}
 16.5205 +
 16.5206 +.modal-backdrop.fade {
 16.5207 +  opacity: 0;
 16.5208 +}
 16.5209 +
 16.5210 +.modal-backdrop,
 16.5211 +.modal-backdrop.fade.in {
 16.5212 +  opacity: 0.8;
 16.5213 +  filter: alpha(opacity=80);
 16.5214 +}
 16.5215 +
 16.5216 +.modal {
 16.5217 +  position: fixed;
 16.5218 +  top: 10%;
 16.5219 +  left: 50%;
 16.5220 +  z-index: 1050;
 16.5221 +  width: 560px;
 16.5222 +  margin-left: -280px;
 16.5223 +  background-color: #ffffff;
 16.5224 +  border: 1px solid #999;
 16.5225 +  border: 1px solid rgba(0, 0, 0, 0.3);
 16.5226 +  *border: 1px solid #999;
 16.5227 +  -webkit-border-radius: 6px;
 16.5228 +     -moz-border-radius: 6px;
 16.5229 +          border-radius: 6px;
 16.5230 +  outline: none;
 16.5231 +  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
 16.5232 +     -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
 16.5233 +          box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
 16.5234 +  -webkit-background-clip: padding-box;
 16.5235 +     -moz-background-clip: padding-box;
 16.5236 +          background-clip: padding-box;
 16.5237 +}
 16.5238 +
 16.5239 +.modal.fade {
 16.5240 +  top: -25%;
 16.5241 +  -webkit-transition: opacity 0.3s linear, top 0.3s ease-out;
 16.5242 +     -moz-transition: opacity 0.3s linear, top 0.3s ease-out;
 16.5243 +       -o-transition: opacity 0.3s linear, top 0.3s ease-out;
 16.5244 +          transition: opacity 0.3s linear, top 0.3s ease-out;
 16.5245 +}
 16.5246 +
 16.5247 +.modal.fade.in {
 16.5248 +  top: 10%;
 16.5249 +}
 16.5250 +
 16.5251 +.modal-header {
 16.5252 +  padding: 9px 15px;
 16.5253 +  border-bottom: 1px solid #eee;
 16.5254 +}
 16.5255 +
 16.5256 +.modal-header .close {
 16.5257 +  margin-top: 2px;
 16.5258 +}
 16.5259 +
 16.5260 +.modal-header h3 {
 16.5261 +  margin: 0;
 16.5262 +  line-height: 30px;
 16.5263 +}
 16.5264 +
 16.5265 +.modal-body {
 16.5266 +  position: relative;
 16.5267 +  max-height: 400px;
 16.5268 +  padding: 15px;
 16.5269 +  overflow-y: auto;
 16.5270 +}
 16.5271 +
 16.5272 +.modal-form {
 16.5273 +  margin-bottom: 0;
 16.5274 +}
 16.5275 +
 16.5276 +.modal-footer {
 16.5277 +  padding: 14px 15px 15px;
 16.5278 +  margin-bottom: 0;
 16.5279 +  text-align: right;
 16.5280 +  background-color: #f5f5f5;
 16.5281 +  border-top: 1px solid #ddd;
 16.5282 +  -webkit-border-radius: 0 0 6px 6px;
 16.5283 +     -moz-border-radius: 0 0 6px 6px;
 16.5284 +          border-radius: 0 0 6px 6px;
 16.5285 +  *zoom: 1;
 16.5286 +  -webkit-box-shadow: inset 0 1px 0 #ffffff;
 16.5287 +     -moz-box-shadow: inset 0 1px 0 #ffffff;
 16.5288 +          box-shadow: inset 0 1px 0 #ffffff;
 16.5289 +}
 16.5290 +
 16.5291 +.modal-footer:before,
 16.5292 +.modal-footer:after {
 16.5293 +  display: table;
 16.5294 +  line-height: 0;
 16.5295 +  content: "";
 16.5296 +}
 16.5297 +
 16.5298 +.modal-footer:after {
 16.5299 +  clear: both;
 16.5300 +}
 16.5301 +
 16.5302 +.modal-footer .btn + .btn {
 16.5303 +  margin-bottom: 0;
 16.5304 +  margin-left: 5px;
 16.5305 +}
 16.5306 +
 16.5307 +.modal-footer .btn-group .btn + .btn {
 16.5308 +  margin-left: -1px;
 16.5309 +}
 16.5310 +
 16.5311 +.modal-footer .btn-block + .btn-block {
 16.5312 +  margin-left: 0;
 16.5313 +}
 16.5314 +
 16.5315 +.tooltip {
 16.5316 +  position: absolute;
 16.5317 +  z-index: 1030;
 16.5318 +  display: block;
 16.5319 +  font-size: 11px;
 16.5320 +  line-height: 1.4;
 16.5321 +  opacity: 0;
 16.5322 +  filter: alpha(opacity=0);
 16.5323 +  visibility: visible;
 16.5324 +}
 16.5325 +
 16.5326 +.tooltip.in {
 16.5327 +  opacity: 0.8;
 16.5328 +  filter: alpha(opacity=80);
 16.5329 +}
 16.5330 +
 16.5331 +.tooltip.top {
 16.5332 +  padding: 5px 0;
 16.5333 +  margin-top: -3px;
 16.5334 +}
 16.5335 +
 16.5336 +.tooltip.right {
 16.5337 +  padding: 0 5px;
 16.5338 +  margin-left: 3px;
 16.5339 +}
 16.5340 +
 16.5341 +.tooltip.bottom {
 16.5342 +  padding: 5px 0;
 16.5343 +  margin-top: 3px;
 16.5344 +}
 16.5345 +
 16.5346 +.tooltip.left {
 16.5347 +  padding: 0 5px;
 16.5348 +  margin-left: -3px;
 16.5349 +}
 16.5350 +
 16.5351 +.tooltip-inner {
 16.5352 +  max-width: 200px;
 16.5353 +  padding: 8px;
 16.5354 +  color: #ffffff;
 16.5355 +  text-align: center;
 16.5356 +  text-decoration: none;
 16.5357 +  background-color: #000000;
 16.5358 +  -webkit-border-radius: 4px;
 16.5359 +     -moz-border-radius: 4px;
 16.5360 +          border-radius: 4px;
 16.5361 +}
 16.5362 +
 16.5363 +.tooltip-arrow {
 16.5364 +  position: absolute;
 16.5365 +  width: 0;
 16.5366 +  height: 0;
 16.5367 +  border-color: transparent;
 16.5368 +  border-style: solid;
 16.5369 +}
 16.5370 +
 16.5371 +.tooltip.top .tooltip-arrow {
 16.5372 +  bottom: 0;
 16.5373 +  left: 50%;
 16.5374 +  margin-left: -5px;
 16.5375 +  border-top-color: #000000;
 16.5376 +  border-width: 5px 5px 0;
 16.5377 +}
 16.5378 +
 16.5379 +.tooltip.right .tooltip-arrow {
 16.5380 +  top: 50%;
 16.5381 +  left: 0;
 16.5382 +  margin-top: -5px;
 16.5383 +  border-right-color: #000000;
 16.5384 +  border-width: 5px 5px 5px 0;
 16.5385 +}
 16.5386 +
 16.5387 +.tooltip.left .tooltip-arrow {
 16.5388 +  top: 50%;
 16.5389 +  right: 0;
 16.5390 +  margin-top: -5px;
 16.5391 +  border-left-color: #000000;
 16.5392 +  border-width: 5px 0 5px 5px;
 16.5393 +}
 16.5394 +
 16.5395 +.tooltip.bottom .tooltip-arrow {
 16.5396 +  top: 0;
 16.5397 +  left: 50%;
 16.5398 +  margin-left: -5px;
 16.5399 +  border-bottom-color: #000000;
 16.5400 +  border-width: 0 5px 5px;
 16.5401 +}
 16.5402 +
 16.5403 +.popover {
 16.5404 +  position: absolute;
 16.5405 +  top: 0;
 16.5406 +  left: 0;
 16.5407 +  z-index: 1010;
 16.5408 +  display: none;
 16.5409 +  max-width: 276px;
 16.5410 +  padding: 1px;
 16.5411 +  text-align: left;
 16.5412 +  white-space: normal;
 16.5413 +  background-color: #ffffff;
 16.5414 +  border: 1px solid #ccc;
 16.5415 +  border: 1px solid rgba(0, 0, 0, 0.2);
 16.5416 +  -webkit-border-radius: 6px;
 16.5417 +     -moz-border-radius: 6px;
 16.5418 +          border-radius: 6px;
 16.5419 +  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
 16.5420 +     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
 16.5421 +          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
 16.5422 +  -webkit-background-clip: padding-box;
 16.5423 +     -moz-background-clip: padding;
 16.5424 +          background-clip: padding-box;
 16.5425 +}
 16.5426 +
 16.5427 +.popover.top {
 16.5428 +  margin-top: -10px;
 16.5429 +}
 16.5430 +
 16.5431 +.popover.right {
 16.5432 +  margin-left: 10px;
 16.5433 +}
 16.5434 +
 16.5435 +.popover.bottom {
 16.5436 +  margin-top: 10px;
 16.5437 +}
 16.5438 +
 16.5439 +.popover.left {
 16.5440 +  margin-left: -10px;
 16.5441 +}
 16.5442 +
 16.5443 +.popover-title {
 16.5444 +  padding: 8px 14px;
 16.5445 +  margin: 0;
 16.5446 +  font-size: 14px;
 16.5447 +  font-weight: normal;
 16.5448 +  line-height: 18px;
 16.5449 +  background-color: #f7f7f7;
 16.5450 +  border-bottom: 1px solid #ebebeb;
 16.5451 +  -webkit-border-radius: 5px 5px 0 0;
 16.5452 +     -moz-border-radius: 5px 5px 0 0;
 16.5453 +          border-radius: 5px 5px 0 0;
 16.5454 +}
 16.5455 +
 16.5456 +.popover-title:empty {
 16.5457 +  display: none;
 16.5458 +}
 16.5459 +
 16.5460 +.popover-content {
 16.5461 +  padding: 9px 14px;
 16.5462 +}
 16.5463 +
 16.5464 +.popover .arrow,
 16.5465 +.popover .arrow:after {
 16.5466 +  position: absolute;
 16.5467 +  display: block;
 16.5468 +  width: 0;
 16.5469 +  height: 0;
 16.5470 +  border-color: transparent;
 16.5471 +  border-style: solid;
 16.5472 +}
 16.5473 +
 16.5474 +.popover .arrow {
 16.5475 +  border-width: 11px;
 16.5476 +}
 16.5477 +
 16.5478 +.popover .arrow:after {
 16.5479 +  border-width: 10px;
 16.5480 +  content: "";
 16.5481 +}
 16.5482 +
 16.5483 +.popover.top .arrow {
 16.5484 +  bottom: -11px;
 16.5485 +  left: 50%;
 16.5486 +  margin-left: -11px;
 16.5487 +  border-top-color: #999;
 16.5488 +  border-top-color: rgba(0, 0, 0, 0.25);
 16.5489 +  border-bottom-width: 0;
 16.5490 +}
 16.5491 +
 16.5492 +.popover.top .arrow:after {
 16.5493 +  bottom: 1px;
 16.5494 +  margin-left: -10px;
 16.5495 +  border-top-color: #ffffff;
 16.5496 +  border-bottom-width: 0;
 16.5497 +}
 16.5498 +
 16.5499 +.popover.right .arrow {
 16.5500 +  top: 50%;
 16.5501 +  left: -11px;
 16.5502 +  margin-top: -11px;
 16.5503 +  border-right-color: #999;
 16.5504 +  border-right-color: rgba(0, 0, 0, 0.25);
 16.5505 +  border-left-width: 0;
 16.5506 +}
 16.5507 +
 16.5508 +.popover.right .arrow:after {
 16.5509 +  bottom: -10px;
 16.5510 +  left: 1px;
 16.5511 +  border-right-color: #ffffff;
 16.5512 +  border-left-width: 0;
 16.5513 +}
 16.5514 +
 16.5515 +.popover.bottom .arrow {
 16.5516 +  top: -11px;
 16.5517 +  left: 50%;
 16.5518 +  margin-left: -11px;
 16.5519 +  border-bottom-color: #999;
 16.5520 +  border-bottom-color: rgba(0, 0, 0, 0.25);
 16.5521 +  border-top-width: 0;
 16.5522 +}
 16.5523 +
 16.5524 +.popover.bottom .arrow:after {
 16.5525 +  top: 1px;
 16.5526 +  margin-left: -10px;
 16.5527 +  border-bottom-color: #ffffff;
 16.5528 +  border-top-width: 0;
 16.5529 +}
 16.5530 +
 16.5531 +.popover.left .arrow {
 16.5532 +  top: 50%;
 16.5533 +  right: -11px;
 16.5534 +  margin-top: -11px;
 16.5535 +  border-left-color: #999;
 16.5536 +  border-left-color: rgba(0, 0, 0, 0.25);
 16.5537 +  border-right-width: 0;
 16.5538 +}
 16.5539 +
 16.5540 +.popover.left .arrow:after {
 16.5541 +  right: 1px;
 16.5542 +  bottom: -10px;
 16.5543 +  border-left-color: #ffffff;
 16.5544 +  border-right-width: 0;
 16.5545 +}
 16.5546 +
 16.5547 +.thumbnails {
 16.5548 +  margin-left: -20px;
 16.5549 +  list-style: none;
 16.5550 +  *zoom: 1;
 16.5551 +}
 16.5552 +
 16.5553 +.thumbnails:before,
 16.5554 +.thumbnails:after {
 16.5555 +  display: table;
 16.5556 +  line-height: 0;
 16.5557 +  content: "";
 16.5558 +}
 16.5559 +
 16.5560 +.thumbnails:after {
 16.5561 +  clear: both;
 16.5562 +}
 16.5563 +
 16.5564 +.row-fluid .thumbnails {
 16.5565 +  margin-left: 0;
 16.5566 +}
 16.5567 +
 16.5568 +.thumbnails > li {
 16.5569 +  float: left;
 16.5570 +  margin-bottom: 20px;
 16.5571 +  margin-left: 20px;
 16.5572 +}
 16.5573 +
 16.5574 +.thumbnail {
 16.5575 +  display: block;
 16.5576 +  padding: 4px;
 16.5577 +  line-height: 20px;
 16.5578 +  border: 1px solid #ddd;
 16.5579 +  -webkit-border-radius: 4px;
 16.5580 +     -moz-border-radius: 4px;
 16.5581 +          border-radius: 4px;
 16.5582 +  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
 16.5583 +     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
 16.5584 +          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
 16.5585 +  -webkit-transition: all 0.2s ease-in-out;
 16.5586 +     -moz-transition: all 0.2s ease-in-out;
 16.5587 +       -o-transition: all 0.2s ease-in-out;
 16.5588 +          transition: all 0.2s ease-in-out;
 16.5589 +}
 16.5590 +
 16.5591 +a.thumbnail:hover,
 16.5592 +a.thumbnail:focus {
 16.5593 +  border-color: #0088cc;
 16.5594 +  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
 16.5595 +     -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
 16.5596 +          box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
 16.5597 +}
 16.5598 +
 16.5599 +.thumbnail > img {
 16.5600 +  display: block;
 16.5601 +  max-width: 100%;
 16.5602 +  margin-right: auto;
 16.5603 +  margin-left: auto;
 16.5604 +}
 16.5605 +
 16.5606 +.thumbnail .caption {
 16.5607 +  padding: 9px;
 16.5608 +  color: #555555;
 16.5609 +}
 16.5610 +
 16.5611 +.media,
 16.5612 +.media-body {
 16.5613 +  overflow: hidden;
 16.5614 +  *overflow: visible;
 16.5615 +  zoom: 1;
 16.5616 +}
 16.5617 +
 16.5618 +.media,
 16.5619 +.media .media {
 16.5620 +  margin-top: 15px;
 16.5621 +}
 16.5622 +
 16.5623 +.media:first-child {
 16.5624 +  margin-top: 0;
 16.5625 +}
 16.5626 +
 16.5627 +.media-object {
 16.5628 +  display: block;
 16.5629 +}
 16.5630 +
 16.5631 +.media-heading {
 16.5632 +  margin: 0 0 5px;
 16.5633 +}
 16.5634 +
 16.5635 +.media > .pull-left {
 16.5636 +  margin-right: 10px;
 16.5637 +}
 16.5638 +
 16.5639 +.media > .pull-right {
 16.5640 +  margin-left: 10px;
 16.5641 +}
 16.5642 +
 16.5643 +.media-list {
 16.5644 +  margin-left: 0;
 16.5645 +  list-style: none;
 16.5646 +}
 16.5647 +
 16.5648 +.label,
 16.5649 +.badge {
 16.5650 +  display: inline-block;
 16.5651 +  padding: 2px 4px;
 16.5652 +  font-size: 11.844px;
 16.5653 +  font-weight: normal;
 16.5654 +  line-height: 14px;
 16.5655 +  color: #ffffff;
 16.5656 +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 16.5657 +  white-space: nowrap;
 16.5658 +  vertical-align: baseline;
 16.5659 +  background-color: #999999;
 16.5660 +}
 16.5661 +
 16.5662 +.label {
 16.5663 +  -webkit-border-radius: 3px;
 16.5664 +     -moz-border-radius: 3px;
 16.5665 +          border-radius: 3px;
 16.5666 +}
 16.5667 +
 16.5668 +.badge {
 16.5669 +  padding-right: 9px;
 16.5670 +  padding-left: 9px;
 16.5671 +  -webkit-border-radius: 9px;
 16.5672 +     -moz-border-radius: 9px;
 16.5673 +          border-radius: 9px;
 16.5674 +}
 16.5675 +
 16.5676 +.label:empty,
 16.5677 +.badge:empty {
 16.5678 +  display: none;
 16.5679 +}
 16.5680 +
 16.5681 +a.label:hover,
 16.5682 +a.label:focus,
 16.5683 +a.badge:hover,
 16.5684 +a.badge:focus {
 16.5685 +  color: #ffffff;
 16.5686 +  text-decoration: none;
 16.5687 +  cursor: pointer;
 16.5688 +}
 16.5689 +
 16.5690 +.label-important,
 16.5691 +.badge-important {
 16.5692 +  background-color: #b94a48;
 16.5693 +}
 16.5694 +
 16.5695 +.label-important[href],
 16.5696 +.badge-important[href] {
 16.5697 +  background-color: #953b39;
 16.5698 +}
 16.5699 +
 16.5700 +.label-warning,
 16.5701 +.badge-warning {
 16.5702 +  background-color: #f89406;
 16.5703 +}
 16.5704 +
 16.5705 +.label-warning[href],
 16.5706 +.badge-warning[href] {
 16.5707 +  background-color: #c67605;
 16.5708 +}
 16.5709 +
 16.5710 +.label-success,
 16.5711 +.badge-success {
 16.5712 +  background-color: #468847;
 16.5713 +}
 16.5714 +
 16.5715 +.label-success[href],
 16.5716 +.badge-success[href] {
 16.5717 +  background-color: #356635;
 16.5718 +}
 16.5719 +
 16.5720 +.label-info,
 16.5721 +.badge-info {
 16.5722 +  background-color: #3a87ad;
 16.5723 +}
 16.5724 +
 16.5725 +.label-info[href],
 16.5726 +.badge-info[href] {
 16.5727 +  background-color: #2d6987;
 16.5728 +}
 16.5729 +
 16.5730 +.label-inverse,
 16.5731 +.badge-inverse {
 16.5732 +  background-color: #333333;
 16.5733 +}
 16.5734 +
 16.5735 +.label-inverse[href],
 16.5736 +.badge-inverse[href] {
 16.5737 +  background-color: #1a1a1a;
 16.5738 +}
 16.5739 +
 16.5740 +.btn .label,
 16.5741 +.btn .badge {
 16.5742 +  position: relative;
 16.5743 +  top: -1px;
 16.5744 +}
 16.5745 +
 16.5746 +.btn-mini .label,
 16.5747 +.btn-mini .badge {
 16.5748 +  top: 0;
 16.5749 +}
 16.5750 +
 16.5751 +@-webkit-keyframes progress-bar-stripes {
 16.5752 +  from {
 16.5753 +    background-position: 40px 0;
 16.5754 +  }
 16.5755 +  to {
 16.5756 +    background-position: 0 0;
 16.5757 +  }
 16.5758 +}
 16.5759 +
 16.5760 +@-moz-keyframes progress-bar-stripes {
 16.5761 +  from {
 16.5762 +    background-position: 40px 0;
 16.5763 +  }
 16.5764 +  to {
 16.5765 +    background-position: 0 0;
 16.5766 +  }
 16.5767 +}
 16.5768 +
 16.5769 +@-ms-keyframes progress-bar-stripes {
 16.5770 +  from {
 16.5771 +    background-position: 40px 0;
 16.5772 +  }
 16.5773 +  to {
 16.5774 +    background-position: 0 0;
 16.5775 +  }
 16.5776 +}
 16.5777 +
 16.5778 +@-o-keyframes progress-bar-stripes {
 16.5779 +  from {
 16.5780 +    background-position: 0 0;
 16.5781 +  }
 16.5782 +  to {
 16.5783 +    background-position: 40px 0;
 16.5784 +  }
 16.5785 +}
 16.5786 +
 16.5787 +@keyframes progress-bar-stripes {
 16.5788 +  from {
 16.5789 +    background-position: 40px 0;
 16.5790 +  }
 16.5791 +  to {
 16.5792 +    background-position: 0 0;
 16.5793 +  }
 16.5794 +}
 16.5795 +
 16.5796 +.progress {
 16.5797 +  height: 20px;
 16.5798 +  margin-bottom: 20px;
 16.5799 +  overflow: hidden;
 16.5800 +  background-color: #f7f7f7;
 16.5801 +  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
 16.5802 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
 16.5803 +  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
 16.5804 +  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
 16.5805 +  background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
 16.5806 +  background-repeat: repeat-x;
 16.5807 +  -webkit-border-radius: 4px;
 16.5808 +     -moz-border-radius: 4px;
 16.5809 +          border-radius: 4px;
 16.5810 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
 16.5811 +  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
 16.5812 +     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
 16.5813 +          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
 16.5814 +}
 16.5815 +
 16.5816 +.progress .bar {
 16.5817 +  float: left;
 16.5818 +  width: 0;
 16.5819 +  height: 100%;
 16.5820 +  font-size: 12px;
 16.5821 +  color: #ffffff;
 16.5822 +  text-align: center;
 16.5823 +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 16.5824 +  background-color: #0e90d2;
 16.5825 +  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
 16.5826 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
 16.5827 +  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
 16.5828 +  background-image: -o-linear-gradient(top, #149bdf, #0480be);
 16.5829 +  background-image: linear-gradient(to bottom, #149bdf, #0480be);
 16.5830 +  background-repeat: repeat-x;
 16.5831 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
 16.5832 +  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
 16.5833 +     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
 16.5834 +          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
 16.5835 +  -webkit-box-sizing: border-box;
 16.5836 +     -moz-box-sizing: border-box;
 16.5837 +          box-sizing: border-box;
 16.5838 +  -webkit-transition: width 0.6s ease;
 16.5839 +     -moz-transition: width 0.6s ease;
 16.5840 +       -o-transition: width 0.6s ease;
 16.5841 +          transition: width 0.6s ease;
 16.5842 +}
 16.5843 +
 16.5844 +.progress .bar + .bar {
 16.5845 +  -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
 16.5846 +     -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
 16.5847 +          box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
 16.5848 +}
 16.5849 +
 16.5850 +.progress-striped .bar {
 16.5851 +  background-color: #149bdf;
 16.5852 +  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
 16.5853 +  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5854 +  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5855 +  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5856 +  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5857 +  -webkit-background-size: 40px 40px;
 16.5858 +     -moz-background-size: 40px 40px;
 16.5859 +       -o-background-size: 40px 40px;
 16.5860 +          background-size: 40px 40px;
 16.5861 +}
 16.5862 +
 16.5863 +.progress.active .bar {
 16.5864 +  -webkit-animation: progress-bar-stripes 2s linear infinite;
 16.5865 +     -moz-animation: progress-bar-stripes 2s linear infinite;
 16.5866 +      -ms-animation: progress-bar-stripes 2s linear infinite;
 16.5867 +       -o-animation: progress-bar-stripes 2s linear infinite;
 16.5868 +          animation: progress-bar-stripes 2s linear infinite;
 16.5869 +}
 16.5870 +
 16.5871 +.progress-danger .bar,
 16.5872 +.progress .bar-danger {
 16.5873 +  background-color: #dd514c;
 16.5874 +  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
 16.5875 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
 16.5876 +  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
 16.5877 +  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
 16.5878 +  background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
 16.5879 +  background-repeat: repeat-x;
 16.5880 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
 16.5881 +}
 16.5882 +
 16.5883 +.progress-danger.progress-striped .bar,
 16.5884 +.progress-striped .bar-danger {
 16.5885 +  background-color: #ee5f5b;
 16.5886 +  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
 16.5887 +  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5888 +  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5889 +  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5890 +  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5891 +}
 16.5892 +
 16.5893 +.progress-success .bar,
 16.5894 +.progress .bar-success {
 16.5895 +  background-color: #5eb95e;
 16.5896 +  background-image: -moz-linear-gradient(top, #62c462, #57a957);
 16.5897 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
 16.5898 +  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
 16.5899 +  background-image: -o-linear-gradient(top, #62c462, #57a957);
 16.5900 +  background-image: linear-gradient(to bottom, #62c462, #57a957);
 16.5901 +  background-repeat: repeat-x;
 16.5902 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
 16.5903 +}
 16.5904 +
 16.5905 +.progress-success.progress-striped .bar,
 16.5906 +.progress-striped .bar-success {
 16.5907 +  background-color: #62c462;
 16.5908 +  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
 16.5909 +  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5910 +  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5911 +  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5912 +  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5913 +}
 16.5914 +
 16.5915 +.progress-info .bar,
 16.5916 +.progress .bar-info {
 16.5917 +  background-color: #4bb1cf;
 16.5918 +  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
 16.5919 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
 16.5920 +  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
 16.5921 +  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
 16.5922 +  background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
 16.5923 +  background-repeat: repeat-x;
 16.5924 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
 16.5925 +}
 16.5926 +
 16.5927 +.progress-info.progress-striped .bar,
 16.5928 +.progress-striped .bar-info {
 16.5929 +  background-color: #5bc0de;
 16.5930 +  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
 16.5931 +  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5932 +  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5933 +  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5934 +  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5935 +}
 16.5936 +
 16.5937 +.progress-warning .bar,
 16.5938 +.progress .bar-warning {
 16.5939 +  background-color: #faa732;
 16.5940 +  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
 16.5941 +  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
 16.5942 +  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
 16.5943 +  background-image: -o-linear-gradient(top, #fbb450, #f89406);
 16.5944 +  background-image: linear-gradient(to bottom, #fbb450, #f89406);
 16.5945 +  background-repeat: repeat-x;
 16.5946 +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
 16.5947 +}
 16.5948 +
 16.5949 +.progress-warning.progress-striped .bar,
 16.5950 +.progress-striped .bar-warning {
 16.5951 +  background-color: #fbb450;
 16.5952 +  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
 16.5953 +  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5954 +  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5955 +  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5956 +  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 16.5957 +}
 16.5958 +
 16.5959 +.accordion {
 16.5960 +  margin-bottom: 20px;
 16.5961 +}
 16.5962 +
 16.5963 +.accordion-group {
 16.5964 +  margin-bottom: 2px;
 16.5965 +  border: 1px solid #e5e5e5;
 16.5966 +  -webkit-border-radius: 4px;
 16.5967 +     -moz-border-radius: 4px;
 16.5968 +          border-radius: 4px;
 16.5969 +}
 16.5970 +
 16.5971 +.accordion-heading {
 16.5972 +  border-bottom: 0;
 16.5973 +}
 16.5974 +
 16.5975 +.accordion-heading .accordion-toggle {
 16.5976 +  display: block;
 16.5977 +  padding: 8px 15px;
 16.5978 +}
 16.5979 +
 16.5980 +.accordion-toggle {
 16.5981 +  cursor: pointer;
 16.5982 +}
 16.5983 +
 16.5984 +.accordion-inner {
 16.5985 +  padding: 9px 15px;
 16.5986 +  border-top: 1px solid #e5e5e5;
 16.5987 +}
 16.5988 +
 16.5989 +.carousel {
 16.5990 +  position: relative;
 16.5991 +  margin-bottom: 20px;
 16.5992 +  line-height: 1;
 16.5993 +}
 16.5994 +
 16.5995 +.carousel-inner {
 16.5996 +  position: relative;
 16.5997 +  width: 100%;
 16.5998 +  overflow: hidden;
 16.5999 +}
 16.6000 +
 16.6001 +.carousel-inner > .item {
 16.6002 +  position: relative;
 16.6003 +  display: none;
 16.6004 +  -webkit-transition: 0.6s ease-in-out left;
 16.6005 +     -moz-transition: 0.6s ease-in-out left;
 16.6006 +       -o-transition: 0.6s ease-in-out left;
 16.6007 +          transition: 0.6s ease-in-out left;
 16.6008 +}
 16.6009 +
 16.6010 +.carousel-inner > .item > img,
 16.6011 +.carousel-inner > .item > a > img {
 16.6012 +  display: block;
 16.6013 +  line-height: 1;
 16.6014 +}
 16.6015 +
 16.6016 +.carousel-inner > .active,
 16.6017 +.carousel-inner > .next,
 16.6018 +.carousel-inner > .prev {
 16.6019 +  display: block;
 16.6020 +}
 16.6021 +
 16.6022 +.carousel-inner > .active {
 16.6023 +  left: 0;
 16.6024 +}
 16.6025 +
 16.6026 +.carousel-inner > .next,
 16.6027 +.carousel-inner > .prev {
 16.6028 +  position: absolute;
 16.6029 +  top: 0;
 16.6030 +  width: 100%;
 16.6031 +}
 16.6032 +
 16.6033 +.carousel-inner > .next {
 16.6034 +  left: 100%;
 16.6035 +}
 16.6036 +
 16.6037 +.carousel-inner > .prev {
 16.6038 +  left: -100%;
 16.6039 +}
 16.6040 +
 16.6041 +.carousel-inner > .next.left,
 16.6042 +.carousel-inner > .prev.right {
 16.6043 +  left: 0;
 16.6044 +}
 16.6045 +
 16.6046 +.carousel-inner > .active.left {
 16.6047 +  left: -100%;
 16.6048 +}
 16.6049 +
 16.6050 +.carousel-inner > .active.right {
 16.6051 +  left: 100%;
 16.6052 +}
 16.6053 +
 16.6054 +.carousel-control {
 16.6055 +  position: absolute;
 16.6056 +  top: 40%;
 16.6057 +  left: 15px;
 16.6058 +  width: 40px;
 16.6059 +  height: 40px;
 16.6060 +  margin-top: -20px;
 16.6061 +  font-size: 60px;
 16.6062 +  font-weight: 100;
 16.6063 +  line-height: 30px;
 16.6064 +  color: #ffffff;
 16.6065 +  text-align: center;
 16.6066 +  background: #222222;
 16.6067 +  border: 3px solid #ffffff;
 16.6068 +  -webkit-border-radius: 23px;
 16.6069 +     -moz-border-radius: 23px;
 16.6070 +          border-radius: 23px;
 16.6071 +  opacity: 0.5;
 16.6072 +  filter: alpha(opacity=50);
 16.6073 +}
 16.6074 +
 16.6075 +.carousel-control.right {
 16.6076 +  right: 15px;
 16.6077 +  left: auto;
 16.6078 +}
 16.6079 +
 16.6080 +.carousel-control:hover,
 16.6081 +.carousel-control:focus {
 16.6082 +  color: #ffffff;
 16.6083 +  text-decoration: none;
 16.6084 +  opacity: 0.9;
 16.6085 +  filter: alpha(opacity=90);
 16.6086 +}
 16.6087 +
 16.6088 +.carousel-indicators {
 16.6089 +  position: absolute;
 16.6090 +  top: 15px;
 16.6091 +  right: 15px;
 16.6092 +  z-index: 5;
 16.6093 +  margin: 0;
 16.6094 +  list-style: none;
 16.6095 +}
 16.6096 +
 16.6097 +.carousel-indicators li {
 16.6098 +  display: block;
 16.6099 +  float: left;
 16.6100 +  width: 10px;
 16.6101 +  height: 10px;
 16.6102 +  margin-left: 5px;
 16.6103 +  text-indent: -999px;
 16.6104 +  background-color: #ccc;
 16.6105 +  background-color: rgba(255, 255, 255, 0.25);
 16.6106 +  border-radius: 5px;
 16.6107 +}
 16.6108 +
 16.6109 +.carousel-indicators .active {
 16.6110 +  background-color: #fff;
 16.6111 +}
 16.6112 +
 16.6113 +.carousel-caption {
 16.6114 +  position: absolute;
 16.6115 +  right: 0;
 16.6116 +  bottom: 0;
 16.6117 +  left: 0;
 16.6118 +  padding: 15px;
 16.6119 +  background: #333333;
 16.6120 +  background: rgba(0, 0, 0, 0.75);
 16.6121 +}
 16.6122 +
 16.6123 +.carousel-caption h4,
 16.6124 +.carousel-caption p {
 16.6125 +  line-height: 20px;
 16.6126 +  color: #ffffff;
 16.6127 +}
 16.6128 +
 16.6129 +.carousel-caption h4 {
 16.6130 +  margin: 0 0 5px;
 16.6131 +}
 16.6132 +
 16.6133 +.carousel-caption p {
 16.6134 +  margin-bottom: 0;
 16.6135 +}
 16.6136 +
 16.6137 +.hero-unit {
 16.6138 +  padding: 60px;
 16.6139 +  margin-bottom: 30px;
 16.6140 +  font-size: 18px;
 16.6141 +  font-weight: 200;
 16.6142 +  line-height: 30px;
 16.6143 +  color: inherit;
 16.6144 +  background-color: #eeeeee;
 16.6145 +  -webkit-border-radius: 6px;
 16.6146 +     -moz-border-radius: 6px;
 16.6147 +          border-radius: 6px;
 16.6148 +}
 16.6149 +
 16.6150 +.hero-unit h1 {
 16.6151 +  margin-bottom: 0;
 16.6152 +  font-size: 60px;
 16.6153 +  line-height: 1;
 16.6154 +  letter-spacing: -1px;
 16.6155 +  color: inherit;
 16.6156 +}
 16.6157 +
 16.6158 +.hero-unit li {
 16.6159 +  line-height: 30px;
 16.6160 +}
 16.6161 +
 16.6162 +.pull-right {
 16.6163 +  float: right;
 16.6164 +}
 16.6165 +
 16.6166 +.pull-left {
 16.6167 +  float: left;
 16.6168 +}
 16.6169 +
 16.6170 +.hide {
 16.6171 +  display: none;
 16.6172 +}
 16.6173 +
 16.6174 +.show {
 16.6175 +  display: block;
 16.6176 +}
 16.6177 +
 16.6178 +.invisible {
 16.6179 +  visibility: hidden;
 16.6180 +}
 16.6181 +
 16.6182 +.affix {
 16.6183 +  position: fixed;
 16.6184 +}
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/chess/src/main/webapp/pages/css/chess-phone-large.css	Wed Sep 25 04:28:19 2013 +0200
    17.3 @@ -0,0 +1,32 @@
    17.4 +/**
    17.5 + * The MIT License (MIT)
    17.6 + *
    17.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    17.8 + *
    17.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   17.10 + * of this software and associated documentation files (the "Software"), to deal
   17.11 + * in the Software without restriction, including without limitation the rights
   17.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   17.13 + * copies of the Software, and to permit persons to whom the Software is
   17.14 + * furnished to do so, subject to the following conditions:
   17.15 + *
   17.16 + * The above copyright notice and this permission notice shall be included in
   17.17 + * all copies or substantial portions of the Software.
   17.18 + *
   17.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   17.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   17.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   17.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   17.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   17.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   17.25 + * THE SOFTWARE.
   17.26 + */
   17.27 +table.board td {
   17.28 +    padding: 4px;
   17.29 +    width: 28px;
   17.30 +    height: 28px;
   17.31 +    font-size: 2em;
   17.32 +}
   17.33 +h1 {
   17.34 +    font-size: 15px;
   17.35 +}
   17.36 \ No newline at end of file
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/chess/src/main/webapp/pages/css/chess-phone-small.css	Wed Sep 25 04:28:19 2013 +0200
    18.3 @@ -0,0 +1,32 @@
    18.4 +/**
    18.5 + * The MIT License (MIT)
    18.6 + *
    18.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    18.8 + *
    18.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   18.10 + * of this software and associated documentation files (the "Software"), to deal
   18.11 + * in the Software without restriction, including without limitation the rights
   18.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   18.13 + * copies of the Software, and to permit persons to whom the Software is
   18.14 + * furnished to do so, subject to the following conditions:
   18.15 + *
   18.16 + * The above copyright notice and this permission notice shall be included in
   18.17 + * all copies or substantial portions of the Software.
   18.18 + *
   18.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   18.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   18.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   18.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   18.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   18.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   18.25 + * THE SOFTWARE.
   18.26 + */
   18.27 +table.board td {
   18.28 +    padding: 4px;
   18.29 +    width: 24px;
   18.30 +    height: 24px;
   18.31 +    font-size: 1.6em;
   18.32 +}
   18.33 +h1 {
   18.34 +    font-size: 12px;
   18.35 +}
   18.36 \ No newline at end of file
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/chess/src/main/webapp/pages/css/chess-tablet-large.css	Wed Sep 25 04:28:19 2013 +0200
    19.3 @@ -0,0 +1,32 @@
    19.4 +/**
    19.5 + * The MIT License (MIT)
    19.6 + *
    19.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    19.8 + *
    19.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   19.10 + * of this software and associated documentation files (the "Software"), to deal
   19.11 + * in the Software without restriction, including without limitation the rights
   19.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   19.13 + * copies of the Software, and to permit persons to whom the Software is
   19.14 + * furnished to do so, subject to the following conditions:
   19.15 + *
   19.16 + * The above copyright notice and this permission notice shall be included in
   19.17 + * all copies or substantial portions of the Software.
   19.18 + *
   19.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   19.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   19.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   19.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   19.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   19.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   19.25 + * THE SOFTWARE.
   19.26 + */
   19.27 +table.board td {
   19.28 +    padding: 8px;
   19.29 +    width: 42px;
   19.30 +    height: 42px;
   19.31 +    font-size: 3em;
   19.32 +}
   19.33 +h1 {
   19.34 +    font-size: 22px;
   19.35 +}
   19.36 \ No newline at end of file
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/chess/src/main/webapp/pages/css/chess-tablet-small.css	Wed Sep 25 04:28:19 2013 +0200
    20.3 @@ -0,0 +1,32 @@
    20.4 +/**
    20.5 + * The MIT License (MIT)
    20.6 + *
    20.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    20.8 + *
    20.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   20.10 + * of this software and associated documentation files (the "Software"), to deal
   20.11 + * in the Software without restriction, including without limitation the rights
   20.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   20.13 + * copies of the Software, and to permit persons to whom the Software is
   20.14 + * furnished to do so, subject to the following conditions:
   20.15 + *
   20.16 + * The above copyright notice and this permission notice shall be included in
   20.17 + * all copies or substantial portions of the Software.
   20.18 + *
   20.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   20.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   20.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   20.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   20.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   20.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   20.25 + * THE SOFTWARE.
   20.26 + */
   20.27 +table.board td {
   20.28 +    padding: 6px;
   20.29 +    width: 34px;
   20.30 +    height: 34px;
   20.31 +    font-size: 2.4em;
   20.32 +}
   20.33 +h1 {
   20.34 +    font-size: 18px;
   20.35 +}
   20.36 \ No newline at end of file
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/chess/src/main/webapp/pages/css/chess.css	Wed Sep 25 04:28:19 2013 +0200
    21.3 @@ -0,0 +1,124 @@
    21.4 +/**
    21.5 + * The MIT License (MIT)
    21.6 + *
    21.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    21.8 + *
    21.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   21.10 + * of this software and associated documentation files (the "Software"), to deal
   21.11 + * in the Software without restriction, including without limitation the rights
   21.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   21.13 + * copies of the Software, and to permit persons to whom the Software is
   21.14 + * furnished to do so, subject to the following conditions:
   21.15 + *
   21.16 + * The above copyright notice and this permission notice shall be included in
   21.17 + * all copies or substantial portions of the Software.
   21.18 + *
   21.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   21.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   21.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   21.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   21.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   21.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   21.25 + * THE SOFTWARE.
   21.26 + */
   21.27 +/** main chess style **/
   21.28 +#apptitle {
   21.29 +    font-size: 20px;
   21.30 +}
   21.31 +.log {
   21.32 +    margin-bottom: 10px;
   21.33 +}
   21.34 +table.board td {
   21.35 +    border: 1px solid black;
   21.36 +    padding:10px;
   21.37 +    width: 56px;
   21.38 +    height: 56px;
   21.39 +    vertical-align: middle;
   21.40 +    text-align: center;
   21.41 +    font-size:4em;
   21.42 +}
   21.43 +table.board td.row-label, table.board td.col-label {
   21.44 +    font-size: 2em;
   21.45 +    border:none;
   21.46 +    width:20px;   
   21.47 +}
   21.48 +table.board td.col-label {
   21.49 +    height:20px;
   21.50 +}
   21.51 +.container {
   21.52 +    margin:10px;
   21.53 +}
   21.54 +
   21.55 +table.board td.white {
   21.56 +    background-color: #D0D0D0;
   21.57 +}
   21.58 +table.board td.black {
   21.59 +    background-color: #A0A0A0;
   21.60 +}
   21.61 +table.board td.selected {
   21.62 +    background-color:  	#bce8f1;
   21.63 +}
   21.64 +table.board td.accessible {
   21.65 +    background-color:  	#a9dba9;
   21.66 +}
   21.67 +table.board td.pending {
   21.68 +    background-color:  	#dbc59e;
   21.69 +}
   21.70 +.figure {
   21.71 +    cursor: pointer;
   21.72 +}
   21.73 +.but-orientation {
   21.74 +    margin-top:20px;
   21.75 +}
   21.76 +h3.log-h {
   21.77 +    border-top:1px solid silver;
   21.78 +}
   21.79 +.badge-status {
   21.80 +    display:inline-block;
   21.81 +    margin-left:20px;
   21.82 +    padding:5px;
   21.83 +    font-size:1em;
   21.84 +    text-shadow: none;
   21.85 +}
   21.86 +.badge-white-turn {
   21.87 +    font-size: 1em;
   21.88 +    padding:4px;
   21.89 +    background-color: white;
   21.90 +    color:black;
   21.91 +    text-shadow: none;
   21.92 +    border:1px solid black;
   21.93 +    font-weight: normal;
   21.94 +    display: inline-block;
   21.95 +    margin-left: 38px;
   21.96 +}
   21.97 +.badge-black-turn {
   21.98 +    font-size: 1em;
   21.99 +    padding:4px;
  21.100 +    background-color: black;
  21.101 +    color:white;
  21.102 +    text-shadow: none;
  21.103 +    border:1px solid black;
  21.104 +    font-weight: normal;
  21.105 +    display: inline-block;
  21.106 +    margin-left: 38px;
  21.107 +}
  21.108 +.btn {text-shadow: none;}
  21.109 +.select {line-height: inherit;}
  21.110 +.uneditable-input {
  21.111 +    margin-left: 0;
  21.112 +    color: black;
  21.113 +}
  21.114 +span.myturn {
  21.115 +    display: inline-block;
  21.116 +    position:relative;
  21.117 +    left:23px;
  21.118 +    padding:3px;
  21.119 +}
  21.120 +.whitePiece {
  21.121 +    text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
  21.122 +    color: white;
  21.123 +}
  21.124 +h1 {
  21.125 +    font-size: 29px;
  21.126 +    line-height: initial;
  21.127 +}
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/chess/src/main/webapp/pages/css/spinner.css	Wed Sep 25 04:28:19 2013 +0200
    22.3 @@ -0,0 +1,114 @@
    22.4 +/**
    22.5 + * The MIT License (MIT)
    22.6 + *
    22.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    22.8 + *
    22.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   22.10 + * of this software and associated documentation files (the "Software"), to deal
   22.11 + * in the Software without restriction, including without limitation the rights
   22.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   22.13 + * copies of the Software, and to permit persons to whom the Software is
   22.14 + * furnished to do so, subject to the following conditions:
   22.15 + *
   22.16 + * The above copyright notice and this permission notice shall be included in
   22.17 + * all copies or substantial portions of the Software.
   22.18 + *
   22.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   22.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   22.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   22.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   22.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   22.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   22.25 + * THE SOFTWARE.
   22.26 + */
   22.27 +/** chess cube style **/
   22.28 +
   22.29 +#chesscube {
   22.30 +    margin: 1em auto;
   22.31 +    -webkit-perspective: 1200px;
   22.32 +    perspective: 1200px;
   22.33 +    position: fixed; 
   22.34 +    z-index: -100;
   22.35 +    bottom:100px;
   22.36 +    right: 100px; 
   22.37 +    width: 160px; 
   22.38 +    height: 160px;    
   22.39 +    transition: opacity 1s;
   22.40 +}
   22.41 +
   22.42 +#spinner div {
   22.43 +    position: fixed;
   22.44 +    width: 160px;
   22.45 +    height: 160px;
   22.46 +    border: 1px solid #ccc;
   22.47 +    background: rgba(255,255,155,0.8);
   22.48 +    text-align: center;
   22.49 +    line-height: 160px;
   22.50 +    font-size: 120px;                
   22.51 +    -webkit-box-shadow: inset 0 0 40px rgba(0,0,0,0.4);
   22.52 +    box-shadow: inset 0 0 40px rgba(0,0,0,0.4);
   22.53 +}
   22.54 +
   22.55 +#spinner div:nth-child(1) {
   22.56 +    -webkit-transform: translateZ(80px);
   22.57 +    transform: translateZ(80px);
   22.58 +}
   22.59 +#spinner div:nth-child(2) {
   22.60 +    -webkit-transform: rotateY(90deg) translateZ(80px);
   22.61 +    transform: rotateY(90deg) translateZ(80px);
   22.62 +}
   22.63 +#spinner div:nth-child(3) {
   22.64 +    -webkit-transform: rotateY(90deg) rotateX(90deg) translateZ(80px);
   22.65 +    transform: rotateY(90deg) rotateX(90deg) translateZ(80px);
   22.66 +}
   22.67 +#spinner div:nth-child(4) {
   22.68 +    -webkit-transform: rotateY(180deg) rotateZ(90deg) translateZ(80px);
   22.69 +    transform: rotateY(180deg) rotateZ(90deg) translateZ(80px);
   22.70 +}
   22.71 +#spinner div:nth-child(5) {
   22.72 +    -webkit-transform: rotateY(-90deg) rotateZ(90deg) translateZ(80px);
   22.73 +    transform: rotateY(-90deg) rotateZ(90deg) translateZ(80px);
   22.74 +}
   22.75 +#spinner div:nth-child(6) {
   22.76 +    -webkit-transform: rotateX(-90deg) translateZ(80px);
   22.77 +    transform: rotateX(-90deg) translateZ(80px);
   22.78 +}
   22.79 +
   22.80 +@-webkit-keyframes spincube {
   22.81 +    from,to  {                                                    }            
   22.82 +    16%      { -webkit-transform: rotateY(-90deg);                }
   22.83 +    33%      { -webkit-transform: rotateY(-90deg) rotateZ(90deg); }
   22.84 +    50%      { -webkit-transform: rotateY(180deg) rotateZ(90deg); }
   22.85 +    66%      { -webkit-transform: rotateY(90deg) rotateX(90deg);  }
   22.86 +    83%      { -webkit-transform: rotateX(90deg);                 }
   22.87 +}
   22.88 +
   22.89 +@keyframes spincube {
   22.90 +    from,to  {                                                    }            
   22.91 +    16%      { transform: rotateY(-90deg);                }
   22.92 +    33%      { transform: rotateY(-90deg) rotateZ(90deg); }
   22.93 +    50%      { transform: rotateY(180deg) rotateZ(90deg); }
   22.94 +    66%      { transform: rotateY(90deg) rotateX(90deg);  }
   22.95 +    83%      { transform: rotateX(90deg);                 }
   22.96 +}
   22.97 +
   22.98 +#spinner {
   22.99 +    -webkit-animation-name: spincube;
  22.100 +    -webkit-animation-timing-function: ease-in-out;
  22.101 +    -webkit-animation-iteration-count: infinite;
  22.102 +    -webkit-animation-duration: 12s;
  22.103 +    -webkit-transform-style: preserve-3d;
  22.104 +    -webkit-transform-origin: 80px 80px 0;
  22.105 +    animation-name: spincube;
  22.106 +    animation-timing-function: ease-in-out;
  22.107 +    animation-iteration-count: infinite;
  22.108 +    animation-duration: 12s;
  22.109 +    transform-style: preserve-3d;
  22.110 +    transform-origin: 80px 80px 0;
  22.111 +}
  22.112 +
  22.113 +@media (max-width: 767px) {
  22.114 +    #chesscube {
  22.115 +        opacity: 0;
  22.116 +    }
  22.117 +}
    23.1 Binary file chess/src/main/webapp/pages/img/glyphicons-halflings-white.png has changed
    24.1 Binary file chess/src/main/webapp/pages/img/glyphicons-halflings.png has changed
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/chess/src/main/webapp/pages/index.html	Wed Sep 25 04:28:19 2013 +0200
    25.3 @@ -0,0 +1,173 @@
    25.4 +<!--
    25.5 +
    25.6 +    The MIT License (MIT)
    25.7 +
    25.8 +    Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    25.9 +
   25.10 +    Permission is hereby granted, free of charge, to any person obtaining a copy
   25.11 +    of this software and associated documentation files (the "Software"), to deal
   25.12 +    in the Software without restriction, including without limitation the rights
   25.13 +    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   25.14 +    copies of the Software, and to permit persons to whom the Software is
   25.15 +    furnished to do so, subject to the following conditions:
   25.16 +
   25.17 +    The above copyright notice and this permission notice shall be included in
   25.18 +    all copies or substantial portions of the Software.
   25.19 +
   25.20 +    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   25.21 +    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   25.22 +    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   25.23 +    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   25.24 +    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   25.25 +    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   25.26 +    THE SOFTWARE.
   25.27 +
   25.28 +-->
   25.29 +<!DOCTYPE html>
   25.30 +<html lang="en">
   25.31 +    <head>
   25.32 +        <meta charset="utf-8">
   25.33 +        <title>Chess Client</title>
   25.34 +        <meta name="viewport" content="width=device-width, initial-scale=1.0">
   25.35 +        <meta name="description" content="">
   25.36 +        <meta name="author" content="">
   25.37 +
   25.38 +        <!-- Le styles -->
   25.39 +        <link href="./css/bootstrap.css" rel="stylesheet">
   25.40 +        <link href="./css/bootstrap-responsive.css" rel="stylesheet">
   25.41 +        <link href="./css/chess.css" rel="stylesheet">
   25.42 +        <!-- Target tablets -->
   25.43 +        <link href="./css/chess-tablet-large.css" media="(min-width:560px) and (max-width:710px)" rel="stylesheet" />
   25.44 +        <link href="./css/chess-tablet-small.css" media="(min-width:460px) and (max-width:560px)" rel="stylesheet" />
   25.45 +        <!-- Target phones -->
   25.46 +        <link href="./css/chess-phone-large.css" media="(min-width:370px) and (max-width:460px)" rel="stylesheet" />
   25.47 +        <link href="./css/chess-phone-small.css" media="(max-width:370px)" rel="stylesheet" />
   25.48 +        <link href="./css/spinner.css" rel="stylesheet">
   25.49 +    </head>
   25.50 +    <body>
   25.51 +        <div class="navbar">
   25.52 +            <div class="navbar-inner">
   25.53 +                <a id="apptitle" class="brand" data-bind="css: { active: viewGamesActive }, click: activateSettings" href="#">JavaOne Chess</a>
   25.54 +                <ul class="nav" data-bind="foreach: boards">
   25.55 +                    <li data-bind="css: { active: active }, click: $root.activateGame">
   25.56 +                        <a href="#" data-bind="text: title"></a>
   25.57 +                    </li>
   25.58 +                </ul>
   25.59 +            </div>
   25.60 +        </div>
   25.61 +        <div data-bind="template: { name: 'render-games', data: viewGames, ifnot: selectedBoard }"></div>
   25.62 +        <div data-bind="template: { name: 'render-board', data: selectedBoard, if : selectedBoard }"></div>
   25.63 +
   25.64 +        <script type="text/html" id="render-board">
   25.65 +            <div class="container-fluid">
   25.66 +                <div class="row-fluid">
   25.67 +                    <div class="span12">
   25.68 +                        <h1><span data-bind="text: status"></span></h1>
   25.69 +                        <p style="position: relative; left: 0px; top: 0px; height: 25px">
   25.70 +                            <span data-bind="visible: blackTurn" class="badge badge-black-turn">Black's turn</span>
   25.71 +                            <span data-bind="visible: whiteTurn" class="badge badge-white-turn">White's turn</span>
   25.72 +                            <span data-bind="text: alertMessage" class="badge badge-warning badge-status"></span>
   25.73 +                        </p>
   25.74 +                        <p>
   25.75 +                        <table class="board">
   25.76 +                            <tbody>
   25.77 +                                <!-- ko foreach: rows -->
   25.78 +                                <tr>
   25.79 +                                    <td class="row-label">
   25.80 +                                        <span data-bind='text: y'></span>
   25.81 +                                    </td>
   25.82 +                                    <!-- ko foreach: columns -->
   25.83 +                                    <td data-bind="click: $parents[1].selected, css: squareColor" >
   25.84 +                                        <span data-bind='html: pieceEntity, css: { blackPiece: pieceColor() === "B", whitePiece: pieceColor() === "W" }' class="figure"></span>
   25.85 +                                    </td>
   25.86 +                                    <!-- /ko -->
   25.87 +                                </tr>
   25.88 +                                <!-- /ko -->
   25.89 +                                <tr>
   25.90 +                                    <td class="col-label"></td>
   25.91 +                                    <!-- ko foreach: columnNames -->
   25.92 +                                    <td class="row-label">
   25.93 +                                        <span data-bind='text: $data'></span>
   25.94 +                                    </td>
   25.95 +                                    <!-- /ko -->
   25.96 +                                </tr>
   25.97 +                            </tbody>
   25.98 +                        </table>
   25.99 +                        <button data-bind="click: rotateBoard" class="but-orientation">Rotate Board</button>
  25.100 +                        <button data-bind="click: $root.leave" class="but-orientation">Leave Game</button>
  25.101 +                        </p>
  25.102 +                    </div>
  25.103 +                </div>
  25.104 +                <div class="row-fluid">
  25.105 +                    <div class="span12 log-div">
  25.106 +                        <h3 class="log-h">Game Log</h3>
  25.107 +                        <div class="log">                            
  25.108 +                            <div data-bind="foreach: moves">
  25.109 +                                <span>
  25.110 +                                    <!-- ko if: whiteMove -->
  25.111 +                                    <span data-bind="text: round" class="badge"></span> 
  25.112 +                                    <!-- /ko -->
  25.113 +                                    <a href="#" data-bind="html: html, click: $parent.showPosition"></a>,&nbsp;
  25.114 +                                </span>
  25.115 +                            </div>                            
  25.116 +                        </div>
  25.117 +                    </div>
  25.118 +                </div>
  25.119 +            </div>
  25.120 +        </script>
  25.121 +
  25.122 +        <script type="text/html" id="render-games">
  25.123 +            <div class="container-fluid">
  25.124 +                <div data-bind="visible: $root.viewGamesActive">
  25.125 +                    <h3>List of Games</h3>
  25.126 +                    <p>
  25.127 +                        Status: <span data-bind="text: $root.status"></span>
  25.128 +                    </p>
  25.129 +                    <span class="input-append" class="select">
  25.130 +                        <input type="text" data-bind="value: whitePlayer, valueUpdate: 'afterkeydown'" 
  25.131 +                        class="input-small" placeholder="White Player"></input>
  25.132 +                     </span>
  25.133 +                     vs.
  25.134 +                     <span>
  25.135 +                        <input type="text" data-bind="value: blackPlayer, valueUpdate: 'afterkeydown'" 
  25.136 +                        class="input-small" placeholder="Black Player"></input>
  25.137 +                    </span>
  25.138 +                    <br/>
  25.139 +                    <button data-bind="click: $root.createGame, enable: correctNames"
  25.140 +                        class="btn btn-success" >Create Game!</button>
  25.141 +                    <br/>
  25.142 +                    <br/>
  25.143 +                    <br/>
  25.144 +                    <div data-bind="foreach: $root.boards">
  25.145 +                        <div class="input-append">
  25.146 +                        <input type="text" data-bind="value: status" disabled></input>
  25.147 +                        <button class="btn" data-bind="click: $root.joinGame">
  25.148 +                            Show
  25.149 +                        </button>
  25.150 +                        </div>
  25.151 +                        <br/>
  25.152 +                    </div>
  25.153 +                </div>
  25.154 +            </div>
  25.155 +            <div id="chesscube">
  25.156 +                <div id="spinner">
  25.157 +                    <div>&#9812;</div>
  25.158 +                    <div>&#9819;</div>
  25.159 +                    <div>&#9814;</div>
  25.160 +                    <div>&#9821;</div>
  25.161 +                    <div>&#9816;</div>
  25.162 +                    <div>&#9823;</div>
  25.163 +                </div>
  25.164 +            </div>
  25.165 +        </script>
  25.166 +        <center data-bind="visible: false">
  25.167 +            <img src="DukeHTML.png" width="320" height="200" alt="Loading...">
  25.168 +            <h3>Initializing the virtual machine...</h3>
  25.169 +        </center>
  25.170 +        <script type="text/javascript" src="bck2brwsr.js"></script>
  25.171 +        <script>
  25.172 +            var vm = bck2brwsr('${project.build.finalName}.jar');
  25.173 +            vm.loadClass('org.apidesign.html.demo.chess.LoadMain');
  25.174 +        </script>
  25.175 +    </body>
  25.176 +</html>
    26.1 Binary file chess/src/main/webapp/pages/sounds/check.mp3 has changed
    27.1 Binary file chess/src/main/webapp/pages/sounds/checkmate.mp3 has changed
    28.1 Binary file chess/src/main/webapp/pages/sounds/move.mp3 has changed
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java	Wed Sep 25 04:28:19 2013 +0200
    29.3 @@ -0,0 +1,486 @@
    29.4 +/**
    29.5 + * The MIT License (MIT)
    29.6 + *
    29.7 + * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    29.8 + *
    29.9 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   29.10 + * of this software and associated documentation files (the "Software"), to deal
   29.11 + * in the Software without restriction, including without limitation the rights
   29.12 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   29.13 + * copies of the Software, and to permit persons to whom the Software is
   29.14 + * furnished to do so, subject to the following conditions:
   29.15 + *
   29.16 + * The above copyright notice and this permission notice shall be included in
   29.17 + * all copies or substantial portions of the Software.
   29.18 + *
   29.19 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   29.20 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   29.21 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   29.22 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   29.23 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   29.24 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   29.25 + * THE SOFTWARE.
   29.26 + */
   29.27 +package org.apidesign.html.demo.chess;
   29.28 +
   29.29 +import org.apidesign.html.demo.chess.Color;
   29.30 +import org.apidesign.html.demo.chess.Rules;
   29.31 +import org.apidesign.html.demo.chess.BoardModel;
   29.32 +import org.apidesign.html.demo.chess.BoardModel.PieceType;
   29.33 +import java.util.Arrays;
   29.34 +import java.util.Collections;
   29.35 +import java.util.List;
   29.36 +import static org.testng.Assert.*;
   29.37 +import org.testng.annotations.Test;
   29.38 +
   29.39 +/**
   29.40 + *
   29.41 + * @author Jaroslav Tulach <jtulach@netbeans.org>
   29.42 + */
   29.43 +public class BoardModelTest {
   29.44 +    
   29.45 +    public BoardModelTest() {
   29.46 +    }
   29.47 +    
   29.48 +    @Test public void whiteRockLeftBottom() {
   29.49 +        Board b = Rules.createBoard();
   29.50 +        Row bottom = b.getRows().get(7);
   29.51 +        Square left = bottom.getColumns().get(0);
   29.52 +        assertEquals(left.getPiece(), PieceType.ROCK, "Rock is on bottom left square");
   29.53 +        assertEquals(left.getPieceColor(), Color.W, "It is white");
   29.54 +        assertEquals(left.getColor(), Color.B, "Square is black");
   29.55 +    }
   29.56 +
   29.57 +    @Test public void e2e4e7e6() {
   29.58 +        Board b = Rules.createBoard();
   29.59 +        b.setGameId("myId");
   29.60 +        setPlayer(b, Color.W);
   29.61 +        assertEquals(b.getTurn(), Color.W);
   29.62 +        
   29.63 +        Square e2 = BoardModel.findSquare(b, 'E', 2);
   29.64 +        assertNotNull(e2);
   29.65 +        BoardModel.selected(b, e2);
   29.66 +        assertEquals(BoardModel.findSelectedSquare(b), e2, "E2 is selected");
   29.67 +        
   29.68 +        Square e4 = BoardModel.findSquare(b, 'E', 4);
   29.69 +        assertNotNull(e4);
   29.70 +        
   29.71 +        BoardModel.selected(b, e4);
   29.72 +        
   29.73 +        assertNull(e2.getPiece(), "No pawn at e2");
   29.74 +        assertEquals(e4.getPiece(), BoardModel.PieceType.PAWN, "Pawn moved successfully");
   29.75 +        assertNull(BoardModel.findSelectedSquare(b), "No square selected");
   29.76 +        
   29.77 +        BoardModel.selected(b, e4);
   29.78 +        assertNull(BoardModel.findSelectedSquare(b), "No square selected, it is blacks turn");
   29.79 +
   29.80 +        List<Move> mvs1 = b.getMoves();
   29.81 +        assertEquals(1, mvs1.size(), "First move was made: " + mvs1);
   29.82 +        Move firstMove = mvs1.get(0);
   29.83 +        assertEquals(firstMove.getPiece(), PieceType.PAWN, "Moving with pawn");
   29.84 +        assertEquals(firstMove.getRound(), 1, "First round of moves");
   29.85 +        assertEquals(firstMove.getTurn(), Color.W, "Moved by white");
   29.86 +        assertTrue(firstMove.isWhiteMove(), "Really moved by white");
   29.87 +        
   29.88 +        assertTrue(b.isBlackTurn(), "black's turn");
   29.89 +        
   29.90 +        
   29.91 +        Square e7 = BoardModel.findSquare(b, 'E', 7);
   29.92 +        
   29.93 +        Move blackMv = BoardModel.MoveImpl.valueOf("E7E6");
   29.94 +        BoardModel.moveUpdate(b, blackMv, 
   29.95 +            Collections.singletonList("PE4"), 
   29.96 +            Collections.singletonList("PE6"), 
   29.97 +            Color.W, null
   29.98 +        );
   29.99 +        
  29.100 +        assertNull(e7.getPiece(), "Piece has been moved");
  29.101 +        
  29.102 +        List<Move> mvs = b.getMoves();
  29.103 +        assertEquals(2, mvs.size(), "There are two moves now: " + mvs);
  29.104 +        Move secondMove = mvs.get(1);
  29.105 +        assertEquals(secondMove.getPiece(), PieceType.PAWN, "Moving with pawn");
  29.106 +        assertEquals(secondMove.getRound(), 1, "Still 1st round of moves");
  29.107 +        assertEquals(secondMove.getTurn(), Color.B, "Moved by black");
  29.108 +        assertFalse(secondMove.isWhiteMove(), "Really moved by black");
  29.109 +    }
  29.110 +
  29.111 +    @Test public void unselect() {
  29.112 +        Board b = Rules.createBoard();
  29.113 +        b.setGameId("myId");
  29.114 +        setPlayer(b, Color.W);
  29.115 +        assertEquals(b.getTurn(), Color.W);
  29.116 +        
  29.117 +        Square e2 = BoardModel.findSquare(b, 'E', 2);
  29.118 +        assertNotNull(e2);
  29.119 +        BoardModel.selected(b, e2);
  29.120 +        assertEquals(BoardModel.findSelectedSquare(b), e2, "E2 is selected");
  29.121 +        
  29.122 +        BoardModel.selected(b, e2);
  29.123 +        assertNull(BoardModel.findSelectedSquare(b), "E2 is unselected");
  29.124 +        
  29.125 +        for (Row row : b.getRows()) {
  29.126 +            for (Square s : row.getColumns()) {
  29.127 +                assertFalse(s.isAccessible(), "No square is accessible anymore: " + s);
  29.128 +            }
  29.129 +        }
  29.130 +    }
  29.131 +    
  29.132 +    @Test public void discaredMove() {
  29.133 +        Board b = Rules.createBoard();
  29.134 +        b.setGameId("myId");
  29.135 +        setPlayer(b, Color.W);
  29.136 +        assertEquals(b.getTurn(), Color.W);
  29.137 +        
  29.138 +        Square e2 = BoardModel.findSquare(b, 'E', 2);
  29.139 +        assertNotNull(e2);
  29.140 +        BoardModel.selected(b, e2);
  29.141 +        assertEquals(BoardModel.findSelectedSquare(b), e2, "E2 is selected");
  29.142 +        
  29.143 +        Square e4 = BoardModel.findSquare(b, 'E', 4);
  29.144 +        assertNotNull(e4);
  29.145 +        
  29.146 +        BoardModel.selected(b, e4);
  29.147 +        
  29.148 +        assertNull(e2.getPiece(), "No pawn at e2");
  29.149 +        
  29.150 +        assertEquals(b.getMoves().size(), 1, "One move recorded");
  29.151 +        assertEquals(b.getMoves().get(0), b.getPendingMove(), "Pending move is waiting");
  29.152 +    }
  29.153 +    
  29.154 +    @Test public void cantSelectEmptySquare() {
  29.155 +        Board b = Rules.createBoard();
  29.156 +        Square e3 = BoardModel.findSquare(b, 'E', 3);
  29.157 +        assertNotNull(e3);
  29.158 +        BoardModel.selected(b, e3);
  29.159 +        assertNull(BoardModel.findSelectedSquare(b), "No square is selected");
  29.160 +    }
  29.161 +
  29.162 +    @Test public void cantTakeOwnPiece() {
  29.163 +        Board b = Rules.createBoard();
  29.164 +        setPlayer(b, Color.W);
  29.165 +        Square e1 = BoardModel.findSquare(b, 'E', 1);
  29.166 +        assertNotNull(e1);
  29.167 +        BoardModel.selected(b, e1);
  29.168 +        assertEquals(BoardModel.findSelectedSquare(b), e1, "E1 is selected");
  29.169 +        
  29.170 +        Square e2 = BoardModel.findSquare(b, 'E', 2);
  29.171 +        assertNotNull(e2);
  29.172 +        
  29.173 +        BoardModel.selected(b, e2);
  29.174 +        
  29.175 +        assertNotNull(e1.getPiece(), "King remains at e1");
  29.176 +        assertEquals(e2.getPiece(), BoardModel.PieceType.PAWN, "Pawn remains");
  29.177 +        assertEquals(BoardModel.findSelectedSquare(b), e2, "e2 now selected");
  29.178 +        
  29.179 +    }
  29.180 +    
  29.181 +    @Test public void knightMustMoveToF3() {
  29.182 +        Board b = Rules.createBoard();
  29.183 +        setPlayer(b, Color.W);
  29.184 +        Square g1 = BoardModel.findSquare(b, 'G', 1);
  29.185 +        BoardModel.selected(b, g1);
  29.186 +        
  29.187 +        Square f3 = BoardModel.findSquare(b, 'F', 3);
  29.188 +        assertTrue(f3.isAccessible(), "This is a field where knight can move");
  29.189 +
  29.190 +        Square g3 = BoardModel.findSquare(b, 'G', 3);
  29.191 +        assertFalse(g3.isAccessible(), "Not a place for knight");
  29.192 +
  29.193 +        Square e2 = BoardModel.findSquare(b, 'E', 2);
  29.194 +        assertFalse(e2.isAccessible(), "Not a place either, occupied");
  29.195 +
  29.196 +        BoardModel.selected(b, g3);
  29.197 +        
  29.198 +        assertNull(g3.getPiece(), "No figure was moved");
  29.199 +        assertTrue(g1.isSelected(), "Original square still selected");
  29.200 +        
  29.201 +        BoardModel.selected(b, f3);
  29.202 +        
  29.203 +        assertEquals(f3.getPiece(), PieceType.KNIGHT, "Moved");
  29.204 +        assertFalse(g3.isSelected(), "No longer selected");
  29.205 +    }
  29.206 +    
  29.207 +    @Test public void pawnCanTakeToSide() {
  29.208 +        Board b = Rules.createBoard();
  29.209 +        Square e2 = BoardModel.findSquare(b, 'E', 2);
  29.210 +        Square e4 = BoardModel.findSquare(b, 'E', 4);
  29.211 +        Square d7 = BoardModel.findSquare(b, 'D', 7);
  29.212 +        Square d5 = BoardModel.findSquare(b, 'D', 5);
  29.213 +        
  29.214 +        BoardModel.selected(b, e2);
  29.215 +        BoardModel.selected(b, e4);
  29.216 +        
  29.217 +        setPlayer(b, Color.B);
  29.218 +        
  29.219 +        BoardModel.selected(b, d7);
  29.220 +        BoardModel.selected(b, d5);
  29.221 +        
  29.222 +        setPlayer(b, Color.W);
  29.223 +        
  29.224 +        BoardModel.selected(b, e4);
  29.225 +        assertTrue(d5.isAccessible(), "Can take on d5");
  29.226 +        BoardModel.selected(b, d5);
  29.227 +        assertNull(e4.getPiece(), "No pawn on e4");
  29.228 +        assertEquals(d5.getPieceColor(), Color.W, "White Pawn on d5");
  29.229 +    }
  29.230 +    
  29.231 +    @Test public void pawnCanJumpOnAnother() {
  29.232 +        Board b = Rules.createBoard();
  29.233 +        Square e2 = BoardModel.findSquare(b, 'E', 2);
  29.234 +        Square e4 = BoardModel.findSquare(b, 'E', 4);
  29.235 +        Square d7 = BoardModel.findSquare(b, 'D', 7);
  29.236 +        Square d5 = BoardModel.findSquare(b, 'D', 5);
  29.237 +        Square e7 = BoardModel.findSquare(b, 'E', 7);
  29.238 +        Square e6 = BoardModel.findSquare(b, 'E', 6);
  29.239 +        Square e5 = BoardModel.findSquare(b, 'E', 5);
  29.240 +        
  29.241 +        BoardModel.selected(b, e2);
  29.242 +        BoardModel.selected(b, e4);
  29.243 +        
  29.244 +        setPlayer(b, Color.B);
  29.245 +        
  29.246 +        BoardModel.selected(b, d7);
  29.247 +        BoardModel.selected(b, d5);
  29.248 +        
  29.249 +        setPlayer(b, Color.W);
  29.250 +        
  29.251 +        BoardModel.selected(b, e4);
  29.252 +        BoardModel.selected(b, e5);
  29.253 +        
  29.254 +        setPlayer(b, Color.B);
  29.255 +        
  29.256 +        BoardModel.selected(b, e7);
  29.257 +        assertTrue(e6.isAccessible(), "Can move by one piece");
  29.258 +        assertFalse(e5.isAccessible(), "Can't move where other pawn is");
  29.259 +    }
  29.260 +    
  29.261 +    @Test public void showFirstMove() {
  29.262 +        Board b = Rules.createBoard();
  29.263 +        setPlayer(b, Color.W);
  29.264 +        Square e2 = BoardModel.findSquare(b, 'E', 2);
  29.265 +        Square e4 = BoardModel.findSquare(b, 'E', 4);
  29.266 +        Square d7 = BoardModel.findSquare(b, 'D', 7);
  29.267 +        Square d5 = BoardModel.findSquare(b, 'D', 5);
  29.268 +        
  29.269 +        BoardModel.selected(b, e2);
  29.270 +        BoardModel.selected(b, e4);
  29.271 +        
  29.272 +        Move blackMv = BoardModel.MoveImpl.valueOf("D7D5");
  29.273 +        BoardModel.moveUpdate(b, blackMv, 
  29.274 +            Collections.singletonList("PE4"), 
  29.275 +            Collections.singletonList("PD5"), 
  29.276 +            Color.W, null
  29.277 +        );
  29.278 +        
  29.279 +
  29.280 +        assertEquals(b.getMoves().size(), 2, "Two moves");
  29.281 +        BoardModel.showPosition(b, b.getMoves().get(0));
  29.282 +        
  29.283 +        assertEquals(b.getRows().size(), 8, "Still eight rows");
  29.284 +        assertEquals(b.getRows().get(0).getColumns().size(), 8, "Eight columns");
  29.285 +        
  29.286 +        assertNull(e2.getPiece(), "e2 is empty");
  29.287 +        assertEquals(e4.getPiece(), PieceType.PAWN, "e4 has pawn");
  29.288 +        assertEquals(d7.getPiece(), PieceType.PAWN, "d7 has pawn");
  29.289 +        assertNull(d5.getPiece(), "Second move is not made");
  29.290 +        assertNull(b.getTurn(), "Nobody to make a move");
  29.291 +    }
  29.292 +    
  29.293 +    @Test public void initialPositionReadFromAServer() {
  29.294 +        List<String> blacks = Arrays.asList(
  29.295 +            "Pa7",
  29.296 +            "Pb7",
  29.297 +            "Pc7",
  29.298 +            "Pd7",
  29.299 +            "Pe7",
  29.300 +            "Pf7",
  29.301 +            "Pg7",
  29.302 +            "Ph7",
  29.303 +            "Ra8",
  29.304 +            "Nb8",
  29.305 +            "Bc8",
  29.306 +            "Qd8",
  29.307 +            "Ke8",
  29.308 +            "Bf8",
  29.309 +            "Ng8",
  29.310 +            "Rh8"
  29.311 +        );
  29.312 +        List<String> whites = Arrays.asList(
  29.313 +            "Ra1",
  29.314 +            "Nb1",
  29.315 +            "Bc1",
  29.316 +            "Qd1",
  29.317 +            "Ke1",
  29.318 +            "Bf1",
  29.319 +            "Ng1",
  29.320 +            "Rh1",
  29.321 +            "Pa2",
  29.322 +            "Pb2",
  29.323 +            "Pc2",
  29.324 +            "Pd2",
  29.325 +            "Pe2",
  29.326 +            "Pf2",
  29.327 +            "Pg2",
  29.328 +            "Ph2"
  29.329 +        );
  29.330 +        
  29.331 +        Board b = Rules.createBoard();
  29.332 +        Rules.initBoard(b, whites, blacks, Color.W);
  29.333 +        
  29.334 +        Board b2 = Rules.createBoard();
  29.335 +        Rules.initBoard(b2);
  29.336 +        
  29.337 +        for (int i = 0; i < 7; i++) {
  29.338 +            for (int j = 0; j < 7; j++) {
  29.339 +                Square s = b.getRows().get(i).getColumns().get(j);
  29.340 +                Square s2 = b2.getRows().get(i).getColumns().get(j);
  29.341 +                
  29.342 +                assertEquals(s.getPiece(), s2.getPiece(), "Same piece at " + i + "/" + j);
  29.343 +                assertEquals(s.getPieceColor(), s2.getPieceColor(), "Same piece color at " + i + "/" + j);
  29.344 +            }
  29.345 +        }
  29.346 +    }
  29.347 +    
  29.348 +    @Test public void allowSmallRochade() {
  29.349 +        Board b = Rules.createBoard();
  29.350 +        setPlayer(b, Color.W);
  29.351 +        Square f1 = BoardModel.findSquare(b, 'F', 1);
  29.352 +        f1.setPiece(null);
  29.353 +        f1.setPieceColor(null);
  29.354 +        Square g1 = BoardModel.findSquare(b, 'G', 1);
  29.355 +        g1.setPiece(null);
  29.356 +        g1.setPieceColor(null);
  29.357 +        Square e1 = BoardModel.findSquare(b, 'E', 1);
  29.358 +        
  29.359 +        BoardModel.selected(b, e1);
  29.360 +        assertTrue(g1.isAccessible(), "Can do 0-0");
  29.361 +    }
  29.362 +    
  29.363 +    @Test public void allowSmallRochadeForBlack() {
  29.364 +        Board b = Rules.createBoard();
  29.365 +        setPlayer(b, Color.B);
  29.366 +        b.setTurn(Color.B);
  29.367 +        Square f8 = BoardModel.findSquare(b, 'F', 8);
  29.368 +        f8.setPiece(null);
  29.369 +        f8.setPieceColor(null);
  29.370 +        Square g8 = BoardModel.findSquare(b, 'G', 8);
  29.371 +        g8.setPiece(null);
  29.372 +        g8.setPieceColor(null);
  29.373 +        Square e8 = BoardModel.findSquare(b, 'E', 8);
  29.374 +        
  29.375 +        BoardModel.selected(b, e8);
  29.376 +        assertTrue(g8.isAccessible(), "Can do 0-0");
  29.377 +    }
  29.378 +    
  29.379 +    @Test public void disallowSmallRochadeWhenNoRock() {
  29.380 +        Board b = Rules.createBoard();
  29.381 +        setPlayer(b, Color.W);
  29.382 +        Square f1 = BoardModel.findSquare(b, 'F', 1);
  29.383 +        f1.setPiece(null);
  29.384 +        f1.setPieceColor(null);
  29.385 +        Square g1 = BoardModel.findSquare(b, 'G', 1);
  29.386 +        g1.setPiece(null);
  29.387 +        g1.setPieceColor(null);
  29.388 +        Square h1 = BoardModel.findSquare(b, 'H', 1);
  29.389 +        h1.setPiece(null);
  29.390 +        h1.setPieceColor(null);
  29.391 +        Square e1 = BoardModel.findSquare(b, 'E', 1);
  29.392 +        
  29.393 +        BoardModel.selected(b, e1);
  29.394 +        assertFalse(g1.isAccessible(), "Cannot do 0-0 when there is no rock");
  29.395 +    }
  29.396 +    
  29.397 +    @Test public void disallowSmallRochadeWhenBishop() {
  29.398 +        Board b = Rules.createBoard();
  29.399 +        setPlayer(b, Color.W);
  29.400 +        Square g1 = BoardModel.findSquare(b, 'G', 1);
  29.401 +        g1.setPiece(null);
  29.402 +        Square e1 = BoardModel.findSquare(b, 'E', 1);
  29.403 +        
  29.404 +        BoardModel.selected(b, e1);
  29.405 +        assertFalse(g1.isAccessible(), "Cannot do 0-0 when there is bishop");
  29.406 +    }
  29.407 +
  29.408 +    @Test public void disallowSmallRochadeWhenKnight() {
  29.409 +        Board b = Rules.createBoard();
  29.410 +        setPlayer(b, Color.W);
  29.411 +        Square f1 = BoardModel.findSquare(b, 'F', 1);
  29.412 +        f1.setPiece(null);
  29.413 +        Square e1 = BoardModel.findSquare(b, 'E', 1);
  29.414 +        
  29.415 +        BoardModel.selected(b, e1);
  29.416 +        assertFalse(f1.isAccessible(), "Cannot do 0-0 when there is knight");
  29.417 +    }
  29.418 +    
  29.419 +    @Test public void allowBigRochadeForBlack() {
  29.420 +        Board b = Rules.createBoard();
  29.421 +        setPlayer(b, Color.B);
  29.422 +        b.setTurn(Color.B);
  29.423 +        Square b8 = BoardModel.findSquare(b, 'B', 8);
  29.424 +        b8.setPiece(null);
  29.425 +        b8.setPieceColor(null);
  29.426 +        Square c8 = BoardModel.findSquare(b, 'C', 8);
  29.427 +        c8.setPiece(null);
  29.428 +        c8.setPieceColor(null);
  29.429 +        Square d8 = BoardModel.findSquare(b, 'D', 8);
  29.430 +        d8.setPiece(null);
  29.431 +        d8.setPieceColor(null);
  29.432 +        Square e8 = BoardModel.findSquare(b, 'E', 8);
  29.433 +        
  29.434 +        BoardModel.selected(b, e8);
  29.435 +        assertTrue(c8.isAccessible(), "Can do 0-0-0");
  29.436 +    }
  29.437 +    
  29.438 +    @Test public void enPassant() {
  29.439 +        Board b = Rules.createBoard();
  29.440 +        setPlayer(b, Color.B);
  29.441 +        b.setTurn(Color.B);
  29.442 +
  29.443 +        Square e7 = BoardModel.findSquare(b, 'E', 7);
  29.444 +        Square e4 = BoardModel.findSquare(b, 'E', 4);
  29.445 +        movePiece(e7, e4);
  29.446 +        
  29.447 +        Move move = new Move();
  29.448 +        move.setFrom(position('D', 2));
  29.449 +        move.setTo(position('D', 4));
  29.450 +        move.setPiece(PieceType.PAWN);
  29.451 +        b.getMoves().add(move);
  29.452 +        
  29.453 +        Square d2 = BoardModel.findSquare(b, 'D', 2);
  29.454 +        Square d4 = BoardModel.findSquare(b, 'D', 4);
  29.455 +        movePiece(d2, d4);
  29.456 +        
  29.457 +        BoardModel.selected(b, e4);
  29.458 +        
  29.459 +        Square e3 = BoardModel.findSquare(b, 'E', 3);
  29.460 +        assertTrue(e3.isAccessible(), "Obviously can move to e3");
  29.461 +        
  29.462 +        Square d3 = BoardModel.findSquare(b, 'D', 3);
  29.463 +        assertTrue(d3.isAccessible(), "Can also take on d3");
  29.464 +    }
  29.465 +
  29.466 +    private void movePiece(Square from, Square to) {
  29.467 +        to.setPiece(from.getPiece());
  29.468 +        to.setPieceColor(from.getPieceColor());
  29.469 +        from.setPiece(null);
  29.470 +        from.setPieceColor(null);
  29.471 +    }
  29.472 +
  29.473 +    private Position position(char c, int i) {
  29.474 +        Position p = new Position();
  29.475 +        p.setX(c);
  29.476 +        p.setY(i);
  29.477 +        return p;
  29.478 +    }
  29.479 +    
  29.480 +    private static void setPlayer(Board b, Color c) {
  29.481 +        b.setWhitePlayer("x");
  29.482 +        b.setBlackPlayer("y");
  29.483 +        if (c == Color.B) {
  29.484 +            b.setPlayer("y");
  29.485 +        } else {
  29.486 +            b.setPlayer("x");
  29.487 +        }
  29.488 +    }
  29.489 +}
    30.1 --- a/pom.xml	Tue Sep 24 21:02:32 2013 +0200
    30.2 +++ b/pom.xml	Wed Sep 25 04:28:19 2013 +0200
    30.3 @@ -19,6 +19,7 @@
    30.4    <modules>
    30.5      <module>twitter</module>
    30.6      <module>chat</module>
    30.7 +    <module>chess</module>
    30.8      <module>spinningcube</module>
    30.9      <module>words</module>
   30.10    </modules>