Difference between revisions of "Team:Hangzhou-H14Z"

 
(9 intermediate revisions by one other user not shown)
Line 1: Line 1:
<!DOCTYPE html>
+
 
 
<html lang="en">
 
<html lang="en">
 
   <head>
 
   <head>
Line 8: Line 8:
 
     <meta name="viewport" content="width=device-width, initial-scale=1">
 
     <meta name="viewport" content="width=device-width, initial-scale=1">
 
     <title>2015_IGEM_H14Zteam_Wiki</title>
 
     <title>2015_IGEM_H14Zteam_Wiki</title>
     <meta name="description" content="Ethanol is an Agency and Personal Portfolio Template built with bootstrap 3.3.2. This is created for a cause to support my uncle's campaign. Go and Donate at - https://life.indiegogo.com/fundraisers/medical-support-for-a-filipino-overseas-worker--3/x/10058181">
+
     <meta name="description" content="H14Z_WIKI">
     <meta name="keywords" content="portfolio, agency, bootstrap theme, mobile responsive, template, personal">
+
     <meta name="keywords" content="IGEM">
     <meta name="author" content="ThemeForces.Com">
+
     <meta name="author" content="MinxingChen">
 
      
 
      
 
     <!-- Favicons
 
     <!-- Favicons
 
     ================================================== -->
 
     ================================================== -->
     <link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon">
+
     <link rel="shortcut icon" href="https://static.igem.org/mediawiki/2015/9/97/Cmxfavicon.png" type="image/x-icon">
 
     <link rel="apple-touch-icon" href="img/apple-touch-icon.png">
 
     <link rel="apple-touch-icon" href="img/apple-touch-icon.png">
 
     <link rel="apple-touch-icon" sizes="72x72" href="img/apple-touch-icon-72x72.png">
 
     <link rel="apple-touch-icon" sizes="72x72" href="img/apple-touch-icon-72x72.png">
Line 20: Line 20:
  
 
     <!-- Bootstrap -->
 
     <!-- Bootstrap -->
     <link rel="stylesheet" type="text/css"  href="css/bootstrap.css">
+
     <link rel="stylesheet" type="text/css"  href="https://2015.igem.org/Template:Hangzhou-H14Z/css/bootstrap?action=raw&ctype=text/css">
     <link rel="stylesheet" type="text/css" href="fonts/font-awesome/css/font-awesome.css">
+
    <link rel="stylesheet" type="text/css"  href="https://2015.igem.org/Template:Hangzhou-H14Z/css/bootstrapmin?action=raw&ctype=text/css">
 +
     <link rel="stylesheet" type="text/css" href="https://2015.igem.org/Template:Hangzhou-H14Z/css/font-awesome?action=raw&ctype=text/css">
  
 
     <!-- Nivo Lightbox
 
     <!-- Nivo Lightbox
 
     ================================================== -->
 
     ================================================== -->
     <link rel="stylesheet" href="css/nivo-lightbox.css" >
+
     <link rel="stylesheet" href="https://2015.igem.org/Template:Hangzhou-H14Z/css/nivo-lightbox?action=raw&ctype=text/css" >
     <link rel="stylesheet" href="css/nivo_lightbox_themes/default/default.css">
+
     <link rel="stylesheet" href="https://2015.igem.org/Template:Hangzhou-H14Z/css/default?action=raw&ctype=text/css">
  
 
     <!-- Slider
 
     <!-- Slider
 
     ================================================== -->
 
     ================================================== -->
     <link href="css/owl.carousel.css" rel="stylesheet" media="screen">
+
     <link href="https://2015.igem.org/Template:Hangzhou-H14Z/css/owlcarousel?action=raw&ctype=text/css" rel="stylesheet" media="screen">
     <link href="css/owl.theme.css" rel="stylesheet" media="screen">
+
     <link href="https://2015.igem.org/Template:Hangzhou-H14Z/css/owltheme?action=raw&ctype=text/css" media="screen">
  
 
     <!-- Stylesheet
 
     <!-- Stylesheet
 
     ================================================== -->
 
     ================================================== -->
     <link rel="stylesheet" type="text/css"  href="css/style.css">
+
     <link rel="stylesheet" type="text/css"  href="https://2015.igem.org/Template:Hangzhou-H14Z/css/style?action=raw&ctype=text/css">
     <link rel="stylesheet" type="text/css" href="css/responsive.css">
+
     <link rel="stylesheet" type="text/css" href="https://2015.igem.org/Template:Hangzhou-H14Z/css/responsive?action=raw&ctype=text/css">
 
+
    <link rel="stylesheet" type="text/css" href="https://2015.igem.org/Template:Hangzhou-H14Z/css/animate?action=raw&ctype=text/css">
 
     <!-- Google Fonts
 
     <!-- Google Fonts
 
     ================================================== -->
 
     ================================================== -->
 
     <link href='http://fonts.googleapis.com/css?family=Lato:100,300,400,700,900,100italic,300italic,400italic,700italic,900italic' rel='stylesheet' type='text/css'>
 
     <link href='http://fonts.googleapis.com/css?family=Lato:100,300,400,700,900,100italic,300italic,400italic,700italic,900italic' rel='stylesheet' type='text/css'>
  
    <script type="text/javascript" src="js/modernizr.custom.js"></script>
+
 
 +
 
  
 
     <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
 
     <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
Line 50: Line 52:
 
       <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
 
       <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
 
     <![endif]-->
 
     <![endif]-->
   
+
     <style>.expand{ background:url("https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png") !importan}</style>
     <style type="text/css">
+
<style>#content{width:100%}</style>
    /*!
+
     <style type="text/css">#tf-home {
* Bootstrap v3.3.2 (http://getbootstrap.com)
+
* Copyright 2011-2015 Twitter, Inc.
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+
*/
+
 
+
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+
html {
+
  font-family: sans-serif;
+
  -webkit-text-size-adjust: 100%;
+
      -ms-text-size-adjust: 100%;
+
}
+
body {
+
  margin: 0;
+
}
+
article,
+
aside,
+
details,
+
figcaption,
+
figure,
+
footer,
+
header,
+
hgroup,
+
main,
+
menu,
+
nav,
+
section,
+
summary {
+
  display: block;
+
}
+
audio,
+
canvas,
+
progress,
+
video {
+
  display: inline-block;
+
  vertical-align: baseline;
+
}
+
audio:not([controls]) {
+
  display: none;
+
  height: 0;
+
}
+
[hidden],
+
template {
+
  display: none;
+
}
+
a {
+
  background-color: transparent;
+
}
+
a:active,
+
a:hover {
+
  outline: 0;
+
}
+
abbr[title] {
+
  border-bottom: 1px dotted;
+
}
+
b,
+
strong {
+
  font-weight: bold;
+
}
+
dfn {
+
  font-style: italic;
+
}
+
h1 {
+
  margin: .67em 0;
+
  font-size: 2em;
+
}
+
mark {
+
  color: #000;
+
  background: #ff0;
+
}
+
small {
+
  font-size: 80%;
+
}
+
sub,
+
sup {
+
  position: relative;
+
  font-size: 75%;
+
  line-height: 0;
+
  vertical-align: baseline;
+
}
+
sup {
+
  top: -.5em;
+
}
+
sub {
+
  bottom: -.25em;
+
}
+
img {
+
  border: 0;
+
}
+
svg:not(:root) {
+
  overflow: hidden;
+
}
+
figure {
+
  margin: 1em 40px;
+
}
+
hr {
+
  height: 0;
+
  -webkit-box-sizing: content-box;
+
    -moz-box-sizing: content-box;
+
          box-sizing: content-box;
+
}
+
pre {
+
  overflow: auto;
+
}
+
code,
+
kbd,
+
pre,
+
samp {
+
  font-family: monospace, monospace;
+
  font-size: 1em;
+
}
+
button,
+
input,
+
optgroup,
+
select,
+
textarea {
+
  margin: 0;
+
  font: inherit;
+
  color: inherit;
+
}
+
button {
+
  overflow: visible;
+
}
+
button,
+
select {
+
  text-transform: none;
+
}
+
button,
+
html input[type="button"],
+
input[type="reset"],
+
input[type="submit"] {
+
  -webkit-appearance: button;
+
  cursor: pointer;
+
}
+
button[disabled],
+
html input[disabled] {
+
  cursor: default;
+
}
+
button::-moz-focus-inner,
+
input::-moz-focus-inner {
+
  padding: 0;
+
  border: 0;
+
}
+
input {
+
  line-height: normal;
+
}
+
input[type="checkbox"],
+
input[type="radio"] {
+
  -webkit-box-sizing: border-box;
+
    -moz-box-sizing: border-box;
+
          box-sizing: border-box;
+
  padding: 0;
+
}
+
input[type="number"]::-webkit-inner-spin-button,
+
input[type="number"]::-webkit-outer-spin-button {
+
  height: auto;
+
}
+
input[type="search"] {
+
  -webkit-box-sizing: content-box;
+
    -moz-box-sizing: content-box;
+
          box-sizing: content-box;
+
  -webkit-appearance: textfield;
+
}
+
input[type="search"]::-webkit-search-cancel-button,
+
input[type="search"]::-webkit-search-decoration {
+
  -webkit-appearance: none;
+
}
+
fieldset {
+
  padding: .35em .625em .75em;
+
  margin: 0 2px;
+
  border: 1px solid #c0c0c0;
+
}
+
legend {
+
  padding: 0;
+
  border: 0;
+
}
+
textarea {
+
  overflow: auto;
+
}
+
optgroup {
+
  font-weight: bold;
+
}
+
table {
+
  border-spacing: 0;
+
  border-collapse: collapse;
+
}
+
td,
+
th {
+
  padding: 0;
+
}
+
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+
@media print {
+
  *,
+
  *:before,
+
  *:after {
+
    color: #000 !important;
+
    text-shadow: none !important;
+
    background: transparent !important;
+
    -webkit-box-shadow: none !important;
+
            box-shadow: none !important;
+
  }
+
  a,
+
  a:visited {
+
    text-decoration: underline;
+
  }
+
  a[href]:after {
+
    content: " (" attr(href) ")";
+
  }
+
  abbr[title]:after {
+
    content: " (" attr(title) ")";
+
  }
+
  a[href^="#"]:after,
+
  a[href^="javascript:"]:after {
+
    content: "";
+
  }
+
  pre,
+
  blockquote {
+
    border: 1px solid #999;
+
 
+
    page-break-inside: avoid;
+
  }
+
  thead {
+
    display: table-header-group;
+
  }
+
  tr,
+
  img {
+
    page-break-inside: avoid;
+
  }
+
  img {
+
    max-width: 100% !important;
+
  }
+
  p,
+
  h2,
+
  h3 {
+
    orphans: 3;
+
    widows: 3;
+
  }
+
  h2,
+
  h3 {
+
    page-break-after: avoid;
+
  }
+
  select {
+
    background: #fff !important;
+
  }
+
  .navbar {
+
    display: none;
+
  }
+
  .btn > .caret,
+
  .dropup > .btn > .caret {
+
    border-top-color: #000 !important;
+
  }
+
  .label {
+
    border: 1px solid #000;
+
  }
+
  .table {
+
    border-collapse: collapse !important;
+
  }
+
  .table td,
+
  .table th {
+
    background-color: #fff !important;
+
  }
+
  .table-bordered th,
+
  .table-bordered td {
+
    border: 1px solid #ddd !important;
+
  }
+
}
+
@font-face {
+
  font-family: 'Glyphicons Halflings';
+
 
+
  src: url('../fonts/glyphicons-halflings-regular.eot');
+
  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+
}
+
.glyphicon {
+
  position: relative;
+
  top: 1px;
+
  display: inline-block;
+
  font-family: 'Glyphicons Halflings';
+
  font-style: normal;
+
  font-weight: normal;
+
  line-height: 1;
+
 
+
  -webkit-font-smoothing: antialiased;
+
  -moz-osx-font-smoothing: grayscale;
+
}
+
.glyphicon-asterisk:before {
+
  content: "\2a";
+
}
+
.glyphicon-plus:before {
+
  content: "\2b";
+
}
+
.glyphicon-euro:before,
+
.glyphicon-eur:before {
+
  content: "\20ac";
+
}
+
.glyphicon-minus:before {
+
  content: "\2212";
+
}
+
.glyphicon-cloud:before {
+
  content: "\2601";
+
}
+
.glyphicon-envelope:before {
+
  content: "\2709";
+
}
+
.glyphicon-pencil:before {
+
  content: "\270f";
+
}
+
.glyphicon-glass:before {
+
  content: "\e001";
+
}
+
.glyphicon-music:before {
+
  content: "\e002";
+
}
+
.glyphicon-search:before {
+
  content: "\e003";
+
}
+
.glyphicon-heart:before {
+
  content: "\e005";
+
}
+
.glyphicon-star:before {
+
  content: "\e006";
+
}
+
.glyphicon-star-empty:before {
+
  content: "\e007";
+
}
+
.glyphicon-user:before {
+
  content: "\e008";
+
}
+
.glyphicon-film:before {
+
  content: "\e009";
+
}
+
.glyphicon-th-large:before {
+
  content: "\e010";
+
}
+
.glyphicon-th:before {
+
  content: "\e011";
+
}
+
.glyphicon-th-list:before {
+
  content: "\e012";
+
}
+
.glyphicon-ok:before {
+
  content: "\e013";
+
}
+
.glyphicon-remove:before {
+
  content: "\e014";
+
}
+
.glyphicon-zoom-in:before {
+
  content: "\e015";
+
}
+
.glyphicon-zoom-out:before {
+
  content: "\e016";
+
}
+
.glyphicon-off:before {
+
  content: "\e017";
+
}
+
.glyphicon-signal:before {
+
  content: "\e018";
+
}
+
.glyphicon-cog:before {
+
  content: "\e019";
+
}
+
.glyphicon-trash:before {
+
  content: "\e020";
+
}
+
.glyphicon-home:before {
+
  content: "\e021";
+
}
+
.glyphicon-file:before {
+
  content: "\e022";
+
}
+
.glyphicon-time:before {
+
  content: "\e023";
+
}
+
.glyphicon-road:before {
+
  content: "\e024";
+
}
+
.glyphicon-download-alt:before {
+
  content: "\e025";
+
}
+
.glyphicon-download:before {
+
  content: "\e026";
+
}
+
.glyphicon-upload:before {
+
  content: "\e027";
+
}
+
.glyphicon-inbox:before {
+
  content: "\e028";
+
}
+
.glyphicon-play-circle:before {
+
  content: "\e029";
+
}
+
.glyphicon-repeat:before {
+
  content: "\e030";
+
}
+
.glyphicon-refresh:before {
+
  content: "\e031";
+
}
+
.glyphicon-list-alt:before {
+
  content: "\e032";
+
}
+
.glyphicon-lock:before {
+
  content: "\e033";
+
}
+
.glyphicon-flag:before {
+
  content: "\e034";
+
}
+
.glyphicon-headphones:before {
+
  content: "\e035";
+
}
+
.glyphicon-volume-off:before {
+
  content: "\e036";
+
}
+
.glyphicon-volume-down:before {
+
  content: "\e037";
+
}
+
.glyphicon-volume-up:before {
+
  content: "\e038";
+
}
+
.glyphicon-qrcode:before {
+
  content: "\e039";
+
}
+
.glyphicon-barcode:before {
+
  content: "\e040";
+
}
+
.glyphicon-tag:before {
+
  content: "\e041";
+
}
+
.glyphicon-tags:before {
+
  content: "\e042";
+
}
+
.glyphicon-book:before {
+
  content: "\e043";
+
}
+
.glyphicon-bookmark:before {
+
  content: "\e044";
+
}
+
.glyphicon-print:before {
+
  content: "\e045";
+
}
+
.glyphicon-camera:before {
+
  content: "\e046";
+
}
+
.glyphicon-font:before {
+
  content: "\e047";
+
}
+
.glyphicon-bold:before {
+
  content: "\e048";
+
}
+
.glyphicon-italic:before {
+
  content: "\e049";
+
}
+
.glyphicon-text-height:before {
+
  content: "\e050";
+
}
+
.glyphicon-text-width:before {
+
  content: "\e051";
+
}
+
.glyphicon-align-left:before {
+
  content: "\e052";
+
}
+
.glyphicon-align-center:before {
+
  content: "\e053";
+
}
+
.glyphicon-align-right:before {
+
  content: "\e054";
+
}
+
.glyphicon-align-justify:before {
+
  content: "\e055";
+
}
+
.glyphicon-list:before {
+
  content: "\e056";
+
}
+
.glyphicon-indent-left:before {
+
  content: "\e057";
+
}
+
.glyphicon-indent-right:before {
+
  content: "\e058";
+
}
+
.glyphicon-facetime-video:before {
+
  content: "\e059";
+
}
+
.glyphicon-picture:before {
+
  content: "\e060";
+
}
+
.glyphicon-map-marker:before {
+
  content: "\e062";
+
}
+
.glyphicon-adjust:before {
+
  content: "\e063";
+
}
+
.glyphicon-tint:before {
+
  content: "\e064";
+
}
+
.glyphicon-edit:before {
+
  content: "\e065";
+
}
+
.glyphicon-share:before {
+
  content: "\e066";
+
}
+
.glyphicon-check:before {
+
  content: "\e067";
+
}
+
.glyphicon-move:before {
+
  content: "\e068";
+
}
+
.glyphicon-step-backward:before {
+
  content: "\e069";
+
}
+
.glyphicon-fast-backward:before {
+
  content: "\e070";
+
}
+
.glyphicon-backward:before {
+
  content: "\e071";
+
}
+
.glyphicon-play:before {
+
  content: "\e072";
+
}
+
.glyphicon-pause:before {
+
  content: "\e073";
+
}
+
.glyphicon-stop:before {
+
  content: "\e074";
+
}
+
.glyphicon-forward:before {
+
  content: "\e075";
+
}
+
.glyphicon-fast-forward:before {
+
  content: "\e076";
+
}
+
.glyphicon-step-forward:before {
+
  content: "\e077";
+
}
+
.glyphicon-eject:before {
+
  content: "\e078";
+
}
+
.glyphicon-chevron-left:before {
+
  content: "\e079";
+
}
+
.glyphicon-chevron-right:before {
+
  content: "\e080";
+
}
+
.glyphicon-plus-sign:before {
+
  content: "\e081";
+
}
+
.glyphicon-minus-sign:before {
+
  content: "\e082";
+
}
+
.glyphicon-remove-sign:before {
+
  content: "\e083";
+
}
+
.glyphicon-ok-sign:before {
+
  content: "\e084";
+
}
+
.glyphicon-question-sign:before {
+
  content: "\e085";
+
}
+
.glyphicon-info-sign:before {
+
  content: "\e086";
+
}
+
.glyphicon-screenshot:before {
+
  content: "\e087";
+
}
+
.glyphicon-remove-circle:before {
+
  content: "\e088";
+
}
+
.glyphicon-ok-circle:before {
+
  content: "\e089";
+
}
+
.glyphicon-ban-circle:before {
+
  content: "\e090";
+
}
+
.glyphicon-arrow-left:before {
+
  content: "\e091";
+
}
+
.glyphicon-arrow-right:before {
+
  content: "\e092";
+
}
+
.glyphicon-arrow-up:before {
+
  content: "\e093";
+
}
+
.glyphicon-arrow-down:before {
+
  content: "\e094";
+
}
+
.glyphicon-share-alt:before {
+
  content: "\e095";
+
}
+
.glyphicon-resize-full:before {
+
  content: "\e096";
+
}
+
.glyphicon-resize-small:before {
+
  content: "\e097";
+
}
+
.glyphicon-exclamation-sign:before {
+
  content: "\e101";
+
}
+
.glyphicon-gift:before {
+
  content: "\e102";
+
}
+
.glyphicon-leaf:before {
+
  content: "\e103";
+
}
+
.glyphicon-fire:before {
+
  content: "\e104";
+
}
+
.glyphicon-eye-open:before {
+
  content: "\e105";
+
}
+
.glyphicon-eye-close:before {
+
  content: "\e106";
+
}
+
.glyphicon-warning-sign:before {
+
  content: "\e107";
+
}
+
.glyphicon-plane:before {
+
  content: "\e108";
+
}
+
.glyphicon-calendar:before {
+
  content: "\e109";
+
}
+
.glyphicon-random:before {
+
  content: "\e110";
+
}
+
.glyphicon-comment:before {
+
  content: "\e111";
+
}
+
.glyphicon-magnet:before {
+
  content: "\e112";
+
}
+
.glyphicon-chevron-up:before {
+
  content: "\e113";
+
}
+
.glyphicon-chevron-down:before {
+
  content: "\e114";
+
}
+
.glyphicon-retweet:before {
+
  content: "\e115";
+
}
+
.glyphicon-shopping-cart:before {
+
  content: "\e116";
+
}
+
.glyphicon-folder-close:before {
+
  content: "\e117";
+
}
+
.glyphicon-folder-open:before {
+
  content: "\e118";
+
}
+
.glyphicon-resize-vertical:before {
+
  content: "\e119";
+
}
+
.glyphicon-resize-horizontal:before {
+
  content: "\e120";
+
}
+
.glyphicon-hdd:before {
+
  content: "\e121";
+
}
+
.glyphicon-bullhorn:before {
+
  content: "\e122";
+
}
+
.glyphicon-bell:before {
+
  content: "\e123";
+
}
+
.glyphicon-certificate:before {
+
  content: "\e124";
+
}
+
.glyphicon-thumbs-up:before {
+
  content: "\e125";
+
}
+
.glyphicon-thumbs-down:before {
+
  content: "\e126";
+
}
+
.glyphicon-hand-right:before {
+
  content: "\e127";
+
}
+
.glyphicon-hand-left:before {
+
  content: "\e128";
+
}
+
.glyphicon-hand-up:before {
+
  content: "\e129";
+
}
+
.glyphicon-hand-down:before {
+
  content: "\e130";
+
}
+
.glyphicon-circle-arrow-right:before {
+
  content: "\e131";
+
}
+
.glyphicon-circle-arrow-left:before {
+
  content: "\e132";
+
}
+
.glyphicon-circle-arrow-up:before {
+
  content: "\e133";
+
}
+
.glyphicon-circle-arrow-down:before {
+
  content: "\e134";
+
}
+
.glyphicon-globe:before {
+
  content: "\e135";
+
}
+
.glyphicon-wrench:before {
+
  content: "\e136";
+
}
+
.glyphicon-tasks:before {
+
  content: "\e137";
+
}
+
.glyphicon-filter:before {
+
  content: "\e138";
+
}
+
.glyphicon-briefcase:before {
+
  content: "\e139";
+
}
+
.glyphicon-fullscreen:before {
+
  content: "\e140";
+
}
+
.glyphicon-dashboard:before {
+
  content: "\e141";
+
}
+
.glyphicon-paperclip:before {
+
  content: "\e142";
+
}
+
.glyphicon-heart-empty:before {
+
  content: "\e143";
+
}
+
.glyphicon-link:before {
+
  content: "\e144";
+
}
+
.glyphicon-phone:before {
+
  content: "\e145";
+
}
+
.glyphicon-pushpin:before {
+
  content: "\e146";
+
}
+
.glyphicon-usd:before {
+
  content: "\e148";
+
}
+
.glyphicon-gbp:before {
+
  content: "\e149";
+
}
+
.glyphicon-sort:before {
+
  content: "\e150";
+
}
+
.glyphicon-sort-by-alphabet:before {
+
  content: "\e151";
+
}
+
.glyphicon-sort-by-alphabet-alt:before {
+
  content: "\e152";
+
}
+
.glyphicon-sort-by-order:before {
+
  content: "\e153";
+
}
+
.glyphicon-sort-by-order-alt:before {
+
  content: "\e154";
+
}
+
.glyphicon-sort-by-attributes:before {
+
  content: "\e155";
+
}
+
.glyphicon-sort-by-attributes-alt:before {
+
  content: "\e156";
+
}
+
.glyphicon-unchecked:before {
+
  content: "\e157";
+
}
+
.glyphicon-expand:before {
+
  content: "\e158";
+
}
+
.glyphicon-collapse-down:before {
+
  content: "\e159";
+
}
+
.glyphicon-collapse-up:before {
+
  content: "\e160";
+
}
+
.glyphicon-log-in:before {
+
  content: "\e161";
+
}
+
.glyphicon-flash:before {
+
  content: "\e162";
+
}
+
.glyphicon-log-out:before {
+
  content: "\e163";
+
}
+
.glyphicon-new-window:before {
+
  content: "\e164";
+
}
+
.glyphicon-record:before {
+
  content: "\e165";
+
}
+
.glyphicon-save:before {
+
  content: "\e166";
+
}
+
.glyphicon-open:before {
+
  content: "\e167";
+
}
+
.glyphicon-saved:before {
+
  content: "\e168";
+
}
+
.glyphicon-import:before {
+
  content: "\e169";
+
}
+
.glyphicon-export:before {
+
  content: "\e170";
+
}
+
.glyphicon-send:before {
+
  content: "\e171";
+
}
+
.glyphicon-floppy-disk:before {
+
  content: "\e172";
+
}
+
.glyphicon-floppy-saved:before {
+
  content: "\e173";
+
}
+
.glyphicon-floppy-remove:before {
+
  content: "\e174";
+
}
+
.glyphicon-floppy-save:before {
+
  content: "\e175";
+
}
+
.glyphicon-floppy-open:before {
+
  content: "\e176";
+
}
+
.glyphicon-credit-card:before {
+
  content: "\e177";
+
}
+
.glyphicon-transfer:before {
+
  content: "\e178";
+
}
+
.glyphicon-cutlery:before {
+
  content: "\e179";
+
}
+
.glyphicon-header:before {
+
  content: "\e180";
+
}
+
.glyphicon-compressed:before {
+
  content: "\e181";
+
}
+
.glyphicon-earphone:before {
+
  content: "\e182";
+
}
+
.glyphicon-phone-alt:before {
+
  content: "\e183";
+
}
+
.glyphicon-tower:before {
+
  content: "\e184";
+
}
+
.glyphicon-stats:before {
+
  content: "\e185";
+
}
+
.glyphicon-sd-video:before {
+
  content: "\e186";
+
}
+
.glyphicon-hd-video:before {
+
  content: "\e187";
+
}
+
.glyphicon-subtitles:before {
+
  content: "\e188";
+
}
+
.glyphicon-sound-stereo:before {
+
  content: "\e189";
+
}
+
.glyphicon-sound-dolby:before {
+
  content: "\e190";
+
}
+
.glyphicon-sound-5-1:before {
+
  content: "\e191";
+
}
+
.glyphicon-sound-6-1:before {
+
  content: "\e192";
+
}
+
.glyphicon-sound-7-1:before {
+
  content: "\e193";
+
}
+
.glyphicon-copyright-mark:before {
+
  content: "\e194";
+
}
+
.glyphicon-registration-mark:before {
+
  content: "\e195";
+
}
+
.glyphicon-cloud-download:before {
+
  content: "\e197";
+
}
+
.glyphicon-cloud-upload:before {
+
  content: "\e198";
+
}
+
.glyphicon-tree-conifer:before {
+
  content: "\e199";
+
}
+
.glyphicon-tree-deciduous:before {
+
  content: "\e200";
+
}
+
.glyphicon-cd:before {
+
  content: "\e201";
+
}
+
.glyphicon-save-file:before {
+
  content: "\e202";
+
}
+
.glyphicon-open-file:before {
+
  content: "\e203";
+
}
+
.glyphicon-level-up:before {
+
  content: "\e204";
+
}
+
.glyphicon-copy:before {
+
  content: "\e205";
+
}
+
.glyphicon-paste:before {
+
  content: "\e206";
+
}
+
.glyphicon-alert:before {
+
  content: "\e209";
+
}
+
.glyphicon-equalizer:before {
+
  content: "\e210";
+
}
+
.glyphicon-king:before {
+
  content: "\e211";
+
}
+
.glyphicon-queen:before {
+
  content: "\e212";
+
}
+
.glyphicon-pawn:before {
+
  content: "\e213";
+
}
+
.glyphicon-bishop:before {
+
  content: "\e214";
+
}
+
.glyphicon-knight:before {
+
  content: "\e215";
+
}
+
.glyphicon-baby-formula:before {
+
  content: "\e216";
+
}
+
.glyphicon-tent:before {
+
  content: "\26fa";
+
}
+
.glyphicon-blackboard:before {
+
  content: "\e218";
+
}
+
.glyphicon-bed:before {
+
  content: "\e219";
+
}
+
.glyphicon-apple:before {
+
  content: "\f8ff";
+
}
+
.glyphicon-erase:before {
+
  content: "\e221";
+
}
+
.glyphicon-hourglass:before {
+
  content: "\231b";
+
}
+
.glyphicon-lamp:before {
+
  content: "\e223";
+
}
+
.glyphicon-duplicate:before {
+
  content: "\e224";
+
}
+
.glyphicon-piggy-bank:before {
+
  content: "\e225";
+
}
+
.glyphicon-scissors:before {
+
  content: "\e226";
+
}
+
.glyphicon-bitcoin:before {
+
  content: "\e227";
+
}
+
.glyphicon-yen:before {
+
  content: "\00a5";
+
}
+
.glyphicon-ruble:before {
+
  content: "\20bd";
+
}
+
.glyphicon-scale:before {
+
  content: "\e230";
+
}
+
.glyphicon-ice-lolly:before {
+
  content: "\e231";
+
}
+
.glyphicon-ice-lolly-tasted:before {
+
  content: "\e232";
+
}
+
.glyphicon-education:before {
+
  content: "\e233";
+
}
+
.glyphicon-option-horizontal:before {
+
  content: "\e234";
+
}
+
.glyphicon-option-vertical:before {
+
  content: "\e235";
+
}
+
.glyphicon-menu-hamburger:before {
+
  content: "\e236";
+
}
+
.glyphicon-modal-window:before {
+
  content: "\e237";
+
}
+
.glyphicon-oil:before {
+
  content: "\e238";
+
}
+
.glyphicon-grain:before {
+
  content: "\e239";
+
}
+
.glyphicon-sunglasses:before {
+
  content: "\e240";
+
}
+
.glyphicon-text-size:before {
+
  content: "\e241";
+
}
+
.glyphicon-text-color:before {
+
  content: "\e242";
+
}
+
.glyphicon-text-background:before {
+
  content: "\e243";
+
}
+
.glyphicon-object-align-top:before {
+
  content: "\e244";
+
}
+
.glyphicon-object-align-bottom:before {
+
  content: "\e245";
+
}
+
.glyphicon-object-align-horizontal:before {
+
  content: "\e246";
+
}
+
.glyphicon-object-align-left:before {
+
  content: "\e247";
+
}
+
.glyphicon-object-align-vertical:before {
+
  content: "\e248";
+
}
+
.glyphicon-object-align-right:before {
+
  content: "\e249";
+
}
+
.glyphicon-triangle-right:before {
+
  content: "\e250";
+
}
+
.glyphicon-triangle-left:before {
+
  content: "\e251";
+
}
+
.glyphicon-triangle-bottom:before {
+
  content: "\e252";
+
}
+
.glyphicon-triangle-top:before {
+
  content: "\e253";
+
}
+
.glyphicon-console:before {
+
  content: "\e254";
+
}
+
.glyphicon-superscript:before {
+
  content: "\e255";
+
}
+
.glyphicon-subscript:before {
+
  content: "\e256";
+
}
+
.glyphicon-menu-left:before {
+
  content: "\e257";
+
}
+
.glyphicon-menu-right:before {
+
  content: "\e258";
+
}
+
.glyphicon-menu-down:before {
+
  content: "\e259";
+
}
+
.glyphicon-menu-up:before {
+
  content: "\e260";
+
}
+
* {
+
  -webkit-box-sizing: border-box;
+
    -moz-box-sizing: border-box;
+
          box-sizing: border-box;
+
}
+
*:before,
+
*:after {
+
  -webkit-box-sizing: border-box;
+
    -moz-box-sizing: border-box;
+
          box-sizing: border-box;
+
}
+
html {
+
  font-size: 10px;
+
 
+
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+
}
+
body {
+
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+
  font-size: 14px;
+
  line-height: 1.42857143;
+
  color: #333;
+
  background-color: #fff;
+
}
+
input,
+
button,
+
select,
+
textarea {
+
  font-family: inherit;
+
  font-size: inherit;
+
  line-height: inherit;
+
}
+
a {
+
  color: #337ab7;
+
  text-decoration: none;
+
}
+
a:hover,
+
a:focus {
+
  color: #23527c;
+
  text-decoration: underline;
+
}
+
a:focus {
+
  outline: thin dotted;
+
  outline: 5px auto -webkit-focus-ring-color;
+
  outline-offset: -2px;
+
}
+
figure {
+
  margin: 0;
+
}
+
img {
+
  vertical-align: middle;
+
}
+
.img-responsive,
+
.thumbnail > img,
+
.thumbnail a > img,
+
.carousel-inner > .item > img,
+
.carousel-inner > .item > a > img {
+
  display: block;
+
  max-width: 100%;
+
  height: auto;
+
}
+
.img-rounded {
+
  border-radius: 6px;
+
}
+
.img-thumbnail {
+
  display: inline-block;
+
  max-width: 100%;
+
  height: auto;
+
  padding: 4px;
+
  line-height: 1.42857143;
+
  background-color: #fff;
+
  border: 1px solid #ddd;
+
  border-radius: 4px;
+
  -webkit-transition: all .2s ease-in-out;
+
      -o-transition: all .2s ease-in-out;
+
          transition: all .2s ease-in-out;
+
}
+
.img-circle {
+
  border-radius: 50%;
+
}
+
hr {
+
  margin-top: 20px;
+
  margin-bottom: 20px;
+
  border: 0;
+
  border-top: 1px solid #eee;
+
}
+
.sr-only {
+
  position: absolute;
+
  width: 1px;
+
  height: 1px;
+
  padding: 0;
+
  margin: -1px;
+
  overflow: hidden;
+
  clip: rect(0, 0, 0, 0);
+
  border: 0;
+
}
+
.sr-only-focusable:active,
+
.sr-only-focusable:focus {
+
  position: static;
+
  width: auto;
+
  height: auto;
+
  margin: 0;
+
  overflow: visible;
+
  clip: auto;
+
}
+
h1,
+
h2,
+
h3,
+
h4,
+
h5,
+
h6,
+
h10,
+
.h1,
+
.h2,
+
.h3,
+
.h4,
+
.h5,
+
.h6
+
.h10{
+
  font-family: inherit;
+
  font-weight: 500;
+
  line-height: 1.1;
+
  color: inherit;
+
}
+
h1 small,
+
h2 small,
+
h3 small,
+
h4 small,
+
h5 small,
+
h6 small,
+
.h1 small,
+
.h2 small,
+
.h3 small,
+
.h4 small,
+
.h5 small,
+
.h6 small,
+
h1 .small,
+
h2 .small,
+
h3 .small,
+
h4 .small,
+
h5 .small,
+
h6 .small,
+
.h1 .small,
+
.h2 .small,
+
.h3 .small,
+
.h4 .small,
+
.h5 .small,
+
.h6 .small {
+
  font-weight: normal;
+
  line-height: 1;
+
  color: #777;
+
}
+
h1,
+
.h1,
+
h2,
+
.h2,
+
h3,
+
.h3 {
+
  margin-top: 20px;
+
  margin-bottom: 10px;
+
}
+
h1 small,
+
.h1 small,
+
h2 small,
+
.h2 small,
+
h3 small,
+
.h3 small,
+
h1 .small,
+
.h1 .small,
+
h2 .small,
+
.h2 .small,
+
h3 .small,
+
.h3 .small {
+
  font-size: 65%;
+
}
+
h4,
+
.h4,
+
h5,
+
.h5,
+
h6,
+
.h6 {
+
  margin-top: 10px;
+
  margin-bottom: 10px;
+
}
+
h4 small,
+
.h4 small,
+
h5 small,
+
.h5 small,
+
h6 small,
+
.h6 small,
+
h4 .small,
+
.h4 .small,
+
h5 .small,
+
.h5 .small,
+
h6 .small,
+
.h6 .small {
+
  font-size: 75%;
+
}
+
h1,
+
.h1 {
+
  font-size: 36px;
+
}
+
h2,
+
.h2 {
+
  font-size: 30px;
+
}
+
h3,
+
.h3 {
+
  font-size: 24px;
+
}
+
h4,
+
.h4 {
+
  font-size: 18px;
+
}
+
h5,
+
.h5 {
+
  font-size: 14px;
+
}
+
h6,
+
.h6 {
+
  font-size: 12px;
+
}
+
p {
+
  margin: 0 0 10px;
+
}
+
.lead {
+
  margin-bottom: 20px;
+
  font-size: 16px;
+
  font-weight: 300;
+
  line-height: 1.4;
+
}
+
@media (min-width: 768px) {
+
  .lead {
+
    font-size: 21px;
+
  }
+
}
+
small,
+
.small {
+
  font-size: 85%;
+
}
+
mark,
+
.mark {
+
  padding: .2em;
+
  background-color: #fcf8e3;
+
}
+
.text-left {
+
  text-align: left;
+
}
+
.text-right {
+
  text-align: right;
+
}
+
.text-center {
+
  text-align: center;
+
}
+
.text-justify {
+
  text-align: justify;
+
}
+
.text-nowrap {
+
  white-space: nowrap;
+
}
+
.text-lowercase {
+
  text-transform: lowercase;
+
}
+
.text-uppercase {
+
  text-transform: uppercase;
+
}
+
.text-capitalize {
+
  text-transform: capitalize;
+
}
+
.text-muted {
+
  color: #777;
+
}
+
.text-primary {
+
  color: #337ab7;
+
}
+
a.text-primary:hover {
+
  color: #286090;
+
}
+
.text-success {
+
  color: #3c763d;
+
}
+
a.text-success:hover {
+
  color: #2b542c;
+
}
+
.text-info {
+
  color: #31708f;
+
}
+
a.text-info:hover {
+
  color: #245269;
+
}
+
.text-warning {
+
  color: #8a6d3b;
+
}
+
a.text-warning:hover {
+
  color: #66512c;
+
}
+
.text-danger {
+
  color: #a94442;
+
}
+
a.text-danger:hover {
+
  color: #843534;
+
}
+
.bg-primary {
+
  color: #fff;
+
  background-color: #337ab7;
+
}
+
a.bg-primary:hover {
+
  background-color: #286090;
+
}
+
.bg-success {
+
  background-color: #dff0d8;
+
}
+
a.bg-success:hover {
+
  background-color: #c1e2b3;
+
}
+
.bg-info {
+
  background-color: #d9edf7;
+
}
+
a.bg-info:hover {
+
  background-color: #afd9ee;
+
}
+
.bg-warning {
+
  background-color: #fcf8e3;
+
}
+
a.bg-warning:hover {
+
  background-color: #f7ecb5;
+
}
+
.bg-danger {
+
  background-color: #f2dede;
+
}
+
a.bg-danger:hover {
+
  background-color: #e4b9b9;
+
}
+
.page-header {
+
  padding-bottom: 9px;
+
  margin: 40px 0 20px;
+
  border-bottom: 1px solid #eee;
+
}
+
ul,
+
ol {
+
  margin-top: 0;
+
  margin-bottom: 10px;
+
}
+
ul ul,
+
ol ul,
+
ul ol,
+
ol ol {
+
  margin-bottom: 0;
+
}
+
.list-unstyled {
+
  padding-left: 0;
+
  list-style: none;
+
}
+
.list-inline {
+
  padding-left: 0;
+
  margin-left: -5px;
+
  list-style: none;
+
}
+
.list-inline > li {
+
  display: inline-block;
+
  padding-right: 5px;
+
  padding-left: 5px;
+
}
+
dl {
+
  margin-top: 0;
+
  margin-bottom: 20px;
+
}
+
dt,
+
dd {
+
  line-height: 1.42857143;
+
}
+
dt {
+
  font-weight: bold;
+
}
+
dd {
+
  margin-left: 0;
+
}
+
@media (min-width: 768px) {
+
  .dl-horizontal dt {
+
    float: left;
+
    width: 160px;
+
    overflow: hidden;
+
    clear: left;
+
    text-align: right;
+
    text-overflow: ellipsis;
+
    white-space: nowrap;
+
  }
+
  .dl-horizontal dd {
+
    margin-left: 180px;
+
  }
+
}
+
abbr[title],
+
abbr[data-original-title] {
+
  cursor: help;
+
  border-bottom: 1px dotted #777;
+
}
+
.initialism {
+
  font-size: 90%;
+
  text-transform: uppercase;
+
}
+
blockquote {
+
  padding: 10px 20px;
+
  margin: 0 0 20px;
+
  font-size: 17.5px;
+
  border-left: 5px solid #eee;
+
}
+
blockquote p:last-child,
+
blockquote ul:last-child,
+
blockquote ol:last-child {
+
  margin-bottom: 0;
+
}
+
blockquote footer,
+
blockquote small,
+
blockquote .small {
+
  display: block;
+
  font-size: 80%;
+
  line-height: 1.42857143;
+
  color: #777;
+
}
+
blockquote footer:before,
+
blockquote small:before,
+
blockquote .small:before {
+
  content: '\2014 \00A0';
+
}
+
.blockquote-reverse,
+
blockquote.pull-right {
+
  padding-right: 15px;
+
  padding-left: 0;
+
  text-align: right;
+
  border-right: 5px solid #eee;
+
  border-left: 0;
+
}
+
.blockquote-reverse footer:before,
+
blockquote.pull-right footer:before,
+
.blockquote-reverse small:before,
+
blockquote.pull-right small:before,
+
.blockquote-reverse .small:before,
+
blockquote.pull-right .small:before {
+
  content: '';
+
}
+
.blockquote-reverse footer:after,
+
blockquote.pull-right footer:after,
+
.blockquote-reverse small:after,
+
blockquote.pull-right small:after,
+
.blockquote-reverse .small:after,
+
blockquote.pull-right .small:after {
+
  content: '\00A0 \2014';
+
}
+
address {
+
  margin-bottom: 20px;
+
  font-style: normal;
+
  line-height: 1.42857143;
+
}
+
code,
+
kbd,
+
pre,
+
samp {
+
  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+
}
+
code {
+
  padding: 2px 4px;
+
  font-size: 90%;
+
  color: #c7254e;
+
  background-color: #f9f2f4;
+
  border-radius: 4px;
+
}
+
kbd {
+
  padding: 2px 4px;
+
  font-size: 90%;
+
  color: #fff;
+
  background-color: #333;
+
  border-radius: 3px;
+
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+
          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+
}
+
kbd kbd {
+
  padding: 0;
+
  font-size: 100%;
+
  font-weight: bold;
+
  -webkit-box-shadow: none;
+
          box-shadow: none;
+
}
+
pre {
+
  display: block;
+
  padding: 9.5px;
+
  margin: 0 0 10px;
+
  font-size: 13px;
+
  line-height: 1.42857143;
+
  color: #333;
+
  word-break: break-all;
+
  word-wrap: break-word;
+
  background-color: #f5f5f5;
+
  border: 1px solid #ccc;
+
  border-radius: 4px;
+
}
+
pre code {
+
  padding: 0;
+
  font-size: inherit;
+
  color: inherit;
+
  white-space: pre-wrap;
+
  background-color: transparent;
+
  border-radius: 0;
+
}
+
.pre-scrollable {
+
  max-height: 340px;
+
  overflow-y: scroll;
+
}
+
.container {
+
  padding-right: 15px;
+
  padding-left: 15px;
+
  margin-right: auto;
+
  margin-left: auto;
+
}
+
@media (min-width: 768px) {
+
  .container {
+
    width: 750px;
+
  }
+
}
+
@media (min-width: 992px) {
+
  .container {
+
    width: 970px;
+
  }
+
}
+
@media (min-width: 1200px) {
+
  .container {
+
    width: 1170px;
+
  }
+
}
+
.container-fluid {
+
  padding-right: 15px;
+
  padding-left: 15px;
+
  margin-right: auto;
+
  margin-left: auto;
+
}
+
.row {
+
  margin-right: -15px;
+
  margin-left: -15px;
+
}
+
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+
  position: relative;
+
  min-height: 1px;
+
  padding-right: 15px;
+
  padding-left: 15px;
+
}
+
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+
  float: left;
+
}
+
.col-xs-12 {
+
  width: 100%;
+
}
+
.col-xs-11 {
+
  width: 91.66666667%;
+
}
+
.col-xs-10 {
+
  width: 83.33333333%;
+
}
+
.col-xs-9 {
+
  width: 75%;
+
}
+
.col-xs-8 {
+
  width: 66.66666667%;
+
}
+
.col-xs-7 {
+
  width: 58.33333333%;
+
}
+
.col-xs-6 {
+
  width: 50%;
+
}
+
.col-xs-5 {
+
  width: 41.66666667%;
+
}
+
.col-xs-4 {
+
  width: 33.33333333%;
+
}
+
.col-xs-3 {
+
  width: 25%;
+
}
+
.col-xs-2 {
+
  width: 16.66666667%;
+
}
+
.col-xs-1 {
+
  width: 8.33333333%;
+
}
+
.col-xs-pull-12 {
+
  right: 100%;
+
}
+
.col-xs-pull-11 {
+
  right: 91.66666667%;
+
}
+
.col-xs-pull-10 {
+
  right: 83.33333333%;
+
}
+
.col-xs-pull-9 {
+
  right: 75%;
+
}
+
.col-xs-pull-8 {
+
  right: 66.66666667%;
+
}
+
.col-xs-pull-7 {
+
  right: 58.33333333%;
+
}
+
.col-xs-pull-6 {
+
  right: 50%;
+
}
+
.col-xs-pull-5 {
+
  right: 41.66666667%;
+
}
+
.col-xs-pull-4 {
+
  right: 33.33333333%;
+
}
+
.col-xs-pull-3 {
+
  right: 25%;
+
}
+
.col-xs-pull-2 {
+
  right: 16.66666667%;
+
}
+
.col-xs-pull-1 {
+
  right: 8.33333333%;
+
}
+
.col-xs-pull-0 {
+
  right: auto;
+
}
+
.col-xs-push-12 {
+
  left: 100%;
+
}
+
.col-xs-push-11 {
+
  left: 91.66666667%;
+
}
+
.col-xs-push-10 {
+
  left: 83.33333333%;
+
}
+
.col-xs-push-9 {
+
  left: 75%;
+
}
+
.col-xs-push-8 {
+
  left: 66.66666667%;
+
}
+
.col-xs-push-7 {
+
  left: 58.33333333%;
+
}
+
.col-xs-push-6 {
+
  left: 50%;
+
}
+
.col-xs-push-5 {
+
  left: 41.66666667%;
+
}
+
.col-xs-push-4 {
+
  left: 33.33333333%;
+
}
+
.col-xs-push-3 {
+
  left: 25%;
+
}
+
.col-xs-push-2 {
+
  left: 16.66666667%;
+
}
+
.col-xs-push-1 {
+
  left: 8.33333333%;
+
}
+
.col-xs-push-0 {
+
  left: auto;
+
}
+
.col-xs-offset-12 {
+
  margin-left: 100%;
+
}
+
.col-xs-offset-11 {
+
  margin-left: 91.66666667%;
+
}
+
.col-xs-offset-10 {
+
  margin-left: 83.33333333%;
+
}
+
.col-xs-offset-9 {
+
  margin-left: 75%;
+
}
+
.col-xs-offset-8 {
+
  margin-left: 66.66666667%;
+
}
+
.col-xs-offset-7 {
+
  margin-left: 58.33333333%;
+
}
+
.col-xs-offset-6 {
+
  margin-left: 50%;
+
}
+
.col-xs-offset-5 {
+
  margin-left: 41.66666667%;
+
}
+
.col-xs-offset-4 {
+
  margin-left: 33.33333333%;
+
}
+
.col-xs-offset-3 {
+
  margin-left: 25%;
+
}
+
.col-xs-offset-2 {
+
  margin-left: 16.66666667%;
+
}
+
.col-xs-offset-1 {
+
  margin-left: 8.33333333%;
+
}
+
.col-xs-offset-0 {
+
  margin-left: 0;
+
}
+
@media (min-width: 768px) {
+
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+
    float: left;
+
  }
+
  .col-sm-12 {
+
    width: 100%;
+
  }
+
  .col-sm-11 {
+
    width: 91.66666667%;
+
  }
+
  .col-sm-10 {
+
    width: 83.33333333%;
+
  }
+
  .col-sm-9 {
+
    width: 75%;
+
  }
+
  .col-sm-8 {
+
    width: 66.66666667%;
+
  }
+
  .col-sm-7 {
+
    width: 58.33333333%;
+
  }
+
  .col-sm-6 {
+
    width: 50%;
+
  }
+
  .col-sm-5 {
+
    width: 41.66666667%;
+
  }
+
  .col-sm-4 {
+
    width: 33.33333333%;
+
  }
+
  .col-sm-3 {
+
    width: 25%;
+
  }
+
  .col-sm-2 {
+
    width: 16.66666667%;
+
  }
+
  .col-sm-1 {
+
    width: 8.33333333%;
+
  }
+
  .col-sm-pull-12 {
+
    right: 100%;
+
  }
+
  .col-sm-pull-11 {
+
    right: 91.66666667%;
+
  }
+
  .col-sm-pull-10 {
+
    right: 83.33333333%;
+
  }
+
  .col-sm-pull-9 {
+
    right: 75%;
+
  }
+
  .col-sm-pull-8 {
+
    right: 66.66666667%;
+
  }
+
  .col-sm-pull-7 {
+
    right: 58.33333333%;
+
  }
+
  .col-sm-pull-6 {
+
    right: 50%;
+
  }
+
  .col-sm-pull-5 {
+
    right: 41.66666667%;
+
  }
+
  .col-sm-pull-4 {
+
    right: 33.33333333%;
+
  }
+
  .col-sm-pull-3 {
+
    right: 25%;
+
  }
+
  .col-sm-pull-2 {
+
    right: 16.66666667%;
+
  }
+
  .col-sm-pull-1 {
+
    right: 8.33333333%;
+
  }
+
  .col-sm-pull-0 {
+
    right: auto;
+
  }
+
  .col-sm-push-12 {
+
    left: 100%;
+
  }
+
  .col-sm-push-11 {
+
    left: 91.66666667%;
+
  }
+
  .col-sm-push-10 {
+
    left: 83.33333333%;
+
  }
+
  .col-sm-push-9 {
+
    left: 75%;
+
  }
+
  .col-sm-push-8 {
+
    left: 66.66666667%;
+
  }
+
  .col-sm-push-7 {
+
    left: 58.33333333%;
+
  }
+
  .col-sm-push-6 {
+
    left: 50%;
+
  }
+
  .col-sm-push-5 {
+
    left: 41.66666667%;
+
  }
+
  .col-sm-push-4 {
+
    left: 33.33333333%;
+
  }
+
  .col-sm-push-3 {
+
    left: 25%;
+
  }
+
  .col-sm-push-2 {
+
    left: 16.66666667%;
+
  }
+
  .col-sm-push-1 {
+
    left: 8.33333333%;
+
  }
+
  .col-sm-push-0 {
+
    left: auto;
+
  }
+
  .col-sm-offset-12 {
+
    margin-left: 100%;
+
  }
+
  .col-sm-offset-11 {
+
    margin-left: 91.66666667%;
+
  }
+
  .col-sm-offset-10 {
+
    margin-left: 83.33333333%;
+
  }
+
  .col-sm-offset-9 {
+
    margin-left: 75%;
+
  }
+
  .col-sm-offset-8 {
+
    margin-left: 66.66666667%;
+
  }
+
  .col-sm-offset-7 {
+
    margin-left: 58.33333333%;
+
  }
+
  .col-sm-offset-6 {
+
    margin-left: 50%;
+
  }
+
  .col-sm-offset-5 {
+
    margin-left: 41.66666667%;
+
  }
+
  .col-sm-offset-4 {
+
    margin-left: 33.33333333%;
+
  }
+
  .col-sm-offset-3 {
+
    margin-left: 25%;
+
  }
+
  .col-sm-offset-2 {
+
    margin-left: 16.66666667%;
+
  }
+
  .col-sm-offset-1 {
+
    margin-left: 8.33333333%;
+
  }
+
  .col-sm-offset-0 {
+
    margin-left: 0;
+
  }
+
}
+
@media (min-width: 992px) {
+
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+
    float: left;
+
  }
+
  .col-md-12 {
+
    width: 100%;
+
  }
+
  .col-md-11 {
+
    width: 91.66666667%;
+
  }
+
  .col-md-10 {
+
    width: 83.33333333%;
+
  }
+
  .col-md-9 {
+
    width: 75%;
+
  }
+
  .col-md-8 {
+
    width: 66.66666667%;
+
  }
+
  .col-md-7 {
+
    width: 58.33333333%;
+
  }
+
  .col-md-6 {
+
    width: 50%;
+
  }
+
  .col-md-5 {
+
    width: 41.66666667%;
+
  }
+
  .col-md-4 {
+
    width: 33.33333333%;
+
  }
+
  .col-md-3 {
+
    width: 25%;
+
  }
+
  .col-md-2 {
+
    width: 16.66666667%;
+
  }
+
  .col-md-1 {
+
    width: 8.33333333%;
+
  }
+
  .col-md-pull-12 {
+
    right: 100%;
+
  }
+
  .col-md-pull-11 {
+
    right: 91.66666667%;
+
  }
+
  .col-md-pull-10 {
+
    right: 83.33333333%;
+
  }
+
  .col-md-pull-9 {
+
    right: 75%;
+
  }
+
  .col-md-pull-8 {
+
    right: 66.66666667%;
+
  }
+
  .col-md-pull-7 {
+
    right: 58.33333333%;
+
  }
+
  .col-md-pull-6 {
+
    right: 50%;
+
  }
+
  .col-md-pull-5 {
+
    right: 41.66666667%;
+
  }
+
  .col-md-pull-4 {
+
    right: 33.33333333%;
+
  }
+
  .col-md-pull-3 {
+
    right: 25%;
+
  }
+
  .col-md-pull-2 {
+
    right: 16.66666667%;
+
  }
+
  .col-md-pull-1 {
+
    right: 8.33333333%;
+
  }
+
  .col-md-pull-0 {
+
    right: auto;
+
  }
+
  .col-md-push-12 {
+
    left: 100%;
+
  }
+
  .col-md-push-11 {
+
    left: 91.66666667%;
+
  }
+
  .col-md-push-10 {
+
    left: 83.33333333%;
+
  }
+
  .col-md-push-9 {
+
    left: 75%;
+
  }
+
  .col-md-push-8 {
+
    left: 66.66666667%;
+
  }
+
  .col-md-push-7 {
+
    left: 58.33333333%;
+
  }
+
  .col-md-push-6 {
+
    left: 50%;
+
  }
+
  .col-md-push-5 {
+
    left: 41.66666667%;
+
  }
+
  .col-md-push-4 {
+
    left: 33.33333333%;
+
  }
+
  .col-md-push-3 {
+
    left: 25%;
+
  }
+
  .col-md-push-2 {
+
    left: 16.66666667%;
+
  }
+
  .col-md-push-1 {
+
    left: 8.33333333%;
+
  }
+
  .col-md-push-0 {
+
    left: auto;
+
  }
+
  .col-md-offset-12 {
+
    margin-left: 100%;
+
  }
+
  .col-md-offset-11 {
+
    margin-left: 91.66666667%;
+
  }
+
  .col-md-offset-10 {
+
    margin-left: 83.33333333%;
+
  }
+
  .col-md-offset-9 {
+
    margin-left: 75%;
+
  }
+
  .col-md-offset-8 {
+
    margin-left: 66.66666667%;
+
  }
+
  .col-md-offset-7 {
+
    margin-left: 58.33333333%;
+
  }
+
  .col-md-offset-6 {
+
    margin-left: 50%;
+
  }
+
  .col-md-offset-5 {
+
    margin-left: 41.66666667%;
+
  }
+
  .col-md-offset-4 {
+
    margin-left: 33.33333333%;
+
  }
+
  .col-md-offset-3 {
+
    margin-left: 25%;
+
  }
+
  .col-md-offset-2 {
+
    margin-left: 16.66666667%;
+
  }
+
  .col-md-offset-1 {
+
    margin-left: 8.33333333%;
+
  }
+
  .col-md-offset-0 {
+
    margin-left: 0;
+
  }
+
}
+
@media (min-width: 1200px) {
+
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+
    float: left;
+
  }
+
  .col-lg-12 {
+
    width: 100%;
+
  }
+
  .col-lg-11 {
+
    width: 91.66666667%;
+
  }
+
  .col-lg-10 {
+
    width: 83.33333333%;
+
  }
+
  .col-lg-9 {
+
    width: 75%;
+
  }
+
  .col-lg-8 {
+
    width: 66.66666667%;
+
  }
+
  .col-lg-7 {
+
    width: 58.33333333%;
+
  }
+
  .col-lg-6 {
+
    width: 50%;
+
  }
+
  .col-lg-5 {
+
    width: 41.66666667%;
+
  }
+
  .col-lg-4 {
+
    width: 33.33333333%;
+
  }
+
  .col-lg-3 {
+
    width: 25%;
+
  }
+
  .col-lg-2 {
+
    width: 16.66666667%;
+
  }
+
  .col-lg-1 {
+
    width: 8.33333333%;
+
  }
+
  .col-lg-pull-12 {
+
    right: 100%;
+
  }
+
  .col-lg-pull-11 {
+
    right: 91.66666667%;
+
  }
+
  .col-lg-pull-10 {
+
    right: 83.33333333%;
+
  }
+
  .col-lg-pull-9 {
+
    right: 75%;
+
  }
+
  .col-lg-pull-8 {
+
    right: 66.66666667%;
+
  }
+
  .col-lg-pull-7 {
+
    right: 58.33333333%;
+
  }
+
  .col-lg-pull-6 {
+
    right: 50%;
+
  }
+
  .col-lg-pull-5 {
+
    right: 41.66666667%;
+
  }
+
  .col-lg-pull-4 {
+
    right: 33.33333333%;
+
  }
+
  .col-lg-pull-3 {
+
    right: 25%;
+
  }
+
  .col-lg-pull-2 {
+
    right: 16.66666667%;
+
  }
+
  .col-lg-pull-1 {
+
    right: 8.33333333%;
+
  }
+
  .col-lg-pull-0 {
+
    right: auto;
+
  }
+
  .col-lg-push-12 {
+
    left: 100%;
+
  }
+
  .col-lg-push-11 {
+
    left: 91.66666667%;
+
  }
+
  .col-lg-push-10 {
+
    left: 83.33333333%;
+
  }
+
  .col-lg-push-9 {
+
    left: 75%;
+
  }
+
  .col-lg-push-8 {
+
    left: 66.66666667%;
+
  }
+
  .col-lg-push-7 {
+
    left: 58.33333333%;
+
  }
+
  .col-lg-push-6 {
+
    left: 50%;
+
  }
+
  .col-lg-push-5 {
+
    left: 41.66666667%;
+
  }
+
  .col-lg-push-4 {
+
    left: 33.33333333%;
+
  }
+
  .col-lg-push-3 {
+
    left: 25%;
+
  }
+
  .col-lg-push-2 {
+
    left: 16.66666667%;
+
  }
+
  .col-lg-push-1 {
+
    left: 8.33333333%;
+
  }
+
  .col-lg-push-0 {
+
    left: auto;
+
  }
+
  .col-lg-offset-12 {
+
    margin-left: 100%;
+
  }
+
  .col-lg-offset-11 {
+
    margin-left: 91.66666667%;
+
  }
+
  .col-lg-offset-10 {
+
    margin-left: 83.33333333%;
+
  }
+
  .col-lg-offset-9 {
+
    margin-left: 75%;
+
  }
+
  .col-lg-offset-8 {
+
    margin-left: 66.66666667%;
+
  }
+
  .col-lg-offset-7 {
+
    margin-left: 58.33333333%;
+
  }
+
  .col-lg-offset-6 {
+
    margin-left: 50%;
+
  }
+
  .col-lg-offset-5 {
+
    margin-left: 41.66666667%;
+
  }
+
  .col-lg-offset-4 {
+
    margin-left: 33.33333333%;
+
  }
+
  .col-lg-offset-3 {
+
    margin-left: 25%;
+
  }
+
  .col-lg-offset-2 {
+
    margin-left: 16.66666667%;
+
  }
+
  .col-lg-offset-1 {
+
    margin-left: 8.33333333%;
+
  }
+
  .col-lg-offset-0 {
+
    margin-left: 0;
+
  }
+
}
+
table {
+
  background-color: transparent;
+
}
+
caption {
+
  padding-top: 8px;
+
  padding-bottom: 8px;
+
  color: #777;
+
  text-align: left;
+
}
+
th {
+
  text-align: left;
+
}
+
.table {
+
  width: 100%;
+
  max-width: 100%;
+
  margin-bottom: 20px;
+
}
+
.table > thead > tr > th,
+
.table > tbody > tr > th,
+
.table > tfoot > tr > th,
+
.table > thead > tr > td,
+
.table > tbody > tr > td,
+
.table > tfoot > tr > td {
+
  padding: 8px;
+
  line-height: 1.42857143;
+
  vertical-align: top;
+
  border-top: 1px solid #ddd;
+
}
+
.table > thead > tr > th {
+
  vertical-align: bottom;
+
  border-bottom: 2px solid #ddd;
+
}
+
.table > caption + thead > tr:first-child > th,
+
.table > colgroup + thead > tr:first-child > th,
+
.table > thead:first-child > tr:first-child > th,
+
.table > caption + thead > tr:first-child > td,
+
.table > colgroup + thead > tr:first-child > td,
+
.table > thead:first-child > tr:first-child > td {
+
  border-top: 0;
+
}
+
.table > tbody + tbody {
+
  border-top: 2px solid #ddd;
+
}
+
.table .table {
+
  background-color: #fff;
+
}
+
.table-condensed > thead > tr > th,
+
.table-condensed > tbody > tr > th,
+
.table-condensed > tfoot > tr > th,
+
.table-condensed > thead > tr > td,
+
.table-condensed > tbody > tr > td,
+
.table-condensed > tfoot > tr > td {
+
  padding: 5px;
+
}
+
.table-bordered {
+
  border: 1px solid #ddd;
+
}
+
.table-bordered > thead > tr > th,
+
.table-bordered > tbody > tr > th,
+
.table-bordered > tfoot > tr > th,
+
.table-bordered > thead > tr > td,
+
.table-bordered > tbody > tr > td,
+
.table-bordered > tfoot > tr > td {
+
  border: 1px solid #ddd;
+
}
+
.table-bordered > thead > tr > th,
+
.table-bordered > thead > tr > td {
+
  border-bottom-width: 2px;
+
}
+
.table-striped > tbody > tr:nth-of-type(odd) {
+
  background-color: #f9f9f9;
+
}
+
.table-hover > tbody > tr:hover {
+
  background-color: #f5f5f5;
+
}
+
table col[class*="col-"] {
+
  position: static;
+
  display: table-column;
+
  float: none;
+
}
+
table td[class*="col-"],
+
table th[class*="col-"] {
+
  position: static;
+
  display: table-cell;
+
  float: none;
+
}
+
.table > thead > tr > td.active,
+
.table > tbody > tr > td.active,
+
.table > tfoot > tr > td.active,
+
.table > thead > tr > th.active,
+
.table > tbody > tr > th.active,
+
.table > tfoot > tr > th.active,
+
.table > thead > tr.active > td,
+
.table > tbody > tr.active > td,
+
.table > tfoot > tr.active > td,
+
.table > thead > tr.active > th,
+
.table > tbody > tr.active > th,
+
.table > tfoot > tr.active > th {
+
  background-color: #f5f5f5;
+
}
+
.table-hover > tbody > tr > td.active:hover,
+
.table-hover > tbody > tr > th.active:hover,
+
.table-hover > tbody > tr.active:hover > td,
+
.table-hover > tbody > tr:hover > .active,
+
.table-hover > tbody > tr.active:hover > th {
+
  background-color: #e8e8e8;
+
}
+
.table > thead > tr > td.success,
+
.table > tbody > tr > td.success,
+
.table > tfoot > tr > td.success,
+
.table > thead > tr > th.success,
+
.table > tbody > tr > th.success,
+
.table > tfoot > tr > th.success,
+
.table > thead > tr.success > td,
+
.table > tbody > tr.success > td,
+
.table > tfoot > tr.success > td,
+
.table > thead > tr.success > th,
+
.table > tbody > tr.success > th,
+
.table > tfoot > tr.success > th {
+
  background-color: #dff0d8;
+
}
+
.table-hover > tbody > tr > td.success:hover,
+
.table-hover > tbody > tr > th.success:hover,
+
.table-hover > tbody > tr.success:hover > td,
+
.table-hover > tbody > tr:hover > .success,
+
.table-hover > tbody > tr.success:hover > th {
+
  background-color: #d0e9c6;
+
}
+
.table > thead > tr > td.info,
+
.table > tbody > tr > td.info,
+
.table > tfoot > tr > td.info,
+
.table > thead > tr > th.info,
+
.table > tbody > tr > th.info,
+
.table > tfoot > tr > th.info,
+
.table > thead > tr.info > td,
+
.table > tbody > tr.info > td,
+
.table > tfoot > tr.info > td,
+
.table > thead > tr.info > th,
+
.table > tbody > tr.info > th,
+
.table > tfoot > tr.info > th {
+
  background-color: #d9edf7;
+
}
+
.table-hover > tbody > tr > td.info:hover,
+
.table-hover > tbody > tr > th.info:hover,
+
.table-hover > tbody > tr.info:hover > td,
+
.table-hover > tbody > tr:hover > .info,
+
.table-hover > tbody > tr.info:hover > th {
+
  background-color: #c4e3f3;
+
}
+
.table > thead > tr > td.warning,
+
.table > tbody > tr > td.warning,
+
.table > tfoot > tr > td.warning,
+
.table > thead > tr > th.warning,
+
.table > tbody > tr > th.warning,
+
.table > tfoot > tr > th.warning,
+
.table > thead > tr.warning > td,
+
.table > tbody > tr.warning > td,
+
.table > tfoot > tr.warning > td,
+
.table > thead > tr.warning > th,
+
.table > tbody > tr.warning > th,
+
.table > tfoot > tr.warning > th {
+
  background-color: #fcf8e3;
+
}
+
.table-hover > tbody > tr > td.warning:hover,
+
.table-hover > tbody > tr > th.warning:hover,
+
.table-hover > tbody > tr.warning:hover > td,
+
.table-hover > tbody > tr:hover > .warning,
+
.table-hover > tbody > tr.warning:hover > th {
+
  background-color: #faf2cc;
+
}
+
.table > thead > tr > td.danger,
+
.table > tbody > tr > td.danger,
+
.table > tfoot > tr > td.danger,
+
.table > thead > tr > th.danger,
+
.table > tbody > tr > th.danger,
+
.table > tfoot > tr > th.danger,
+
.table > thead > tr.danger > td,
+
.table > tbody > tr.danger > td,
+
.table > tfoot > tr.danger > td,
+
.table > thead > tr.danger > th,
+
.table > tbody > tr.danger > th,
+
.table > tfoot > tr.danger > th {
+
  background-color: #f2dede;
+
}
+
.table-hover > tbody > tr > td.danger:hover,
+
.table-hover > tbody > tr > th.danger:hover,
+
.table-hover > tbody > tr.danger:hover > td,
+
.table-hover > tbody > tr:hover > .danger,
+
.table-hover > tbody > tr.danger:hover > th {
+
  background-color: #ebcccc;
+
}
+
.table-responsive {
+
  min-height: .01%;
+
  overflow-x: auto;
+
}
+
@media screen and (max-width: 767px) {
+
  .table-responsive {
+
    width: 100%;
+
    margin-bottom: 15px;
+
    overflow-y: hidden;
+
    -ms-overflow-style: -ms-autohiding-scrollbar;
+
    border: 1px solid #ddd;
+
  }
+
  .table-responsive > .table {
+
     margin-bottom: 0;
+
  }
+
  .table-responsive > .table > thead > tr > th,
+
  .table-responsive > .table > tbody > tr > th,
+
  .table-responsive > .table > tfoot > tr > th,
+
  .table-responsive > .table > thead > tr > td,
+
  .table-responsive > .table > tbody > tr > td,
+
  .table-responsive > .table > tfoot > tr > td {
+
    white-space: nowrap;
+
  }
+
  .table-responsive > .table-bordered {
+
    border: 0;
+
  }
+
  .table-responsive > .table-bordered > thead > tr > th:first-child,
+
  .table-responsive > .table-bordered > tbody > tr > th:first-child,
+
  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+
  .table-responsive > .table-bordered > thead > tr > td:first-child,
+
  .table-responsive > .table-bordered > tbody > tr > td:first-child,
+
  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+
    border-left: 0;
+
  }
+
  .table-responsive > .table-bordered > thead > tr > th:last-child,
+
  .table-responsive > .table-bordered > tbody > tr > th:last-child,
+
  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+
  .table-responsive > .table-bordered > thead > tr > td:last-child,
+
  .table-responsive > .table-bordered > tbody > tr > td:last-child,
+
  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+
    border-right: 0;
+
  }
+
  .table-responsive > .table-bordered > tbody > tr:last-child > th,
+
  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+
  .table-responsive > .table-bordered > tbody > tr:last-child > td,
+
  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+
    border-bottom: 0;
+
  }
+
}
+
fieldset {
+
  min-width: 0;
+
  padding: 0;
+
  margin: 0;
+
  border: 0;
+
}
+
legend {
+
  display: block;
+
  width: 100%;
+
  padding: 0;
+
  margin-bottom: 20px;
+
  font-size: 21px;
+
  line-height: inherit;
+
  color: #333;
+
  border: 0;
+
  border-bottom: 1px solid #e5e5e5;
+
}
+
label {
+
  display: inline-block;
+
  max-width: 100%;
+
  margin-bottom: 5px;
+
  font-weight: bold;
+
}
+
input[type="search"] {
+
  -webkit-box-sizing: border-box;
+
    -moz-box-sizing: border-box;
+
          box-sizing: border-box;
+
}
+
input[type="radio"],
+
input[type="checkbox"] {
+
  margin: 4px 0 0;
+
  margin-top: 1px \9;
+
  line-height: normal;
+
}
+
input[type="file"] {
+
  display: block;
+
}
+
input[type="range"] {
+
  display: block;
+
  width: 100%;
+
}
+
select[multiple],
+
select[size] {
+
  height: auto;
+
}
+
input[type="file"]:focus,
+
input[type="radio"]:focus,
+
input[type="checkbox"]:focus {
+
  outline: thin dotted;
+
  outline: 5px auto -webkit-focus-ring-color;
+
  outline-offset: -2px;
+
}
+
output {
+
  display: block;
+
  padding-top: 7px;
+
  font-size: 14px;
+
  line-height: 1.42857143;
+
  color: #555;
+
}
+
.form-control {
+
  display: block;
+
  width: 100%;
+
  height: 34px;
+
  padding: 6px 12px;
+
  font-size: 14px;
+
  line-height: 1.42857143;
+
  color: #555;
+
  background-color: #fff;
+
  background-image: none;
+
  border: 1px solid #ccc;
+
  border-radius: 4px;
+
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+
  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
+
      -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+
          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+
}
+
.form-control:focus {
+
  border-color: #66afe9;
+
  outline: 0;
+
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+
          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+
}
+
.form-control::-moz-placeholder {
+
  color: #999;
+
  opacity: 1;
+
}
+
.form-control:-ms-input-placeholder {
+
  color: #999;
+
}
+
.form-control::-webkit-input-placeholder {
+
  color: #999;
+
}
+
.form-control[disabled],
+
.form-control[readonly],
+
fieldset[disabled] .form-control {
+
  cursor: not-allowed;
+
  background-color: #eee;
+
  opacity: 1;
+
}
+
textarea.form-control {
+
  height: auto;
+
}
+
input[type="search"] {
+
  -webkit-appearance: none;
+
}
+
@media screen and (-webkit-min-device-pixel-ratio: 0) {
+
  input[type="date"],
+
  input[type="time"],
+
  input[type="datetime-local"],
+
  input[type="month"] {
+
    line-height: 34px;
+
  }
+
  input[type="date"].input-sm,
+
  input[type="time"].input-sm,
+
  input[type="datetime-local"].input-sm,
+
  input[type="month"].input-sm,
+
  .input-group-sm input[type="date"],
+
  .input-group-sm input[type="time"],
+
  .input-group-sm input[type="datetime-local"],
+
  .input-group-sm input[type="month"] {
+
    line-height: 30px;
+
  }
+
  input[type="date"].input-lg,
+
  input[type="time"].input-lg,
+
  input[type="datetime-local"].input-lg,
+
  input[type="month"].input-lg,
+
  .input-group-lg input[type="date"],
+
  .input-group-lg input[type="time"],
+
  .input-group-lg input[type="datetime-local"],
+
  .input-group-lg input[type="month"] {
+
    line-height: 46px;
+
  }
+
}
+
.form-group {
+
  margin-bottom: 15px;
+
}
+
.radio,
+
.checkbox {
+
  position: relative;
+
  display: block;
+
  margin-top: 10px;
+
  margin-bottom: 10px;
+
}
+
.radio label,
+
.checkbox label {
+
  min-height: 20px;
+
  padding-left: 20px;
+
  margin-bottom: 0;
+
  font-weight: normal;
+
  cursor: pointer;
+
}
+
.radio input[type="radio"],
+
.radio-inline input[type="radio"],
+
.checkbox input[type="checkbox"],
+
.checkbox-inline input[type="checkbox"] {
+
  position: absolute;
+
  margin-top: 4px \9;
+
  margin-left: -20px;
+
}
+
.radio + .radio,
+
.checkbox + .checkbox {
+
  margin-top: -5px;
+
}
+
.radio-inline,
+
.checkbox-inline {
+
  display: inline-block;
+
  padding-left: 20px;
+
  margin-bottom: 0;
+
  font-weight: normal;
+
  vertical-align: middle;
+
  cursor: pointer;
+
}
+
.radio-inline + .radio-inline,
+
.checkbox-inline + .checkbox-inline {
+
  margin-top: 0;
+
  margin-left: 10px;
+
}
+
input[type="radio"][disabled],
+
input[type="checkbox"][disabled],
+
input[type="radio"].disabled,
+
input[type="checkbox"].disabled,
+
fieldset[disabled] input[type="radio"],
+
fieldset[disabled] input[type="checkbox"] {
+
  cursor: not-allowed;
+
}
+
.radio-inline.disabled,
+
.checkbox-inline.disabled,
+
fieldset[disabled] .radio-inline,
+
fieldset[disabled] .checkbox-inline {
+
  cursor: not-allowed;
+
}
+
.radio.disabled label,
+
.checkbox.disabled label,
+
fieldset[disabled] .radio label,
+
fieldset[disabled] .checkbox label {
+
  cursor: not-allowed;
+
}
+
.form-control-static {
+
  padding-top: 7px;
+
  padding-bottom: 7px;
+
  margin-bottom: 0;
+
}
+
.form-control-static.input-lg,
+
.form-control-static.input-sm {
+
  padding-right: 0;
+
  padding-left: 0;
+
}
+
.input-sm {
+
  height: 30px;
+
  padding: 5px 10px;
+
  font-size: 12px;
+
  line-height: 1.5;
+
  border-radius: 3px;
+
}
+
select.input-sm {
+
  height: 30px;
+
  line-height: 30px;
+
}
+
textarea.input-sm,
+
select[multiple].input-sm {
+
  height: auto;
+
}
+
.form-group-sm .form-control {
+
  height: 30px;
+
  padding: 5px 10px;
+
  font-size: 12px;
+
  line-height: 1.5;
+
  border-radius: 3px;
+
}
+
select.form-group-sm .form-control {
+
  height: 30px;
+
  line-height: 30px;
+
}
+
textarea.form-group-sm .form-control,
+
select[multiple].form-group-sm .form-control {
+
  height: auto;
+
}
+
.form-group-sm .form-control-static {
+
  height: 30px;
+
  padding: 5px 10px;
+
  font-size: 12px;
+
  line-height: 1.5;
+
}
+
.input-lg {
+
  height: 46px;
+
  padding: 10px 16px;
+
  font-size: 18px;
+
  line-height: 1.3333333;
+
  border-radius: 6px;
+
}
+
select.input-lg {
+
  height: 46px;
+
  line-height: 46px;
+
}
+
textarea.input-lg,
+
select[multiple].input-lg {
+
  height: auto;
+
}
+
.form-group-lg .form-control {
+
  height: 46px;
+
  padding: 10px 16px;
+
  font-size: 18px;
+
  line-height: 1.3333333;
+
  border-radius: 6px;
+
}
+
select.form-group-lg .form-control {
+
  height: 46px;
+
  line-height: 46px;
+
}
+
textarea.form-group-lg .form-control,
+
select[multiple].form-group-lg .form-control {
+
  height: auto;
+
}
+
.form-group-lg .form-control-static {
+
  height: 46px;
+
  padding: 10px 16px;
+
  font-size: 18px;
+
  line-height: 1.3333333;
+
}
+
.has-feedback {
+
  position: relative;
+
}
+
.has-feedback .form-control {
+
  padding-right: 42.5px;
+
}
+
.form-control-feedback {
+
  position: absolute;
+
  top: 0;
+
  right: 0;
+
  z-index: 2;
+
  display: block;
+
  width: 34px;
+
  height: 34px;
+
  line-height: 34px;
+
  text-align: center;
+
  pointer-events: none;
+
}
+
.input-lg + .form-control-feedback {
+
  width: 46px;
+
  height: 46px;
+
  line-height: 46px;
+
}
+
.input-sm + .form-control-feedback {
+
  width: 30px;
+
  height: 30px;
+
  line-height: 30px;
+
}
+
.has-success .help-block,
+
.has-success .control-label,
+
.has-success .radio,
+
.has-success .checkbox,
+
.has-success .radio-inline,
+
.has-success .checkbox-inline,
+
.has-success.radio label,
+
.has-success.checkbox label,
+
.has-success.radio-inline label,
+
.has-success.checkbox-inline label {
+
  color: #3c763d;
+
}
+
.has-success .form-control {
+
  border-color: #3c763d;
+
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+
}
+
.has-success .form-control:focus {
+
  border-color: #2b542c;
+
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+
}
+
.has-success .input-group-addon {
+
  color: #3c763d;
+
  background-color: #dff0d8;
+
  border-color: #3c763d;
+
}
+
.has-success .form-control-feedback {
+
  color: #3c763d;
+
}
+
.has-warning .help-block,
+
.has-warning .control-label,
+
.has-warning .radio,
+
.has-warning .checkbox,
+
.has-warning .radio-inline,
+
.has-warning .checkbox-inline,
+
.has-warning.radio label,
+
.has-warning.checkbox label,
+
.has-warning.radio-inline label,
+
.has-warning.checkbox-inline label {
+
  color: #8a6d3b;
+
}
+
.has-warning .form-control {
+
  border-color: #8a6d3b;
+
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+
}
+
.has-warning .form-control:focus {
+
  border-color: #66512c;
+
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+
}
+
.has-warning .input-group-addon {
+
  color: #8a6d3b;
+
  background-color: #fcf8e3;
+
  border-color: #8a6d3b;
+
}
+
.has-warning .form-control-feedback {
+
  color: #8a6d3b;
+
}
+
.has-error .help-block,
+
.has-error .control-label,
+
.has-error .radio,
+
.has-error .checkbox,
+
.has-error .radio-inline,
+
.has-error .checkbox-inline,
+
.has-error.radio label,
+
.has-error.checkbox label,
+
.has-error.radio-inline label,
+
.has-error.checkbox-inline label {
+
  color: #a94442;
+
}
+
.has-error .form-control {
+
  border-color: #a94442;
+
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+
}
+
.has-error .form-control:focus {
+
  border-color: #843534;
+
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+
}
+
.has-error .input-group-addon {
+
  color: #a94442;
+
  background-color: #f2dede;
+
  border-color: #a94442;
+
}
+
.has-error .form-control-feedback {
+
  color: #a94442;
+
}
+
.has-feedback label ~ .form-control-feedback {
+
  top: 25px;
+
}
+
.has-feedback label.sr-only ~ .form-control-feedback {
+
  top: 0;
+
}
+
.help-block {
+
  display: block;
+
  margin-top: 5px;
+
  margin-bottom: 10px;
+
  color: #737373;
+
}
+
@media (min-width: 768px) {
+
  .form-inline .form-group {
+
    display: inline-block;
+
    margin-bottom: 0;
+
    vertical-align: middle;
+
  }
+
  .form-inline .form-control {
+
    display: inline-block;
+
    width: auto;
+
    vertical-align: middle;
+
  }
+
  .form-inline .form-control-static {
+
    display: inline-block;
+
  }
+
  .form-inline .input-group {
+
    display: inline-table;
+
    vertical-align: middle;
+
  }
+
  .form-inline .input-group .input-group-addon,
+
  .form-inline .input-group .input-group-btn,
+
  .form-inline .input-group .form-control {
+
    width: auto;
+
  }
+
  .form-inline .input-group > .form-control {
+
    width: 100%;
+
  }
+
  .form-inline .control-label {
+
    margin-bottom: 0;
+
    vertical-align: middle;
+
  }
+
  .form-inline .radio,
+
  .form-inline .checkbox {
+
    display: inline-block;
+
    margin-top: 0;
+
    margin-bottom: 0;
+
    vertical-align: middle;
+
  }
+
  .form-inline .radio label,
+
  .form-inline .checkbox label {
+
    padding-left: 0;
+
  }
+
  .form-inline .radio input[type="radio"],
+
  .form-inline .checkbox input[type="checkbox"] {
+
    position: relative;
+
    margin-left: 0;
+
  }
+
  .form-inline .has-feedback .form-control-feedback {
+
    top: 0;
+
  }
+
}
+
.form-horizontal .radio,
+
.form-horizontal .checkbox,
+
.form-horizontal .radio-inline,
+
.form-horizontal .checkbox-inline {
+
  padding-top: 7px;
+
  margin-top: 0;
+
  margin-bottom: 0;
+
}
+
.form-horizontal .radio,
+
.form-horizontal .checkbox {
+
  min-height: 27px;
+
}
+
.form-horizontal .form-group {
+
  margin-right: -15px;
+
  margin-left: -15px;
+
}
+
@media (min-width: 768px) {
+
  .form-horizontal .control-label {
+
    padding-top: 7px;
+
    margin-bottom: 0;
+
    text-align: right;
+
  }
+
}
+
.form-horizontal .has-feedback .form-control-feedback {
+
  right: 15px;
+
}
+
@media (min-width: 768px) {
+
  .form-horizontal .form-group-lg .control-label {
+
    padding-top: 14.333333px;
+
  }
+
}
+
@media (min-width: 768px) {
+
  .form-horizontal .form-group-sm .control-label {
+
    padding-top: 6px;
+
  }
+
}
+
.btn {
+
  display: inline-block;
+
  padding: 6px 12px;
+
  margin-bottom: 0;
+
  font-size: 14px;
+
  font-weight: normal;
+
  line-height: 1.42857143;
+
  text-align: center;
+
  white-space: nowrap;
+
  vertical-align: middle;
+
  -ms-touch-action: manipulation;
+
      touch-action: manipulation;
+
  cursor: pointer;
+
  -webkit-user-select: none;
+
    -moz-user-select: none;
+
      -ms-user-select: none;
+
          user-select: none;
+
  background-image: none;
+
  border: 1px solid transparent;
+
  border-radius: 4px;
+
}
+
.btn:focus,
+
.btn:active:focus,
+
.btn.active:focus,
+
.btn.focus,
+
.btn:active.focus,
+
.btn.active.focus {
+
  outline: thin dotted;
+
  outline: 5px auto -webkit-focus-ring-color;
+
  outline-offset: -2px;
+
}
+
.btn:hover,
+
.btn:focus,
+
.btn.focus {
+
  color: #333;
+
  text-decoration: none;
+
}
+
.btn:active,
+
.btn.active {
+
  background-image: none;
+
  outline: 0;
+
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+
          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+
}
+
.btn.disabled,
+
.btn[disabled],
+
fieldset[disabled] .btn {
+
  pointer-events: none;
+
  cursor: not-allowed;
+
  filter: alpha(opacity=65);
+
  -webkit-box-shadow: none;
+
          box-shadow: none;
+
  opacity: .65;
+
}
+
.btn-default {
+
  color: #333;
+
  background-color: #fff;
+
  border-color: #ccc;
+
}
+
.btn-default:hover,
+
.btn-default:focus,
+
.btn-default.focus,
+
.btn-default:active,
+
.btn-default.active,
+
.open > .dropdown-toggle.btn-default {
+
  color: #333;
+
  background-color: #e6e6e6;
+
  border-color: #adadad;
+
}
+
.btn-default:active,
+
.btn-default.active,
+
.open > .dropdown-toggle.btn-default {
+
  background-image: none;
+
}
+
.btn-default.disabled,
+
.btn-default[disabled],
+
fieldset[disabled] .btn-default,
+
.btn-default.disabled:hover,
+
.btn-default[disabled]:hover,
+
fieldset[disabled] .btn-default:hover,
+
.btn-default.disabled:focus,
+
.btn-default[disabled]:focus,
+
fieldset[disabled] .btn-default:focus,
+
.btn-default.disabled.focus,
+
.btn-default[disabled].focus,
+
fieldset[disabled] .btn-default.focus,
+
.btn-default.disabled:active,
+
.btn-default[disabled]:active,
+
fieldset[disabled] .btn-default:active,
+
.btn-default.disabled.active,
+
.btn-default[disabled].active,
+
fieldset[disabled] .btn-default.active {
+
  background-color: #fff;
+
  border-color: #ccc;
+
}
+
.btn-default .badge {
+
  color: #fff;
+
  background-color: #333;
+
}
+
.btn-primary {
+
  color: #fff;
+
  background-color: #337ab7;
+
  border-color: #2e6da4;
+
}
+
.btn-primary:hover,
+
.btn-primary:focus,
+
.btn-primary.focus,
+
.btn-primary:active,
+
.btn-primary.active,
+
.open > .dropdown-toggle.btn-primary {
+
  color: #fff;
+
  background-color: #286090;
+
  border-color: #204d74;
+
}
+
.btn-primary:active,
+
.btn-primary.active,
+
.open > .dropdown-toggle.btn-primary {
+
  background-image: none;
+
}
+
.btn-primary.disabled,
+
.btn-primary[disabled],
+
fieldset[disabled] .btn-primary,
+
.btn-primary.disabled:hover,
+
.btn-primary[disabled]:hover,
+
fieldset[disabled] .btn-primary:hover,
+
.btn-primary.disabled:focus,
+
.btn-primary[disabled]:focus,
+
fieldset[disabled] .btn-primary:focus,
+
.btn-primary.disabled.focus,
+
.btn-primary[disabled].focus,
+
fieldset[disabled] .btn-primary.focus,
+
.btn-primary.disabled:active,
+
.btn-primary[disabled]:active,
+
fieldset[disabled] .btn-primary:active,
+
.btn-primary.disabled.active,
+
.btn-primary[disabled].active,
+
fieldset[disabled] .btn-primary.active {
+
  background-color: #337ab7;
+
  border-color: #2e6da4;
+
}
+
.btn-primary .badge {
+
  color: #337ab7;
+
  background-color: #fff;
+
}
+
.btn-success {
+
  color: #fff;
+
  background-color: #5cb85c;
+
  border-color: #4cae4c;
+
}
+
.btn-success:hover,
+
.btn-success:focus,
+
.btn-success.focus,
+
.btn-success:active,
+
.btn-success.active,
+
.open > .dropdown-toggle.btn-success {
+
  color: #fff;
+
  background-color: #449d44;
+
  border-color: #398439;
+
}
+
.btn-success:active,
+
.btn-success.active,
+
.open > .dropdown-toggle.btn-success {
+
  background-image: none;
+
}
+
.btn-success.disabled,
+
.btn-success[disabled],
+
fieldset[disabled] .btn-success,
+
.btn-success.disabled:hover,
+
.btn-success[disabled]:hover,
+
fieldset[disabled] .btn-success:hover,
+
.btn-success.disabled:focus,
+
.btn-success[disabled]:focus,
+
fieldset[disabled] .btn-success:focus,
+
.btn-success.disabled.focus,
+
.btn-success[disabled].focus,
+
fieldset[disabled] .btn-success.focus,
+
.btn-success.disabled:active,
+
.btn-success[disabled]:active,
+
fieldset[disabled] .btn-success:active,
+
.btn-success.disabled.active,
+
.btn-success[disabled].active,
+
fieldset[disabled] .btn-success.active {
+
  background-color: #5cb85c;
+
  border-color: #4cae4c;
+
}
+
.btn-success .badge {
+
  color: #5cb85c;
+
  background-color: #fff;
+
}
+
.btn-info {
+
  color: #fff;
+
  background-color: #5bc0de;
+
  border-color: #46b8da;
+
}
+
.btn-info:hover,
+
.btn-info:focus,
+
.btn-info.focus,
+
.btn-info:active,
+
.btn-info.active,
+
.open > .dropdown-toggle.btn-info {
+
  color: #fff;
+
  background-color: #31b0d5;
+
  border-color: #269abc;
+
}
+
.btn-info:active,
+
.btn-info.active,
+
.open > .dropdown-toggle.btn-info {
+
  background-image: none;
+
}
+
.btn-info.disabled,
+
.btn-info[disabled],
+
fieldset[disabled] .btn-info,
+
.btn-info.disabled:hover,
+
.btn-info[disabled]:hover,
+
fieldset[disabled] .btn-info:hover,
+
.btn-info.disabled:focus,
+
.btn-info[disabled]:focus,
+
fieldset[disabled] .btn-info:focus,
+
.btn-info.disabled.focus,
+
.btn-info[disabled].focus,
+
fieldset[disabled] .btn-info.focus,
+
.btn-info.disabled:active,
+
.btn-info[disabled]:active,
+
fieldset[disabled] .btn-info:active,
+
.btn-info.disabled.active,
+
.btn-info[disabled].active,
+
fieldset[disabled] .btn-info.active {
+
  background-color: #5bc0de;
+
  border-color: #46b8da;
+
}
+
.btn-info .badge {
+
  color: #5bc0de;
+
  background-color: #fff;
+
}
+
.btn-warning {
+
  color: #fff;
+
  background-color: #f0ad4e;
+
  border-color: #eea236;
+
}
+
.btn-warning:hover,
+
.btn-warning:focus,
+
.btn-warning.focus,
+
.btn-warning:active,
+
.btn-warning.active,
+
.open > .dropdown-toggle.btn-warning {
+
  color: #fff;
+
  background-color: #ec971f;
+
  border-color: #d58512;
+
}
+
.btn-warning:active,
+
.btn-warning.active,
+
.open > .dropdown-toggle.btn-warning {
+
  background-image: none;
+
}
+
.btn-warning.disabled,
+
.btn-warning[disabled],
+
fieldset[disabled] .btn-warning,
+
.btn-warning.disabled:hover,
+
.btn-warning[disabled]:hover,
+
fieldset[disabled] .btn-warning:hover,
+
.btn-warning.disabled:focus,
+
.btn-warning[disabled]:focus,
+
fieldset[disabled] .btn-warning:focus,
+
.btn-warning.disabled.focus,
+
.btn-warning[disabled].focus,
+
fieldset[disabled] .btn-warning.focus,
+
.btn-warning.disabled:active,
+
.btn-warning[disabled]:active,
+
fieldset[disabled] .btn-warning:active,
+
.btn-warning.disabled.active,
+
.btn-warning[disabled].active,
+
fieldset[disabled] .btn-warning.active {
+
  background-color: #f0ad4e;
+
  border-color: #eea236;
+
}
+
.btn-warning .badge {
+
  color: #f0ad4e;
+
  background-color: #fff;
+
}
+
.btn-danger {
+
  color: #fff;
+
  background-color: #d9534f;
+
  border-color: #d43f3a;
+
}
+
.btn-danger:hover,
+
.btn-danger:focus,
+
.btn-danger.focus,
+
.btn-danger:active,
+
.btn-danger.active,
+
.open > .dropdown-toggle.btn-danger {
+
  color: #fff;
+
  background-color: #c9302c;
+
  border-color: #ac2925;
+
}
+
.btn-danger:active,
+
.btn-danger.active,
+
.open > .dropdown-toggle.btn-danger {
+
  background-image: none;
+
}
+
.btn-danger.disabled,
+
.btn-danger[disabled],
+
fieldset[disabled] .btn-danger,
+
.btn-danger.disabled:hover,
+
.btn-danger[disabled]:hover,
+
fieldset[disabled] .btn-danger:hover,
+
.btn-danger.disabled:focus,
+
.btn-danger[disabled]:focus,
+
fieldset[disabled] .btn-danger:focus,
+
.btn-danger.disabled.focus,
+
.btn-danger[disabled].focus,
+
fieldset[disabled] .btn-danger.focus,
+
.btn-danger.disabled:active,
+
.btn-danger[disabled]:active,
+
fieldset[disabled] .btn-danger:active,
+
.btn-danger.disabled.active,
+
.btn-danger[disabled].active,
+
fieldset[disabled] .btn-danger.active {
+
  background-color: #d9534f;
+
  border-color: #d43f3a;
+
}
+
.btn-danger .badge {
+
  color: #d9534f;
+
  background-color: #fff;
+
}
+
.btn-link {
+
  font-weight: normal;
+
  color: #337ab7;
+
  border-radius: 0;
+
}
+
.btn-link,
+
.btn-link:active,
+
.btn-link.active,
+
.btn-link[disabled],
+
fieldset[disabled] .btn-link {
+
  background-color: transparent;
+
  -webkit-box-shadow: none;
+
          box-shadow: none;
+
}
+
.btn-link,
+
.btn-link:hover,
+
.btn-link:focus,
+
.btn-link:active {
+
  border-color: transparent;
+
}
+
.btn-link:hover,
+
.btn-link:focus {
+
  color: #23527c;
+
  text-decoration: underline;
+
  background-color: transparent;
+
}
+
.btn-link[disabled]:hover,
+
fieldset[disabled] .btn-link:hover,
+
.btn-link[disabled]:focus,
+
fieldset[disabled] .btn-link:focus {
+
  color: #777;
+
  text-decoration: none;
+
}
+
.btn-lg,
+
.btn-group-lg > .btn {
+
  padding: 10px 16px;
+
  font-size: 18px;
+
  line-height: 1.3333333;
+
  border-radius: 6px;
+
}
+
.btn-sm,
+
.btn-group-sm > .btn {
+
  padding: 5px 10px;
+
  font-size: 12px;
+
  line-height: 1.5;
+
  border-radius: 3px;
+
}
+
.btn-xs,
+
.btn-group-xs > .btn {
+
  padding: 1px 5px;
+
  font-size: 12px;
+
  line-height: 1.5;
+
  border-radius: 3px;
+
}
+
.btn-block {
+
  display: block;
+
  width: 100%;
+
}
+
.btn-block + .btn-block {
+
  margin-top: 5px;
+
}
+
input[type="submit"].btn-block,
+
input[type="reset"].btn-block,
+
input[type="button"].btn-block {
+
  width: 100%;
+
}
+
.fade {
+
  opacity: 0;
+
  -webkit-transition: opacity .15s linear;
+
      -o-transition: opacity .15s linear;
+
          transition: opacity .15s linear;
+
}
+
.fade.in {
+
  opacity: 1;
+
}
+
.collapse {
+
  display: none;
+
  visibility: hidden;
+
}
+
.collapse.in {
+
  display: block;
+
  visibility: visible;
+
}
+
tr.collapse.in {
+
  display: table-row;
+
}
+
tbody.collapse.in {
+
  display: table-row-group;
+
}
+
.collapsing {
+
  position: relative;
+
  height: 0;
+
  overflow: hidden;
+
  -webkit-transition-timing-function: ease;
+
      -o-transition-timing-function: ease;
+
          transition-timing-function: ease;
+
  -webkit-transition-duration: .35s;
+
      -o-transition-duration: .35s;
+
          transition-duration: .35s;
+
  -webkit-transition-property: height, visibility;
+
      -o-transition-property: height, visibility;
+
          transition-property: height, visibility;
+
}
+
.caret {
+
  display: inline-block;
+
  width: 0;
+
  height: 0;
+
  margin-left: 2px;
+
  vertical-align: middle;
+
  border-top: 4px solid;
+
  border-right: 4px solid transparent;
+
  border-left: 4px solid transparent;
+
}
+
.dropup,
+
.dropdown {
+
  position: relative;
+
}
+
.dropdown-toggle:focus {
+
  outline: 0;
+
}
+
.dropdown-menu {
+
  position: absolute;
+
  top: 100%;
+
  left: 0;
+
  z-index: 1000;
+
  display: none;
+
  float: left;
+
  min-width: 160px;
+
  padding: 5px 0;
+
  margin: 2px 0 0;
+
  font-size: 14px;
+
  text-align: left;
+
  list-style: none;
+
  background-color: #fff;
+
  -webkit-background-clip: padding-box;
+
          background-clip: padding-box;
+
  border: 1px solid #ccc;
+
  border: 1px solid rgba(0, 0, 0, .15);
+
  border-radius: 4px;
+
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+
          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+
}
+
.dropdown-menu.pull-right {
+
  right: 0;
+
  left: auto;
+
}
+
.dropdown-menu .divider {
+
  height: 1px;
+
  margin: 9px 0;
+
  overflow: hidden;
+
  background-color: #e5e5e5;
+
}
+
.dropdown-menu > li > a {
+
  display: block;
+
  padding: 3px 20px;
+
  clear: both;
+
  font-weight: normal;
+
  line-height: 1.42857143;
+
  color: #333;
+
  white-space: nowrap;
+
}
+
.dropdown-menu > li > a:hover,
+
.dropdown-menu > li > a:focus {
+
  color: #262626;
+
  text-decoration: none;
+
  background-color: #f5f5f5;
+
}
+
.dropdown-menu > .active > a,
+
.dropdown-menu > .active > a:hover,
+
.dropdown-menu > .active > a:focus {
+
  color: #fff;
+
  text-decoration: none;
+
  background-color: #337ab7;
+
  outline: 0;
+
}
+
.dropdown-menu > .disabled > a,
+
.dropdown-menu > .disabled > a:hover,
+
.dropdown-menu > .disabled > a:focus {
+
  color: #777;
+
}
+
.dropdown-menu > .disabled > a:hover,
+
.dropdown-menu > .disabled > a:focus {
+
  text-decoration: none;
+
  cursor: not-allowed;
+
  background-color: transparent;
+
  background-image: none;
+
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+
}
+
.open > .dropdown-menu {
+
  display: block;
+
}
+
.open > a {
+
  outline: 0;
+
}
+
.dropdown-menu-right {
+
  right: 0;
+
  left: auto;
+
}
+
.dropdown-menu-left {
+
  right: auto;
+
  left: 0;
+
}
+
.dropdown-header {
+
  display: block;
+
  padding: 3px 20px;
+
  font-size: 12px;
+
  line-height: 1.42857143;
+
  color: #777;
+
  white-space: nowrap;
+
}
+
.dropdown-backdrop {
+
  position: fixed;
+
  top: 0;
+
  right: 0;
+
  bottom: 0;
+
  left: 0;
+
  z-index: 990;
+
}
+
.pull-right > .dropdown-menu {
+
  right: 0;
+
  left: auto;
+
}
+
.dropup .caret,
+
.navbar-fixed-bottom .dropdown .caret {
+
  content: "";
+
  border-top: 0;
+
  border-bottom: 4px solid;
+
}
+
.dropup .dropdown-menu,
+
.navbar-fixed-bottom .dropdown .dropdown-menu {
+
  top: auto;
+
  bottom: 100%;
+
  margin-bottom: 2px;
+
}
+
@media (min-width: 768px) {
+
  .navbar-right .dropdown-menu {
+
    right: 0;
+
    left: auto;
+
  }
+
  .navbar-right .dropdown-menu-left {
+
    right: auto;
+
    left: 0;
+
  }
+
}
+
.btn-group,
+
.btn-group-vertical {
+
  position: relative;
+
  display: inline-block;
+
  vertical-align: middle;
+
}
+
.btn-group > .btn,
+
.btn-group-vertical > .btn {
+
  position: relative;
+
  float: left;
+
}
+
.btn-group > .btn:hover,
+
.btn-group-vertical > .btn:hover,
+
.btn-group > .btn:focus,
+
.btn-group-vertical > .btn:focus,
+
.btn-group > .btn:active,
+
.btn-group-vertical > .btn:active,
+
.btn-group > .btn.active,
+
.btn-group-vertical > .btn.active {
+
  z-index: 2;
+
}
+
.btn-group .btn + .btn,
+
.btn-group .btn + .btn-group,
+
.btn-group .btn-group + .btn,
+
.btn-group .btn-group + .btn-group {
+
  margin-left: -1px;
+
}
+
.btn-toolbar {
+
  margin-left: -5px;
+
}
+
.btn-toolbar .btn-group,
+
.btn-toolbar .input-group {
+
  float: left;
+
}
+
.btn-toolbar > .btn,
+
.btn-toolbar > .btn-group,
+
.btn-toolbar > .input-group {
+
  margin-left: 5px;
+
}
+
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+
  border-radius: 0;
+
}
+
.btn-group > .btn:first-child {
+
  margin-left: 0;
+
}
+
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+
  border-top-right-radius: 0;
+
  border-bottom-right-radius: 0;
+
}
+
.btn-group > .btn:last-child:not(:first-child),
+
.btn-group > .dropdown-toggle:not(:first-child) {
+
  border-top-left-radius: 0;
+
  border-bottom-left-radius: 0;
+
}
+
.btn-group > .btn-group {
+
  float: left;
+
}
+
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+
  border-radius: 0;
+
}
+
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+
  border-top-right-radius: 0;
+
  border-bottom-right-radius: 0;
+
}
+
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+
  border-top-left-radius: 0;
+
  border-bottom-left-radius: 0;
+
}
+
.btn-group .dropdown-toggle:active,
+
.btn-group.open .dropdown-toggle {
+
  outline: 0;
+
}
+
.btn-group > .btn + .dropdown-toggle {
+
  padding-right: 8px;
+
  padding-left: 8px;
+
}
+
.btn-group > .btn-lg + .dropdown-toggle {
+
  padding-right: 12px;
+
  padding-left: 12px;
+
}
+
.btn-group.open .dropdown-toggle {
+
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+
          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+
}
+
.btn-group.open .dropdown-toggle.btn-link {
+
  -webkit-box-shadow: none;
+
          box-shadow: none;
+
}
+
.btn .caret {
+
  margin-left: 0;
+
}
+
.btn-lg .caret {
+
  border-width: 5px 5px 0;
+
  border-bottom-width: 0;
+
}
+
.dropup .btn-lg .caret {
+
  border-width: 0 5px 5px;
+
}
+
.btn-group-vertical > .btn,
+
.btn-group-vertical > .btn-group,
+
.btn-group-vertical > .btn-group > .btn {
+
  display: block;
+
  float: none;
+
  width: 100%;
+
  max-width: 100%;
+
}
+
.btn-group-vertical > .btn-group > .btn {
+
  float: none;
+
}
+
.btn-group-vertical > .btn + .btn,
+
.btn-group-vertical > .btn + .btn-group,
+
.btn-group-vertical > .btn-group + .btn,
+
.btn-group-vertical > .btn-group + .btn-group {
+
  margin-top: -1px;
+
  margin-left: 0;
+
}
+
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+
  border-radius: 0;
+
}
+
.btn-group-vertical > .btn:first-child:not(:last-child) {
+
  border-top-right-radius: 4px;
+
  border-bottom-right-radius: 0;
+
  border-bottom-left-radius: 0;
+
}
+
.btn-group-vertical > .btn:last-child:not(:first-child) {
+
  border-top-left-radius: 0;
+
  border-top-right-radius: 0;
+
  border-bottom-left-radius: 4px;
+
}
+
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+
  border-radius: 0;
+
}
+
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+
  border-bottom-right-radius: 0;
+
  border-bottom-left-radius: 0;
+
}
+
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+
  border-top-left-radius: 0;
+
  border-top-right-radius: 0;
+
}
+
.btn-group-justified {
+
  display: table;
+
  width: 100%;
+
  table-layout: fixed;
+
  border-collapse: separate;
+
}
+
.btn-group-justified > .btn,
+
.btn-group-justified > .btn-group {
+
  display: table-cell;
+
  float: none;
+
  width: 1%;
+
}
+
.btn-group-justified > .btn-group .btn {
+
  width: 100%;
+
}
+
.btn-group-justified > .btn-group .dropdown-menu {
+
  left: auto;
+
}
+
[data-toggle="buttons"] > .btn input[type="radio"],
+
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+
[data-toggle="buttons"] > .btn input[type="checkbox"],
+
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+
  position: absolute;
+
  clip: rect(0, 0, 0, 0);
+
  pointer-events: none;
+
}
+
.input-group {
+
  position: relative;
+
  display: table;
+
  border-collapse: separate;
+
}
+
.input-group[class*="col-"] {
+
  float: none;
+
  padding-right: 0;
+
  padding-left: 0;
+
}
+
.input-group .form-control {
+
  position: relative;
+
  z-index: 2;
+
  float: left;
+
  width: 100%;
+
  margin-bottom: 0;
+
}
+
.input-group-lg > .form-control,
+
.input-group-lg > .input-group-addon,
+
.input-group-lg > .input-group-btn > .btn {
+
  height: 46px;
+
  padding: 10px 16px;
+
  font-size: 18px;
+
  line-height: 1.3333333;
+
  border-radius: 6px;
+
}
+
select.input-group-lg > .form-control,
+
select.input-group-lg > .input-group-addon,
+
select.input-group-lg > .input-group-btn > .btn {
+
  height: 46px;
+
  line-height: 46px;
+
}
+
textarea.input-group-lg > .form-control,
+
textarea.input-group-lg > .input-group-addon,
+
textarea.input-group-lg > .input-group-btn > .btn,
+
select[multiple].input-group-lg > .form-control,
+
select[multiple].input-group-lg > .input-group-addon,
+
select[multiple].input-group-lg > .input-group-btn > .btn {
+
  height: auto;
+
}
+
.input-group-sm > .form-control,
+
.input-group-sm > .input-group-addon,
+
.input-group-sm > .input-group-btn > .btn {
+
  height: 30px;
+
  padding: 5px 10px;
+
  font-size: 12px;
+
  line-height: 1.5;
+
  border-radius: 3px;
+
}
+
select.input-group-sm > .form-control,
+
select.input-group-sm > .input-group-addon,
+
select.input-group-sm > .input-group-btn > .btn {
+
  height: 30px;
+
  line-height: 30px;
+
}
+
textarea.input-group-sm > .form-control,
+
textarea.input-group-sm > .input-group-addon,
+
textarea.input-group-sm > .input-group-btn > .btn,
+
select[multiple].input-group-sm > .form-control,
+
select[multiple].input-group-sm > .input-group-addon,
+
select[multiple].input-group-sm > .input-group-btn > .btn {
+
  height: auto;
+
}
+
.input-group-addon,
+
.input-group-btn,
+
.input-group .form-control {
+
  display: table-cell;
+
}
+
.input-group-addon:not(:first-child):not(:last-child),
+
.input-group-btn:not(:first-child):not(:last-child),
+
.input-group .form-control:not(:first-child):not(:last-child) {
+
  border-radius: 0;
+
}
+
.input-group-addon,
+
.input-group-btn {
+
  width: 1%;
+
  white-space: nowrap;
+
  vertical-align: middle;
+
}
+
.input-group-addon {
+
  padding: 6px 12px;
+
  font-size: 14px;
+
  font-weight: normal;
+
  line-height: 1;
+
  color: #555;
+
  text-align: center;
+
  background-color: #eee;
+
  border: 1px solid #ccc;
+
  border-radius: 4px;
+
}
+
.input-group-addon.input-sm {
+
  padding: 5px 10px;
+
  font-size: 12px;
+
  border-radius: 3px;
+
}
+
.input-group-addon.input-lg {
+
  padding: 10px 16px;
+
  font-size: 18px;
+
  border-radius: 6px;
+
}
+
.input-group-addon input[type="radio"],
+
.input-group-addon input[type="checkbox"] {
+
  margin-top: 0;
+
}
+
.input-group .form-control:first-child,
+
.input-group-addon:first-child,
+
.input-group-btn:first-child > .btn,
+
.input-group-btn:first-child > .btn-group > .btn,
+
.input-group-btn:first-child > .dropdown-toggle,
+
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+
  border-top-right-radius: 0;
+
  border-bottom-right-radius: 0;
+
}
+
.input-group-addon:first-child {
+
  border-right: 0;
+
}
+
.input-group .form-control:last-child,
+
.input-group-addon:last-child,
+
.input-group-btn:last-child > .btn,
+
.input-group-btn:last-child > .btn-group > .btn,
+
.input-group-btn:last-child > .dropdown-toggle,
+
.input-group-btn:first-child > .btn:not(:first-child),
+
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+
  border-top-left-radius: 0;
+
  border-bottom-left-radius: 0;
+
}
+
.input-group-addon:last-child {
+
  border-left: 0;
+
}
+
.input-group-btn {
+
  position: relative;
+
  font-size: 0;
+
  white-space: nowrap;
+
}
+
.input-group-btn > .btn {
+
  position: relative;
+
}
+
.input-group-btn > .btn + .btn {
+
  margin-left: -1px;
+
}
+
.input-group-btn > .btn:hover,
+
.input-group-btn > .btn:focus,
+
.input-group-btn > .btn:active {
+
  z-index: 2;
+
}
+
.input-group-btn:first-child > .btn,
+
.input-group-btn:first-child > .btn-group {
+
  margin-right: -1px;
+
}
+
.input-group-btn:last-child > .btn,
+
.input-group-btn:last-child > .btn-group {
+
  margin-left: -1px;
+
}
+
.nav {
+
  padding-left: 0;
+
  margin-bottom: 0;
+
  list-style: none;
+
}
+
.nav > li {
+
  position: relative;
+
  display: block;
+
}
+
.nav > li > a {
+
  position: relative;
+
  display: block;
+
  padding: 10px 15px;
+
}
+
.nav > li > a:hover,
+
.nav > li > a:focus {
+
  text-decoration: none;
+
  background-color: #eee;
+
}
+
.nav > li.disabled > a {
+
  color: #777;
+
}
+
.nav > li.disabled > a:hover,
+
.nav > li.disabled > a:focus {
+
  color: #777;
+
  text-decoration: none;
+
  cursor: not-allowed;
+
  background-color: transparent;
+
}
+
.nav .open > a,
+
.nav .open > a:hover,
+
.nav .open > a:focus {
+
  background-color: #eee;
+
  border-color: #337ab7;
+
}
+
.nav .nav-divider {
+
  height: 1px;
+
  margin: 9px 0;
+
  overflow: hidden;
+
  background-color: #e5e5e5;
+
}
+
.nav > li > a > img {
+
  max-width: none;
+
}
+
.nav-tabs {
+
  border-bottom: 1px solid #ddd;
+
}
+
.nav-tabs > li {
+
  float: left;
+
  margin-bottom: -1px;
+
}
+
.nav-tabs > li > a {
+
  margin-right: 2px;
+
  line-height: 1.42857143;
+
  border: 1px solid transparent;
+
  border-radius: 4px 4px 0 0;
+
}
+
.nav-tabs > li > a:hover {
+
  border-color: #eee #eee #ddd;
+
}
+
.nav-tabs > li.active > a,
+
.nav-tabs > li.active > a:hover,
+
.nav-tabs > li.active > a:focus {
+
  color: #555;
+
  cursor: default;
+
  background-color: #fff;
+
  border: 1px solid #ddd;
+
  border-bottom-color: transparent;
+
}
+
.nav-tabs.nav-justified {
+
  width: 100%;
+
  border-bottom: 0;
+
}
+
.nav-tabs.nav-justified > li {
+
  float: none;
+
}
+
.nav-tabs.nav-justified > li > a {
+
  margin-bottom: 5px;
+
  text-align: center;
+
}
+
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+
  top: auto;
+
  left: auto;
+
}
+
@media (min-width: 768px) {
+
  .nav-tabs.nav-justified > li {
+
    display: table-cell;
+
    width: 1%;
+
  }
+
  .nav-tabs.nav-justified > li > a {
+
    margin-bottom: 0;
+
  }
+
}
+
.nav-tabs.nav-justified > li > a {
+
  margin-right: 0;
+
  border-radius: 4px;
+
}
+
.nav-tabs.nav-justified > .active > a,
+
.nav-tabs.nav-justified > .active > a:hover,
+
.nav-tabs.nav-justified > .active > a:focus {
+
  border: 1px solid #ddd;
+
}
+
@media (min-width: 768px) {
+
  .nav-tabs.nav-justified > li > a {
+
    border-bottom: 1px solid #ddd;
+
    border-radius: 4px 4px 0 0;
+
  }
+
  .nav-tabs.nav-justified > .active > a,
+
  .nav-tabs.nav-justified > .active > a:hover,
+
  .nav-tabs.nav-justified > .active > a:focus {
+
    border-bottom-color: #fff;
+
  }
+
}
+
.nav-pills > li {
+
  float: left;
+
}
+
.nav-pills > li > a {
+
  border-radius: 4px;
+
}
+
.nav-pills > li + li {
+
  margin-left: 2px;
+
}
+
.nav-pills > li.active > a,
+
.nav-pills > li.active > a:hover,
+
.nav-pills > li.active > a:focus {
+
  color: #fff;
+
  background-color: #337ab7;
+
}
+
.nav-stacked > li {
+
  float: none;
+
}
+
.nav-stacked > li + li {
+
  margin-top: 2px;
+
  margin-left: 0;
+
}
+
.nav-justified {
+
  width: 100%;
+
}
+
.nav-justified > li {
+
  float: none;
+
}
+
.nav-justified > li > a {
+
  margin-bottom: 5px;
+
  text-align: center;
+
}
+
.nav-justified > .dropdown .dropdown-menu {
+
  top: auto;
+
  left: auto;
+
}
+
@media (min-width: 768px) {
+
  .nav-justified > li {
+
    display: table-cell;
+
    width: 1%;
+
  }
+
  .nav-justified > li > a {
+
    margin-bottom: 0;
+
  }
+
}
+
.nav-tabs-justified {
+
  border-bottom: 0;
+
}
+
.nav-tabs-justified > li > a {
+
  margin-right: 0;
+
  border-radius: 4px;
+
}
+
.nav-tabs-justified > .active > a,
+
.nav-tabs-justified > .active > a:hover,
+
.nav-tabs-justified > .active > a:focus {
+
  border: 1px solid #ddd;
+
}
+
@media (min-width: 768px) {
+
  .nav-tabs-justified > li > a {
+
    border-bottom: 1px solid #ddd;
+
    border-radius: 4px 4px 0 0;
+
  }
+
  .nav-tabs-justified > .active > a,
+
  .nav-tabs-justified > .active > a:hover,
+
  .nav-tabs-justified > .active > a:focus {
+
    border-bottom-color: #fff;
+
  }
+
}
+
.tab-content > .tab-pane {
+
  display: none;
+
  visibility: hidden;
+
}
+
.tab-content > .active {
+
  display: block;
+
  visibility: visible;
+
}
+
.nav-tabs .dropdown-menu {
+
  margin-top: -1px;
+
  border-top-left-radius: 0;
+
  border-top-right-radius: 0;
+
}
+
.navbar {
+
  position: relative;
+
  min-height: 50px;
+
  margin-bottom: 20px;
+
  border: 1px solid transparent;
+
}
+
@media (min-width: 768px) {
+
  .navbar {
+
    border-radius: 4px;
+
  }
+
}
+
@media (min-width: 768px) {
+
  .navbar-header {
+
    float: left;
+
  }
+
}
+
.navbar-collapse {
+
  padding-right: 15px;
+
  padding-left: 15px;
+
  overflow-x: visible;
+
  -webkit-overflow-scrolling: touch;
+
  border-top: 1px solid transparent;
+
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+
}
+
.navbar-collapse.in {
+
  overflow-y: auto;
+
}
+
@media (min-width: 768px) {
+
  .navbar-collapse {
+
    width: auto;
+
    border-top: 0;
+
    -webkit-box-shadow: none;
+
            box-shadow: none;
+
  }
+
  .navbar-collapse.collapse {
+
    display: block !important;
+
    height: auto !important;
+
    padding-bottom: 0;
+
    overflow: visible !important;
+
    visibility: visible !important;
+
  }
+
  .navbar-collapse.in {
+
    overflow-y: visible;
+
  }
+
  .navbar-fixed-top .navbar-collapse,
+
  .navbar-static-top .navbar-collapse,
+
  .navbar-fixed-bottom .navbar-collapse {
+
    padding-right: 0;
+
    padding-left: 0;
+
  }
+
}
+
.navbar-fixed-top .navbar-collapse,
+
.navbar-fixed-bottom .navbar-collapse {
+
  max-height: 340px;
+
}
+
@media (max-device-width: 480px) and (orientation: landscape) {
+
  .navbar-fixed-top .navbar-collapse,
+
  .navbar-fixed-bottom .navbar-collapse {
+
    max-height: 200px;
+
  }
+
}
+
.container > .navbar-header,
+
.container-fluid > .navbar-header,
+
.container > .navbar-collapse,
+
.container-fluid > .navbar-collapse {
+
  margin-right: -15px;
+
  margin-left: -15px;
+
}
+
@media (min-width: 768px) {
+
  .container > .navbar-header,
+
  .container-fluid > .navbar-header,
+
  .container > .navbar-collapse,
+
  .container-fluid > .navbar-collapse {
+
    margin-right: 0;
+
    margin-left: 0;
+
  }
+
}
+
.navbar-static-top {
+
  z-index: 1000;
+
  border-width: 0 0 1px;
+
}
+
@media (min-width: 768px) {
+
  .navbar-static-top {
+
    border-radius: 0;
+
  }
+
}
+
.navbar-fixed-top,
+
.navbar-fixed-bottom {
+
  position: fixed;
+
  right: 0;
+
  left: 0;
+
  z-index: 1030;
+
}
+
@media (min-width: 768px) {
+
  .navbar-fixed-top,
+
  .navbar-fixed-bottom {
+
    border-radius: 0;
+
  }
+
}
+
.navbar-fixed-top {
+
  top: 0;
+
  border-width: 0 0 1px;
+
}
+
.navbar-fixed-bottom {
+
  bottom: 0;
+
  margin-bottom: 0;
+
  border-width: 1px 0 0;
+
}
+
.navbar-brand {
+
  float: left;
+
  height: 50px;
+
  padding: 15px 15px;
+
  font-size: 18px;
+
  line-height: 20px;
+
}
+
.navbar-brand:hover,
+
.navbar-brand:focus {
+
  text-decoration: none;
+
}
+
.navbar-brand > img {
+
  display: block;
+
}
+
@media (min-width: 768px) {
+
  .navbar > .container .navbar-brand,
+
  .navbar > .container-fluid .navbar-brand {
+
    margin-left: -15px;
+
  }
+
}
+
.navbar-toggle {
+
  position: relative;
+
  float: right;
+
  padding: 9px 10px;
+
  margin-top: 8px;
+
  margin-right: 15px;
+
  margin-bottom: 8px;
+
  background-color: transparent;
+
  background-image: none;
+
  border: 1px solid transparent;
+
  border-radius: 4px;
+
}
+
.navbar-toggle:focus {
+
  outline: 0;
+
}
+
.navbar-toggle .icon-bar {
+
  display: block;
+
  width: 22px;
+
  height: 2px;
+
  border-radius: 1px;
+
}
+
.navbar-toggle .icon-bar + .icon-bar {
+
  margin-top: 4px;
+
}
+
@media (min-width: 768px) {
+
  .navbar-toggle {
+
    display: none;
+
  }
+
}
+
.navbar-nav {
+
  margin: 7.5px -15px;
+
}
+
.navbar-nav > li > a {
+
  padding-top: 10px;
+
  padding-bottom: 10px;
+
  line-height: 20px;
+
}
+
@media (max-width: 767px) {
+
  .navbar-nav .open .dropdown-menu {
+
    position: static;
+
    float: none;
+
    width: auto;
+
    margin-top: 0;
+
    background-color: transparent;
+
    border: 0;
+
    -webkit-box-shadow: none;
+
            box-shadow: none;
+
  }
+
  .navbar-nav .open .dropdown-menu > li > a,
+
  .navbar-nav .open .dropdown-menu .dropdown-header {
+
    padding: 5px 15px 5px 25px;
+
  }
+
  .navbar-nav .open .dropdown-menu > li > a {
+
    line-height: 20px;
+
  }
+
  .navbar-nav .open .dropdown-menu > li > a:hover,
+
  .navbar-nav .open .dropdown-menu > li > a:focus {
+
    background-image: none;
+
  }
+
}
+
@media (min-width: 768px) {
+
  .navbar-nav {
+
    float: left;
+
    margin: 0;
+
  }
+
  .navbar-nav > li {
+
    float: left;
+
  }
+
  .navbar-nav > li > a {
+
    padding-top: 15px;
+
    padding-bottom: 15px;
+
  }
+
}
+
.navbar-form {
+
  padding: 10px 15px;
+
  margin-top: 8px;
+
  margin-right: -15px;
+
  margin-bottom: 8px;
+
  margin-left: -15px;
+
  border-top: 1px solid transparent;
+
  border-bottom: 1px solid transparent;
+
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+
}
+
@media (min-width: 768px) {
+
  .navbar-form .form-group {
+
    display: inline-block;
+
    margin-bottom: 0;
+
    vertical-align: middle;
+
  }
+
  .navbar-form .form-control {
+
    display: inline-block;
+
    width: auto;
+
    vertical-align: middle;
+
  }
+
  .navbar-form .form-control-static {
+
    display: inline-block;
+
  }
+
  .navbar-form .input-group {
+
    display: inline-table;
+
    vertical-align: middle;
+
  }
+
  .navbar-form .input-group .input-group-addon,
+
  .navbar-form .input-group .input-group-btn,
+
  .navbar-form .input-group .form-control {
+
    width: auto;
+
  }
+
  .navbar-form .input-group > .form-control {
+
    width: 100%;
+
  }
+
  .navbar-form .control-label {
+
    margin-bottom: 0;
+
    vertical-align: middle;
+
  }
+
  .navbar-form .radio,
+
  .navbar-form .checkbox {
+
    display: inline-block;
+
    margin-top: 0;
+
    margin-bottom: 0;
+
    vertical-align: middle;
+
  }
+
  .navbar-form .radio label,
+
  .navbar-form .checkbox label {
+
    padding-left: 0;
+
  }
+
  .navbar-form .radio input[type="radio"],
+
  .navbar-form .checkbox input[type="checkbox"] {
+
    position: relative;
+
    margin-left: 0;
+
  }
+
  .navbar-form .has-feedback .form-control-feedback {
+
    top: 0;
+
  }
+
}
+
@media (max-width: 767px) {
+
  .navbar-form .form-group {
+
    margin-bottom: 5px;
+
  }
+
  .navbar-form .form-group:last-child {
+
    margin-bottom: 0;
+
  }
+
}
+
@media (min-width: 768px) {
+
  .navbar-form {
+
    width: auto;
+
    padding-top: 0;
+
    padding-bottom: 0;
+
    margin-right: 0;
+
    margin-left: 0;
+
    border: 0;
+
    -webkit-box-shadow: none;
+
            box-shadow: none;
+
  }
+
}
+
.navbar-nav > li > .dropdown-menu {
+
  margin-top: 0;
+
  border-top-left-radius: 0;
+
  border-top-right-radius: 0;
+
}
+
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+
  margin-bottom: 0;
+
  border-top-left-radius: 4px;
+
  border-top-right-radius: 4px;
+
  border-bottom-right-radius: 0;
+
  border-bottom-left-radius: 0;
+
}
+
.navbar-btn {
+
  margin-top: 8px;
+
  margin-bottom: 8px;
+
}
+
.navbar-btn.btn-sm {
+
  margin-top: 10px;
+
  margin-bottom: 10px;
+
}
+
.navbar-btn.btn-xs {
+
  margin-top: 14px;
+
  margin-bottom: 14px;
+
}
+
.navbar-text {
+
  margin-top: 15px;
+
  margin-bottom: 15px;
+
}
+
@media (min-width: 768px) {
+
  .navbar-text {
+
    float: left;
+
    margin-right: 15px;
+
    margin-left: 15px;
+
  }
+
}
+
@media (min-width: 768px) {
+
  .navbar-left {
+
    float: left !important;
+
  }
+
  .navbar-right {
+
    float: right !important;
+
    margin-right: -15px;
+
  }
+
  .navbar-right ~ .navbar-right {
+
    margin-right: 0;
+
  }
+
}
+
.navbar-default {
+
  background-color: #f8f8f8;
+
  border-color: #e7e7e7;
+
}
+
.navbar-default .navbar-brand {
+
  color: #777;
+
}
+
.navbar-default .navbar-brand:hover,
+
.navbar-default .navbar-brand:focus {
+
  color: #5e5e5e;
+
  background-color: transparent;
+
}
+
.navbar-default .navbar-text {
+
  color: #777;
+
}
+
.navbar-default .navbar-nav > li > a {
+
  color: #777;
+
}
+
.navbar-default .navbar-nav > li > a:hover,
+
.navbar-default .navbar-nav > li > a:focus {
+
  color: #333;
+
  background-color: transparent;
+
}
+
.navbar-default .navbar-nav > .active > a,
+
.navbar-default .navbar-nav > .active > a:hover,
+
.navbar-default .navbar-nav > .active > a:focus {
+
  color: #555;
+
  background-color: #e7e7e7;
+
}
+
.navbar-default .navbar-nav > .disabled > a,
+
.navbar-default .navbar-nav > .disabled > a:hover,
+
.navbar-default .navbar-nav > .disabled > a:focus {
+
  color: #ccc;
+
  background-color: transparent;
+
}
+
.navbar-default .navbar-toggle {
+
  border-color: #ddd;
+
}
+
.navbar-default .navbar-toggle:hover,
+
.navbar-default .navbar-toggle:focus {
+
  background-color: #ddd;
+
}
+
.navbar-default .navbar-toggle .icon-bar {
+
  background-color: #888;
+
}
+
.navbar-default .navbar-collapse,
+
.navbar-default .navbar-form {
+
  border-color: #e7e7e7;
+
}
+
.navbar-default .navbar-nav > .open > a,
+
.navbar-default .navbar-nav > .open > a:hover,
+
.navbar-default .navbar-nav > .open > a:focus {
+
  color: #555;
+
  background-color: #e7e7e7;
+
}
+
@media (max-width: 767px) {
+
  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+
    color: #777;
+
  }
+
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+
    color: #333;
+
    background-color: transparent;
+
  }
+
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+
    color: #555;
+
    background-color: #e7e7e7;
+
  }
+
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+
    color: #ccc;
+
    background-color: transparent;
+
  }
+
}
+
.navbar-default .navbar-link {
+
  color: #777;
+
}
+
.navbar-default .navbar-link:hover {
+
  color: #333;
+
}
+
.navbar-default .btn-link {
+
  color: #777;
+
}
+
.navbar-default .btn-link:hover,
+
.navbar-default .btn-link:focus {
+
  color: #333;
+
}
+
.navbar-default .btn-link[disabled]:hover,
+
fieldset[disabled] .navbar-default .btn-link:hover,
+
.navbar-default .btn-link[disabled]:focus,
+
fieldset[disabled] .navbar-default .btn-link:focus {
+
  color: #ccc;
+
}
+
.navbar-inverse {
+
  background-color: #222;
+
  border-color: #080808;
+
}
+
.navbar-inverse .navbar-brand {
+
  color: #9d9d9d;
+
}
+
.navbar-inverse .navbar-brand:hover,
+
.navbar-inverse .navbar-brand:focus {
+
  color: #fff;
+
  background-color: transparent;
+
}
+
.navbar-inverse .navbar-text {
+
  color: #9d9d9d;
+
}
+
.navbar-inverse .navbar-nav > li > a {
+
  color: #9d9d9d;
+
}
+
.navbar-inverse .navbar-nav > li > a:hover,
+
.navbar-inverse .navbar-nav > li > a:focus {
+
  color: #fff;
+
  background-color: transparent;
+
}
+
.navbar-inverse .navbar-nav > .active > a,
+
.navbar-inverse .navbar-nav > .active > a:hover,
+
.navbar-inverse .navbar-nav > .active > a:focus {
+
  color: #fff;
+
  background-color: #080808;
+
}
+
.navbar-inverse .navbar-nav > .disabled > a,
+
.navbar-inverse .navbar-nav > .disabled > a:hover,
+
.navbar-inverse .navbar-nav > .disabled > a:focus {
+
  color: #444;
+
  background-color: transparent;
+
}
+
.navbar-inverse .navbar-toggle {
+
  border-color: #333;
+
}
+
.navbar-inverse .navbar-toggle:hover,
+
.navbar-inverse .navbar-toggle:focus {
+
  background-color: #333;
+
}
+
.navbar-inverse .navbar-toggle .icon-bar {
+
  background-color: #fff;
+
}
+
.navbar-inverse .navbar-collapse,
+
.navbar-inverse .navbar-form {
+
  border-color: #101010;
+
}
+
.navbar-inverse .navbar-nav > .open > a,
+
.navbar-inverse .navbar-nav > .open > a:hover,
+
.navbar-inverse .navbar-nav > .open > a:focus {
+
  color: #fff;
+
  background-color: #080808;
+
}
+
@media (max-width: 767px) {
+
  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+
    border-color: #080808;
+
  }
+
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+
    background-color: #080808;
+
  }
+
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+
    color: #9d9d9d;
+
  }
+
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+
    color: #fff;
+
    background-color: transparent;
+
  }
+
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+
    color: #fff;
+
    background-color: #080808;
+
  }
+
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+
    color: #444;
+
    background-color: transparent;
+
  }
+
}
+
.navbar-inverse .navbar-link {
+
  color: #9d9d9d;
+
}
+
.navbar-inverse .navbar-link:hover {
+
  color: #fff;
+
}
+
.navbar-inverse .btn-link {
+
  color: #9d9d9d;
+
}
+
.navbar-inverse .btn-link:hover,
+
.navbar-inverse .btn-link:focus {
+
  color: #fff;
+
}
+
.navbar-inverse .btn-link[disabled]:hover,
+
fieldset[disabled] .navbar-inverse .btn-link:hover,
+
.navbar-inverse .btn-link[disabled]:focus,
+
fieldset[disabled] .navbar-inverse .btn-link:focus {
+
  color: #444;
+
}
+
.breadcrumb {
+
  padding: 8px 15px;
+
  margin-bottom: 20px;
+
  list-style: none;
+
  background-color: #f5f5f5;
+
  border-radius: 4px;
+
}
+
.breadcrumb > li {
+
  display: inline-block;
+
}
+
.breadcrumb > li + li:before {
+
  padding: 0 5px;
+
  color: #ccc;
+
  content: "/\00a0";
+
}
+
.breadcrumb > .active {
+
  color: #777;
+
}
+
.pagination {
+
  display: inline-block;
+
  padding-left: 0;
+
  margin: 20px 0;
+
  border-radius: 4px;
+
}
+
.pagination > li {
+
  display: inline;
+
}
+
.pagination > li > a,
+
.pagination > li > span {
+
  position: relative;
+
  float: left;
+
  padding: 6px 12px;
+
  margin-left: -1px;
+
  line-height: 1.42857143;
+
  color: #337ab7;
+
  text-decoration: none;
+
  background-color: #fff;
+
  border: 1px solid #ddd;
+
}
+
.pagination > li:first-child > a,
+
.pagination > li:first-child > span {
+
  margin-left: 0;
+
  border-top-left-radius: 4px;
+
  border-bottom-left-radius: 4px;
+
}
+
.pagination > li:last-child > a,
+
.pagination > li:last-child > span {
+
  border-top-right-radius: 4px;
+
  border-bottom-right-radius: 4px;
+
}
+
.pagination > li > a:hover,
+
.pagination > li > span:hover,
+
.pagination > li > a:focus,
+
.pagination > li > span:focus {
+
  color: #23527c;
+
  background-color: #eee;
+
  border-color: #ddd;
+
}
+
.pagination > .active > a,
+
.pagination > .active > span,
+
.pagination > .active > a:hover,
+
.pagination > .active > span:hover,
+
.pagination > .active > a:focus,
+
.pagination > .active > span:focus {
+
  z-index: 2;
+
  color: #fff;
+
  cursor: default;
+
  background-color: #337ab7;
+
  border-color: #337ab7;
+
}
+
.pagination > .disabled > span,
+
.pagination > .disabled > span:hover,
+
.pagination > .disabled > span:focus,
+
.pagination > .disabled > a,
+
.pagination > .disabled > a:hover,
+
.pagination > .disabled > a:focus {
+
  color: #777;
+
  cursor: not-allowed;
+
  background-color: #fff;
+
  border-color: #ddd;
+
}
+
.pagination-lg > li > a,
+
.pagination-lg > li > span {
+
  padding: 10px 16px;
+
  font-size: 18px;
+
}
+
.pagination-lg > li:first-child > a,
+
.pagination-lg > li:first-child > span {
+
  border-top-left-radius: 6px;
+
  border-bottom-left-radius: 6px;
+
}
+
.pagination-lg > li:last-child > a,
+
.pagination-lg > li:last-child > span {
+
  border-top-right-radius: 6px;
+
  border-bottom-right-radius: 6px;
+
}
+
.pagination-sm > li > a,
+
.pagination-sm > li > span {
+
  padding: 5px 10px;
+
  font-size: 12px;
+
}
+
.pagination-sm > li:first-child > a,
+
.pagination-sm > li:first-child > span {
+
  border-top-left-radius: 3px;
+
  border-bottom-left-radius: 3px;
+
}
+
.pagination-sm > li:last-child > a,
+
.pagination-sm > li:last-child > span {
+
  border-top-right-radius: 3px;
+
  border-bottom-right-radius: 3px;
+
}
+
.pager {
+
  padding-left: 0;
+
  margin: 20px 0;
+
  text-align: center;
+
  list-style: none;
+
}
+
.pager li {
+
  display: inline;
+
}
+
.pager li > a,
+
.pager li > span {
+
  display: inline-block;
+
  padding: 5px 14px;
+
  background-color: #fff;
+
  border: 1px solid #ddd;
+
  border-radius: 15px;
+
}
+
.pager li > a:hover,
+
.pager li > a:focus {
+
  text-decoration: none;
+
  background-color: #eee;
+
}
+
.pager .next > a,
+
.pager .next > span {
+
  float: right;
+
}
+
.pager .previous > a,
+
.pager .previous > span {
+
  float: left;
+
}
+
.pager .disabled > a,
+
.pager .disabled > a:hover,
+
.pager .disabled > a:focus,
+
.pager .disabled > span {
+
  color: #777;
+
  cursor: not-allowed;
+
  background-color: #fff;
+
}
+
.label {
+
  display: inline;
+
  padding: .2em .6em .3em;
+
  font-size: 75%;
+
  font-weight: bold;
+
  line-height: 1;
+
  color: #fff;
+
  text-align: center;
+
  white-space: nowrap;
+
  vertical-align: baseline;
+
  border-radius: .25em;
+
}
+
a.label:hover,
+
a.label:focus {
+
  color: #fff;
+
  text-decoration: none;
+
  cursor: pointer;
+
}
+
.label:empty {
+
  display: none;
+
}
+
.btn .label {
+
  position: relative;
+
  top: -1px;
+
}
+
.label-default {
+
  background-color: #777;
+
}
+
.label-default[href]:hover,
+
.label-default[href]:focus {
+
  background-color: #5e5e5e;
+
}
+
.label-primary {
+
  background-color: #337ab7;
+
}
+
.label-primary[href]:hover,
+
.label-primary[href]:focus {
+
  background-color: #286090;
+
}
+
.label-success {
+
  background-color: #5cb85c;
+
}
+
.label-success[href]:hover,
+
.label-success[href]:focus {
+
  background-color: #449d44;
+
}
+
.label-info {
+
  background-color: #5bc0de;
+
}
+
.label-info[href]:hover,
+
.label-info[href]:focus {
+
  background-color: #31b0d5;
+
}
+
.label-warning {
+
  background-color: #f0ad4e;
+
}
+
.label-warning[href]:hover,
+
.label-warning[href]:focus {
+
  background-color: #ec971f;
+
}
+
.label-danger {
+
  background-color: #d9534f;
+
}
+
.label-danger[href]:hover,
+
.label-danger[href]:focus {
+
  background-color: #c9302c;
+
}
+
.badge {
+
  display: inline-block;
+
  min-width: 10px;
+
  padding: 3px 7px;
+
  font-size: 12px;
+
  font-weight: bold;
+
  line-height: 1;
+
  color: #fff;
+
  text-align: center;
+
  white-space: nowrap;
+
  vertical-align: baseline;
+
  background-color: #777;
+
  border-radius: 10px;
+
}
+
.badge:empty {
+
  display: none;
+
}
+
.btn .badge {
+
  position: relative;
+
  top: -1px;
+
}
+
.btn-xs .badge {
+
  top: 0;
+
  padding: 1px 5px;
+
}
+
a.badge:hover,
+
a.badge:focus {
+
  color: #fff;
+
  text-decoration: none;
+
  cursor: pointer;
+
}
+
.list-group-item.active > .badge,
+
.nav-pills > .active > a > .badge {
+
  color: #337ab7;
+
  background-color: #fff;
+
}
+
.list-group-item > .badge {
+
  float: right;
+
}
+
.list-group-item > .badge + .badge {
+
  margin-right: 5px;
+
}
+
.nav-pills > li > a > .badge {
+
  margin-left: 3px;
+
}
+
.jumbotron {
+
  padding: 30px 15px;
+
  margin-bottom: 30px;
+
  color: inherit;
+
  background-color: #eee;
+
}
+
.jumbotron h1,
+
.jumbotron .h1 {
+
  color: inherit;
+
}
+
.jumbotron p {
+
  margin-bottom: 15px;
+
  font-size: 21px;
+
  font-weight: 200;
+
}
+
.jumbotron > hr {
+
  border-top-color: #d5d5d5;
+
}
+
.container .jumbotron,
+
.container-fluid .jumbotron {
+
  border-radius: 6px;
+
}
+
.jumbotron .container {
+
  max-width: 100%;
+
}
+
@media screen and (min-width: 768px) {
+
  .jumbotron {
+
    padding: 48px 0;
+
  }
+
  .container .jumbotron,
+
  .container-fluid .jumbotron {
+
    padding-right: 60px;
+
    padding-left: 60px;
+
  }
+
  .jumbotron h1,
+
  .jumbotron .h1 {
+
    font-size: 63px;
+
  }
+
}
+
.thumbnail {
+
  display: block;
+
  padding: 4px;
+
  margin-bottom: 20px;
+
  line-height: 1.42857143;
+
  background-color: #fff;
+
  border: 1px solid #ddd;
+
  border-radius: 4px;
+
  -webkit-transition: border .2s ease-in-out;
+
      -o-transition: border .2s ease-in-out;
+
          transition: border .2s ease-in-out;
+
}
+
.thumbnail > img,
+
.thumbnail a > img {
+
  margin-right: auto;
+
  margin-left: auto;
+
}
+
a.thumbnail:hover,
+
a.thumbnail:focus,
+
a.thumbnail.active {
+
  border-color: #337ab7;
+
}
+
.thumbnail .caption {
+
  padding: 9px;
+
  color: #333;
+
}
+
.alert {
+
  padding: 15px;
+
  margin-bottom: 20px;
+
  border: 1px solid transparent;
+
  border-radius: 4px;
+
}
+
.alert h4 {
+
  margin-top: 0;
+
  color: inherit;
+
}
+
.alert .alert-link {
+
  font-weight: bold;
+
}
+
.alert > p,
+
.alert > ul {
+
  margin-bottom: 0;
+
}
+
.alert > p + p {
+
  margin-top: 5px;
+
}
+
.alert-dismissable,
+
.alert-dismissible {
+
  padding-right: 35px;
+
}
+
.alert-dismissable .close,
+
.alert-dismissible .close {
+
  position: relative;
+
  top: -2px;
+
  right: -21px;
+
  color: inherit;
+
}
+
.alert-success {
+
  color: #3c763d;
+
  background-color: #dff0d8;
+
  border-color: #d6e9c6;
+
}
+
.alert-success hr {
+
  border-top-color: #c9e2b3;
+
}
+
.alert-success .alert-link {
+
  color: #2b542c;
+
}
+
.alert-info {
+
  color: #31708f;
+
  background-color: #d9edf7;
+
  border-color: #bce8f1;
+
}
+
.alert-info hr {
+
  border-top-color: #a6e1ec;
+
}
+
.alert-info .alert-link {
+
  color: #245269;
+
}
+
.alert-warning {
+
  color: #8a6d3b;
+
  background-color: #fcf8e3;
+
  border-color: #faebcc;
+
}
+
.alert-warning hr {
+
  border-top-color: #f7e1b5;
+
}
+
.alert-warning .alert-link {
+
  color: #66512c;
+
}
+
.alert-danger {
+
  color: #a94442;
+
  background-color: #f2dede;
+
  border-color: #ebccd1;
+
}
+
.alert-danger hr {
+
  border-top-color: #e4b9c0;
+
}
+
.alert-danger .alert-link {
+
  color: #843534;
+
}
+
@-webkit-keyframes progress-bar-stripes {
+
  from {
+
    background-position: 40px 0;
+
  }
+
  to {
+
    background-position: 0 0;
+
  }
+
}
+
@-o-keyframes progress-bar-stripes {
+
  from {
+
    background-position: 40px 0;
+
  }
+
  to {
+
    background-position: 0 0;
+
  }
+
}
+
@keyframes progress-bar-stripes {
+
  from {
+
    background-position: 40px 0;
+
  }
+
  to {
+
    background-position: 0 0;
+
  }
+
}
+
.progress {
+
  height: 20px;
+
  margin-bottom: 20px;
+
  overflow: hidden;
+
  background-color: #f5f5f5;
+
  border-radius: 4px;
+
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+
          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+
}
+
.progress-bar {
+
  float: left;
+
  width: 0;
+
  height: 100%;
+
  font-size: 12px;
+
  line-height: 20px;
+
  color: #fff;
+
  text-align: center;
+
  background-color: #337ab7;
+
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+
          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+
  -webkit-transition: width .6s ease;
+
      -o-transition: width .6s ease;
+
          transition: width .6s ease;
+
}
+
.progress-striped .progress-bar,
+
.progress-bar-striped {
+
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
  background-image:        linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
  -webkit-background-size: 40px 40px;
+
          background-size: 40px 40px;
+
}
+
.progress.active .progress-bar,
+
.progress-bar.active {
+
  -webkit-animation: progress-bar-stripes 2s linear infinite;
+
      -o-animation: progress-bar-stripes 2s linear infinite;
+
          animation: progress-bar-stripes 2s linear infinite;
+
}
+
.progress-bar-success {
+
  background-color: #5cb85c;
+
}
+
.progress-striped .progress-bar-success {
+
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
  background-image:        linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
}
+
.progress-bar-info {
+
  background-color: #5bc0de;
+
}
+
.progress-striped .progress-bar-info {
+
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
  background-image:        linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
}
+
.progress-bar-warning {
+
  background-color: #f0ad4e;
+
}
+
.progress-striped .progress-bar-warning {
+
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
  background-image:        linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
}
+
.progress-bar-danger {
+
  background-color: #d9534f;
+
}
+
.progress-striped .progress-bar-danger {
+
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
  background-image:        linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+
}
+
.media {
+
  margin-top: 15px;
+
}
+
.media:first-child {
+
  margin-top: 0;
+
}
+
.media,
+
.media-body {
+
  overflow: hidden;
+
  zoom: 1;
+
}
+
.media-body {
+
  width: 10000px;
+
}
+
.media-object {
+
  display: block;
+
}
+
.media-right,
+
.media > .pull-right {
+
  padding-left: 10px;
+
}
+
.media-left,
+
.media > .pull-left {
+
  padding-right: 10px;
+
}
+
.media-left,
+
.media-right,
+
.media-body {
+
  display: table-cell;
+
  vertical-align: top;
+
}
+
.media-middle {
+
  vertical-align: middle;
+
}
+
.media-bottom {
+
  vertical-align: bottom;
+
}
+
.media-heading {
+
  margin-top: 0;
+
  margin-bottom: 5px;
+
}
+
.media-list {
+
  padding-left: 0;
+
  list-style: none;
+
}
+
.list-group {
+
  padding-left: 0;
+
  margin-bottom: 20px;
+
}
+
.list-group-item {
+
  position: relative;
+
  display: block;
+
  padding: 10px 15px;
+
  margin-bottom: -1px;
+
  background-color: #fff;
+
  border: 1px solid #ddd;
+
}
+
.list-group-item:first-child {
+
  border-top-left-radius: 4px;
+
  border-top-right-radius: 4px;
+
}
+
.list-group-item:last-child {
+
  margin-bottom: 0;
+
  border-bottom-right-radius: 4px;
+
  border-bottom-left-radius: 4px;
+
}
+
a.list-group-item {
+
  color: #555;
+
}
+
a.list-group-item .list-group-item-heading {
+
  color: #333;
+
}
+
a.list-group-item:hover,
+
a.list-group-item:focus {
+
  color: #555;
+
  text-decoration: none;
+
  background-color: #f5f5f5;
+
}
+
.list-group-item.disabled,
+
.list-group-item.disabled:hover,
+
.list-group-item.disabled:focus {
+
  color: #777;
+
  cursor: not-allowed;
+
  background-color: #eee;
+
}
+
.list-group-item.disabled .list-group-item-heading,
+
.list-group-item.disabled:hover .list-group-item-heading,
+
.list-group-item.disabled:focus .list-group-item-heading {
+
  color: inherit;
+
}
+
.list-group-item.disabled .list-group-item-text,
+
.list-group-item.disabled:hover .list-group-item-text,
+
.list-group-item.disabled:focus .list-group-item-text {
+
  color: #777;
+
}
+
.list-group-item.active,
+
.list-group-item.active:hover,
+
.list-group-item.active:focus {
+
  z-index: 2;
+
  color: #fff;
+
  background-color: #337ab7;
+
  border-color: #337ab7;
+
}
+
.list-group-item.active .list-group-item-heading,
+
.list-group-item.active:hover .list-group-item-heading,
+
.list-group-item.active:focus .list-group-item-heading,
+
.list-group-item.active .list-group-item-heading > small,
+
.list-group-item.active:hover .list-group-item-heading > small,
+
.list-group-item.active:focus .list-group-item-heading > small,
+
.list-group-item.active .list-group-item-heading > .small,
+
.list-group-item.active:hover .list-group-item-heading > .small,
+
.list-group-item.active:focus .list-group-item-heading > .small {
+
  color: inherit;
+
}
+
.list-group-item.active .list-group-item-text,
+
.list-group-item.active:hover .list-group-item-text,
+
.list-group-item.active:focus .list-group-item-text {
+
  color: #c7ddef;
+
}
+
.list-group-item-success {
+
  color: #3c763d;
+
  background-color: #dff0d8;
+
}
+
a.list-group-item-success {
+
  color: #3c763d;
+
}
+
a.list-group-item-success .list-group-item-heading {
+
  color: inherit;
+
}
+
a.list-group-item-success:hover,
+
a.list-group-item-success:focus {
+
  color: #3c763d;
+
  background-color: #d0e9c6;
+
}
+
a.list-group-item-success.active,
+
a.list-group-item-success.active:hover,
+
a.list-group-item-success.active:focus {
+
  color: #fff;
+
  background-color: #3c763d;
+
  border-color: #3c763d;
+
}
+
.list-group-item-info {
+
  color: #31708f;
+
  background-color: #d9edf7;
+
}
+
a.list-group-item-info {
+
  color: #31708f;
+
}
+
a.list-group-item-info .list-group-item-heading {
+
  color: inherit;
+
}
+
a.list-group-item-info:hover,
+
a.list-group-item-info:focus {
+
  color: #31708f;
+
  background-color: #c4e3f3;
+
}
+
a.list-group-item-info.active,
+
a.list-group-item-info.active:hover,
+
a.list-group-item-info.active:focus {
+
  color: #fff;
+
  background-color: #31708f;
+
  border-color: #31708f;
+
}
+
.list-group-item-warning {
+
  color: #8a6d3b;
+
  background-color: #fcf8e3;
+
}
+
a.list-group-item-warning {
+
  color: #8a6d3b;
+
}
+
a.list-group-item-warning .list-group-item-heading {
+
  color: inherit;
+
}
+
a.list-group-item-warning:hover,
+
a.list-group-item-warning:focus {
+
  color: #8a6d3b;
+
  background-color: #faf2cc;
+
}
+
a.list-group-item-warning.active,
+
a.list-group-item-warning.active:hover,
+
a.list-group-item-warning.active:focus {
+
  color: #fff;
+
  background-color: #8a6d3b;
+
  border-color: #8a6d3b;
+
}
+
.list-group-item-danger {
+
  color: #a94442;
+
  background-color: #f2dede;
+
}
+
a.list-group-item-danger {
+
  color: #a94442;
+
}
+
a.list-group-item-danger .list-group-item-heading {
+
  color: inherit;
+
}
+
a.list-group-item-danger:hover,
+
a.list-group-item-danger:focus {
+
  color: #a94442;
+
  background-color: #ebcccc;
+
}
+
a.list-group-item-danger.active,
+
a.list-group-item-danger.active:hover,
+
a.list-group-item-danger.active:focus {
+
  color: #fff;
+
  background-color: #a94442;
+
  border-color: #a94442;
+
}
+
.list-group-item-heading {
+
  margin-top: 0;
+
  margin-bottom: 5px;
+
}
+
.list-group-item-text {
+
  margin-bottom: 0;
+
  line-height: 1.3;
+
}
+
.panel {
+
  margin-bottom: 20px;
+
  background-color: #fff;
+
  border: 1px solid transparent;
+
  border-radius: 4px;
+
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+
          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+
}
+
.panel-body {
+
  padding: 15px;
+
}
+
.panel-heading {
+
  padding: 10px 15px;
+
  border-bottom: 1px solid transparent;
+
  border-top-left-radius: 3px;
+
  border-top-right-radius: 3px;
+
}
+
.panel-heading > .dropdown .dropdown-toggle {
+
  color: inherit;
+
}
+
.panel-title {
+
  margin-top: 0;
+
  margin-bottom: 0;
+
  font-size: 16px;
+
  color: inherit;
+
}
+
.panel-title > a,
+
.panel-title > small,
+
.panel-title > .small,
+
.panel-title > small > a,
+
.panel-title > .small > a {
+
  color: inherit;
+
}
+
.panel-footer {
+
  padding: 10px 15px;
+
  background-color: #f5f5f5;
+
  border-top: 1px solid #ddd;
+
  border-bottom-right-radius: 3px;
+
  border-bottom-left-radius: 3px;
+
}
+
.panel > .list-group,
+
.panel > .panel-collapse > .list-group {
+
  margin-bottom: 0;
+
}
+
.panel > .list-group .list-group-item,
+
.panel > .panel-collapse > .list-group .list-group-item {
+
  border-width: 1px 0;
+
  border-radius: 0;
+
}
+
.panel > .list-group:first-child .list-group-item:first-child,
+
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+
  border-top: 0;
+
  border-top-left-radius: 3px;
+
  border-top-right-radius: 3px;
+
}
+
.panel > .list-group:last-child .list-group-item:last-child,
+
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+
  border-bottom: 0;
+
  border-bottom-right-radius: 3px;
+
  border-bottom-left-radius: 3px;
+
}
+
.panel-heading + .list-group .list-group-item:first-child {
+
  border-top-width: 0;
+
}
+
.list-group + .panel-footer {
+
  border-top-width: 0;
+
}
+
.panel > .table,
+
.panel > .table-responsive > .table,
+
.panel > .panel-collapse > .table {
+
  margin-bottom: 0;
+
}
+
.panel > .table caption,
+
.panel > .table-responsive > .table caption,
+
.panel > .panel-collapse > .table caption {
+
  padding-right: 15px;
+
  padding-left: 15px;
+
}
+
.panel > .table:first-child,
+
.panel > .table-responsive:first-child > .table:first-child {
+
  border-top-left-radius: 3px;
+
  border-top-right-radius: 3px;
+
}
+
.panel > .table:first-child > thead:first-child > tr:first-child,
+
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+
.panel > .table:first-child > tbody:first-child > tr:first-child,
+
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+
  border-top-left-radius: 3px;
+
  border-top-right-radius: 3px;
+
}
+
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+
  border-top-left-radius: 3px;
+
}
+
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+
  border-top-right-radius: 3px;
+
}
+
.panel > .table:last-child,
+
.panel > .table-responsive:last-child > .table:last-child {
+
  border-bottom-right-radius: 3px;
+
  border-bottom-left-radius: 3px;
+
}
+
.panel > .table:last-child > tbody:last-child > tr:last-child,
+
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+
.panel > .table:last-child > tfoot:last-child > tr:last-child,
+
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+
  border-bottom-right-radius: 3px;
+
  border-bottom-left-radius: 3px;
+
}
+
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+
  border-bottom-left-radius: 3px;
+
}
+
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+
  border-bottom-right-radius: 3px;
+
}
+
.panel > .panel-body + .table,
+
.panel > .panel-body + .table-responsive,
+
.panel > .table + .panel-body,
+
.panel > .table-responsive + .panel-body {
+
  border-top: 1px solid #ddd;
+
}
+
.panel > .table > tbody:first-child > tr:first-child th,
+
.panel > .table > tbody:first-child > tr:first-child td {
+
  border-top: 0;
+
}
+
.panel > .table-bordered,
+
.panel > .table-responsive > .table-bordered {
+
  border: 0;
+
}
+
.panel > .table-bordered > thead > tr > th:first-child,
+
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+
.panel > .table-bordered > tbody > tr > th:first-child,
+
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+
.panel > .table-bordered > tfoot > tr > th:first-child,
+
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+
.panel > .table-bordered > thead > tr > td:first-child,
+
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+
.panel > .table-bordered > tbody > tr > td:first-child,
+
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+
.panel > .table-bordered > tfoot > tr > td:first-child,
+
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+
  border-left: 0;
+
}
+
.panel > .table-bordered > thead > tr > th:last-child,
+
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+
.panel > .table-bordered > tbody > tr > th:last-child,
+
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+
.panel > .table-bordered > tfoot > tr > th:last-child,
+
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+
.panel > .table-bordered > thead > tr > td:last-child,
+
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+
.panel > .table-bordered > tbody > tr > td:last-child,
+
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+
.panel > .table-bordered > tfoot > tr > td:last-child,
+
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+
  border-right: 0;
+
}
+
.panel > .table-bordered > thead > tr:first-child > td,
+
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+
.panel > .table-bordered > tbody > tr:first-child > td,
+
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+
.panel > .table-bordered > thead > tr:first-child > th,
+
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+
.panel > .table-bordered > tbody > tr:first-child > th,
+
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+
  border-bottom: 0;
+
}
+
.panel > .table-bordered > tbody > tr:last-child > td,
+
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+
.panel > .table-bordered > tfoot > tr:last-child > td,
+
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+
.panel > .table-bordered > tbody > tr:last-child > th,
+
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+
.panel > .table-bordered > tfoot > tr:last-child > th,
+
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+
  border-bottom: 0;
+
}
+
.panel > .table-responsive {
+
  margin-bottom: 0;
+
  border: 0;
+
}
+
.panel-group {
+
  margin-bottom: 20px;
+
}
+
.panel-group .panel {
+
  margin-bottom: 0;
+
  border-radius: 4px;
+
}
+
.panel-group .panel + .panel {
+
  margin-top: 5px;
+
}
+
.panel-group .panel-heading {
+
  border-bottom: 0;
+
}
+
.panel-group .panel-heading + .panel-collapse > .panel-body,
+
.panel-group .panel-heading + .panel-collapse > .list-group {
+
  border-top: 1px solid #ddd;
+
}
+
.panel-group .panel-footer {
+
  border-top: 0;
+
}
+
.panel-group .panel-footer + .panel-collapse .panel-body {
+
  border-bottom: 1px solid #ddd;
+
}
+
.panel-default {
+
  border-color: #ddd;
+
}
+
.panel-default > .panel-heading {
+
  color: #333;
+
  background-color: #f5f5f5;
+
  border-color: #ddd;
+
}
+
.panel-default > .panel-heading + .panel-collapse > .panel-body {
+
  border-top-color: #ddd;
+
}
+
.panel-default > .panel-heading .badge {
+
  color: #f5f5f5;
+
  background-color: #333;
+
}
+
.panel-default > .panel-footer + .panel-collapse > .panel-body {
+
  border-bottom-color: #ddd;
+
}
+
.panel-primary {
+
  border-color: #337ab7;
+
}
+
.panel-primary > .panel-heading {
+
  color: #fff;
+
  background-color: #337ab7;
+
  border-color: #337ab7;
+
}
+
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+
  border-top-color: #337ab7;
+
}
+
.panel-primary > .panel-heading .badge {
+
  color: #337ab7;
+
  background-color: #fff;
+
}
+
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+
  border-bottom-color: #337ab7;
+
}
+
.panel-success {
+
  border-color: #d6e9c6;
+
}
+
.panel-success > .panel-heading {
+
  color: #3c763d;
+
  background-color: #dff0d8;
+
  border-color: #d6e9c6;
+
}
+
.panel-success > .panel-heading + .panel-collapse > .panel-body {
+
  border-top-color: #d6e9c6;
+
}
+
.panel-success > .panel-heading .badge {
+
  color: #dff0d8;
+
  background-color: #3c763d;
+
}
+
.panel-success > .panel-footer + .panel-collapse > .panel-body {
+
  border-bottom-color: #d6e9c6;
+
}
+
.panel-info {
+
  border-color: #bce8f1;
+
}
+
.panel-info > .panel-heading {
+
  color: #31708f;
+
  background-color: #d9edf7;
+
  border-color: #bce8f1;
+
}
+
.panel-info > .panel-heading + .panel-collapse > .panel-body {
+
  border-top-color: #bce8f1;
+
}
+
.panel-info > .panel-heading .badge {
+
  color: #d9edf7;
+
  background-color: #31708f;
+
}
+
.panel-info > .panel-footer + .panel-collapse > .panel-body {
+
  border-bottom-color: #bce8f1;
+
}
+
.panel-warning {
+
  border-color: #faebcc;
+
}
+
.panel-warning > .panel-heading {
+
  color: #8a6d3b;
+
  background-color: #fcf8e3;
+
  border-color: #faebcc;
+
}
+
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+
  border-top-color: #faebcc;
+
}
+
.panel-warning > .panel-heading .badge {
+
  color: #fcf8e3;
+
  background-color: #8a6d3b;
+
}
+
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+
  border-bottom-color: #faebcc;
+
}
+
.panel-danger {
+
  border-color: #ebccd1;
+
}
+
.panel-danger > .panel-heading {
+
  color: #a94442;
+
  background-color: #f2dede;
+
  border-color: #ebccd1;
+
}
+
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+
  border-top-color: #ebccd1;
+
}
+
.panel-danger > .panel-heading .badge {
+
  color: #f2dede;
+
  background-color: #a94442;
+
}
+
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+
  border-bottom-color: #ebccd1;
+
}
+
.embed-responsive {
+
  position: relative;
+
  display: block;
+
  height: 0;
+
  padding: 0;
+
  overflow: hidden;
+
}
+
.embed-responsive .embed-responsive-item,
+
.embed-responsive iframe,
+
.embed-responsive embed,
+
.embed-responsive object,
+
.embed-responsive video {
+
  position: absolute;
+
  top: 0;
+
  bottom: 0;
+
  left: 0;
+
  width: 100%;
+
  height: 100%;
+
  border: 0;
+
}
+
.embed-responsive.embed-responsive-16by9 {
+
  padding-bottom: 56.25%;
+
}
+
.embed-responsive.embed-responsive-4by3 {
+
  padding-bottom: 75%;
+
}
+
.well {
+
  min-height: 20px;
+
  padding: 19px;
+
  margin-bottom: 20px;
+
  background-color: #f5f5f5;
+
  border: 1px solid #e3e3e3;
+
  border-radius: 4px;
+
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+
}
+
.well blockquote {
+
  border-color: #ddd;
+
  border-color: rgba(0, 0, 0, .15);
+
}
+
.well-lg {
+
  padding: 24px;
+
  border-radius: 6px;
+
}
+
.well-sm {
+
  padding: 9px;
+
  border-radius: 3px;
+
}
+
.close {
+
  float: right;
+
  font-size: 21px;
+
  font-weight: bold;
+
  line-height: 1;
+
  color: #000;
+
  text-shadow: 0 1px 0 #fff;
+
  filter: alpha(opacity=20);
+
  opacity: .2;
+
}
+
.close:hover,
+
.close:focus {
+
  color: #000;
+
  text-decoration: none;
+
  cursor: pointer;
+
  filter: alpha(opacity=50);
+
  opacity: .5;
+
}
+
button.close {
+
  -webkit-appearance: none;
+
  padding: 0;
+
  cursor: pointer;
+
  background: transparent;
+
  border: 0;
+
}
+
.modal-open {
+
  overflow: hidden;
+
}
+
.modal {
+
  position: fixed;
+
  top: 0;
+
  right: 0;
+
  bottom: 0;
+
  left: 0;
+
  z-index: 1040;
+
  display: none;
+
  overflow: hidden;
+
  -webkit-overflow-scrolling: touch;
+
  outline: 0;
+
}
+
.modal.fade .modal-dialog {
+
  -webkit-transition: -webkit-transform .3s ease-out;
+
      -o-transition:      -o-transform .3s ease-out;
+
          transition:        transform .3s ease-out;
+
  -webkit-transform: translate(0, -25%);
+
      -ms-transform: translate(0, -25%);
+
      -o-transform: translate(0, -25%);
+
          transform: translate(0, -25%);
+
}
+
.modal.in .modal-dialog {
+
  -webkit-transform: translate(0, 0);
+
      -ms-transform: translate(0, 0);
+
      -o-transform: translate(0, 0);
+
          transform: translate(0, 0);
+
}
+
.modal-open .modal {
+
  overflow-x: hidden;
+
  overflow-y: auto;
+
}
+
.modal-dialog {
+
  position: relative;
+
  width: auto;
+
  margin: 10px;
+
}
+
.modal-content {
+
  position: relative;
+
  background-color: #fff;
+
  -webkit-background-clip: padding-box;
+
          background-clip: padding-box;
+
  border: 1px solid #999;
+
  border: 1px solid rgba(0, 0, 0, .2);
+
  border-radius: 6px;
+
  outline: 0;
+
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+
          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+
}
+
.modal-backdrop {
+
  position: absolute;
+
  top: 0;
+
  right: 0;
+
  left: 0;
+
  background-color: #000;
+
}
+
.modal-backdrop.fade {
+
  filter: alpha(opacity=0);
+
  opacity: 0;
+
}
+
.modal-backdrop.in {
+
  filter: alpha(opacity=50);
+
  opacity: .5;
+
}
+
.modal-header {
+
  min-height: 16.42857143px;
+
  padding: 15px;
+
  border-bottom: 1px solid #e5e5e5;
+
}
+
.modal-header .close {
+
  margin-top: -2px;
+
}
+
.modal-title {
+
  margin: 0;
+
  line-height: 1.42857143;
+
}
+
.modal-body {
+
  position: relative;
+
  padding: 15px;
+
}
+
.modal-footer {
+
  padding: 15px;
+
  text-align: right;
+
  border-top: 1px solid #e5e5e5;
+
}
+
.modal-footer .btn + .btn {
+
  margin-bottom: 0;
+
  margin-left: 5px;
+
}
+
.modal-footer .btn-group .btn + .btn {
+
  margin-left: -1px;
+
}
+
.modal-footer .btn-block + .btn-block {
+
  margin-left: 0;
+
}
+
.modal-scrollbar-measure {
+
  position: absolute;
+
  top: -9999px;
+
  width: 50px;
+
  height: 50px;
+
  overflow: scroll;
+
}
+
@media (min-width: 768px) {
+
  .modal-dialog {
+
    width: 600px;
+
    margin: 30px auto;
+
  }
+
  .modal-content {
+
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+
            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+
  }
+
  .modal-sm {
+
    width: 300px;
+
  }
+
}
+
@media (min-width: 992px) {
+
  .modal-lg {
+
    width: 900px;
+
  }
+
}
+
.tooltip {
+
  position: absolute;
+
  z-index: 1070;
+
  display: block;
+
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+
  font-size: 12px;
+
  font-weight: normal;
+
  line-height: 1.4;
+
  visibility: visible;
+
  filter: alpha(opacity=0);
+
  opacity: 0;
+
}
+
.tooltip.in {
+
  filter: alpha(opacity=90);
+
  opacity: .9;
+
}
+
.tooltip.top {
+
  padding: 5px 0;
+
  margin-top: -3px;
+
}
+
.tooltip.right {
+
  padding: 0 5px;
+
  margin-left: 3px;
+
}
+
.tooltip.bottom {
+
  padding: 5px 0;
+
  margin-top: 3px;
+
}
+
.tooltip.left {
+
  padding: 0 5px;
+
  margin-left: -3px;
+
}
+
.tooltip-inner {
+
  max-width: 200px;
+
  padding: 3px 8px;
+
  color: #fff;
+
  text-align: center;
+
  text-decoration: none;
+
  background-color: #000;
+
  border-radius: 4px;
+
}
+
.tooltip-arrow {
+
  position: absolute;
+
  width: 0;
+
  height: 0;
+
  border-color: transparent;
+
  border-style: solid;
+
}
+
.tooltip.top .tooltip-arrow {
+
  bottom: 0;
+
  left: 50%;
+
  margin-left: -5px;
+
  border-width: 5px 5px 0;
+
  border-top-color: #000;
+
}
+
.tooltip.top-left .tooltip-arrow {
+
  right: 5px;
+
  bottom: 0;
+
  margin-bottom: -5px;
+
  border-width: 5px 5px 0;
+
  border-top-color: #000;
+
}
+
.tooltip.top-right .tooltip-arrow {
+
  bottom: 0;
+
  left: 5px;
+
  margin-bottom: -5px;
+
  border-width: 5px 5px 0;
+
  border-top-color: #000;
+
}
+
.tooltip.right .tooltip-arrow {
+
  top: 50%;
+
  left: 0;
+
  margin-top: -5px;
+
  border-width: 5px 5px 5px 0;
+
  border-right-color: #000;
+
}
+
.tooltip.left .tooltip-arrow {
+
  top: 50%;
+
  right: 0;
+
  margin-top: -5px;
+
  border-width: 5px 0 5px 5px;
+
  border-left-color: #000;
+
}
+
.tooltip.bottom .tooltip-arrow {
+
  top: 0;
+
  left: 50%;
+
  margin-left: -5px;
+
  border-width: 0 5px 5px;
+
  border-bottom-color: #000;
+
}
+
.tooltip.bottom-left .tooltip-arrow {
+
  top: 0;
+
  right: 5px;
+
  margin-top: -5px;
+
  border-width: 0 5px 5px;
+
  border-bottom-color: #000;
+
}
+
.tooltip.bottom-right .tooltip-arrow {
+
  top: 0;
+
  left: 5px;
+
  margin-top: -5px;
+
  border-width: 0 5px 5px;
+
  border-bottom-color: #000;
+
}
+
.popover {
+
  position: absolute;
+
  top: 0;
+
  left: 0;
+
  z-index: 1060;
+
  display: none;
+
  max-width: 276px;
+
  padding: 1px;
+
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+
  font-size: 14px;
+
  font-weight: normal;
+
  line-height: 1.42857143;
+
  text-align: left;
+
  white-space: normal;
+
  background-color: #fff;
+
  -webkit-background-clip: padding-box;
+
          background-clip: padding-box;
+
  border: 1px solid #ccc;
+
  border: 1px solid rgba(0, 0, 0, .2);
+
  border-radius: 6px;
+
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+
          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+
}
+
.popover.top {
+
  margin-top: -10px;
+
}
+
.popover.right {
+
  margin-left: 10px;
+
}
+
.popover.bottom {
+
  margin-top: 10px;
+
}
+
.popover.left {
+
  margin-left: -10px;
+
}
+
.popover-title {
+
  padding: 8px 14px;
+
  margin: 0;
+
  font-size: 14px;
+
  background-color: #f7f7f7;
+
  border-bottom: 1px solid #ebebeb;
+
  border-radius: 5px 5px 0 0;
+
}
+
.popover-content {
+
  padding: 9px 14px;
+
}
+
.popover > .arrow,
+
.popover > .arrow:after {
+
  position: absolute;
+
  display: block;
+
  width: 0;
+
  height: 0;
+
  border-color: transparent;
+
  border-style: solid;
+
}
+
.popover > .arrow {
+
  border-width: 11px;
+
}
+
.popover > .arrow:after {
+
  content: "";
+
  border-width: 10px;
+
}
+
.popover.top > .arrow {
+
  bottom: -11px;
+
  left: 50%;
+
  margin-left: -11px;
+
  border-top-color: #999;
+
  border-top-color: rgba(0, 0, 0, .25);
+
  border-bottom-width: 0;
+
}
+
.popover.top > .arrow:after {
+
  bottom: 1px;
+
  margin-left: -10px;
+
  content: " ";
+
  border-top-color: #fff;
+
  border-bottom-width: 0;
+
}
+
.popover.right > .arrow {
+
  top: 50%;
+
  left: -11px;
+
  margin-top: -11px;
+
  border-right-color: #999;
+
  border-right-color: rgba(0, 0, 0, .25);
+
  border-left-width: 0;
+
}
+
.popover.right > .arrow:after {
+
  bottom: -10px;
+
  left: 1px;
+
  content: " ";
+
  border-right-color: #fff;
+
  border-left-width: 0;
+
}
+
.popover.bottom > .arrow {
+
  top: -11px;
+
  left: 50%;
+
  margin-left: -11px;
+
  border-top-width: 0;
+
  border-bottom-color: #999;
+
  border-bottom-color: rgba(0, 0, 0, .25);
+
}
+
.popover.bottom > .arrow:after {
+
  top: 1px;
+
  margin-left: -10px;
+
  content: " ";
+
  border-top-width: 0;
+
  border-bottom-color: #fff;
+
}
+
.popover.left > .arrow {
+
  top: 50%;
+
  right: -11px;
+
  margin-top: -11px;
+
  border-right-width: 0;
+
  border-left-color: #999;
+
  border-left-color: rgba(0, 0, 0, .25);
+
}
+
.popover.left > .arrow:after {
+
  right: 1px;
+
  bottom: -10px;
+
  content: " ";
+
  border-right-width: 0;
+
  border-left-color: #fff;
+
}
+
.carousel {
+
  position: relative;
+
}
+
.carousel-inner {
+
  position: relative;
+
  width: 100%;
+
  overflow: hidden;
+
}
+
.carousel-inner > .item {
+
  position: relative;
+
  display: none;
+
  -webkit-transition: .6s ease-in-out left;
+
      -o-transition: .6s ease-in-out left;
+
          transition: .6s ease-in-out left;
+
}
+
.carousel-inner > .item > img,
+
.carousel-inner > .item > a > img {
+
  line-height: 1;
+
}
+
@media all and (transform-3d), (-webkit-transform-3d) {
+
  .carousel-inner > .item {
+
    -webkit-transition: -webkit-transform .6s ease-in-out;
+
        -o-transition:      -o-transform .6s ease-in-out;
+
            transition:        transform .6s ease-in-out;
+
 
+
    -webkit-backface-visibility: hidden;
+
            backface-visibility: hidden;
+
    -webkit-perspective: 1000;
+
            perspective: 1000;
+
  }
+
  .carousel-inner > .item.next,
+
  .carousel-inner > .item.active.right {
+
    left: 0;
+
    -webkit-transform: translate3d(100%, 0, 0);
+
            transform: translate3d(100%, 0, 0);
+
  }
+
  .carousel-inner > .item.prev,
+
  .carousel-inner > .item.active.left {
+
    left: 0;
+
    -webkit-transform: translate3d(-100%, 0, 0);
+
            transform: translate3d(-100%, 0, 0);
+
  }
+
  .carousel-inner > .item.next.left,
+
  .carousel-inner > .item.prev.right,
+
  .carousel-inner > .item.active {
+
    left: 0;
+
    -webkit-transform: translate3d(0, 0, 0);
+
            transform: translate3d(0, 0, 0);
+
  }
+
}
+
.carousel-inner > .active,
+
.carousel-inner > .next,
+
.carousel-inner > .prev {
+
  display: block;
+
}
+
.carousel-inner > .active {
+
  left: 0;
+
}
+
.carousel-inner > .next,
+
.carousel-inner > .prev {
+
  position: absolute;
+
  top: 0;
+
  width: 100%;
+
}
+
.carousel-inner > .next {
+
  left: 100%;
+
}
+
.carousel-inner > .prev {
+
  left: -100%;
+
}
+
.carousel-inner > .next.left,
+
.carousel-inner > .prev.right {
+
  left: 0;
+
}
+
.carousel-inner > .active.left {
+
  left: -100%;
+
}
+
.carousel-inner > .active.right {
+
  left: 100%;
+
}
+
.carousel-control {
+
  position: absolute;
+
  top: 0;
+
  bottom: 0;
+
  left: 0;
+
  width: 15%;
+
  font-size: 20px;
+
  color: #fff;
+
  text-align: center;
+
  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+
  filter: alpha(opacity=50);
+
  opacity: .5;
+
}
+
.carousel-control.left {
+
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+
  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+
  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
+
  background-image:        linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+
  background-repeat: repeat-x;
+
}
+
.carousel-control.right {
+
  right: 0;
+
  left: auto;
+
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+
  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+
  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
+
  background-image:        linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+
  background-repeat: repeat-x;
+
}
+
.carousel-control:hover,
+
.carousel-control:focus {
+
  color: #fff;
+
  text-decoration: none;
+
  filter: alpha(opacity=90);
+
  outline: 0;
+
  opacity: .9;
+
}
+
.carousel-control .icon-prev,
+
.carousel-control .icon-next,
+
.carousel-control .glyphicon-chevron-left,
+
.carousel-control .glyphicon-chevron-right {
+
  position: absolute;
+
  top: 50%;
+
  z-index: 5;
+
  display: inline-block;
+
}
+
.carousel-control .icon-prev,
+
.carousel-control .glyphicon-chevron-left {
+
  left: 50%;
+
  margin-left: -10px;
+
}
+
.carousel-control .icon-next,
+
.carousel-control .glyphicon-chevron-right {
+
  right: 50%;
+
  margin-right: -10px;
+
}
+
.carousel-control .icon-prev,
+
.carousel-control .icon-next {
+
  width: 20px;
+
  height: 20px;
+
  margin-top: -10px;
+
  font-family: serif;
+
  line-height: 1;
+
}
+
.carousel-control .icon-prev:before {
+
  content: '\2039';
+
}
+
.carousel-control .icon-next:before {
+
  content: '\203a';
+
}
+
.carousel-indicators {
+
  position: absolute;
+
  bottom: 10px;
+
  left: 50%;
+
  z-index: 15;
+
  width: 60%;
+
  padding-left: 0;
+
  margin-left: -30%;
+
  text-align: center;
+
  list-style: none;
+
}
+
.carousel-indicators li {
+
  display: inline-block;
+
  width: 10px;
+
  height: 10px;
+
  margin: 1px;
+
  text-indent: -999px;
+
  cursor: pointer;
+
  background-color: #000 \9;
+
  background-color: rgba(0, 0, 0, 0);
+
  border: 1px solid #fff;
+
  border-radius: 10px;
+
}
+
.carousel-indicators .active {
+
  width: 12px;
+
  height: 12px;
+
  margin: 0;
+
  background-color: #fff;
+
}
+
.carousel-caption {
+
  position: absolute;
+
  right: 15%;
+
  bottom: 20px;
+
  left: 15%;
+
  z-index: 10;
+
  padding-top: 20px;
+
  padding-bottom: 20px;
+
  color: #fff;
+
  text-align: center;
+
  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+
}
+
.carousel-caption .btn {
+
  text-shadow: none;
+
}
+
@media screen and (min-width: 768px) {
+
  .carousel-control .glyphicon-chevron-left,
+
  .carousel-control .glyphicon-chevron-right,
+
  .carousel-control .icon-prev,
+
  .carousel-control .icon-next {
+
    width: 30px;
+
    height: 30px;
+
    margin-top: -15px;
+
    font-size: 30px;
+
  }
+
  .carousel-control .glyphicon-chevron-left,
+
  .carousel-control .icon-prev {
+
    margin-left: -15px;
+
  }
+
  .carousel-control .glyphicon-chevron-right,
+
  .carousel-control .icon-next {
+
    margin-right: -15px;
+
  }
+
  .carousel-caption {
+
    right: 20%;
+
    left: 20%;
+
    padding-bottom: 30px;
+
  }
+
  .carousel-indicators {
+
    bottom: 20px;
+
  }
+
}
+
.clearfix:before,
+
.clearfix:after,
+
.dl-horizontal dd:before,
+
.dl-horizontal dd:after,
+
.container:before,
+
.container:after,
+
.container-fluid:before,
+
.container-fluid:after,
+
.row:before,
+
.row:after,
+
.form-horizontal .form-group:before,
+
.form-horizontal .form-group:after,
+
.btn-toolbar:before,
+
.btn-toolbar:after,
+
.btn-group-vertical > .btn-group:before,
+
.btn-group-vertical > .btn-group:after,
+
.nav:before,
+
.nav:after,
+
.navbar:before,
+
.navbar:after,
+
.navbar-header:before,
+
.navbar-header:after,
+
.navbar-collapse:before,
+
.navbar-collapse:after,
+
.pager:before,
+
.pager:after,
+
.panel-body:before,
+
.panel-body:after,
+
.modal-footer:before,
+
.modal-footer:after {
+
  display: table;
+
  content: " ";
+
}
+
.clearfix:after,
+
.dl-horizontal dd:after,
+
.container:after,
+
.container-fluid:after,
+
.row:after,
+
.form-horizontal .form-group:after,
+
.btn-toolbar:after,
+
.btn-group-vertical > .btn-group:after,
+
.nav:after,
+
.navbar:after,
+
.navbar-header:after,
+
.navbar-collapse:after,
+
.pager:after,
+
.panel-body:after,
+
.modal-footer:after {
+
  clear: both;
+
}
+
.center-block {
+
  display: block;
+
  margin-right: auto;
+
  margin-left: auto;
+
}
+
.pull-right {
+
  float: right !important;
+
}
+
.pull-left {
+
  float: left !important;
+
}
+
.hide {
+
  display: none !important;
+
}
+
.show {
+
  display: block !important;
+
}
+
.invisible {
+
  visibility: hidden;
+
}
+
.text-hide {
+
  font: 0/0 a;
+
  color: transparent;
+
  text-shadow: none;
+
  background-color: transparent;
+
  border: 0;
+
}
+
.hidden {
+
  display: none !important;
+
  visibility: hidden !important;
+
}
+
.affix {
+
  position: fixed;
+
}
+
@-ms-viewport {
+
  width: device-width;
+
}
+
.visible-xs,
+
.visible-sm,
+
.visible-md,
+
.visible-lg {
+
  display: none !important;
+
}
+
.visible-xs-block,
+
.visible-xs-inline,
+
.visible-xs-inline-block,
+
.visible-sm-block,
+
.visible-sm-inline,
+
.visible-sm-inline-block,
+
.visible-md-block,
+
.visible-md-inline,
+
.visible-md-inline-block,
+
.visible-lg-block,
+
.visible-lg-inline,
+
.visible-lg-inline-block {
+
  display: none !important;
+
}
+
@media (max-width: 767px) {
+
  .visible-xs {
+
    display: block !important;
+
  }
+
  table.visible-xs {
+
    display: table;
+
  }
+
  tr.visible-xs {
+
    display: table-row !important;
+
  }
+
  th.visible-xs,
+
  td.visible-xs {
+
    display: table-cell !important;
+
  }
+
}
+
@media (max-width: 767px) {
+
  .visible-xs-block {
+
    display: block !important;
+
  }
+
}
+
@media (max-width: 767px) {
+
  .visible-xs-inline {
+
    display: inline !important;
+
  }
+
}
+
@media (max-width: 767px) {
+
  .visible-xs-inline-block {
+
    display: inline-block !important;
+
  }
+
}
+
@media (min-width: 768px) and (max-width: 991px) {
+
  .visible-sm {
+
    display: block !important;
+
  }
+
  table.visible-sm {
+
    display: table;
+
  }
+
  tr.visible-sm {
+
    display: table-row !important;
+
  }
+
  th.visible-sm,
+
  td.visible-sm {
+
    display: table-cell !important;
+
  }
+
}
+
@media (min-width: 768px) and (max-width: 991px) {
+
  .visible-sm-block {
+
    display: block !important;
+
  }
+
}
+
@media (min-width: 768px) and (max-width: 991px) {
+
  .visible-sm-inline {
+
    display: inline !important;
+
  }
+
}
+
@media (min-width: 768px) and (max-width: 991px) {
+
  .visible-sm-inline-block {
+
    display: inline-block !important;
+
  }
+
}
+
@media (min-width: 992px) and (max-width: 1199px) {
+
  .visible-md {
+
    display: block !important;
+
  }
+
  table.visible-md {
+
    display: table;
+
  }
+
  tr.visible-md {
+
    display: table-row !important;
+
  }
+
  th.visible-md,
+
  td.visible-md {
+
    display: table-cell !important;
+
  }
+
}
+
@media (min-width: 992px) and (max-width: 1199px) {
+
  .visible-md-block {
+
    display: block !important;
+
  }
+
}
+
@media (min-width: 992px) and (max-width: 1199px) {
+
  .visible-md-inline {
+
    display: inline !important;
+
  }
+
}
+
@media (min-width: 992px) and (max-width: 1199px) {
+
  .visible-md-inline-block {
+
    display: inline-block !important;
+
  }
+
}
+
@media (min-width: 1200px) {
+
  .visible-lg {
+
    display: block !important;
+
  }
+
  table.visible-lg {
+
    display: table;
+
  }
+
  tr.visible-lg {
+
    display: table-row !important;
+
  }
+
  th.visible-lg,
+
  td.visible-lg {
+
    display: table-cell !important;
+
  }
+
}
+
@media (min-width: 1200px) {
+
  .visible-lg-block {
+
    display: block !important;
+
  }
+
}
+
@media (min-width: 1200px) {
+
  .visible-lg-inline {
+
    display: inline !important;
+
  }
+
}
+
@media (min-width: 1200px) {
+
  .visible-lg-inline-block {
+
    display: inline-block !important;
+
  }
+
}
+
@media (max-width: 767px) {
+
  .hidden-xs {
+
    display: none !important;
+
  }
+
}
+
@media (min-width: 768px) and (max-width: 991px) {
+
  .hidden-sm {
+
    display: none !important;
+
  }
+
}
+
@media (min-width: 992px) and (max-width: 1199px) {
+
  .hidden-md {
+
    display: none !important;
+
  }
+
}
+
@media (min-width: 1200px) {
+
  .hidden-lg {
+
    display: none !important;
+
  }
+
}
+
.visible-print {
+
  display: none !important;
+
}
+
@media print {
+
  .visible-print {
+
    display: block !important;
+
  }
+
  table.visible-print {
+
    display: table;
+
  }
+
  tr.visible-print {
+
    display: table-row !important;
+
  }
+
  th.visible-print,
+
  td.visible-print {
+
    display: table-cell !important;
+
  }
+
}
+
.visible-print-block {
+
  display: none !important;
+
}
+
@media print {
+
  .visible-print-block {
+
    display: block !important;
+
  }
+
}
+
.visible-print-inline {
+
  display: none !important;
+
}
+
@media print {
+
  .visible-print-inline {
+
    display: inline !important;
+
  }
+
}
+
.visible-print-inline-block {
+
  display: none !important;
+
}
+
@media print {
+
  .visible-print-inline-block {
+
    display: inline-block !important;
+
  }
+
}
+
@media print {
+
  .hidden-print {
+
    display: none !important;
+
  }
+
}
+
/*# sourceMappingURL=bootstrap.css.map */
+
@charset "UTF-8";
+
/*!
+
Animate.css - http://daneden.me/animate
+
Licensed under the MIT license - http://opensource.org/licenses/MIT
+
 
+
Copyright (c) 2014 Daniel Eden
+
*/
+
 
+
.animated {
+
  -webkit-animation-duration: 1s;
+
          animation-duration: 1s;
+
  -webkit-animation-fill-mode: both;
+
          animation-fill-mode: both;
+
}
+
 
+
.animated.infinite {
+
  -webkit-animation-iteration-count: infinite;
+
          animation-iteration-count: infinite;
+
}
+
 
+
.animated.hinge {
+
  -webkit-animation-duration: 2s;
+
          animation-duration: 2s;
+
}
+
 
+
@-webkit-keyframes bounce {
+
  0%, 20%, 53%, 80%, 100% {
+
    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
            transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
    -webkit-transform: translate3d(0,0,0);
+
            transform: translate3d(0,0,0);
+
  }
+
 
+
  40%, 43% {
+
    -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+
            transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+
    -webkit-transform: translate3d(0, -30px, 0);
+
            transform: translate3d(0, -30px, 0);
+
  }
+
 
+
  70% {
+
    -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+
            transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+
    -webkit-transform: translate3d(0, -15px, 0);
+
            transform: translate3d(0, -15px, 0);
+
  }
+
 
+
  90% {
+
    -webkit-transform: translate3d(0,-4px,0);
+
            transform: translate3d(0,-4px,0);
+
  }
+
}
+
 
+
@keyframes bounce {
+
  0%, 20%, 53%, 80%, 100% {
+
    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
            transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
    -webkit-transform: translate3d(0,0,0);
+
            transform: translate3d(0,0,0);
+
  }
+
 
+
  40%, 43% {
+
    -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+
            transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+
    -webkit-transform: translate3d(0, -30px, 0);
+
            transform: translate3d(0, -30px, 0);
+
  }
+
 
+
  70% {
+
    -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+
            transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+
    -webkit-transform: translate3d(0, -15px, 0);
+
            transform: translate3d(0, -15px, 0);
+
  }
+
 
+
  90% {
+
    -webkit-transform: translate3d(0,-4px,0);
+
            transform: translate3d(0,-4px,0);
+
  }
+
}
+
 
+
.bounce {
+
  -webkit-animation-name: bounce;
+
          animation-name: bounce;
+
  -webkit-transform-origin: center bottom;
+
      -ms-transform-origin: center bottom;
+
          transform-origin: center bottom;
+
}
+
 
+
@-webkit-keyframes flash {
+
  0%, 50%, 100% {
+
    opacity: 1;
+
  }
+
 
+
  25%, 75% {
+
    opacity: 0;
+
  }
+
}
+
 
+
@keyframes flash {
+
  0%, 50%, 100% {
+
    opacity: 1;
+
  }
+
 
+
  25%, 75% {
+
    opacity: 0;
+
  }
+
}
+
 
+
.flash {
+
  -webkit-animation-name: flash;
+
          animation-name: flash;
+
}
+
 
+
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
 
+
@-webkit-keyframes pulse {
+
  0% {
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
 
+
  50% {
+
    -webkit-transform: scale3d(1.05, 1.05, 1.05);
+
            transform: scale3d(1.05, 1.05, 1.05);
+
  }
+
 
+
  100% {
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
}
+
 
+
@keyframes pulse {
+
  0% {
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
 
+
  50% {
+
    -webkit-transform: scale3d(1.05, 1.05, 1.05);
+
            transform: scale3d(1.05, 1.05, 1.05);
+
  }
+
 
+
  100% {
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
}
+
 
+
.pulse {
+
  -webkit-animation-name: pulse;
+
          animation-name: pulse;
+
}
+
 
+
@-webkit-keyframes rubberBand {
+
  0% {
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
 
+
  30% {
+
    -webkit-transform: scale3d(1.25, 0.75, 1);
+
            transform: scale3d(1.25, 0.75, 1);
+
  }
+
 
+
  40% {
+
    -webkit-transform: scale3d(0.75, 1.25, 1);
+
            transform: scale3d(0.75, 1.25, 1);
+
  }
+
 
+
  50% {
+
    -webkit-transform: scale3d(1.15, 0.85, 1);
+
            transform: scale3d(1.15, 0.85, 1);
+
  }
+
 
+
  65% {
+
    -webkit-transform: scale3d(.95, 1.05, 1);
+
            transform: scale3d(.95, 1.05, 1);
+
  }
+
 
+
  75% {
+
    -webkit-transform: scale3d(1.05, .95, 1);
+
            transform: scale3d(1.05, .95, 1);
+
  }
+
 
+
  100% {
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
}
+
 
+
@keyframes rubberBand {
+
  0% {
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
 
+
  30% {
+
    -webkit-transform: scale3d(1.25, 0.75, 1);
+
            transform: scale3d(1.25, 0.75, 1);
+
  }
+
 
+
  40% {
+
    -webkit-transform: scale3d(0.75, 1.25, 1);
+
            transform: scale3d(0.75, 1.25, 1);
+
  }
+
 
+
  50% {
+
    -webkit-transform: scale3d(1.15, 0.85, 1);
+
            transform: scale3d(1.15, 0.85, 1);
+
  }
+
 
+
  65% {
+
    -webkit-transform: scale3d(.95, 1.05, 1);
+
            transform: scale3d(.95, 1.05, 1);
+
  }
+
 
+
  75% {
+
    -webkit-transform: scale3d(1.05, .95, 1);
+
            transform: scale3d(1.05, .95, 1);
+
  }
+
 
+
  100% {
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
}
+
 
+
.rubberBand {
+
  -webkit-animation-name: rubberBand;
+
          animation-name: rubberBand;
+
}
+
 
+
@-webkit-keyframes shake {
+
  0%, 100% {
+
    -webkit-transform: translate3d(0, 0, 0);
+
            transform: translate3d(0, 0, 0);
+
  }
+
 
+
  10%, 30%, 50%, 70%, 90% {
+
    -webkit-transform: translate3d(-10px, 0, 0);
+
            transform: translate3d(-10px, 0, 0);
+
  }
+
 
+
  20%, 40%, 60%, 80% {
+
    -webkit-transform: translate3d(10px, 0, 0);
+
            transform: translate3d(10px, 0, 0);
+
  }
+
}
+
 
+
@keyframes shake {
+
  0%, 100% {
+
    -webkit-transform: translate3d(0, 0, 0);
+
            transform: translate3d(0, 0, 0);
+
  }
+
 
+
  10%, 30%, 50%, 70%, 90% {
+
    -webkit-transform: translate3d(-10px, 0, 0);
+
            transform: translate3d(-10px, 0, 0);
+
  }
+
 
+
  20%, 40%, 60%, 80% {
+
    -webkit-transform: translate3d(10px, 0, 0);
+
            transform: translate3d(10px, 0, 0);
+
  }
+
}
+
 
+
.shake {
+
  -webkit-animation-name: shake;
+
          animation-name: shake;
+
}
+
 
+
@-webkit-keyframes swing {
+
  20% {
+
    -webkit-transform: rotate3d(0, 0, 1, 15deg);
+
            transform: rotate3d(0, 0, 1, 15deg);
+
  }
+
 
+
  40% {
+
    -webkit-transform: rotate3d(0, 0, 1, -10deg);
+
            transform: rotate3d(0, 0, 1, -10deg);
+
  }
+
 
+
  60% {
+
    -webkit-transform: rotate3d(0, 0, 1, 5deg);
+
            transform: rotate3d(0, 0, 1, 5deg);
+
  }
+
 
+
  80% {
+
    -webkit-transform: rotate3d(0, 0, 1, -5deg);
+
            transform: rotate3d(0, 0, 1, -5deg);
+
  }
+
 
+
  100% {
+
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
+
            transform: rotate3d(0, 0, 1, 0deg);
+
  }
+
}
+
 
+
@keyframes swing {
+
  20% {
+
    -webkit-transform: rotate3d(0, 0, 1, 15deg);
+
            transform: rotate3d(0, 0, 1, 15deg);
+
  }
+
 
+
  40% {
+
    -webkit-transform: rotate3d(0, 0, 1, -10deg);
+
            transform: rotate3d(0, 0, 1, -10deg);
+
  }
+
 
+
  60% {
+
    -webkit-transform: rotate3d(0, 0, 1, 5deg);
+
            transform: rotate3d(0, 0, 1, 5deg);
+
  }
+
 
+
  80% {
+
    -webkit-transform: rotate3d(0, 0, 1, -5deg);
+
            transform: rotate3d(0, 0, 1, -5deg);
+
  }
+
 
+
  100% {
+
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
+
            transform: rotate3d(0, 0, 1, 0deg);
+
  }
+
}
+
 
+
.swing {
+
  -webkit-transform-origin: top center;
+
      -ms-transform-origin: top center;
+
          transform-origin: top center;
+
  -webkit-animation-name: swing;
+
          animation-name: swing;
+
}
+
 
+
@-webkit-keyframes tada {
+
  0% {
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
 
+
  10%, 20% {
+
    -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
+
            transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
+
  }
+
 
+
  30%, 50%, 70%, 90% {
+
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+
            transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+
  }
+
 
+
  40%, 60%, 80% {
+
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+
            transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+
  }
+
 
+
  100% {
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
}
+
 
+
@keyframes tada {
+
  0% {
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
 
+
  10%, 20% {
+
    -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
+
            transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
+
  }
+
 
+
  30%, 50%, 70%, 90% {
+
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+
            transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+
  }
+
 
+
  40%, 60%, 80% {
+
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+
            transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+
  }
+
 
+
  100% {
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
}
+
 
+
.tada {
+
  -webkit-animation-name: tada;
+
          animation-name: tada;
+
}
+
 
+
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
 
+
@-webkit-keyframes wobble {
+
  0% {
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
 
+
  15% {
+
    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+
            transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+
  }
+
 
+
  30% {
+
    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+
            transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+
  }
+
 
+
  45% {
+
    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+
            transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+
  }
+
 
+
  60% {
+
    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+
            transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+
  }
+
 
+
  75% {
+
    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+
            transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+
  }
+
 
+
  100% {
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes wobble {
+
  0% {
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
 
+
  15% {
+
    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+
            transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+
  }
+
 
+
  30% {
+
    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+
            transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+
  }
+
 
+
  45% {
+
    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+
            transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+
  }
+
 
+
  60% {
+
    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+
            transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+
  }
+
 
+
  75% {
+
    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+
            transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+
  }
+
 
+
  100% {
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.wobble {
+
  -webkit-animation-name: wobble;
+
          animation-name: wobble;
+
}
+
 
+
@-webkit-keyframes bounceIn {
+
  0%, 20%, 40%, 60%, 80%, 100% {
+
    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
            transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
  }
+
 
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.3, .3, .3);
+
            transform: scale3d(.3, .3, .3);
+
  }
+
 
+
  20% {
+
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
+
            transform: scale3d(1.1, 1.1, 1.1);
+
  }
+
 
+
  40% {
+
    -webkit-transform: scale3d(.9, .9, .9);
+
            transform: scale3d(.9, .9, .9);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(1.03, 1.03, 1.03);
+
            transform: scale3d(1.03, 1.03, 1.03);
+
  }
+
 
+
  80% {
+
    -webkit-transform: scale3d(.97, .97, .97);
+
            transform: scale3d(.97, .97, .97);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
}
+
 
+
@keyframes bounceIn {
+
  0%, 20%, 40%, 60%, 80%, 100% {
+
    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
            transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
  }
+
 
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.3, .3, .3);
+
            transform: scale3d(.3, .3, .3);
+
  }
+
 
+
  20% {
+
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
+
            transform: scale3d(1.1, 1.1, 1.1);
+
  }
+
 
+
  40% {
+
    -webkit-transform: scale3d(.9, .9, .9);
+
            transform: scale3d(.9, .9, .9);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(1.03, 1.03, 1.03);
+
            transform: scale3d(1.03, 1.03, 1.03);
+
  }
+
 
+
  80% {
+
    -webkit-transform: scale3d(.97, .97, .97);
+
            transform: scale3d(.97, .97, .97);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(1, 1, 1);
+
            transform: scale3d(1, 1, 1);
+
  }
+
}
+
 
+
.bounceIn {
+
  -webkit-animation-name: bounceIn;
+
          animation-name: bounceIn;
+
  -webkit-animation-duration: .75s;
+
          animation-duration: .75s;
+
}
+
 
+
@-webkit-keyframes bounceInDown {
+
  0%, 60%, 75%, 90%, 100% {
+
    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
            transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
  }
+
 
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, -3000px, 0);
+
            transform: translate3d(0, -3000px, 0);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(0, 25px, 0);
+
            transform: translate3d(0, 25px, 0);
+
  }
+
 
+
  75% {
+
    -webkit-transform: translate3d(0, -10px, 0);
+
            transform: translate3d(0, -10px, 0);
+
  }
+
 
+
  90% {
+
    -webkit-transform: translate3d(0, 5px, 0);
+
            transform: translate3d(0, 5px, 0);
+
  }
+
 
+
  100% {
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes bounceInDown {
+
  0%, 60%, 75%, 90%, 100% {
+
    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
            transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
  }
+
 
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, -3000px, 0);
+
            transform: translate3d(0, -3000px, 0);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(0, 25px, 0);
+
            transform: translate3d(0, 25px, 0);
+
  }
+
 
+
  75% {
+
    -webkit-transform: translate3d(0, -10px, 0);
+
            transform: translate3d(0, -10px, 0);
+
  }
+
 
+
  90% {
+
    -webkit-transform: translate3d(0, 5px, 0);
+
            transform: translate3d(0, 5px, 0);
+
  }
+
 
+
  100% {
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.bounceInDown {
+
  -webkit-animation-name: bounceInDown;
+
          animation-name: bounceInDown;
+
}
+
 
+
@-webkit-keyframes bounceInLeft {
+
  0%, 60%, 75%, 90%, 100% {
+
    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
            transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
  }
+
 
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-3000px, 0, 0);
+
            transform: translate3d(-3000px, 0, 0);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(25px, 0, 0);
+
            transform: translate3d(25px, 0, 0);
+
  }
+
 
+
  75% {
+
    -webkit-transform: translate3d(-10px, 0, 0);
+
            transform: translate3d(-10px, 0, 0);
+
  }
+
 
+
  90% {
+
    -webkit-transform: translate3d(5px, 0, 0);
+
            transform: translate3d(5px, 0, 0);
+
  }
+
 
+
  100% {
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes bounceInLeft {
+
  0%, 60%, 75%, 90%, 100% {
+
    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
            transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
  }
+
 
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-3000px, 0, 0);
+
            transform: translate3d(-3000px, 0, 0);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(25px, 0, 0);
+
            transform: translate3d(25px, 0, 0);
+
  }
+
 
+
  75% {
+
    -webkit-transform: translate3d(-10px, 0, 0);
+
            transform: translate3d(-10px, 0, 0);
+
  }
+
 
+
  90% {
+
    -webkit-transform: translate3d(5px, 0, 0);
+
            transform: translate3d(5px, 0, 0);
+
  }
+
 
+
  100% {
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.bounceInLeft {
+
  -webkit-animation-name: bounceInLeft;
+
          animation-name: bounceInLeft;
+
}
+
 
+
@-webkit-keyframes bounceInRight {
+
  0%, 60%, 75%, 90%, 100% {
+
    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
            transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
  }
+
 
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(3000px, 0, 0);
+
            transform: translate3d(3000px, 0, 0);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(-25px, 0, 0);
+
            transform: translate3d(-25px, 0, 0);
+
  }
+
 
+
  75% {
+
    -webkit-transform: translate3d(10px, 0, 0);
+
            transform: translate3d(10px, 0, 0);
+
  }
+
 
+
  90% {
+
    -webkit-transform: translate3d(-5px, 0, 0);
+
            transform: translate3d(-5px, 0, 0);
+
  }
+
 
+
  100% {
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes bounceInRight {
+
  0%, 60%, 75%, 90%, 100% {
+
    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
            transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
  }
+
 
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(3000px, 0, 0);
+
            transform: translate3d(3000px, 0, 0);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(-25px, 0, 0);
+
            transform: translate3d(-25px, 0, 0);
+
  }
+
 
+
  75% {
+
    -webkit-transform: translate3d(10px, 0, 0);
+
            transform: translate3d(10px, 0, 0);
+
  }
+
 
+
  90% {
+
    -webkit-transform: translate3d(-5px, 0, 0);
+
            transform: translate3d(-5px, 0, 0);
+
  }
+
 
+
  100% {
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.bounceInRight {
+
  -webkit-animation-name: bounceInRight;
+
          animation-name: bounceInRight;
+
}
+
 
+
@-webkit-keyframes bounceInUp {
+
  0%, 60%, 75%, 90%, 100% {
+
    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
            transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
  }
+
 
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, 3000px, 0);
+
            transform: translate3d(0, 3000px, 0);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(0, -20px, 0);
+
            transform: translate3d(0, -20px, 0);
+
  }
+
 
+
  75% {
+
    -webkit-transform: translate3d(0, 10px, 0);
+
            transform: translate3d(0, 10px, 0);
+
  }
+
 
+
  90% {
+
    -webkit-transform: translate3d(0, -5px, 0);
+
            transform: translate3d(0, -5px, 0);
+
  }
+
 
+
  100% {
+
    -webkit-transform: translate3d(0, 0, 0);
+
            transform: translate3d(0, 0, 0);
+
  }
+
}
+
 
+
@keyframes bounceInUp {
+
  0%, 60%, 75%, 90%, 100% {
+
    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
            transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+
  }
+
 
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, 3000px, 0);
+
            transform: translate3d(0, 3000px, 0);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(0, -20px, 0);
+
            transform: translate3d(0, -20px, 0);
+
  }
+
 
+
  75% {
+
    -webkit-transform: translate3d(0, 10px, 0);
+
            transform: translate3d(0, 10px, 0);
+
  }
+
 
+
  90% {
+
    -webkit-transform: translate3d(0, -5px, 0);
+
            transform: translate3d(0, -5px, 0);
+
  }
+
 
+
  100% {
+
    -webkit-transform: translate3d(0, 0, 0);
+
            transform: translate3d(0, 0, 0);
+
  }
+
}
+
 
+
.bounceInUp {
+
  -webkit-animation-name: bounceInUp;
+
          animation-name: bounceInUp;
+
}
+
 
+
@-webkit-keyframes bounceOut {
+
  20% {
+
    -webkit-transform: scale3d(.9, .9, .9);
+
            transform: scale3d(.9, .9, .9);
+
  }
+
 
+
  50%, 55% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
+
            transform: scale3d(1.1, 1.1, 1.1);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.3, .3, .3);
+
            transform: scale3d(.3, .3, .3);
+
  }
+
}
+
 
+
@keyframes bounceOut {
+
  20% {
+
    -webkit-transform: scale3d(.9, .9, .9);
+
            transform: scale3d(.9, .9, .9);
+
  }
+
 
+
  50%, 55% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
+
            transform: scale3d(1.1, 1.1, 1.1);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.3, .3, .3);
+
            transform: scale3d(.3, .3, .3);
+
  }
+
}
+
 
+
.bounceOut {
+
  -webkit-animation-name: bounceOut;
+
          animation-name: bounceOut;
+
  -webkit-animation-duration: .75s;
+
          animation-duration: .75s;
+
}
+
 
+
@-webkit-keyframes bounceOutDown {
+
  20% {
+
    -webkit-transform: translate3d(0, 10px, 0);
+
            transform: translate3d(0, 10px, 0);
+
  }
+
 
+
  40%, 45% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(0, -20px, 0);
+
            transform: translate3d(0, -20px, 0);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, 2000px, 0);
+
            transform: translate3d(0, 2000px, 0);
+
  }
+
}
+
 
+
@keyframes bounceOutDown {
+
  20% {
+
    -webkit-transform: translate3d(0, 10px, 0);
+
            transform: translate3d(0, 10px, 0);
+
  }
+
 
+
  40%, 45% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(0, -20px, 0);
+
            transform: translate3d(0, -20px, 0);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, 2000px, 0);
+
            transform: translate3d(0, 2000px, 0);
+
  }
+
}
+
 
+
.bounceOutDown {
+
  -webkit-animation-name: bounceOutDown;
+
          animation-name: bounceOutDown;
+
}
+
 
+
@-webkit-keyframes bounceOutLeft {
+
  20% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(20px, 0, 0);
+
            transform: translate3d(20px, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-2000px, 0, 0);
+
            transform: translate3d(-2000px, 0, 0);
+
  }
+
}
+
 
+
@keyframes bounceOutLeft {
+
  20% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(20px, 0, 0);
+
            transform: translate3d(20px, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-2000px, 0, 0);
+
            transform: translate3d(-2000px, 0, 0);
+
  }
+
}
+
 
+
.bounceOutLeft {
+
  -webkit-animation-name: bounceOutLeft;
+
          animation-name: bounceOutLeft;
+
}
+
 
+
@-webkit-keyframes bounceOutRight {
+
  20% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(-20px, 0, 0);
+
            transform: translate3d(-20px, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(2000px, 0, 0);
+
            transform: translate3d(2000px, 0, 0);
+
  }
+
}
+
 
+
@keyframes bounceOutRight {
+
  20% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(-20px, 0, 0);
+
            transform: translate3d(-20px, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(2000px, 0, 0);
+
            transform: translate3d(2000px, 0, 0);
+
  }
+
}
+
 
+
.bounceOutRight {
+
  -webkit-animation-name: bounceOutRight;
+
          animation-name: bounceOutRight;
+
}
+
 
+
@-webkit-keyframes bounceOutUp {
+
  20% {
+
    -webkit-transform: translate3d(0, -10px, 0);
+
            transform: translate3d(0, -10px, 0);
+
  }
+
 
+
  40%, 45% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(0, 20px, 0);
+
            transform: translate3d(0, 20px, 0);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, -2000px, 0);
+
            transform: translate3d(0, -2000px, 0);
+
  }
+
}
+
 
+
@keyframes bounceOutUp {
+
  20% {
+
    -webkit-transform: translate3d(0, -10px, 0);
+
            transform: translate3d(0, -10px, 0);
+
  }
+
 
+
  40%, 45% {
+
    opacity: 1;
+
    -webkit-transform: translate3d(0, 20px, 0);
+
            transform: translate3d(0, 20px, 0);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, -2000px, 0);
+
            transform: translate3d(0, -2000px, 0);
+
  }
+
}
+
 
+
.bounceOutUp {
+
  -webkit-animation-name: bounceOutUp;
+
          animation-name: bounceOutUp;
+
}
+
 
+
@-webkit-keyframes fadeIn {
+
  0% {opacity: 0;}
+
  100% {opacity: 1;}
+
}
+
 
+
@keyframes fadeIn {
+
  0% {opacity: 0;}
+
  100% {opacity: 1;}
+
}
+
 
+
.fadeIn {
+
  -webkit-animation-name: fadeIn;
+
          animation-name: fadeIn;
+
}
+
 
+
@-webkit-keyframes fadeInDown {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, -100%, 0);
+
            transform: translate3d(0, -100%, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes fadeInDown {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, -100%, 0);
+
            transform: translate3d(0, -100%, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.fadeInDown {
+
  -webkit-animation-name: fadeInDown;
+
          animation-name: fadeInDown;
+
}
+
 
+
@-webkit-keyframes fadeInDownBig {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, -2000px, 0);
+
            transform: translate3d(0, -2000px, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes fadeInDownBig {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, -2000px, 0);
+
            transform: translate3d(0, -2000px, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.fadeInDownBig {
+
  -webkit-animation-name: fadeInDownBig;
+
          animation-name: fadeInDownBig;
+
}
+
 
+
@-webkit-keyframes fadeInLeft {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-100%, 0, 0);
+
            transform: translate3d(-100%, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes fadeInLeft {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-100%, 0, 0);
+
            transform: translate3d(-100%, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.fadeInLeft {
+
  -webkit-animation-name: fadeInLeft;
+
          animation-name: fadeInLeft;
+
}
+
 
+
@-webkit-keyframes fadeInLeftBig {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-2000px, 0, 0);
+
            transform: translate3d(-2000px, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes fadeInLeftBig {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-2000px, 0, 0);
+
            transform: translate3d(-2000px, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.fadeInLeftBig {
+
  -webkit-animation-name: fadeInLeftBig;
+
          animation-name: fadeInLeftBig;
+
}
+
 
+
@-webkit-keyframes fadeInRight {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(100%, 0, 0);
+
            transform: translate3d(100%, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes fadeInRight {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(100%, 0, 0);
+
            transform: translate3d(100%, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.fadeInRight {
+
  -webkit-animation-name: fadeInRight;
+
          animation-name: fadeInRight;
+
}
+
 
+
@-webkit-keyframes fadeInRightBig {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(2000px, 0, 0);
+
            transform: translate3d(2000px, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes fadeInRightBig {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(2000px, 0, 0);
+
            transform: translate3d(2000px, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.fadeInRightBig {
+
  -webkit-animation-name: fadeInRightBig;
+
          animation-name: fadeInRightBig;
+
}
+
 
+
@-webkit-keyframes fadeInUp {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, 100%, 0);
+
            transform: translate3d(0, 100%, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes fadeInUp {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, 100%, 0);
+
            transform: translate3d(0, 100%, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.fadeInUp {
+
  -webkit-animation-name: fadeInUp;
+
          animation-name: fadeInUp;
+
}
+
 
+
@-webkit-keyframes fadeInUpBig {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, 2000px, 0);
+
            transform: translate3d(0, 2000px, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes fadeInUpBig {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, 2000px, 0);
+
            transform: translate3d(0, 2000px, 0);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.fadeInUpBig {
+
  -webkit-animation-name: fadeInUpBig;
+
          animation-name: fadeInUpBig;
+
}
+
 
+
@-webkit-keyframes fadeOut {
+
  0% {opacity: 1;}
+
  100% {opacity: 0;}
+
}
+
 
+
@keyframes fadeOut {
+
  0% {opacity: 1;}
+
  100% {opacity: 0;}
+
}
+
 
+
.fadeOut {
+
  -webkit-animation-name: fadeOut;
+
          animation-name: fadeOut;
+
}
+
 
+
@-webkit-keyframes fadeOutDown {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, 100%, 0);
+
            transform: translate3d(0, 100%, 0);
+
  }
+
}
+
 
+
@keyframes fadeOutDown {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, 100%, 0);
+
            transform: translate3d(0, 100%, 0);
+
  }
+
}
+
 
+
.fadeOutDown {
+
  -webkit-animation-name: fadeOutDown;
+
          animation-name: fadeOutDown;
+
}
+
 
+
@-webkit-keyframes fadeOutDownBig {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, 2000px, 0);
+
            transform: translate3d(0, 2000px, 0);
+
  }
+
}
+
 
+
@keyframes fadeOutDownBig {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, 2000px, 0);
+
            transform: translate3d(0, 2000px, 0);
+
  }
+
}
+
 
+
.fadeOutDownBig {
+
  -webkit-animation-name: fadeOutDownBig;
+
          animation-name: fadeOutDownBig;
+
}
+
 
+
@-webkit-keyframes fadeOutLeft {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-100%, 0, 0);
+
            transform: translate3d(-100%, 0, 0);
+
  }
+
}
+
 
+
@keyframes fadeOutLeft {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-100%, 0, 0);
+
            transform: translate3d(-100%, 0, 0);
+
  }
+
}
+
 
+
.fadeOutLeft {
+
  -webkit-animation-name: fadeOutLeft;
+
          animation-name: fadeOutLeft;
+
}
+
 
+
@-webkit-keyframes fadeOutLeftBig {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-2000px, 0, 0);
+
            transform: translate3d(-2000px, 0, 0);
+
  }
+
}
+
 
+
@keyframes fadeOutLeftBig {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-2000px, 0, 0);
+
            transform: translate3d(-2000px, 0, 0);
+
  }
+
}
+
 
+
.fadeOutLeftBig {
+
  -webkit-animation-name: fadeOutLeftBig;
+
          animation-name: fadeOutLeftBig;
+
}
+
 
+
@-webkit-keyframes fadeOutRight {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(100%, 0, 0);
+
            transform: translate3d(100%, 0, 0);
+
  }
+
}
+
 
+
@keyframes fadeOutRight {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(100%, 0, 0);
+
            transform: translate3d(100%, 0, 0);
+
  }
+
}
+
 
+
.fadeOutRight {
+
  -webkit-animation-name: fadeOutRight;
+
          animation-name: fadeOutRight;
+
}
+
 
+
@-webkit-keyframes fadeOutRightBig {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(2000px, 0, 0);
+
            transform: translate3d(2000px, 0, 0);
+
  }
+
}
+
 
+
@keyframes fadeOutRightBig {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(2000px, 0, 0);
+
            transform: translate3d(2000px, 0, 0);
+
  }
+
}
+
 
+
.fadeOutRightBig {
+
  -webkit-animation-name: fadeOutRightBig;
+
          animation-name: fadeOutRightBig;
+
}
+
 
+
@-webkit-keyframes fadeOutUp {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, -100%, 0);
+
            transform: translate3d(0, -100%, 0);
+
  }
+
}
+
 
+
@keyframes fadeOutUp {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, -100%, 0);
+
            transform: translate3d(0, -100%, 0);
+
  }
+
}
+
 
+
.fadeOutUp {
+
  -webkit-animation-name: fadeOutUp;
+
          animation-name: fadeOutUp;
+
}
+
 
+
@-webkit-keyframes fadeOutUpBig {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, -2000px, 0);
+
            transform: translate3d(0, -2000px, 0);
+
  }
+
}
+
 
+
@keyframes fadeOutUpBig {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(0, -2000px, 0);
+
            transform: translate3d(0, -2000px, 0);
+
  }
+
}
+
 
+
.fadeOutUpBig {
+
  -webkit-animation-name: fadeOutUpBig;
+
          animation-name: fadeOutUpBig;
+
}
+
 
+
@-webkit-keyframes flip {
+
  0% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+
    -webkit-animation-timing-function: ease-out;
+
            animation-timing-function: ease-out;
+
  }
+
 
+
  40% {
+
    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+
            transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+
    -webkit-animation-timing-function: ease-out;
+
            animation-timing-function: ease-out;
+
  }
+
 
+
  50% {
+
    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+
            transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+
    -webkit-animation-timing-function: ease-in;
+
            animation-timing-function: ease-in;
+
  }
+
 
+
  80% {
+
    -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
+
            transform: perspective(400px) scale3d(.95, .95, .95);
+
    -webkit-animation-timing-function: ease-in;
+
            animation-timing-function: ease-in;
+
  }
+
 
+
  100% {
+
    -webkit-transform: perspective(400px);
+
            transform: perspective(400px);
+
    -webkit-animation-timing-function: ease-in;
+
            animation-timing-function: ease-in;
+
  }
+
}
+
 
+
@keyframes flip {
+
  0% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+
    -webkit-animation-timing-function: ease-out;
+
            animation-timing-function: ease-out;
+
  }
+
 
+
  40% {
+
    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+
            transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+
    -webkit-animation-timing-function: ease-out;
+
            animation-timing-function: ease-out;
+
  }
+
 
+
  50% {
+
    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+
            transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+
    -webkit-animation-timing-function: ease-in;
+
            animation-timing-function: ease-in;
+
  }
+
 
+
  80% {
+
    -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
+
            transform: perspective(400px) scale3d(.95, .95, .95);
+
    -webkit-animation-timing-function: ease-in;
+
            animation-timing-function: ease-in;
+
  }
+
 
+
  100% {
+
    -webkit-transform: perspective(400px);
+
            transform: perspective(400px);
+
    -webkit-animation-timing-function: ease-in;
+
            animation-timing-function: ease-in;
+
  }
+
}
+
 
+
.animated.flip {
+
  -webkit-backface-visibility: visible;
+
          backface-visibility: visible;
+
  -webkit-animation-name: flip;
+
          animation-name: flip;
+
}
+
 
+
@-webkit-keyframes flipInX {
+
  0% {
+
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+
            transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+
    -webkit-transition-timing-function: ease-in;
+
            transition-timing-function: ease-in;
+
    opacity: 0;
+
  }
+
 
+
  40% {
+
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+
            transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+
    -webkit-transition-timing-function: ease-in;
+
            transition-timing-function: ease-in;
+
  }
+
 
+
  60% {
+
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+
            transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+
    opacity: 1;
+
  }
+
 
+
  80% {
+
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+
            transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+
  }
+
 
+
  100% {
+
    -webkit-transform: perspective(400px);
+
            transform: perspective(400px);
+
  }
+
}
+
 
+
@keyframes flipInX {
+
  0% {
+
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+
            transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+
    -webkit-transition-timing-function: ease-in;
+
            transition-timing-function: ease-in;
+
    opacity: 0;
+
  }
+
 
+
  40% {
+
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+
            transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+
    -webkit-transition-timing-function: ease-in;
+
            transition-timing-function: ease-in;
+
  }
+
 
+
  60% {
+
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+
            transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+
    opacity: 1;
+
  }
+
 
+
  80% {
+
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+
            transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+
  }
+
 
+
  100% {
+
    -webkit-transform: perspective(400px);
+
            transform: perspective(400px);
+
  }
+
}
+
 
+
.flipInX {
+
  -webkit-backface-visibility: visible !important;
+
          backface-visibility: visible !important;
+
  -webkit-animation-name: flipInX;
+
          animation-name: flipInX;
+
}
+
 
+
@-webkit-keyframes flipInY {
+
  0% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+
    -webkit-transition-timing-function: ease-in;
+
            transition-timing-function: ease-in;
+
    opacity: 0;
+
  }
+
 
+
  40% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+
    -webkit-transition-timing-function: ease-in;
+
            transition-timing-function: ease-in;
+
  }
+
 
+
  60% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+
    opacity: 1;
+
  }
+
 
+
  80% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+
  }
+
 
+
  100% {
+
    -webkit-transform: perspective(400px);
+
            transform: perspective(400px);
+
  }
+
}
+
 
+
@keyframes flipInY {
+
  0% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+
    -webkit-transition-timing-function: ease-in;
+
            transition-timing-function: ease-in;
+
    opacity: 0;
+
  }
+
 
+
  40% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+
    -webkit-transition-timing-function: ease-in;
+
            transition-timing-function: ease-in;
+
  }
+
 
+
  60% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+
    opacity: 1;
+
  }
+
 
+
  80% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+
  }
+
 
+
  100% {
+
    -webkit-transform: perspective(400px);
+
            transform: perspective(400px);
+
  }
+
}
+
 
+
.flipInY {
+
  -webkit-backface-visibility: visible !important;
+
          backface-visibility: visible !important;
+
  -webkit-animation-name: flipInY;
+
          animation-name: flipInY;
+
}
+
 
+
@-webkit-keyframes flipOutX {
+
  0% {
+
    -webkit-transform: perspective(400px);
+
            transform: perspective(400px);
+
  }
+
 
+
  30% {
+
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+
            transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+
            transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
@keyframes flipOutX {
+
  0% {
+
    -webkit-transform: perspective(400px);
+
            transform: perspective(400px);
+
  }
+
 
+
  30% {
+
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+
            transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+
            transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
.flipOutX {
+
  -webkit-animation-name: flipOutX;
+
          animation-name: flipOutX;
+
  -webkit-animation-duration: .75s;
+
          animation-duration: .75s;
+
  -webkit-backface-visibility: visible !important;
+
          backface-visibility: visible !important;
+
}
+
 
+
@-webkit-keyframes flipOutY {
+
  0% {
+
    -webkit-transform: perspective(400px);
+
            transform: perspective(400px);
+
  }
+
 
+
  30% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
@keyframes flipOutY {
+
  0% {
+
    -webkit-transform: perspective(400px);
+
            transform: perspective(400px);
+
  }
+
 
+
  30% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+
            transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
.flipOutY {
+
  -webkit-backface-visibility: visible !important;
+
          backface-visibility: visible !important;
+
  -webkit-animation-name: flipOutY;
+
          animation-name: flipOutY;
+
  -webkit-animation-duration: .75s;
+
          animation-duration: .75s;
+
}
+
 
+
@-webkit-keyframes lightSpeedIn {
+
  0% {
+
    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
+
            transform: translate3d(100%, 0, 0) skewX(-30deg);
+
    opacity: 0;
+
  }
+
 
+
  60% {
+
    -webkit-transform: skewX(20deg);
+
            transform: skewX(20deg);
+
    opacity: 1;
+
  }
+
 
+
  80% {
+
    -webkit-transform: skewX(-5deg);
+
            transform: skewX(-5deg);
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform: none;
+
            transform: none;
+
    opacity: 1;
+
  }
+
}
+
 
+
@keyframes lightSpeedIn {
+
  0% {
+
    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
+
            transform: translate3d(100%, 0, 0) skewX(-30deg);
+
    opacity: 0;
+
  }
+
 
+
  60% {
+
    -webkit-transform: skewX(20deg);
+
            transform: skewX(20deg);
+
    opacity: 1;
+
  }
+
 
+
  80% {
+
    -webkit-transform: skewX(-5deg);
+
            transform: skewX(-5deg);
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform: none;
+
            transform: none;
+
    opacity: 1;
+
  }
+
}
+
 
+
.lightSpeedIn {
+
  -webkit-animation-name: lightSpeedIn;
+
          animation-name: lightSpeedIn;
+
  -webkit-animation-timing-function: ease-out;
+
          animation-timing-function: ease-out;
+
}
+
 
+
@-webkit-keyframes lightSpeedOut {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
+
            transform: translate3d(100%, 0, 0) skewX(30deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
@keyframes lightSpeedOut {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
+
            transform: translate3d(100%, 0, 0) skewX(30deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
.lightSpeedOut {
+
  -webkit-animation-name: lightSpeedOut;
+
          animation-name: lightSpeedOut;
+
  -webkit-animation-timing-function: ease-in;
+
          animation-timing-function: ease-in;
+
}
+
 
+
@-webkit-keyframes rotateIn {
+
  0% {
+
    -webkit-transform-origin: center;
+
            transform-origin: center;
+
    -webkit-transform: rotate3d(0, 0, 1, -200deg);
+
            transform: rotate3d(0, 0, 1, -200deg);
+
    opacity: 0;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: center;
+
            transform-origin: center;
+
    -webkit-transform: none;
+
            transform: none;
+
    opacity: 1;
+
  }
+
}
+
 
+
@keyframes rotateIn {
+
  0% {
+
    -webkit-transform-origin: center;
+
            transform-origin: center;
+
    -webkit-transform: rotate3d(0, 0, 1, -200deg);
+
            transform: rotate3d(0, 0, 1, -200deg);
+
    opacity: 0;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: center;
+
            transform-origin: center;
+
    -webkit-transform: none;
+
            transform: none;
+
    opacity: 1;
+
  }
+
}
+
 
+
.rotateIn {
+
  -webkit-animation-name: rotateIn;
+
          animation-name: rotateIn;
+
}
+
 
+
@-webkit-keyframes rotateInDownLeft {
+
  0% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+
            transform: rotate3d(0, 0, 1, -45deg);
+
    opacity: 0;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    -webkit-transform: none;
+
            transform: none;
+
    opacity: 1;
+
  }
+
}
+
 
+
@keyframes rotateInDownLeft {
+
  0% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+
            transform: rotate3d(0, 0, 1, -45deg);
+
    opacity: 0;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    -webkit-transform: none;
+
            transform: none;
+
    opacity: 1;
+
  }
+
}
+
 
+
.rotateInDownLeft {
+
  -webkit-animation-name: rotateInDownLeft;
+
          animation-name: rotateInDownLeft;
+
}
+
 
+
@-webkit-keyframes rotateInDownRight {
+
  0% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+
            transform: rotate3d(0, 0, 1, 45deg);
+
    opacity: 0;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    -webkit-transform: none;
+
            transform: none;
+
    opacity: 1;
+
  }
+
}
+
 
+
@keyframes rotateInDownRight {
+
  0% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+
            transform: rotate3d(0, 0, 1, 45deg);
+
    opacity: 0;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    -webkit-transform: none;
+
            transform: none;
+
    opacity: 1;
+
  }
+
}
+
 
+
.rotateInDownRight {
+
  -webkit-animation-name: rotateInDownRight;
+
          animation-name: rotateInDownRight;
+
}
+
 
+
@-webkit-keyframes rotateInUpLeft {
+
  0% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+
            transform: rotate3d(0, 0, 1, 45deg);
+
    opacity: 0;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    -webkit-transform: none;
+
            transform: none;
+
    opacity: 1;
+
  }
+
}
+
 
+
@keyframes rotateInUpLeft {
+
  0% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+
            transform: rotate3d(0, 0, 1, 45deg);
+
    opacity: 0;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    -webkit-transform: none;
+
            transform: none;
+
    opacity: 1;
+
  }
+
}
+
 
+
.rotateInUpLeft {
+
  -webkit-animation-name: rotateInUpLeft;
+
          animation-name: rotateInUpLeft;
+
}
+
 
+
@-webkit-keyframes rotateInUpRight {
+
  0% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, -90deg);
+
            transform: rotate3d(0, 0, 1, -90deg);
+
    opacity: 0;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    -webkit-transform: none;
+
            transform: none;
+
    opacity: 1;
+
  }
+
}
+
 
+
@keyframes rotateInUpRight {
+
  0% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, -90deg);
+
            transform: rotate3d(0, 0, 1, -90deg);
+
    opacity: 0;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    -webkit-transform: none;
+
            transform: none;
+
    opacity: 1;
+
  }
+
}
+
 
+
.rotateInUpRight {
+
  -webkit-animation-name: rotateInUpRight;
+
          animation-name: rotateInUpRight;
+
}
+
 
+
@-webkit-keyframes rotateOut {
+
  0% {
+
    -webkit-transform-origin: center;
+
            transform-origin: center;
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: center;
+
            transform-origin: center;
+
    -webkit-transform: rotate3d(0, 0, 1, 200deg);
+
            transform: rotate3d(0, 0, 1, 200deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
@keyframes rotateOut {
+
  0% {
+
    -webkit-transform-origin: center;
+
            transform-origin: center;
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: center;
+
            transform-origin: center;
+
    -webkit-transform: rotate3d(0, 0, 1, 200deg);
+
            transform: rotate3d(0, 0, 1, 200deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
.rotateOut {
+
  -webkit-animation-name: rotateOut;
+
          animation-name: rotateOut;
+
}
+
 
+
@-webkit-keyframes rotateOutDownLeft {
+
  0% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+
            transform: rotate3d(0, 0, 1, 45deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
@keyframes rotateOutDownLeft {
+
  0% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+
            transform: rotate3d(0, 0, 1, 45deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
.rotateOutDownLeft {
+
  -webkit-animation-name: rotateOutDownLeft;
+
          animation-name: rotateOutDownLeft;
+
}
+
 
+
@-webkit-keyframes rotateOutDownRight {
+
  0% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+
            transform: rotate3d(0, 0, 1, -45deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
@keyframes rotateOutDownRight {
+
  0% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+
            transform: rotate3d(0, 0, 1, -45deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
.rotateOutDownRight {
+
  -webkit-animation-name: rotateOutDownRight;
+
          animation-name: rotateOutDownRight;
+
}
+
 
+
@-webkit-keyframes rotateOutUpLeft {
+
  0% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+
            transform: rotate3d(0, 0, 1, -45deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
@keyframes rotateOutUpLeft {
+
  0% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: left bottom;
+
            transform-origin: left bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+
            transform: rotate3d(0, 0, 1, -45deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
.rotateOutUpLeft {
+
  -webkit-animation-name: rotateOutUpLeft;
+
          animation-name: rotateOutUpLeft;
+
}
+
 
+
@-webkit-keyframes rotateOutUpRight {
+
  0% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, 90deg);
+
            transform: rotate3d(0, 0, 1, 90deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
@keyframes rotateOutUpRight {
+
  0% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform-origin: right bottom;
+
            transform-origin: right bottom;
+
    -webkit-transform: rotate3d(0, 0, 1, 90deg);
+
            transform: rotate3d(0, 0, 1, 90deg);
+
    opacity: 0;
+
  }
+
}
+
 
+
.rotateOutUpRight {
+
  -webkit-animation-name: rotateOutUpRight;
+
          animation-name: rotateOutUpRight;
+
}
+
 
+
@-webkit-keyframes hinge {
+
  0% {
+
    -webkit-transform-origin: top left;
+
            transform-origin: top left;
+
    -webkit-animation-timing-function: ease-in-out;
+
            animation-timing-function: ease-in-out;
+
  }
+
 
+
  20%, 60% {
+
    -webkit-transform: rotate3d(0, 0, 1, 80deg);
+
            transform: rotate3d(0, 0, 1, 80deg);
+
    -webkit-transform-origin: top left;
+
            transform-origin: top left;
+
    -webkit-animation-timing-function: ease-in-out;
+
            animation-timing-function: ease-in-out;
+
  }
+
 
+
  40%, 80% {
+
    -webkit-transform: rotate3d(0, 0, 1, 60deg);
+
            transform: rotate3d(0, 0, 1, 60deg);
+
    -webkit-transform-origin: top left;
+
            transform-origin: top left;
+
    -webkit-animation-timing-function: ease-in-out;
+
            animation-timing-function: ease-in-out;
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform: translate3d(0, 700px, 0);
+
            transform: translate3d(0, 700px, 0);
+
    opacity: 0;
+
  }
+
}
+
 
+
@keyframes hinge {
+
  0% {
+
    -webkit-transform-origin: top left;
+
            transform-origin: top left;
+
    -webkit-animation-timing-function: ease-in-out;
+
            animation-timing-function: ease-in-out;
+
  }
+
 
+
  20%, 60% {
+
    -webkit-transform: rotate3d(0, 0, 1, 80deg);
+
            transform: rotate3d(0, 0, 1, 80deg);
+
    -webkit-transform-origin: top left;
+
            transform-origin: top left;
+
    -webkit-animation-timing-function: ease-in-out;
+
            animation-timing-function: ease-in-out;
+
  }
+
 
+
  40%, 80% {
+
    -webkit-transform: rotate3d(0, 0, 1, 60deg);
+
            transform: rotate3d(0, 0, 1, 60deg);
+
    -webkit-transform-origin: top left;
+
            transform-origin: top left;
+
    -webkit-animation-timing-function: ease-in-out;
+
            animation-timing-function: ease-in-out;
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    -webkit-transform: translate3d(0, 700px, 0);
+
            transform: translate3d(0, 700px, 0);
+
    opacity: 0;
+
  }
+
}
+
 
+
.hinge {
+
  -webkit-animation-name: hinge;
+
          animation-name: hinge;
+
}
+
 
+
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
 
+
@-webkit-keyframes rollIn {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+
            transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
@keyframes rollIn {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+
            transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+
  }
+
 
+
  100% {
+
    opacity: 1;
+
    -webkit-transform: none;
+
            transform: none;
+
  }
+
}
+
 
+
.rollIn {
+
  -webkit-animation-name: rollIn;
+
          animation-name: rollIn;
+
}
+
 
+
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
 
+
@-webkit-keyframes rollOut {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+
            transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+
  }
+
}
+
 
+
@keyframes rollOut {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+
            transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+
  }
+
}
+
 
+
.rollOut {
+
  -webkit-animation-name: rollOut;
+
          animation-name: rollOut;
+
}
+
 
+
@-webkit-keyframes zoomIn {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.3, .3, .3);
+
            transform: scale3d(.3, .3, .3);
+
  }
+
 
+
  50% {
+
    opacity: 1;
+
  }
+
}
+
 
+
@keyframes zoomIn {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.3, .3, .3);
+
            transform: scale3d(.3, .3, .3);
+
  }
+
 
+
  50% {
+
    opacity: 1;
+
  }
+
}
+
 
+
.zoomIn {
+
  -webkit-animation-name: zoomIn;
+
          animation-name: zoomIn;
+
}
+
 
+
@-webkit-keyframes zoomInDown {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
+
            transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
  }
+
}
+
 
+
@keyframes zoomInDown {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
+
            transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
  }
+
}
+
 
+
.zoomInDown {
+
  -webkit-animation-name: zoomInDown;
+
          animation-name: zoomInDown;
+
}
+
 
+
@-webkit-keyframes zoomInLeft {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
+
            transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
  }
+
}
+
 
+
@keyframes zoomInLeft {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
+
            transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
  }
+
}
+
 
+
.zoomInLeft {
+
  -webkit-animation-name: zoomInLeft;
+
          animation-name: zoomInLeft;
+
}
+
 
+
@-webkit-keyframes zoomInRight {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
+
            transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
  }
+
}
+
 
+
@keyframes zoomInRight {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
+
            transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
  }
+
}
+
 
+
.zoomInRight {
+
  -webkit-animation-name: zoomInRight;
+
          animation-name: zoomInRight;
+
}
+
 
+
@-webkit-keyframes zoomInUp {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
+
            transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
  }
+
}
+
 
+
@keyframes zoomInUp {
+
  0% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
+
            transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
  }
+
 
+
  60% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
  }
+
}
+
 
+
.zoomInUp {
+
  -webkit-animation-name: zoomInUp;
+
          animation-name: zoomInUp;
+
}
+
 
+
@-webkit-keyframes zoomOut {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  50% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.3, .3, .3);
+
            transform: scale3d(.3, .3, .3);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
  }
+
}
+
 
+
@keyframes zoomOut {
+
  0% {
+
    opacity: 1;
+
  }
+
 
+
  50% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.3, .3, .3);
+
            transform: scale3d(.3, .3, .3);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
  }
+
}
+
 
+
.zoomOut {
+
  -webkit-animation-name: zoomOut;
+
          animation-name: zoomOut;
+
}
+
 
+
@-webkit-keyframes zoomOutDown {
+
  40% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
+
            transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
+
    -webkit-transform-origin: center bottom;
+
            transform-origin: center bottom;
+
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
  }
+
}
+
 
+
@keyframes zoomOutDown {
+
  40% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
+
            transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
+
    -webkit-transform-origin: center bottom;
+
            transform-origin: center bottom;
+
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
  }
+
}
+
 
+
.zoomOutDown {
+
  -webkit-animation-name: zoomOutDown;
+
          animation-name: zoomOutDown;
+
}
+
 
+
@-webkit-keyframes zoomOutLeft {
+
  40% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
+
            transform: scale(.1) translate3d(-2000px, 0, 0);
+
    -webkit-transform-origin: left center;
+
            transform-origin: left center;
+
  }
+
}
+
 
+
@keyframes zoomOutLeft {
+
  40% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
+
            transform: scale(.1) translate3d(-2000px, 0, 0);
+
    -webkit-transform-origin: left center;
+
            transform-origin: left center;
+
  }
+
}
+
 
+
.zoomOutLeft {
+
  -webkit-animation-name: zoomOutLeft;
+
          animation-name: zoomOutLeft;
+
}
+
 
+
@-webkit-keyframes zoomOutRight {
+
  40% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
+
            transform: scale(.1) translate3d(2000px, 0, 0);
+
    -webkit-transform-origin: right center;
+
            transform-origin: right center;
+
  }
+
}
+
 
+
@keyframes zoomOutRight {
+
  40% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
+
            transform: scale(.1) translate3d(2000px, 0, 0);
+
    -webkit-transform-origin: right center;
+
            transform-origin: right center;
+
  }
+
}
+
 
+
.zoomOutRight {
+
  -webkit-animation-name: zoomOutRight;
+
          animation-name: zoomOutRight;
+
}
+
 
+
@-webkit-keyframes zoomOutUp {
+
  40% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
+
            transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
+
    -webkit-transform-origin: center bottom;
+
            transform-origin: center bottom;
+
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
  }
+
}
+
 
+
@keyframes zoomOutUp {
+
  40% {
+
    opacity: 1;
+
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+
            transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+
  }
+
 
+
  100% {
+
    opacity: 0;
+
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
+
            transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
+
    -webkit-transform-origin: center bottom;
+
            transform-origin: center bottom;
+
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+
  }
+
}
+
 
+
.zoomOutUp {
+
  -webkit-animation-name: zoomOutUp;
+
          animation-name: zoomOutUp;
+
}
+
 
+
@-webkit-keyframes slideInDown {
+
  0% {
+
    -webkit-transform: translateY(-100%);
+
            transform: translateY(-100%);
+
    visibility: visible;
+
  }
+
 
+
  100% {
+
    -webkit-transform: translateY(0);
+
            transform: translateY(0);
+
  }
+
}
+
 
+
@keyframes slideInDown {
+
  0% {
+
    -webkit-transform: translateY(-100%);
+
            transform: translateY(-100%);
+
    visibility: visible;
+
  }
+
 
+
  100% {
+
    -webkit-transform: translateY(0);
+
            transform: translateY(0);
+
  }
+
}
+
 
+
.slideInDown {
+
  -webkit-animation-name: slideInDown;
+
          animation-name: slideInDown;
+
}
+
 
+
@-webkit-keyframes slideInLeft {
+
  0% {
+
    -webkit-transform: translateX(-100%);
+
            transform: translateX(-100%);
+
    visibility: visible;
+
  }
+
 
+
  100% {
+
    -webkit-transform: translateX(0);
+
            transform: translateX(0);
+
  }
+
}
+
 
+
@keyframes slideInLeft {
+
  0% {
+
    -webkit-transform: translateX(-100%);
+
            transform: translateX(-100%);
+
    visibility: visible;
+
  }
+
 
+
  100% {
+
    -webkit-transform: translateX(0);
+
            transform: translateX(0);
+
  }
+
}
+
 
+
.slideInLeft {
+
  -webkit-animation-name: slideInLeft;
+
          animation-name: slideInLeft;
+
}
+
 
+
@-webkit-keyframes slideInRight {
+
  0% {
+
    -webkit-transform: translateX(100%);
+
            transform: translateX(100%);
+
    visibility: visible;
+
  }
+
 
+
  100% {
+
    -webkit-transform: translateX(0);
+
            transform: translateX(0);
+
  }
+
}
+
 
+
@keyframes slideInRight {
+
  0% {
+
    -webkit-transform: translateX(100%);
+
            transform: translateX(100%);
+
    visibility: visible;
+
  }
+
 
+
  100% {
+
    -webkit-transform: translateX(0);
+
            transform: translateX(0);
+
  }
+
}
+
 
+
.slideInRight {
+
  -webkit-animation-name: slideInRight;
+
          animation-name: slideInRight;
+
}
+
 
+
@-webkit-keyframes slideInUp {
+
  0% {
+
    -webkit-transform: translateY(100%);
+
            transform: translateY(100%);
+
    visibility: visible;
+
  }
+
 
+
  100% {
+
    -webkit-transform: translateY(0);
+
            transform: translateY(0);
+
  }
+
}
+
 
+
@keyframes slideInUp {
+
  0% {
+
    -webkit-transform: translateY(100%);
+
            transform: translateY(100%);
+
    visibility: visible;
+
  }
+
 
+
  100% {
+
    -webkit-transform: translateY(0);
+
            transform: translateY(0);
+
  }
+
}
+
 
+
.slideInUp {
+
  -webkit-animation-name: slideInUp;
+
          animation-name: slideInUp;
+
}
+
 
+
@-webkit-keyframes slideOutDown {
+
  0% {
+
    -webkit-transform: translateY(0);
+
            transform: translateY(0);
+
  }
+
 
+
  100% {
+
    visibility: hidden;
+
    -webkit-transform: translateY(100%);
+
            transform: translateY(100%);
+
  }
+
}
+
 
+
@keyframes slideOutDown {
+
  0% {
+
    -webkit-transform: translateY(0);
+
            transform: translateY(0);
+
  }
+
 
+
  100% {
+
    visibility: hidden;
+
    -webkit-transform: translateY(100%);
+
            transform: translateY(100%);
+
  }
+
}
+
 
+
.slideOutDown {
+
  -webkit-animation-name: slideOutDown;
+
          animation-name: slideOutDown;
+
}
+
 
+
@-webkit-keyframes slideOutLeft {
+
  0% {
+
    -webkit-transform: translateX(0);
+
            transform: translateX(0);
+
  }
+
 
+
  100% {
+
    visibility: hidden;
+
    -webkit-transform: translateX(-100%);
+
            transform: translateX(-100%);
+
  }
+
}
+
 
+
@keyframes slideOutLeft {
+
  0% {
+
    -webkit-transform: translateX(0);
+
            transform: translateX(0);
+
  }
+
 
+
  100% {
+
    visibility: hidden;
+
    -webkit-transform: translateX(-100%);
+
            transform: translateX(-100%);
+
  }
+
}
+
 
+
.slideOutLeft {
+
  -webkit-animation-name: slideOutLeft;
+
          animation-name: slideOutLeft;
+
}
+
 
+
@-webkit-keyframes slideOutRight {
+
  0% {
+
    -webkit-transform: translateX(0);
+
            transform: translateX(0);
+
  }
+
 
+
  100% {
+
    visibility: hidden;
+
    -webkit-transform: translateX(100%);
+
            transform: translateX(100%);
+
  }
+
}
+
 
+
@keyframes slideOutRight {
+
  0% {
+
    -webkit-transform: translateX(0);
+
            transform: translateX(0);
+
  }
+
 
+
  100% {
+
    visibility: hidden;
+
    -webkit-transform: translateX(100%);
+
            transform: translateX(100%);
+
  }
+
}
+
 
+
.slideOutRight {
+
  -webkit-animation-name: slideOutRight;
+
          animation-name: slideOutRight;
+
}
+
 
+
@-webkit-keyframes slideOutUp {
+
  0% {
+
    -webkit-transform: translateY(0);
+
            transform: translateY(0);
+
  }
+
 
+
  100% {
+
    visibility: hidden;
+
    -webkit-transform: translateY(-100%);
+
            transform: translateY(-100%);
+
  }
+
}
+
 
+
@keyframes slideOutUp {
+
  0% {
+
    -webkit-transform: translateY(0);
+
            transform: translateY(0);
+
  }
+
 
+
  100% {
+
    visibility: hidden;
+
    -webkit-transform: translateY(-100%);
+
            transform: translateY(-100%);
+
  }
+
}
+
 
+
.slideOutUp {
+
  -webkit-animation-name: slideOutUp;
+
          animation-name: slideOutUp;
+
}
+
/*
+
* Nivo Lightbox v1.2.0
+
* http://dev7studios.com/nivo-lightbox
+
*
+
* Copyright 2013, Dev7studios
+
* Free to use and abuse under the MIT license.
+
* http://www.opensource.org/licenses/mit-license.php
+
*/
+
 
+
.nivo-lightbox-overlay {
+
    position: fixed;
+
    top: 0;
+
    left: 0;
+
    z-index: 99998;
+
    width: 100%;
+
    height: 100%;
+
    overflow: hidden;
+
    visibility: hidden;
+
    opacity: 0;
+
    -webkit-box-sizing: border-box;
+
    -moz-box-sizing: border-box;
+
    box-sizing: border-box;
+
}
+
.nivo-lightbox-overlay.nivo-lightbox-open {
+
    visibility: visible;
+
    opacity: 1;
+
}
+
.nivo-lightbox-wrap  {
+
    position: absolute;
+
    top: 10%;
+
    bottom: 10%;
+
    left: 10%;
+
    right: 10%;
+
}
+
.nivo-lightbox-content {
+
    width: 100%;
+
    height: 100%;
+
}
+
.nivo-lightbox-title-wrap {
+
    position: absolute;
+
    bottom: 0;
+
    left: 0;
+
    width: 100%;
+
    z-index: 99999;
+
    text-align: center;
+
}
+
.nivo-lightbox-nav { display: none; }
+
.nivo-lightbox-prev {
+
    position: absolute;
+
    top: 50%;
+
    left: 0;
+
}
+
.nivo-lightbox-next {
+
    position: absolute;
+
    top: 50%;
+
    right: 0;
+
}
+
.nivo-lightbox-close {
+
    position: absolute;
+
    top: 2%;
+
    right: 2%;
+
}
+
 
+
.nivo-lightbox-image { text-align: center; }
+
.nivo-lightbox-image img {
+
    max-width: 100%;
+
    max-height: 100%;
+
    width: auto;
+
    height: auto;
+
    vertical-align: middle;
+
}
+
.nivo-lightbox-content iframe {
+
    width: 100%;
+
    height: 100%;
+
}
+
.nivo-lightbox-inline,
+
.nivo-lightbox-ajax {
+
    max-height: 100%;
+
    overflow: auto;
+
    -webkit-box-sizing: border-box;
+
    -moz-box-sizing: border-box;
+
    box-sizing: border-box;
+
    /* https://bugzilla.mozilla.org/show_bug.cgi?id=308801 */
+
}
+
.nivo-lightbox-error {
+
    display: table;
+
    text-align: center;
+
    width: 100%;
+
    height: 100%;
+
    color: #fff;
+
    text-shadow: 0 1px 1px #000;
+
}
+
.nivo-lightbox-error p {
+
    display: table-cell;
+
    vertical-align: middle;
+
}
+
 
+
/* Effects
+
**********************************************/
+
.nivo-lightbox-notouch .nivo-lightbox-effect-fade,
+
.nivo-lightbox-notouch .nivo-lightbox-effect-fadeScale,
+
.nivo-lightbox-notouch .nivo-lightbox-effect-slideLeft,
+
.nivo-lightbox-notouch .nivo-lightbox-effect-slideRight,
+
.nivo-lightbox-notouch .nivo-lightbox-effect-slideUp,
+
.nivo-lightbox-notouch .nivo-lightbox-effect-slideDown,
+
.nivo-lightbox-notouch .nivo-lightbox-effect-fall {
+
    -webkit-transition: all 0.2s ease-in-out;
+
      -moz-transition: all 0.2s ease-in-out;
+
        -ms-transition: all 0.2s ease-in-out;
+
        -o-transition: all 0.2s ease-in-out;
+
            transition: all 0.2s ease-in-out;
+
}
+
 
+
/* fadeScale */
+
.nivo-lightbox-effect-fadeScale .nivo-lightbox-wrap {
+
    -webkit-transition: all 0.3s;
+
      -moz-transition: all 0.3s;
+
        -ms-transition: all 0.3s;
+
        -o-transition: all 0.3s;
+
            transition: all 0.3s;
+
    -webkit-transform: scale(0.7);
+
      -moz-transform: scale(0.7);
+
        -ms-transform: scale(0.7);
+
            transform: scale(0.7);
+
}
+
.nivo-lightbox-effect-fadeScale.nivo-lightbox-open .nivo-lightbox-wrap {
+
    -webkit-transform: scale(1);
+
      -moz-transform: scale(1);
+
        -ms-transform: scale(1);
+
            transform: scale(1);
+
}
+
 
+
/* slideLeft / slideRight / slideUp / slideDown */
+
.nivo-lightbox-effect-slideLeft .nivo-lightbox-wrap,
+
.nivo-lightbox-effect-slideRight .nivo-lightbox-wrap,
+
.nivo-lightbox-effect-slideUp .nivo-lightbox-wrap,
+
.nivo-lightbox-effect-slideDown .nivo-lightbox-wrap {
+
    -webkit-transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
+
      -moz-transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
+
        -ms-transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
+
        -o-transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
+
            transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
+
}
+
.nivo-lightbox-effect-slideLeft .nivo-lightbox-wrap {
+
    -webkit-transform: translateX(-10%);
+
      -moz-transform: translateX(-10%);
+
        -ms-transform: translateX(-10%);
+
            transform: translateX(-10%);
+
}
+
.nivo-lightbox-effect-slideRight .nivo-lightbox-wrap {
+
    -webkit-transform: translateX(10%);
+
      -moz-transform: translateX(10%);
+
        -ms-transform: translateX(10%);
+
            transform: translateX(10%);
+
}
+
.nivo-lightbox-effect-slideLeft.nivo-lightbox-open .nivo-lightbox-wrap,
+
.nivo-lightbox-effect-slideRight.nivo-lightbox-open .nivo-lightbox-wrap {
+
    -webkit-transform: translateX(0);
+
      -moz-transform: translateX(0);
+
        -ms-transform: translateX(0);
+
            transform: translateX(0);
+
}
+
.nivo-lightbox-effect-slideDown .nivo-lightbox-wrap {
+
    -webkit-transform: translateY(-10%);
+
      -moz-transform: translateY(-10%);
+
        -ms-transform: translateY(-10%);
+
            transform: translateY(-10%);
+
}
+
.nivo-lightbox-effect-slideUp .nivo-lightbox-wrap {
+
    -webkit-transform: translateY(10%);
+
      -moz-transform: translateY(10%);
+
        -ms-transform: translateY(10%);
+
            transform: translateY(10%);
+
}
+
.nivo-lightbox-effect-slideUp.nivo-lightbox-open .nivo-lightbox-wrap,
+
.nivo-lightbox-effect-slideDown.nivo-lightbox-open .nivo-lightbox-wrap {
+
    -webkit-transform: translateY(0);
+
      -moz-transform: translateY(0);
+
        -ms-transform: translateY(0);
+
            transform: translateY(0);
+
}
+
 
+
/* fall */
+
.nivo-lightbox-body-effect-fall .nivo-lightbox-effect-fall {
+
    -webkit-perspective: 1000px;
+
      -moz-perspective: 1000px;
+
            perspective: 1000px;
+
}
+
.nivo-lightbox-effect-fall .nivo-lightbox-wrap {
+
    -webkit-transition: all 0.3s ease-out;
+
      -moz-transition: all 0.3s ease-out;
+
        -ms-transition: all 0.3s ease-out;
+
        -o-transition: all 0.3s ease-out;
+
            transition: all 0.3s ease-out;
+
    -webkit-transform: translateZ(300px);
+
      -moz-transform: translateZ(300px);
+
        -ms-transform: translateZ(300px);
+
            transform: translateZ(300px);
+
}
+
.nivo-lightbox-effect-fall.nivo-lightbox-open .nivo-lightbox-wrap {
+
    -webkit-transform: translateZ(0);
+
      -moz-transform: translateZ(0);
+
        -ms-transform: translateZ(0);
+
            transform: translateZ(0);
+
}
+
/*
+
*  Core Owl Carousel CSS File
+
*  v1.3.2
+
*/
+
 
+
/* clearfix */
+
.owl-carousel .owl-wrapper:after {
+
    content: ".";
+
    display: block;
+
    clear: both;
+
    visibility: hidden;
+
    line-height: 0;
+
    height: 0;
+
}
+
/* display none until init */
+
.owl-carousel{
+
    display: none;
+
    position: relative;
+
    width: 100%;
+
    -ms-touch-action: pan-y;
+
}
+
.owl-carousel .owl-wrapper{
+
    display: none;
+
    position: relative;
+
    -webkit-transform: translate3d(0px, 0px, 0px);
+
}
+
.owl-carousel .owl-wrapper-outer{
+
    overflow: hidden;
+
    position: relative;
+
    width: 100%;
+
}
+
.owl-carousel .owl-wrapper-outer.autoHeight{
+
    -webkit-transition: height 500ms ease-in-out;
+
    -moz-transition: height 500ms ease-in-out;
+
    -ms-transition: height 500ms ease-in-out;
+
    -o-transition: height 500ms ease-in-out;
+
    transition: height 500ms ease-in-out;
+
}
+
   
+
.owl-carousel .owl-item{
+
    float: left;
+
}
+
.owl-controls .owl-page,
+
.owl-controls .owl-buttons div{
+
    cursor: pointer;
+
}
+
.owl-controls {
+
    -webkit-user-select: none;
+
    -khtml-user-select: none;
+
    -moz-user-select: none;
+
    -ms-user-select: none;
+
    user-select: none;
+
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+
}
+
 
+
/* mouse grab icon */
+
.grabbing {
+
    cursor:url(grabbing.png) 8 8, move;
+
}
+
 
+
/* fix */
+
.owl-carousel  .owl-wrapper,
+
.owl-carousel  .owl-item{
+
    -webkit-backface-visibility: hidden;
+
    -moz-backface-visibility:    hidden;
+
    -ms-backface-visibility:    hidden;
+
  -webkit-transform: translate3d(0,0,0);
+
  -moz-transform: translate3d(0,0,0);
+
  -ms-transform: translate3d(0,0,0);
+
}
+
 
+
/*
+
*  Owl Carousel Owl Demo Theme
+
*  v1.3.2
+
*/
+
 
+
.owl-theme .owl-controls{
+
    margin-top: 10px;
+
    text-align: center;
+
}
+
 
+
/* Styling Next and Prev buttons */
+
 
+
.owl-theme .owl-controls .owl-buttons div{
+
    color: #FFF;
+
    display: inline-block;
+
    zoom: 1;
+
    *display: inline;/*IE7 life-saver */
+
    margin: 5px;
+
    padding: 3px 10px;
+
    font-size: 12px;
+
    -webkit-border-radius: 30px;
+
    -moz-border-radius: 30px;
+
    border-radius: 30px;
+
    background: #869791;
+
    filter: Alpha(Opacity=50);/*IE7 fix*/
+
    opacity: 0.5;
+
}
+
/* Clickable class fix problem with hover on touch devices */
+
/* Use it for non-touch hover action */
+
.owl-theme .owl-controls.clickable .owl-buttons div:hover{
+
    filter: Alpha(Opacity=100);/*IE7 fix*/
+
    opacity: 1;
+
    text-decoration: none;
+
}
+
 
+
/* Styling Pagination*/
+
 
+
.owl-theme .owl-controls .owl-page{
+
    display: inline-block;
+
    zoom: 1;
+
    *display: inline;/*IE7 life-saver */
+
}
+
.owl-theme .owl-controls .owl-page span{
+
    display: block;
+
    width: 12px;
+
    height: 12px;
+
    margin: 5px 7px;
+
    filter: Alpha(Opacity=50);/*IE7 fix*/
+
    opacity: 0.5;
+
    -webkit-border-radius: 20px;
+
    -moz-border-radius: 20px;
+
    border-radius: 20px;
+
    background: #869791;
+
}
+
 
+
.owl-theme .owl-controls .owl-page.active span,
+
.owl-theme .owl-controls.clickable .owl-page:hover span{
+
    filter: Alpha(Opacity=100);/*IE7 fix*/
+
    opacity: 1;
+
}
+
 
+
/* If PaginationNumbers is true */
+
 
+
.owl-theme .owl-controls .owl-page span.owl-numbers{
+
    height: auto;
+
    width: auto;
+
    color: #FFF;
+
    padding: 2px 10px;
+
    font-size: 12px;
+
    -webkit-border-radius: 30px;
+
    -moz-border-radius: 30px;
+
    border-radius: 30px;
+
}
+
 
+
/* preloading images */
+
.owl-item.loading{
+
    min-height: 150px;
+
    background: url(AjaxLoader.gif) no-repeat center center
+
}
+
/* iPads (portrait and landscape) ----------- */
+
@media (max-width: 768px) {
+
    body{ overflow-x: hidden;}
+
    .navbar-header {
+
        float: none;
+
    }
+
    .navbar-toggle {
+
        display: block;
+
    }
+
    .navbar-collapse {
+
        border-top: 1px solid transparent;
+
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
+
    }
+
    .navbar-collapse.collapse {
+
        display: none !important;
+
    }
+
    .navbar-fixed-top .navbar-collapse,
+
    .navbar-fixed-bottom .navbar-collapse {
+
      max-height: 420px;
+
      text-align: center;
+
    }
+
    .gray-bg .vline {
+
        left: 11%;
+
    }
+
    .navbar-right {
+
        float: none !important;
+
        margin-right: -15px;
+
    }
+
    .navbar-nav {
+
        float: center !important;
+
        margin: 7.5px -15px;
+
    }
+
    .navbar-nav>li {
+
        float: none;
+
    }
+
    .navbar-nav>li>a {
+
        padding-top: 10px;
+
        padding-bottom: 10px;
+
    }
+
    .navbar-text {
+
        float: none;
+
        margin: 15px 0;
+
    }
+
    .navbar-collapse.collapse.in {display: block!important;}
+
    .collapsing {overflow: hidden!important; }
+
    .navbar-nav {margin: 0 -15px;}
+
    .navbar-nav .open .dropdown-menu > li > a, .navbar-nav .open .dropdown-menu .dropdown-header {
+
        padding: 10px 15px 10px 25px;
+
    }
+
    .price.panel-default {
+
        margin: 40px;
+
    }
+
    .price.featured.panel-default {
+
        margin: 40px;
+
    }
+
    .content-heading{ margin-top: 80px;}
+
    .ipad-wrapper .app-wrap {left: 22%;}
+
    #tf-home.app .content-heading.text-left{text-align: center;}
+
    #itemsWorkTwo .box .hover-text i.fa {
+
        top: 0%;
+
    }
+
}
+
@media (max-width: 768px) {
+
    #tf-home.slider .content-heading {
+
        margin-top: 30px;
+
    }
+
    #tf-home.slider h1 {
+
        color: #FC3;
+
        font-size: 28px;
+
    }
+
    .slider .content-heading p.lead { margin-bottom: 20px; }
+
    .slider .carousel-indicators { bottom: 30px; }
+
}
+
@media (max-width: 603px) {
+
    .slider a.goto-btn { display: none;}
+
    .ipad-wrapper .app-wrap {left: 16%;}
+
    #tf-footer .pull-left,
+
    #tf-footer .pull-right {
+
        float: none !important;
+
        text-align: center;
+
    }
+
}
+
 
+
@media (max-width: 460px) {
+
    .gray-bg .vline {
+
        left: 15%;
+
    }
+
    .meta-detail { display: none; }
+
    h1 { font-size: 34px;}
+
    #tf-home.slider h1 { font-size: 26px;}
+
    p.lead { display: none;}
+
    .slider .carousel-indicators { bottom: 0px; }
+
    .ipad-wrapper .app-wrap {left: 3%;}
+
}
+
@media (max-width: 360px) {
+
    #tf-services,
+
    #tf-pricing,
+
    .section-header,
+
    .about-right-content,
+
    #tf-features,
+
    #feature,
+
    #tf-works,
+
    #tf-blog,
+
    #tf-contact {
+
      padding: 20px 0;
+
    }
+
    p{ font-size: 12px}
+
    h2{ font-size: 20px;}
+
    h4{ line-height: 20px;}
+
    ul.list-inline.cat > li{  margin-bottom: 20px;}
+
    .gray-bg .vline { left: 20%;}
+
    .post-meta {min-height: 50px;}
+
    .price.panel-default {
+
        margin: 20px;
+
    }
+
    .price.featured.panel-default {
+
        margin: 20px;
+
    }
+
    h1 {font-size: 26px}
+
    #tf-home.slider{ display: none;}
+
    #tf-intro.slider{ margin-top: 70px !important}
+
    .ipad-wrapper .app-wrap {display: none;}
+
    a.goto-btn {
+
        margin-right: auto;
+
        margin: 0 10px;
+
    }
+
    a.goto-btn {
+
        display: inline-block;
+
    }
+
    .blog .post-meta {min-height: 55px;}
+
}
+
@media (max-width: 320px) {
+
    .post-wrap .post .media-body p {display: none;}
+
    .gray-bg .vline { left: 25%;}
+
    .nav.nav-pills > li > a { font-size: 11px;}
+
    ul.features li span.fa {
+
        font-size: 30px;
+
        margin-top: 2px;
+
    }
+
    .post-tab .nav-tabs > li > a {
+
        padding: 5px 10px;
+
    }
+
}
+
@import url(http://fonts.googleapis.com/css?family=Lato:100,300,400,700,900,100italic,300italic,400italic,700italic,900italic);
+
body,
+
html {
+
    -webkit-font-smoothing: antialiased !important;
+
    -moz-osx-font-smoothing: grayscale;
+
    overflow-y: auto;
+
    overflow-x: hidden;
+
    font-family: 'Lato', sans-serif;
+
    color: #6f6f6f;
+
}
+
::-webkit-scrollbar { width: 2px;  }/* for vertical scrollbars */
+
::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.1); }
+
::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.5); }
+
 
+
@media (min-width: 1200px) {
+
    .container { width: 1100px }
+
}
+
h1 {
+
    font-weight: 900;
+
    text-transform: uppercase;
+
    font-family: adele;
+
    font-size: 57px;
+
}
+
h1 small { text-transform: lowercase }
+
h2 {
+
    line-height: 24px;
+
    font-weight: 300;
+
}
+
h5 {
+
    font-size: 16px;
+
}
+
h10 {
+
    font-family: adele;
+
    font-size: 25px;
+
    color: #00BAB9;
+
}
+
h11 {
+
    font-size:10px;
+
}
+
p { font-size: 14px }
+
a {
+
    color: inherit;
+
    transition: all 0.5s;
+
}
+
a:hover,
+
a:focus {
+
    text-decoration: none;
+
    color: #00BAB9;
+
}
+
.highlight { color: #00BAB9 }
+
.clearfix:after {
+
    visibility: hidden;
+
    display: block;
+
    font-size: 0;
+
    content: " ";
+
    clear: both;
+
    height: 0;
+
}
+
.clearfix { display: inline-block }
+
* html .clearfix { height: 1% }
+
.clearfix { display: block }
+
/* Navigation */
+
#tf-menu {
+
    margin-bottom: 0;
+
    background-color: #ffffff;
+
    padding: 10px 0;
+
    height: auto;
+
}
+
.navbar-brand img {
+
    height: 30px;
+
    width: auto;
+
}
+
.navbar-brand { padding: 12px 15px }
+
.navbar-nav > li > a {
+
    font-size: 13px;
+
    font-weight: 700;
+
    border-bottom: 2px solid transparent;
+
    padding: 5px 5px;
+
    margin: 8px 10px;
+
    text-transform: uppercase;
+
    transition: all 0.5s;
+
}
+
.navbar-default .navbar-nav > li > a.active,
+
.navbar-default .navbar-nav > li > a:hover,
+
.navbar-default .navbar-nav > li > a:focus {
+
    color: #333;
+
    border-bottom: 4px solid #00BAB9;
+
}
+
.navbar-default .navbar-toggle { border-color: transparent }
+
.navbar-default .navbar-toggle:hover,
+
.navbar-default .navbar-toggle:focus { background-color: transparent }
+
.navbar-default .navbar-toggle:hover>.navbar-default .navbar-toggle .icon-bar,
+
.navbar-default .navbar-toggle:focus>.navbar-default .navbar-toggle .icon-bar { color: #00BAB9 }
+
/* Header Page */
+
#tf-header {
+
    padding: 20px 0;
+
    background: #00bab9;
+
    margin-top: 70px;
+
    color: #ffffff;
+
}
+
#tf-header .breadcrumb {
+
    padding: 8px 15px;
+
    margin-bottom: 20px;
+
    list-style: none;
+
    background-color: transparent;
+
    border-radius: 4px;
+
    margin-left: -10px;
+
    margin-top: -10px;
+
}
+
#tf-header .breadcrumb > li + li:before {
+
    padding: 0 5px;
+
    color: #FFF;
+
    content: "/\00a0";
+
}
+
#tf-header .breadcrumb > li a { color: #ffffff }
+
/* Home Style */
+
#tf-home {
+
 
     background: url(https://static.igem.org/mediawiki/2015/6/64/H14zcmx01.jpg);
 
     background: url(https://static.igem.org/mediawiki/2015/6/64/H14zcmx01.jpg);
 
     background-size: cover;
 
     background-size: cover;
Line 10,398: Line 60:
 
     background-attachment: fixed;
 
     background-attachment: fixed;
 
     background-repeat: no-repeat;
 
     background-repeat: no-repeat;
     color: #cfcfcf;
+
     color: #cfcfcf;}     
}
+
#tf-home .overlay {
+
     background: -moz-linear-gradient(top,  rgba(0,0,0,0.8) 0%, rgba(0,0,0,0.73) 17%, rgba(0,0,0,0.66) 35%, rgba(0,0,0,0.55) 62%, rgba(0,0,0,0.4) 100%); /* FF3.6+ */
+
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,0.8)), color-stop(17%,rgba(0,0,0,0.73)), color-stop(35%,rgba(0,0,0,0.66)), color-stop(62%,rgba(0,0,0,0.55)), color-stop(100%,rgba(0,0,0,0.4))); /* Chrome,Safari4+ */
+
    background: -webkit-linear-gradient(top,  rgba(0,0,0,0.8) 0%,rgba(0,0,0,0.73) 17%,rgba(0,0,0,0.66) 35%,rgba(0,0,0,0.55) 62%,rgba(0,0,0,0.4) 100%); /* Chrome10+,Safari5.1+ */
+
    background: -o-linear-gradient(top,  rgba(0,0,0,0.8) 0%,rgba(0,0,0,0.73) 17%,rgba(0,0,0,0.66) 35%,rgba(0,0,0,0.55) 62%,rgba(0,0,0,0.4) 100%); /* Opera 11.10+ */
+
    background: -ms-linear-gradient(top,  rgba(0,0,0,0.8) 0%,rgba(0,0,0,0.73) 17%,rgba(0,0,0,0.66) 35%,rgba(0,0,0,0.55) 62%,rgba(0,0,0,0.4) 100%); /* IE10+ */
+
    background: linear-gradient(to bottom,  rgba(0,0,0,0.8) 0%,rgba(0,0,0,0.73) 17%,rgba(0,0,0,0.66) 35%,rgba(0,0,0,0.55) 62%,rgba(0,0,0,0.4) 100%); /* W3C */
+
    padding: 20% 0;
+
    background-attachment: fixed;
+
}
+
#tf-home .overlay {
+
}
+
 
+
#tf-home h1 { color: #0bab9b }
+
.content-heading p.lead { margin-bottom: 80px }
+
a.goto-btn {
+
    font-size: 18px;
+
    font-weight: 700;
+
    border-bottom: 2px solid transparent;
+
    padding: 10px 0;
+
    transition: all 0.5s;
+
}
+
a.goto-btn:hover {
+
    color: #ffffff;
+
    border-bottom: 2px solid #00BAB9;
+
}
+
/* Home Section Style 2 - With Video*/
+
#tf-home.video .overlay {
+
    padding: 0;
+
    padding-top: 10%;
+
}
+
.img-wrapper { position: relative }
+
.img-wrapper img.img-responsive { margin: 0 auto !important }
+
.img-wrapper i.fa {
+
    position: absolute;
+
    z-index: 10;
+
    top: 50%;
+
    font-size: 25px;
+
    background: rgba(32, 22, 22, 0.29);
+
    padding: 18px 23px;
+
    height: 60px;
+
    width: 60px;
+
    text-align: center;
+
    border-radius: 50%;
+
    color: #ffffff;
+
    margin-left: -30px;
+
    transition: all 0.3s;
+
}
+
.img-wrapper i.fa:hover { background: #00BAB9 }
+
/* Home Section Style 3 - Slider*/
+
#tf-home.slider { background: none }
+
#tf-home.slider .overlay { padding: 0 }
+
.carousel-caption {
+
    position: absolute;
+
    right: 15%;
+
    top: 28%;
+
    bottom: auto;
+
    left: 15%;
+
    z-index: 10;
+
    padding-top: 20px;
+
    padding-bottom: 0;
+
    color: #fff;
+
    text-align: center;
+
    text-shadow: none;
+
}
+
.carousel-indicators li {
+
    display: inline-block;
+
    width: 12px;
+
    height: 12px;
+
    margin: 1px;
+
    text-indent: -999px;
+
    cursor: pointer;
+
    background-color: rgba(0, 0, 0, 0);
+
    border: 1px solid #fff;
+
    border-radius: 10px;
+
}
+
.carousel-indicators {
+
    position: absolute;
+
    bottom: 60px;
+
    left: 50%;
+
    z-index: 15;
+
    width: 60%;
+
    padding-left: 0;
+
    margin-left: -30%;
+
    text-align: center;
+
    list-style: none;
+
}
+
.carousel-indicators .active {
+
    width: 14px;
+
    height: 14px;
+
    margin: 0;
+
    background-color: #00BAB9;
+
}
+
.carousel-fade .carousel-inner .item {
+
    opacity: 0;
+
    transition-property: opacity;
+
}
+
.carousel-fade .carousel-inner .active { opacity: 1 }
+
.carousel-fade .carousel-inner .active.left,
+
.carousel-fade .carousel-inner .active.right {
+
    left: 0;
+
    opacity: 0;
+
    z-index: 1;
+
}
+
.carousel-fade .carousel-inner .next.left,
+
.carousel-fade .carousel-inner .prev.right { opacity: 1 }
+
.carousel-fade .carousel-control { z-index: 2 }
+
/* Home Section Style 4 - App Header Style*/
+
#tf-home.app .overlay { padding: 10% 0 5% 0 }
+
#tf-home.app {background: url(../img/bg/02.jpg);}
+
a.goto-btn { margin-right: 30px }
+
.ipad-wrapper .app-wrap {
+
    position: relative;
+
    width: 395px;
+
}
+
.app-wrap {
+
    position: absolute;
+
    background: url(../img/header4.png);
+
    width: 395px;
+
    height: 540px;
+
    background-repeat: no-repeat;
+
    z-index: 2;
+
    left: 5%;
+
}
+
#owl-demo .item img {
+
    position: relative;
+
    width: 305px;
+
    height: auto;
+
    left: 12%;
+
    margin-top: 46px;
+
    z-index: -1;
+
}
+
.app .content-heading.text-left { padding: 15% 0 }
+
#tf-home.app .owl-theme .owl-controls .owl-page span {
+
    width: 15px;
+
    height: 15px;
+
    margin: 5px;
+
    background: #ffffff !important;
+
    border: 2px solid transparent;
+
    opacity: 1;
+
}
+
#tf-home.app .owl-theme .owl-controls {
+
    margin-top: 60px;
+
    text-align: center;
+
}
+
#tf-home.app .owl-theme .owl-controls .owl-page.active span,
+
#tf-home.app .owl-theme .owl-controls.clickable .owl-page:hover span { border: 2px solid #00BAB9 }
+
 
+
/* Home Parallax Effect */
+
.bcg {
+
  background-position: center center;
+
  background-repeat: no-repeat;
+
  background-attachment: fixed;
+
  background-size: cover;
+
  height: 100%;
+
  width: 100%;
+
}
+
 
+
#tf-home.parallax .bcg { background-image:url('../img/bg/slider03.jpg'); }
+
.parallax  .content-heading{
+
    padding: 20% 0;
+
    text-align: center;
+
}
+
/* Intro Section */
+
#tf-intro {
+
    background-color: #0bab9b;
+
    padding: 5% 0;
+
    color: #ffffff;
+
    text-align: center;
+
}
+
#tf-intro img.intro-logo {
+
    margin: 0 auto;
+
    margin-bottom: 30px;
+
}
+
/* Service Section */
+
#tf-services { padding: 60px 0 }
+
.section-header {
+
    padding: 40px 0;
+
    text-align: center;
+
}
+
.section-header h2 { text-transform: uppercase }
+
.section-header h5 { letter-spacing: 1px }
+
.fancy {
+
    line-height: 0.5;
+
    text-align: center;
+
    margin-bottom: 40px;
+
    margin-top: 20px;
+
}
+
.fancy span {
+
    display: inline-block;
+
    position: relative;
+
}
+
.fancy span:before,
+
.fancy span:after {
+
    content: "";
+
    position: absolute;
+
    height: 5px;
+
    border-bottom: 1px solid #f1f1f1;
+
    top: 15px;
+
    width: 400px;
+
}
+
.fancy span:before {
+
    right: 100%;
+
    margin-right: 10px;
+
}
+
.fancy span:after {
+
    left: 100%;
+
    margin-left: 10px;
+
}
+
/* service lists */
+
.service { margin-bottom: 20px }
+
.service .media-right i.fa {
+
    text-align: center;
+
    font-size: 30px;
+
    background-color: #00BAB9;
+
    color: #ffffff;
+
    padding: 25px 0;
+
    border-radius: 50px;
+
    border-top-left-radius: 0;
+
    margin: 0 10px;
+
    margin-right: 20px;
+
    width: 82px;
+
    height: 80px;
+
    transition: background-color 0.5s;
+
}
+
.service .media-left i.fa {
+
    text-align: center;
+
    font-size: 30px;
+
    background-color: #00BAB9;
+
    color: #ffffff;
+
    padding: 25px 0;
+
    border-radius: 50px;
+
    border-top-right-radius: 0;
+
    margin: 0 10px;
+
    margin-left: 20px;
+
    width: 82px;
+
    height: 80px;
+
    transition: background-color 0.5s;
+
}
+
.process:hover i.fa,
+
.service:hover i.fa { background-color: #333333 }
+
h4.media-heading {
+
    margin-top: 0;
+
    margin-bottom: 5px;
+
    font-size: 16px;
+
    font-weight: 400;
+
    text-transform: uppercase;
+
    color: #333;
+
    line-height: 20px;
+
}
+
/* About Us */
+
#tf-about { padding: 40px 0 }
+
.gray-bg { background-color: #f3f3f3 }
+
.img-wrap .profile-img {
+
    position: relative;
+
    margin-bottom: 40px;
+
}
+
.profile-img .social {
+
    position: absolute;
+
    z-index: 1;
+
    bottom: -10px;
+
    left: 50px;
+
}
+
.about-right-content { padding: 40px 0 }
+
.about-left-content { padding-bottom: 60px }
+
.about-left-content h2,
+
.about-left-content h2 small { color: #333 }
+
.about-left-content h2 small { font-weight: 300 }
+
ul.social li a.fa {
+
    background: #00BAB9;
+
    width: 50px;
+
    height: 50px;
+
    padding: 15px;
+
    text-align: center;
+
    margin-right: -5px;
+
    font-size: 20px;
+
    color: #ffffff;
+
    margin-bottom: 0;
+
}
+
ul.social li a.fa:hover { background-color: #333333 }
+
/* Skills Progress Bar */
+
.progress {
+
    height: 12px;
+
    margin-bottom: 20px;
+
    overflow: hidden;
+
    background-color: #999999;
+
    border-radius: 0;
+
    -webkit-box-shadow: none;
+
    box-shadow: none;
+
}
+
.progress-bar {
+
    float: left;
+
    width: 0;
+
    height: 100%;
+
    font-size: 12px;
+
    line-height: 20px;
+
    color: #fff;
+
    text-align: center;
+
    background-color: #00BAB9;
+
    -webkit-box-shadow: none;
+
    box-shadow: none;
+
    -webkit-transition: width .6s ease;
+
    -o-transition: width .6s ease;
+
    transition: width .6s ease;
+
}
+
.skills {
+
    margin-top: 30px;
+
    padding: 20px 0;
+
}
+
.skillset p {
+
    font-size: 13px;
+
    margin-bottom: 5px;
+
}
+
/* Counter */
+
#tf-counter {
+
    border-top: 1px solid #D1D1D1;
+
    border-bottom: 1px solid #D1D1D1;
+
}
+
.facts { padding: 0 }
+
.facts .count-box { position: relative }
+
.count-box {
+
    -webkit-backface-visibility: hidden;
+
    border-left: 1px solid #d3d3d3;
+
    padding: 40px 0;
+
    margin: 0;
+
    overflow: hidden;
+
    transition: all 0.5s;
+
    transform: translateX(0px) translateY(0%);
+
    -webkit-transform: translateX(0px) translateY(0%);
+
    -moz-transform: translateX(0px) translateY(0%);
+
    -ms-transform: translateX(0px) translateY(0%);
+
    -o-transform: translateX(0px) translateY(0%);
+
}
+
/*.count-box .hover-bg{
+
  position: absolute;
+
  display: block;
+
  background-color: #FFCC32;
+
  width: 100%;
+
  height: 100%;
+
  z-index: -1;
+
  transition: all 0.5s;
+
  transform: translateX(0px) translateY(150px);
+
  -webkit-transform: translateX(0px) translateY(150px);
+
  -ms-transform: translateX(0px) translateY(150px);
+
    -o-transform: translateX(0px) translateY(150px);
+
    opacity: 0;
+
}
+
.count-box:hover .hover-bg{
+
  background: #FFCC32;
+
  color: #fff !important;
+
  transform: translateX(0px) translateY(-40px);
+
    -webkit-transform: translateX(0px) translateY(-40px);
+
    -moz-transform: translateX(0px) translateY(-40px);
+
    -ms-transform: translateX(0px) translateY(-40px);
+
    -o-transform: translateX(0px) translateY(-40px);
+
    opacity: 1;
+
}*/
+
.count-box:hover,
+
.count-box:hover > i.fa { color: #ffffff }
+
.count-box:hover {
+
    -webkit-backface-visibility: hidden;
+
    background-color: #00BAB9;
+
}
+
.counter i.fa {
+
    font-size: 40px;
+
    color: #00BAB9;
+
}
+
.count-box.last { border-right: 1px solid #d3d3d3 }
+
/* Portfolio / Works Sections */
+
#tf-team { padding: 60px 0 }
+
#team .item {
+
    padding: 30px 0px;
+
    margin: 5px 20px;
+
    -webkit-border-radius: 3px;
+
    -moz-border-radius: 3px;
+
    border-radius: 3px;
+
}
+
.item .hover-bg {
+
    position: relative;
+
    overflow: hidden;
+
}
+
.hover-bg .hover-text {
+
    position: absolute;
+
    display: block;
+
    bottom: 0;
+
    width: 100%;
+
    height: 25%;
+
    padding: 20px;
+
    color: #ffffff;
+
    transition: all 0.8s;
+
    -webkit-transition: all 08s;
+
    -moz-transition: all 0.8s;
+
    -o-transition: all 0.8s;
+
}
+
.hover-bg .hover-text.on { opacity: 1 }
+
.hover-bg .hover-text.off {
+
    transition: all 0.3s;
+
    -webkit-transition: all 0.3s;
+
    -moz-transition: all 0.3s;
+
    -o-transition: all 0.3s;
+
    -webkit-transform: translateX(100%) translateY(-90%);
+
    transform: translateX(100%) translateY(-90%);
+
    opacity: 1;
+
    background: rgba(0, 0, 0, 0.70);
+
}
+
.hover-bg:hover .hover-text.off {
+
    -webkit-transform: translateX(0%) translateY(-90%);
+
    transform: translateX(0%)  translateY(-90%);
+
    opacity: 1;
+
}
+
.owl-theme .owl-controls .owl-page span {
+
    width: 15px;
+
    height: 15px;
+
    margin: 5px;
+
    background: #bababa;
+
}
+
/* Why Us or Features Section */
+
#tf-features,
+
#feature { padding: 60px 0 }
+
.features-content { padding: 0 30px 0 }
+
.features-content h4 {
+
    text-transform: uppercase;
+
    margin-bottom: 20px;
+
    color: #333333;
+
}
+
.nav.nav-pills > li > a {
+
    position: relative;
+
    display: block;
+
    background-color: #ffffff;
+
    padding: 65px;
+
    border-bottom: 3px solid #cccccc;
+
    text-transform: uppercase;
+
    margin-bottom: 5px;
+
}
+
.nav.nav-pills > li > a small {
+
    text-transform: lowercase;
+
    font-style: italic;
+
}
+
.nav.nav-pills > li > a:hover,
+
.nav-pills > li.active > a,
+
.nav-pills > li.active > a:hover,
+
.nav-pills > li.active > a:focus {
+
    color: #fff;
+
    background-color: #00BAB9;
+
    padding: 25px;
+
    border-bottom: 3px solid #996600;
+
}
+
.nav-pills > li > a { border-radius: 4px }
+
ul.features li span.fa {
+
    font-size: 35px;
+
    vertical-align: middle;
+
    margin-right: 20px;
+
    float: left;
+
    clear: both;
+
    margin-top: 5px;
+
}
+
/* Portfolio or works blocks */
+
#tf-works { padding: 60px 0 }
+
ul.cat { margin: 30px 0 }
+
ul.cat li a {
+
    background: inherit;
+
    border: 1px solid;
+
    padding: 5px 10px;
+
    border-radius: 3px;
+
}
+
ul.cat li a:hover,
+
ul.cat li a:focus,
+
ul.cat li a.active {
+
    background: #f1f1f1;
+
    border: 1px solid;
+
    padding: 5px 10px;
+
    border-radius: 3px;
+
    color: inherit;
+
}
+
.nopadding { padding: 0 }
+
.box a { margin: 2px }
+
.box .hover-bg {
+
    position: relative;
+
    overflow: hidden;
+
}
+
.box .hover-bg .hover-text {
+
    height: 100%;
+
    bottom: 0;
+
    -webkit-transform: translateX(0%) translateY(0%);
+
    transform: translateX(0%) translateY(0%);
+
    background: transparent;
+
}
+
.box:hover .hover-bg .hover-text { background-color: rgba(1, 1, 1, 0.5) }
+
.box .hover-bg:hover .hover-text.off {
+
    -webkit-transform: translateX(0%) translateY(0%);
+
    transform: translateX(0%)  translateY(0%);
+
    opacity: 1;
+
    transition: all 0.3s;
+
    -webkit-transition: all 0.3s;
+
    -o-transition: all 0.3s;
+
}
+
.box .hover-text i.fa {
+
    font-size: 20px;
+
    background: #00BAB9;
+
    padding: 13px;
+
    position: relative;
+
    top: 40%;
+
    border-radius: 50%;
+
    width: 45px;
+
    height: 45px;
+
    transition: all 0.5s;
+
}
+
.box .hover-text i.fa:hover { background: #333333 }
+
.box .hover-text i.fa.fa-expand {
+
    border-top-right-radius: 0;
+
    -webkit-transform: translateX(-400%) translateY(0%);
+
    transform: translateX(-400%)  translateY(0%);
+
    opacity: 0;
+
    transition: all 0.5s;
+
}
+
.box:hover .hover-text i.fa.fa-expand {
+
    -webkit-transform: translateX(0%) translateY(0%);
+
    transform: translateX(0%)  translateY(0%);
+
    opacity: 1;
+
}
+
.box .hover-text i.fa.fa-chain {
+
    border-top-left-radius: 0;
+
    -webkit-transform: translateX(400%) translateY(0%);
+
    transform: translateX(400%)  translateY(0%);
+
    opacity: 0;
+
    transition: all 0.5s;
+
}
+
.box:hover .hover-text i.fa.fa-chain {
+
    -webkit-transform: translateX(0%) translateY(0%);
+
    transform: translateX(0%)  translateY(0%);
+
    opacity: 1;
+
}
+
/* Style 2 - Not Fullwidth */
+
#itemsWorkThree .box,
+
#itemsWorkTwo .box { margin-bottom: 30px }
+
#itemsWorkTwo .hover-bg .hover-text { padding: 30% 0 }
+
#itemsWorkTwo .box:hover .hover-bg .hover-text {
+
    background-color: rgba(255, 223, 125, 0.70);
+
    border: 10px solid rgba(185, 156, 72, 0.80);
+
}
+
#itemsWorkTwo .box .hover-bg .hover-text h5 small {
+
    text-transform: capitalize;
+
    color: #000000;
+
}
+
#itemsWorkTwo .box .hover-bg .hover-text h5 {
+
    font-weight: 700;
+
    text-transform: uppercase;
+
    color: #000000;
+
    -webkit-transform: translateX(0%) translateY(400%);
+
    transform: translateX(0%)  translateY(400%);
+
    opacity: 0;
+
    transition: all 0.5s;
+
}
+
#itemsWorkTwo .box:hover .hover-bg .hover-text.off h5 {
+
    -webkit-transform: translateX(0%) translateY(0%);
+
    transform: translateX(0%)  translateY(0%);
+
    opacity: 1;
+
}
+
#itemsWorkTwo .box .hover-text i.fa {
+
    font-size: 20px;
+
    background: transparent;
+
    padding: 13px;
+
    position: relative;
+
    top: 40%;
+
    border-radius: 50%;
+
    width: 45px;
+
    height: 45px;
+
    transition: all 0.5s;
+
    border: 1px solid #ffffff;
+
}
+
#itemsWorkTwo .box .hover-text i.fa:hover { background: #333333 }
+
/* Portfolio Style #3 */
+
#itemsWorkThree .box h5 {
+
    border: 1px solid #ddd;
+
    padding: 10px 0;
+
    margin: 0;
+
}
+
/* Isotope Filter */
+
.isotope-item { z-index: 2 }
+
.isotope-hidden.isotope-item { z-index: 1 }
+
.isotope,
+
.isotope .isotope-item {
+
    /* change duration value to whatever you like */
+
    -webkit-transition-duration: 0.8s;
+
    -moz-transition-duration: 0.8s;
+
    transition-duration: 0.8s;
+
}
+
.isotope-item {
+
    margin-right: -1px;
+
    -webkit-backface-visibility: hidden;
+
    backface-visibility: hidden;
+
}
+
.isotope {
+
    -webkit-transition-property: height, width;
+
    -moz-transition-property: height, width;
+
    transition-property: height, width;
+
}
+
.isotope .isotope-item {
+
    -webkit-transition-property: -webkit-transform, opacity;
+
    -moz-transition-property: -moz-transform, opacity;
+
    transition-property: transform, opacity;
+
}
+
.nivo-lightbox-theme-default .nivo-lightbox-title {
+
    font-size: 14px;
+
    background: #f1f1f1;
+
    border: 1px solid #333;
+
    letter-spacing: 2px;
+
    color: #333;
+
    text-transform: uppercase;
+
    letter-spacing: 2px;
+
    padding: 10px 35px;
+
    border-radius: 2px;
+
}
+
.nivo-lightbox-theme-default.nivo-lightbox-overlay {
+
    background: #ffffff !important;
+
    background: rgba(255, 255, 255, 1) !important;
+
}
+
.nivo-lightbox-theme-default .nivo-lightbox-nav,
+
.nivo-lightbox-theme-default .nivo-lightbox-close { opacity: 1 }
+
.nivo-lightbox-error {
+
    color: #C59A6D !important;
+
    text-shadow: 0 1px 1px rgba(0, 0, 0, 0) !important;
+
}
+
.nivo-lightbox-theme-default .nivo-lightbox-image img {
+
    background: #fff;
+
    -webkit-box-shadow: 0px 1px 1px rgba(0,0,0,0.4);
+
    -moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.4);
+
    box-shadow: 0px 1px 1px rgba(0,0,0,0.4);
+
    border-top: 4px solid #ffcc33;
+
}
+
/* Single Portfolio Detail */
+
#work-detail-one,
+
#work-detail-two,
+
#work-detail-three { padding: 60px 0 }
+
.work-detail .dl-horizontal dt {
+
    text-align: left;
+
    margin-bottom: 10px;
+
}
+
.work-related-thumb { margin-bottom: 30px }
+
.work-related-thumb .img-thumbnail {
+
    display: inline-block;
+
    max-width: 100%;
+
    height: auto;
+
    padding: 0;
+
    line-height: 1.42857143;
+
    background-color: transparent;
+
    border: 1px solid transparent;
+
    border-radius: 0;
+
    -webkit-transition: all .2s ease-in-out;
+
    -o-transition: all .2s ease-in-out;
+
    transition: all .2s ease-in-out;
+
}
+
.work-related-thumb .img-thumbnail:hover { opacity: 0.8 }
+
/* Process Section */
+
#tf-process { padding: 60px 0 }
+
.process i.fa {
+
    text-align: center;
+
    font-size: 30px;
+
    background-color: #00BAB9;
+
    color: #ffffff;
+
    padding: 25px 0;
+
    border: 4px solid #ffffff;
+
    border-radius: 50px;
+
    border-top-left-radius: 0;
+
    margin: 0 10px;
+
    margin-right: 20px;
+
    width: 92px;
+
    height: 90px;
+
    transition: background-color 0.5s;
+
}
+
#tf-process .gray-bg { position: relative }
+
.gray-bg .vline {
+
    position: absolute;
+
    height: 100%;
+
    padding: 5px;
+
    border-left: 3px solid #ffffff;
+
    left: 20%;
+
}
+
#process { padding: 60px 0 20px 0 }
+
.process { margin-bottom: 40px }
+
/* Pricing Section */
+
#tf-pricing { padding: 60px 0 }
+
#tf-pricing {text-align:center;}
+
.price h1 { font-size: 50px }
+
.price { text-align: center }
+
.price.panel-default { border-color: #333 }
+
.price.panel-default > .panel-heading {
+
    font-size: 20px;
+
    text-transform: uppercase;
+
    font-weight: 600;
+
    color: #FFF;
+
    background-color: #333333;
+
    border-color: inherit;
+
}
+
.price .panel-heading { padding: 30px 15px }
+
.price .panel-body { border-bottom: 1px solid }
+
.price ul.list-unstyled { padding: 20px }
+
.price ul.list-unstyled li { padding: 10px 0 }
+
.price ul.list-unstyled li small { margin-top: -10px }
+
/* Featured */
+
.price.featured {
+
    -moz-box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.31);
+
    -webkit-box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.31);
+
    box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.31);
+
}
+
.price.featured.panel-default {
+
    border-color: #00BAB9;
+
    background-color: #ffffff;
+
    margin-top: -20px;
+
    position: relative;
+
    z-index: 1;
+
    margin-left: -5px;
+
    margin-right: -5px;
+
}
+
.price.featured.panel-default { border-color: #00BAB9 }
+
.price.featured.panel-default > .panel-heading { background-color: #00BAB9 }
+
.featured .panel-body { margin-top: 20px }
+
.featured .panel-body,
+
.featured.panel-default > .panel-heading { border-color: #00BAB9 }
+
.featured .tf-btn { margin-top: 20px }
+
.btn:focus,
+
.btn:active:focus,
+
.btn.active:focus,
+
.btn.focus,
+
.btn:active.focus,
+
.btn.active.focus {
+
    outline: 0;
+
    outline: 0;
+
    outline-offset: 0;
+
}
+
.btn:active,
+
.btn.active {
+
    background-image: none;
+
    outline: 0;
+
    -webkit-box-shadow: none;
+
    box-shadow: none;
+
}
+
.tf-btn {
+
    font-size: 12px;
+
    word-spacing: 2px;
+
    font-weight: 700;
+
    padding: 10px 20px;
+
    background-color: #333333;
+
    text-transform: uppercase;
+
    border-color: #333333;
+
    transition: all 0.5s;
+
}
+
.tf-btn:focus,
+
.tf-btn:hover {
+
    background-color: #333333;
+
    border-color: #00BAB9;
+
}
+
.color {
+
    background-color: #00BAB9;
+
    border-color: #00BAB9;
+
}
+
.color:focus,
+
.color:hover {
+
    border-color: #333333;
+
    background-color: #00BAB9;
+
}
+
/* Blog Section */
+
#tf-blog,
+
#blog-post { padding: 60px 0 }
+
#blog-post a.btn { margin: auto 0 }
+
.post-wrap { position: relative }
+
.media.post {
+
    background: #fff;
+
    padding: 10px;
+
}
+
.post-wrap {
+
    position: relative;
+
    margin-bottom: 30px;
+
    transition: all 0.5s;
+
}
+
.post-meta {
+
    border-top: 1px solid #ebebeb;
+
    background-color: #ffffff;
+
    padding: 5px 10px;
+
    height: auto;
+
    position: relative;
+
    min-height: 35px;
+
}
+
ul.metas li:after {
+
    content: ' / ';
+
    margin-right: 3px;
+
    margin-left: 3px;
+
}
+
ul.metas li:last-child:after { content: ' ' }
+
ul.metas li a { color: #00BAB9 }
+
.meta-detail {
+
    background: #f4f4f4;
+
    border-radius: 3px;
+
    padding: 2px;
+
}
+
/* Contact Section */
+
/*********************************
+
/* Map Section
+
**********************************/
+
#tf-contact { padding: 60px 0 }
+
#map {
+
    position: relative;
+
    width: 100%;
+
    height: 400px;
+
}
+
.contact-detail {
+
    text-align: center;
+
    margin: 60px 0;
+
}
+
.contact-detail i.fa {
+
    text-align: center;
+
    font-size: 30px;
+
    background-color: #00BAB9;
+
    color: #ffffff;
+
    padding: 25px 0;
+
    border-radius: 50px;
+
    border-top-left-radius: 0;
+
    margin: 0 10px;
+
    margin-right: 20px;
+
    width: 82px;
+
    height: 80px;
+
    transition: background-color 0.5s;
+
}
+
.contact-detail:hover i.fa { background-color: #333333 }
+
form#contact-form { padding: 40px 0 }
+
.contact form#contact-form {padding: 0}
+
.form-control:focus {
+
    border-color: inherit;
+
    outline: 0;
+
    -webkit-box-shadow: none;
+
    box-shadow: none;
+
}
+
.form-control {
+
    display: block;
+
    width: 100%;
+
    height: 44px;
+
    padding: 10px 12px;
+
    font-size: 14px;
+
    line-height: 1.42857143;
+
    color: #555;
+
    background-color: #fff;
+
    background-image: none;
+
    border: 1px solid #ccc;
+
    border-radius: 4px;
+
    -webkit-box-shadow: none;
+
    box-shadow: none;
+
    -webkit-transition: none;
+
    -o-transition: none;
+
    transition: none;
+
}
+
p.help-block.text-danger ul li {
+
    display: block;
+
    margin-left: -20px;
+
    color: #00BAB9;
+
}
+
#success .alert-danger {
+
    color: #00BAB9;
+
    background-color: #FDFDFD;
+
    border-color: #00BAB9;
+
    margin-bottom: 10px;
+
}
+
/* Footer */
+
#tf-footer {
+
    padding: 3% 0 2% 0;
+
    background-color: #00BAB9;
+
    color: #ffffff;
+
}
+
ul.social li a i {
+
    font-size: 18px;
+
    background: transparent;
+
    width: 32px;
+
    height: 32px;
+
    padding: 7px 0;
+
    text-align: center;
+
    border-radius: 50%;
+
    border-top-left-radius: 0;
+
    border: 1px solid transparent;
+
    color: #ffffff;
+
    transition: all 0.5s;
+
}
+
ul.social li a i:hover { border-color: #ffffff }
+
/* Blog Page */
+
.blog .media.post {
+
    background: #fff;
+
    padding: 10px;
+
    border: 1px solid #E9E9E9;
+
    border-bottom-color: transparent;
+
    border-top-left-radius: 5px;
+
    border-top-right-radius: 5px;
+
}
+
.blog .post-meta {
+
    border-top: 1px solid #ebebeb;
+
    background-color: #ffffff;
+
    padding: 5px 10px;
+
    height: auto;
+
    position: relative;
+
    min-height: 35px;
+
    border: 1px solid #ebebeb;
+
    border-bottom-left-radius: 5px;
+
    border-bottom-right-radius: 5px;
+
}
+
.pagination > li > a,
+
.pagination > li > span {
+
    position: relative;
+
    float: left;
+
    padding: 6px 12px;
+
    margin-left: 0;
+
    line-height: 1.42857143;
+
    color: #FFFFFF;
+
    text-decoration: none;
+
    background-color: #00BAB9;
+
    border: 1px solid #00BAB9;
+
    margin: 3px 3px;
+
    font-weight: 700;
+
    text-transform: uppercase;
+
    border-radius: 5px;
+
}
+
.pagination > li > a.active,
+
.pagination > li > a:hover,
+
.pagination > li > span:hover,
+
.pagination > li > a:focus,
+
.pagination > li > span:focus {
+
    color: #FFFFFF;
+
    background-color: #00BAB9;
+
    border-color: #00BAB9;
+
}
+
/* Sidebar */
+
.widget {
+
    margin-bottom: 40px;
+
    padding: 0 20px;
+
}
+
.comment h4,
+
.widget h4,
+
h4.text-uppercase {
+
    font-weight: 300;
+
    color: #00BAB9;
+
}
+
.comment h4 span.comments { color: #333333 }
+
/* Search */
+
button.btn.btn-default {
+
    padding: 11px 15px;
+
    color: #ffffff;
+
    background: #00BAB9;
+
}
+
/* Categories and Archive Widget */
+
ul.bullet-lists { margin-top: 20px }
+
ul.list-unstyled.bullet-lists li span.fa.fa-circle {
+
    font-size: 8px;
+
    vertical-align: middle;
+
    margin-right: 10px;
+
    color: #00BAB9;
+
}
+
ul.list-unstyled.bullet-lists li { padding: 5px 0 }
+
ul.list-unstyled.bullet-lists li:hover { color: #00BAB9 }
+
/* Post Tab */
+
.post-tab .nav-tabs > li > a {
+
    margin-right: -1px;
+
    line-height: 1.42857143;
+
    border: 1px solid #ddd;
+
    border-radius: 0px 0px 0 0;
+
}
+
.post-tab .list-group-item:first-child {
+
    border-top-left-radius: 0;
+
    border-top-right-radius: 0;
+
    margin-top: -1px;
+
}
+
.post-tab .nav-tabs > li > a:hover,
+
.post-tab .nav-tabs > li > a:focus {
+
    color: #FFF;
+
    background-color: #FC3;
+
    border: 1px solid #ddd;
+
    border-bottom-color: transparent;
+
}
+
/* Tags */
+
ul.list-inline.bullet-lists li a { color: inherit }
+
ul.list-inline.bullet-lists li {
+
    background: #F8F8F8;
+
    padding: 5px 10px;
+
    margin-bottom: 5px;
+
    margin-right: 2px;
+
    border: 1px solid #F4F4F4;
+
    border-radius: 3px;
+
    transition: all 0.3s;
+
}
+
ul.list-inline.bullet-lists li:hover { background: #00BAB9 }
+
/* Single Blog Post */
+
.blog-post .post-wrap img,
+
.work-detail img.featured { margin: 20px 0 }
+
ul.meta-tags li a { font-style: italic }
+
ul.meta-tags li:after { content: ',' }
+
ul.meta-tags li:last-child:after { content: ' ' }
+
/* Author Box */
+
.media.post-author {
+
    background: #00BAB9;
+
    padding: 20px;
+
    margin-top: -1px;
+
}
+
.media.post-author a { content: inherit }
+
.blog-post .post-wrap {
+
    padding: 20px;
+
    margin-bottom: 0;
+
    border: 1px solid #DDDDDD;
+
    border-top-right-radius: 4px;
+
    border-top-left-radius: 4px;
+
}
+
/* Comment */
+
.media.comment-block {
+
    border: 1px solid #DDD;
+
    padding: 20px;
+
}
+
.comment { margin-top: 40px }
+
.comment form { margin-top: -30px }
+
.comment input,
+
.comment textarea { margin-bottom: 15px }
+
/*
+
* Nivo Lightbox Default Theme v1.0
+
* http://dev7studios.com/nivo-lightbox
+
*
+
* Copyright 2013, Dev7studios
+
* Free to use and abuse under the MIT license.
+
* http://www.opensource.org/licenses/mit-license.php
+
*/
+
+
.nivo-lightbox-theme-default.nivo-lightbox-overlay {
+
  background: #666;
+
  background: rgba(0,0,0,0.6);
+
}
+
.nivo-lightbox-theme-default .nivo-lightbox-content.nivo-lightbox-loading { background: url(loading.gif) no-repeat 50% 50%; }
+
 
+
.nivo-lightbox-theme-default .nivo-lightbox-nav {
+
  top: 10%;
+
  width: 8%;
+
  height: 80%;
+
  text-indent: -9999px;
+
  background-repeat: no-repeat;
+
  background-position: 50% 50%;
+
  opacity: 0.5;
+
}
+
.nivo-lightbox-theme-default .nivo-lightbox-nav:hover {
+
  opacity: 1;
+
    -webkit-animation: pulse .5s;
+
    animation: pulse .5s;
+
}
+
.nivo-lightbox-theme-default .nivo-lightbox-prev {
+
  background-image: url(prev.png);
+
  border-radius: 0 3px 3px 0;
+
}
+
.nivo-lightbox-theme-default .nivo-lightbox-next {
+
  background-image: url(next.png);
+
  border-radius: 3px 0 0 3px;
+
}
+
 
+
.nivo-lightbox-theme-default .nivo-lightbox-close {
+
  display: block;
+
  background: url(close.png) no-repeat ;
+
  width: 48px;
+
  height: 48px;
+
  text-indent: -9999px;
+
  padding: 0px;
+
  opacity: 0.5;
+
}
+
.nivo-lightbox-theme-default .nivo-lightbox-close:hover {
+
    opacity: 1;
+
    -webkit-animation: pulse .5s;
+
    animation: pulse .5s;
+
 
+
}
+
 
+
.nivo-lightbox-theme-default .nivo-lightbox-title-wrap { bottom: -7%; }
+
.nivo-lightbox-theme-default .nivo-lightbox-title {
+
  font: 14px/20px 'Helvetica Neue', Helvetica, Arial, sans-serif;
+
  font-style: normal;
+
  font-weight: normal;
+
  background: #000;
+
  color: #fff;
+
  padding: 7px 15px;
+
  border-radius: 30px;
+
}
+
 
+
.nivo-lightbox-theme-default .nivo-lightbox-image img {
+
  background: #fff;
+
  -webkit-box-shadow: 0px 1px 1px rgba(0,0,0,0.4);
+
    -moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.4);
+
          box-shadow: 0px 1px 1px rgba(0,0,0,0.4);
+
}
+
.nivo-lightbox-theme-default .nivo-lightbox-ajax,
+
.nivo-lightbox-theme-default .nivo-lightbox-inline {
+
  background: #fff;
+
  padding: 40px;
+
  -webkit-box-shadow: 0px 1px 1px rgba(0,0,0,0.4);
+
    -moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.4);
+
          box-shadow: 0px 1px 1px rgba(0,0,0,0.4);
+
}
+
 
+
@media (-webkit-min-device-pixel-ratio: 1.3),
+
      (-o-min-device-pixel-ratio: 2.6/2),
+
      (min--moz-device-pixel-ratio: 1.3),
+
      (min-device-pixel-ratio: 1.3),
+
      (min-resolution: 1.3dppx) {
+
 
+
  .nivo-lightbox-theme-default .nivo-lightbox-content.nivo-lightbox-loading {
+
    background-image: url(loading%402x.gif);
+
    background-size: 32px 32px;
+
  }
+
  .nivo-lightbox-theme-default .nivo-lightbox-prev {
+
    background-image: url(prev%402x.png);
+
    background-size: 48px 48px;
+
  }
+
  .nivo-lightbox-theme-default .nivo-lightbox-next {
+
    background-image: url(next%402x.png);
+
    background-size: 48px 48px;
+
  }
+
  .nivo-lightbox-theme-default .nivo-lightbox-close {
+
    background-image: url(close%402x.png);
+
    background-size: 48px 48px;
+
  }
+
 
+
}
+
 
+
 
     </style>
 
     </style>
    <script type="text/javascript">
+
 
/* Modernizr 2.8.3 (Custom Build) | MIT & BSD
+
  <script type="text/javascript">
  * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexboxlegacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
+
    window.onload=function(){
*/
+
    window.location.href="#tf-home"; }
;window.Modernizr=function(a,b,c){function C(a){j.cssText=a}function D(a,b){return C(n.join(a+";")+(b||""))}function E(a,b){return typeof a===b}function F(a,b){return!!~(""+a).indexOf(b)}function G(a,b){for(var d in a){var e=a[d];if(!F(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function H(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:E(f,"function")?f.bind(d||b):f}return!1}function I(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return E(b,"string")||E(b,"undefined")?G(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),H(e,b,c))}function J(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.8.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=E(e[d],"function"),E(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),A={}.hasOwnProperty,B;!E(A,"undefined")&&!E(A.call,"undefined")?B=function(a,b){return A.call(a,b)}:B=function(a,b){return b in a&&E(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return I("flexWrap")},s.flexboxlegacy=function(){return I("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!E(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!I("indexedDB",a)},s.hashchange=function(){return z("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return C("background-color:rgba(150,255,150,.5)"),F(j.backgroundColor,"rgba")},s.hsla=function(){return C("background-color:hsla(120,40%,100%,.5)"),F(j.backgroundColor,"rgba")||F(j.backgroundColor,"hsla")},s.multiplebgs=function(){return C("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return I("backgroundSize")},s.borderimage=function(){return I("borderImage")},s.borderradius=function(){return I("borderRadius")},s.boxshadow=function(){return I("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return D("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return I("animationName")},s.csscolumns=function(){return I("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return C((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),F(j.backgroundImage,"gradient")},s.cssreflections=function(){return I("boxReflect")},s.csstransforms=function(){return!!I("transform")},s.csstransforms3d=function(){var a=!!I("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return I("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var K in s)B(s,K)&&(x=K.toLowerCase(),e[x]=s[K](),v.push((e[x]?"":"no-")+x));return e.input||J(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)B(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},C(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function q(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?o(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(s,b.frag)}function r(a){a||(a=b);var c=n(a);return s.shivCSS&&!g&&!c.hasCSS&&(c.hasCSS=!!l(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||q(a,c),a}var c="3.7.0",d=a.html5||{},e=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,f=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g,h="_html5shiv",i=0,j={},k;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.hasEvent=z,e.testProp=function(a){return G([a])},e.testAllProps=I,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
+
    </script>
</script>
+
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/modernizrcustom?action=raw&ctype=text/javascript"></script>
 
   </head>
 
   </head>
   <body background="../img/bg/01.jpg" >
+
   <body >
  
 
     <!-- Main Navigation  
 
     <!-- Main Navigation  
Line 11,541: Line 83:
 
                 <span class="icon-bar"></span>
 
                 <span class="icon-bar"></span>
 
               </button>
 
               </button>
               <a href="#"><img src="img/logo.png" alt="..." width="300" height="83"></a>
+
               <a href="#"><img src="https://static.igem.org/mediawiki/2015/8/83/Cmxlogo.png" alt="..." width="300" height="83"></a>
 
             </div>
 
             </div>
  
Line 11,547: Line 89:
 
             <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
 
             <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
 
               <ul class="nav navbar-nav navbar-right">
 
               <ul class="nav navbar-nav navbar-right">
                 <li><a href="#tf-home" class="scroll">Home</a></li>
+
                 <li><a href="https://2015.igem.org/Team:Hangzhou-H14Z" class="scroll">Home</a></li>
                 <li><a href="#tf-intro" class="scroll">intro</a></li>
+
                 <li><a href="https://2015.igem.org/Team:Hangzhou-H14Z/Intro" class="scroll">intro</a></li>
                 <li><a href="#tf-services" class="scroll">PROJECT</a></li>
+
                 <li><a href="https://2015.igem.org/Team:Hangzhou-H14Z/Project" class="scroll">PROJECT</a></li>
                 <li><a href="#tf-works" class="scroll">TEAM</a></li >
+
                 <li><a href="https://2015.igem.org/Team:Hangzhou-H14Z/Team" class="scroll">TEAM</a></li >
                 <li><a href="#tf-process" class="scroll">policy</a></li>
+
                 <li><a href="https://2015.igem.org/Team:Hangzhou-H14Z/Collaborations " class="scroll">Collaborations</a></li>
                 <li><a href="#tf-pricing" class="scroll">support</a></li>
+
                 <li><a href="https://2015.igem.org/Team:Hangzhou-H14Z/Attributions" class="scroll">Attributions</a></li>
                 <li><a href="#tf-propaganda" class="scroll">Propaganda</a></li>
+
                 <li><a href="https://2015.igem.org/Team:Hangzhou-H14Z/Practices" class="scroll">Publicity</a></li >
 +
                <li><a href="https://2015.igem.org/Team:Hangzhou-H14Z/Parts" class="scroll">Parts</a></li>
 
               </ul>
 
               </ul>
 
             </div><!-- /.navbar-collapse -->
 
             </div><!-- /.navbar-collapse -->
Line 11,582: Line 125:
 
                 <br>
 
                 <br>
 
                 <br>
 
                 <br>
                     <img src="img/logo-w.png" class="intro-logo img-responsive" alt="free-template"> <!-- Your company logo in white -->
+
                     <img src="https://static.igem.org/mediawiki/2015/c/c9/Cmxlogo-w.png" class="intro-logo img-responsive" alt="free-template"> <!-- Your company logo in white -->
                     <p>The inscriptions on Precipice are one of the most common and fundamental forms of traditional Chinese relics. Due to having been carved in open areas plus the exposure to sunshine and raindrops, which is often the case for most of them,the Inscriptions are weathered readily. Currently, there are quite a few methods to resolve this phenomenon but some of them are not used properly which occasionally cause the damage for the Inscriptions. Our research project aims at using microorganism method, which is to put a plasmid with the ability to convert bio-oriented oxaloacetic acid to oxalate acid into the cell of E.coil, inducing the cell and the product will react with one component of the Inscriptions-- calcium carbonate-- to generate nearly insoluble calcium oxalate monohydrate to adhere to the Inscriptions for protection. Another E.coil with the ablility to secrete lipase has also been constructed; we aim to add this cell when we are cleansing the Inscriptions to resolve the oil substances on the surface of them. By constructing these products, we are able to protect the relics either from human errors as cleaning and protecting or from natural damnification.  </p>
+
                     <p>The inscriptions on Precipice are one of the most common and fundamental forms of traditional Chinese relics. Due to having been carved in open areas plus the exposure to sunshine and raindrops, which is often the case for most of them,the Inscriptions are weathered readily. Currently, there are quite a few methods to resolve this phenomenon but some of them are not used properly which occasionally cause the damage for the Inscriptions. Our research project aims at using microorganism method, which is to put a plasmid with the ability to convert bio-oriented oxaloacetic acid to oxalate acid into the cell of E.coil, inducing the cell and the product will react with one component of the Inscriptions-- calcium carbonate-- to generate nearly insoluble calcium oxalate monohydrate to adhere to the Inscriptions for protection. Another E.coil with the ablility to secrete lipase has also been constructed; we aim to add this cell when we are cleansing the Inscriptions to resolve the oil substances on the surface of them. By constructing these products, we are able to protect the relics either from human errors as cleaning and protecting or from natural damnification.  </p>
 
                 </div>
 
                 </div>
 
                
 
                
Line 11,590: Line 133:
 
         <div class="container"> <!-- container -->
 
         <div class="container"> <!-- container -->
 
             <div class="section-header">
 
             <div class="section-header">
                 <h2>some &nbsp <span class="highlight"><strong><font color="#00C459">destroyed &nbsp </font></strong></span>  inscriptions &nbsp on  &nbsp Precipice</h2>
+
                 <h2>some &nbsp; <span class="highlight"><strong><font color="#00C459">destroyed &nbsp; </font></strong></span>  inscriptions &nbsp; on  &nbsp; Precipice</h2>
 
                 <h5><em>photos were took within Hangzhou</em></h5>
 
                 <h5><em>photos were took within Hangzhou</em></h5>
                 <div class="fancy"><span><img src="img/favicon.ico" alt="..."></span></div>
+
                 <div class="fancy"><span><img src="https://static.igem.org/mediawiki/2015/9/97/Cmxfavicon.png" alt="..."></span></div>
 
             </div>
 
             </div>
  
Line 11,600: Line 143:
 
                     <div class="hover-bg"> <!-- Team Wrapper -->
 
                     <div class="hover-bg"> <!-- Team Wrapper -->
 
                          
 
                          
                         <img src="img/DSC_0172.jpg" alt="..." class="img-responsive"> <!-- Team Image -->
+
                         <img src="https://static.igem.org/mediawiki/2015/1/19/CmxDSC_0172.JPG" alt="..." class="img-responsive"> <!-- Team Image -->
 
                         <div class="team-detail text-center">
 
                         <div class="team-detail text-center">
 
                             <h3>The White Tower</h3>
 
                             <h3>The White Tower</h3>
 
                             <p class="text-uppercase">a famous religious symbol in Hangzhou</p>
 
                             <p class="text-uppercase">a famous religious symbol in Hangzhou</p>
                         
+
                             
 
                         </div>
 
                         </div>
 
                     </div><!-- End Team Wrapper -->
 
                     </div><!-- End Team Wrapper -->
Line 11,612: Line 155:
 
                     <div class="hover-bg"> <!-- Team Wrapper -->
 
                     <div class="hover-bg"> <!-- Team Wrapper -->
 
                          
 
                          
                         <img src="img/DSC_0086.jpg" alt="..." class="img-responsive"><!-- Team Image -->
+
                         <img src="https://static.igem.org/mediawiki/2015/7/7e/CmxDSC_0086.JPG" alt="..." class="img-responsive"><!-- Team Image -->
 
                         <div class="team-detail text-center">
 
                         <div class="team-detail text-center">
 
                             <h3>Figure of Buddha</h3>
 
                             <h3>Figure of Buddha</h3>
Line 11,624: Line 167:
 
                     <div class="hover-bg"> <!-- Team Wrapper -->
 
                     <div class="hover-bg"> <!-- Team Wrapper -->
 
                          
 
                          
                         <img src="img/DSC_0150.jpg" alt="..." class="img-responsive"><!-- Team Image -->
+
                         <img src="https://static.igem.org/mediawiki/2015/8/83/CmxDSC_0150.JPG" alt="..." class="img-responsive"><!-- Team Image -->
 
                         <div class="team-detail text-center">
 
                         <div class="team-detail text-center">
 
                             <h3>Woman in palace</h3>
 
                             <h3>Woman in palace</h3>
Line 11,636: Line 179:
 
                     <div class="hover-bg"> <!-- Team Wrapper -->
 
                     <div class="hover-bg"> <!-- Team Wrapper -->
 
                          
 
                          
                         <img src="img/DSC_0213.jpg" alt="..." class="img-responsive"> <!-- Team Image -->
+
                         <img src="https://static.igem.org/mediawiki/2015/3/3b/CmxDSC_0213.JPG" alt="..." class="img-responsive"> <!-- Team Image -->
 
                         <div class="team-detail text-center">
 
                         <div class="team-detail text-center">
 
                             <h3>Statue of MAHAKALA</h3>
 
                             <h3>Statue of MAHAKALA</h3>
Line 11,648: Line 191:
 
                     <div class="hover-bg"> <!-- Team Wrapper -->
 
                     <div class="hover-bg"> <!-- Team Wrapper -->
 
          
 
          
                         <img src="img/DSC_0224.jpg" alt="..." class="img-responsive"> <!-- Team Image -->
+
                         <img src="https://static.igem.org/mediawiki/2015/b/b5/CmxDSC_0224.JPG" alt="..." class="img-responsive"> <!-- Team Image -->
 
                         <div class="team-detail text-center">
 
                         <div class="team-detail text-center">
 
                             <h3>Ancient chinese governor</h3>
 
                             <h3>Ancient chinese governor</h3>
Line 11,668: Line 211:
  
 
             <div class="section-header">
 
             <div class="section-header">
                 <h2>Project's<span class="highlight"><strong> &nbsp;Presentation</strong></span></h2>
+
                 <h2>Project's<span class="highlight"><strong> &#160;Presentation</strong></span></h2>
 
                 <h5><em>photoes were took within Hangzhou</em></h5>
 
                 <h5><em>photoes were took within Hangzhou</em></h5>
                 <div class="fancy"><span><img src="img/favicon.ico" alt="..."></span></div>
+
                 <div class="fancy"><span><img src="https://static.igem.org/mediawiki/2015/9/97/Cmxfavicon.png" alt="..."></span></div>
 
          
 
          
  
Line 11,688: Line 231:
 
                             <li role="presentation" class="active">  <!-- feature tab menu #1 -->
 
                             <li role="presentation" class="active">  <!-- feature tab menu #1 -->
 
                                 <a href="#f1" aria-controls="f1" role="tab" data-toggle="tab">
 
                                 <a href="#f1" aria-controls="f1" role="tab" data-toggle="tab">
                                     Project's background part I<br>
+
                                     Project's background <br>
 
                                 </a>
 
                                 </a>
 
                             </li>                       
 
                             </li>                       
                            <li role="presentation"> <!-- feature tab menu #3 -->
 
                                <a href="#f3" aria-controls="f3" role="tab" data-toggle="tab">
 
                                  Project's background part II<br>
 
                                </a>
 
                            </li>
 
 
                             <li role="presentation"> <!-- feature tab menu #4 -->
 
                             <li role="presentation"> <!-- feature tab menu #4 -->
 
                                 <a href="#f4" aria-controls="f4" role="tab" data-toggle="tab">
 
                                 <a href="#f4" aria-controls="f4" role="tab" data-toggle="tab">
Line 11,703: Line 241:
 
                             <li role="presentation"> <!-- feature tab menu #5 -->
 
                             <li role="presentation"> <!-- feature tab menu #5 -->
 
                                 <a href="#f5" aria-controls="f5" role="tab" data-toggle="tab">
 
                                 <a href="#f5" aria-controls="f5" role="tab" data-toggle="tab">
                                     Procedures in detail  &nbsp;&nbsp;&nbsp;&nbsp;    part I<br>
+
                                     Procedures in detail  &#160;&#160;&#160;&#160;    part I<br>
 
                                 </a>
 
                                 </a>
 
                             </li>
 
                             </li>
 
                               <li role="presentation"> <!-- feature tab menu #5 -->
 
                               <li role="presentation"> <!-- feature tab menu #5 -->
 
                                 <a href="#f8" aria-controls="f8" role="tab" data-toggle="tab">
 
                                 <a href="#f8" aria-controls="f8" role="tab" data-toggle="tab">
                                     Procedures in detail    &nbsp;&nbsp;&nbsp;&nbsp;  part II<br>
+
                                     Procedures in detail    &#160;&#160;&#160;&#160;  part II<br>
 
                                 </a>
 
                                 </a>
 
                             </li>
 
                             </li>
 
                             <li role="presentation"> <!-- feature tab menu #5 -->
 
                             <li role="presentation"> <!-- feature tab menu #5 -->
                                 <a href="#f8" aria-controls="f9" role="tab" data-toggle="tab">
+
                                 <a href="#f9" aria-controls="f9" role="tab" data-toggle="tab">
                                       Results of Experiments & Analysis<br>
+
                                       Results of Experiments &amp; Analysis<br>
 
                                 </a>
 
                                 </a>
 
                             </li>
 
                             </li>
 
                             <li role="presentation" >  <!-- feature tab menu #1 -->
 
                             <li role="presentation" >  <!-- feature tab menu #1 -->
 
                                 <a href="#f6" aria-controls="f6" role="tab" data-toggle="tab">
 
                                 <a href="#f6" aria-controls="f6" role="tab" data-toggle="tab">
                                   Mathimatical model<br>
+
                                   Mathimatical models<br>
 
                                 </a>
 
                                 </a>
 
                             </li>
 
                             </li>
 
                             <li role="presentation" >  <!-- feature tab menu #1 -->
 
                             <li role="presentation" >  <!-- feature tab menu #1 -->
 
                                 <a href="#f7" aria-controls="f7" role="tab" data-toggle="tab">
 
                                 <a href="#f7" aria-controls="f7" role="tab" data-toggle="tab">
                                   Time line<br>
+
                                   Notebook<br>
 
                                 </a>
 
                                 </a>
 
                             </li>
 
                             </li>
 +
                           
 
                         </ul>
 
                         </ul>
  
Line 11,734: Line 273:
 
                         <div class="tab-content features-content"> <!-- tab content wrapper -->
 
                         <div class="tab-content features-content"> <!-- tab content wrapper -->
 
                             <div role="tabpanel" class="tab-pane fade in active" id="f1"> <!-- feature #1 content open -->
 
                             <div role="tabpanel" class="tab-pane fade in active" id="f1"> <!-- feature #1 content open -->
                                 <h4>Project's background part I</h4>
+
                                 <h4>Project's background</h4>
                                 <p>&nbsp; &nbsp; &nbsp; &nbsp;The area near Qiantang River has a profound history of wealth. Hangzhou, in the heart of this area, situated many astonishing lithic cultural relics. Most of them were made during The Ten Kingdoms (A.D. 891-A.D. 979) and Song Dynasty (A.D. 960- A.D. 1279). Not only do those lithic relics represent the cutting edge of stone carving technology in contemporary time, but also they provide historians and archaeologists with solid historical evidence. </p><p>&nbsp; &nbsp; &nbsp; &nbsp;
+
                                 <p>&#160; &#160; &#160; &#160;The area near Qiantang River has a profound history of wealth. Hangzhou, in the heart of this area, situated many astonishing lithic cultural relics. Most of them were made during The Ten Kingdoms (A.D. 891-A.D. 979) and Song Dynasty (A.D. 960- A.D. 1279). Not only do those lithic relics represent the cutting edge of stone carving technology in contemporary time, but also they provide historians and archaeologists with solid historical evidence. </p><p>&#160; &#160; &#160; &#160;
     There are three main types of lithic relics in Hangzhou; they are stone sculptures, stone towers also known as Dhavaja, and stone inscriptions. The stone sculptures are primarily represented by Feilai Peak (飞来峰), Ciyun Ridge (慈云岭), and Statue of Mahakala in Baocheng Temple (宝成寺麻曷葛剌). Stone Towers are primarily represented by White Tower (白塔). Stone inscriptions are primarily represented by Hetingwuhe Fubei on Lonely Mountain (孤山放鹤亭舞鹤赋碑).</p><p>&nbsp; &nbsp; &nbsp; &nbsp; Plus, Feilai Peak and White Tower are National Key Historical Relics.  
+
     There are three main types of lithic relics in Hangzhou; they are stone sculptures, stone towers also known as Dhavaja, and stone inscriptions. The stone sculptures are primarily represented by Feilai Peak (飞来峰), Ciyun Ridge (慈云岭), and Statue of Mahakala in Baocheng Temple (宝成寺麻曷葛剌). Stone Towers are primarily represented by White Tower (白塔). Stone inscriptions are primarily represented by Hetingwuhe Fubei on Lonely Mountain (孤山放鹤亭舞鹤赋碑).</p><p>&#160; &#160; &#160; &#160; Plus, Feilai Peak and White Tower are National Key Historical Relics.  
     Most lithic relics encounter physical, chemical and biological interaction, resulting in weathering corrosion, pulverisation lesion, cracking, contamination, and colour mottling. Those phenomena jeopardise the value of lithic relics and even lithic relics themselves, and the lithic relics in Hangzhou are not of exceptions. <p/><p>&nbsp; &nbsp; &nbsp; &nbsp;
+
     Most lithic relics encounter physical, chemical and biological interaction, resulting in weathering corrosion, pulverisation lesion, cracking, contamination, and colour mottling. Those phenomena jeopardise the value of lithic relics and even lithic relics themselves, and the lithic relics in Hangzhou are not of exceptions. <p/><p>&#160; &#160; &#160; &#160;
     In 2002, some of the classic lithic relics were inspected and it was found that the surface of Feilai Peak Sculpture was greatly ruined (Figure 1), and there is leaking on Ciyun Ridge Sculpture (Figure 2)..</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;Meanwhile, Cultural Relics Department of China has been trying to maintain and recover the lithic relics. Since 2002, Cultural Relics Department of China mainly has been removing surface deposit, depleting pounding, strengthening crag, and changing flora; the government washed Feilai Peak Sculpture for many times (Figure 3).Government built a top above the Ciyun Peak Sculpture, this relic no longer had to expose to sun and rain henceforward (Figure 4).</p><p> &nbsp;&nbsp;&nbsp;&nbsp;White Tower was comprehensively cleaned and strengthened by silicone by Zhejiang University of Technology (Figure 5).</p>
+
     In 2002, some of the classic lithic relics were inspected and it was found that the surface of Feilai Peak Sculpture was greatly ruined (Figure 1), and there is leaking on Ciyun Ridge Sculpture (Figure 2)..</p> <p>&#160;&#160;&#160;&#160;Meanwhile, Cultural Relics Department of China has been trying to maintain and recover the lithic relics. Since 2002, Cultural Relics Department of China mainly has been removing surface deposit, depleting pounding, strengthening crag, and changing flora; the government washed Feilai Peak Sculpture for many times (Figure 3).Government built a top above the Ciyun Peak Sculpture, this relic no longer had to expose to sun and rain henceforward (Figure 4).</p><p> &#160;&#160;&#160;&#160;White Tower was comprehensively cleaned and strengthened by silicone by Zhejiang University of Technology (Figure 5).</p> <p>&#160;&#160;&#160;&#160; The power plants and railways were removed. During the washing, the staff intentionally left part of this tower intact, and made an contrast for further research of anti-contamination and anti-weathering (Figure 5-3, 5-4)</p><p>&#160;&#160;&#160;&#160;However, 2015 field research shows most external lithic murals, statue, and towers still suffer from damage. Some even have distraction in main stone body. Meanwhile, there grows moss. Indoor stone inscriptions though are visible; there are obvious and irremovable cracks. </p><p>&#160;&#160;&#160;&#160;
 +
    Today, most preservation of lithic relics employ physical, chemical, or engineer approaches no matter where. It has been proven by reality that each of those approaches has fatal disadvantages for long-standing preservation of lithic relics, and those disadvantages would even lead to the ruin of lithic relics.</p> <p>&#160;&#160;&#160;&#160;Since forever, there are two categories of methods to preserve-- organic and inorganic. Organic materials cannot reach the standard of time to preserve relics such as epoxy resin, acrylic resin, silicone, etc.; inorganic materials would form hard shell that is not compatible or even react with the lithic relics, such as lime, barium hydroxide, and sulphuric acid. </p><p>&#160;&#160;&#160;&#160;
 +
    In conclusion, finding a long-standing, inexpensive, and efficient method to preserve lithic relics is an impending issue. </p>
 
                             <div id="myCarousel" class="carousel slide">
 
                             <div id="myCarousel" class="carousel slide">
 
                             <ol class="carousel-indicators">
 
                             <ol class="carousel-indicators">
Line 11,749: Line 290:
 
                                 <li data-target="#myCarousel" data-slide-to="6"></li>
 
                                 <li data-target="#myCarousel" data-slide-to="6"></li>
 
                                 <li data-target="#myCarousel" data-slide-to="7"></li>
 
                                 <li data-target="#myCarousel" data-slide-to="7"></li>
 +
                                <li data-target="#myCarousel" data-slide-to="8"></li>
 +
                                <li data-target="#myCarousel" data-slide-to="9"></li>
 
                             </ol>   
 
                             </ol>   
 
                             <div class="carousel-inner">
 
                             <div class="carousel-inner">
 
                             <div class="item active">
 
                             <div class="item active">
                             <img src="img/relics/fg1.png" alt="First slide">
+
                             <img src="https://static.igem.org/mediawiki/2015/9/9c/Cmxfg1.png" alt="First slide">
 
                             <br>
 
                             <br>
 
                             <center><p>Figure 1</p></center>
 
                             <center><p>Figure 1</p></center>
Line 11,758: Line 301:
 
                              
 
                              
 
                             <div class="item">
 
                             <div class="item">
                             <img src="img/relics/fg2.png" alt="Second slide">
+
                             <img src="https://static.igem.org/mediawiki/2015/d/d7/Cmxfg2.png" alt="Second slide">
 
                               <br>
 
                               <br>
 
                             <center><p>Figure 2</p></center>
 
                             <center><p>Figure 2</p></center>
 
                             </div>
 
                             </div>
 
                             <div class="item">
 
                             <div class="item">
                             <img src="img/relics/fg31.png" alt="First slide">
+
                             <img src="https://static.igem.org/mediawiki/2015/4/4e/Team-Hangzhou-H14Z.png" alt="First slide">
 
                             <br>
 
                             <br>
 
                             <center><p>Figure 3-1</p></center>
 
                             <center><p>Figure 3-1</p></center>
Line 11,769: Line 312:
 
                              
 
                              
 
                             <div class="item">
 
                             <div class="item">
                             <img src="img/relics/fg32.png" alt="Second slide">
+
                             <img src="https://static.igem.org/mediawiki/2015/7/77/Cmxfg32.png" alt="Second slide">
 
                             <br>
 
                             <br>
 
                             <center><p>Figure 3-2</p></center>
 
                             <center><p>Figure 3-2</p></center>
 
                             </div>
 
                             </div>
 
                             <div class="item">
 
                             <div class="item">
                             <img src="img/relics/fg41.png" alt="Second slide">
+
                             <img src="https://static.igem.org/mediawiki/2015/8/8e/Cmxfg41.png" alt="Second slide">
 
                               <br>
 
                               <br>
 
                             <center><p>Figure 4-1</p></center>
 
                             <center><p>Figure 4-1</p></center>
 
                             </div>
 
                             </div>
 
                             <div class="item">
 
                             <div class="item">
                             <img src="img/relics/fg42.png" alt="Second slide">
+
                             <img src="https://static.igem.org/mediawiki/2015/0/07/Cmxfg42.png" alt="Second slide">
 
                               <br>
 
                               <br>
 
                             <center><p>Figure 4-2</p></center>
 
                             <center><p>Figure 4-2</p></center>
 
                             </div>
 
                             </div>
 
                             <div class="item">
 
                             <div class="item">
                             <img src="img/relics/fg51.png" alt="Second slide">
+
                             <img src="https://static.igem.org/mediawiki/2015/f/ff/Cmxfg51.png" alt="Second slide">
 
                               <br>
 
                               <br>
 
                             <center><p>Figure 5-1</p></center>
 
                             <center><p>Figure 5-1</p></center>
 
                             </div>
 
                             </div>
 
                             <div class="item">
 
                             <div class="item">
                             <img src="img/relics/fg52.png" alt="Second slide">
+
                             <img src="https://static.igem.org/mediawiki/2015/4/48/Cmxfg52.png" alt="Second slide">
 
                               <br>
 
                               <br>
 
                             <center><p>Figure 5-2</p></center>
 
                             <center><p>Figure 5-2</p></center>
 +
                            </div>
 +
                            <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/4/49/Cmxfg53.png" alt="First slide">
 +
                            <br>
 +
                            <center><p>Figure 5-3</p></center>
 +
                            </div>
 +
                           
 +
                            <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/f/f3/Cmxfg54.png" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Figure 5-4</p></center>
 
                             </div>
 
                             </div>
 
                             </div>
 
                             </div>
Line 11,797: Line 351:
 
                             </div>
 
                             </div>
 
                      
 
                      
                            <div role="tabpanel" class="tab-pane fade" id="f3"> <!-- feature #2 content -->
+
                         
                                 <h4>Project's background part II</h4>
+
                            <div role="tabpanel" class="tab-pane fade" id="f4"> <!-- feature #2 content -->
                                <p>&nbsp;&nbsp;&nbsp;&nbsp; The power plants and railways were removed. During the washing, the staff intentionally left part of this tower intact, and made an contrast for further research of anti-contamination and anti-weathering (Figure 5-3, 5-4)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;However, 2015 field research shows most external lithic murals, statue, and towers still suffer from damage. Some even have distraction in main stone body. Meanwhile, there grows moss. Indoor stone inscriptions though are visible; there are obvious and irremovable cracks. </p><p>&nbsp;&nbsp;&nbsp;&nbsp;
+
                                 <h4>Principles of experiments</h4>
     Today, most preservation of lithic relics employ physical, chemical, or engineer approaches no matter where. It has been proven by reality that each of those approaches has fatal disadvantages for long-standing preservation of lithic relics, and those disadvantages would even lead to the ruin of lithic relics.</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;Since forever, there are two categories of methods to preserve-- organic and inorganic. Organic materials cannot reach the standard of time to preserve relics such as epoxy resin, acrylic resin, silicone, etc.; inorganic materials would form hard shell that is not compatible or even react with the lithic relics, such as lime, barium hydroxide, and sulphuric acid. </p><p>&nbsp;&nbsp;&nbsp;&nbsp;
+
                              <p>&#160;&#160;&#160;&#160;The documents cited shows that even after natural weathering, biological decomposition, and acid rain erosion for a time period of time, some stone inscriptions, which are on rock surface containing calcium, remain in good condition because there is a thin layer of naturally formed semitransparent mineralised film that is hydrophilic and compact on such rock surface.</p><p>&#160;&#160;&#160;&#160; In some part under the fine film, knife scratches on the stone from over a thousand years ago are still visible indistinctly. According to solid analysis, natural mineralised film is primarily composed of calcium oxalate monohydrate [Ca(COO)2·H2O] whose process of composition is interfered by microorganism.</p><p> &#160;&#160;&#160;&#160;
    In conclusion, finding a long-standing, inexpensive, and efficient method to preserve lithic relics is an impending issue. </p>
+
    There are some advantages of calcium oxalate being a film as follows,</p>
                              <div id="myCarouselt" class="carousel slide">
+
    <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1) In water, especially in acidulous water, the solubility of calcium oxalate is one order of magnitude smaller than normal calcium carbonate.</p>
 +
    <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2) Organically oriented calcium oxalate crystal's particles are fine and compact, which prevent the infiltration of toxic and harmful materials. </p>
 +
    <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3) The system can't be easily broken by external forces in that there is no distinct boundary between calcium carbonate rock and calcium oxalate film.</p>
 +
     <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;So, this research project has chosen E. coli that has been transcribed with lipase to clean some stone relics that are covered with oil; then, we use E. coli, with transcription, that can secrete oxalate acid upon the stone relics. Therefore, there forms calcium oxalate to be protection film in order to preserve lithic relics.</p>  
 +
    <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If we use chemical methods to generate calcium oxalate, we have to immerse the lithic relics in the chemical liquid; however, it is not suitable for the preservation of large-scale outdoor lithic relics. In fact, the natural existing calcium oxalate comes from the reaction of oxalate acid generated by microorganism and calcium compound on the surface of stone. This research project will utilise genetic engineering methods to "graft" the gene that generates calcium oxalate into Escherichia coli (E. coil).</p><p>&#160;&#160;&#160;&#160;Then oxalate acid reacts with calcium lithic relics to generate calcium oxalate, which stimulates its natural formation process. Finally, there forms a fine layer to protect the lithic relics. </p>
 +
    <div id="mlyCarouselt" class="carousel slide">
 
                             <ol class="carousel-indicators">
 
                             <ol class="carousel-indicators">
                                 <li data-target="#myCarouselt" data-slide-to="0" class="active"></li>
+
                                 <li data-target="#mlyCarouselt" data-slide-to="0" class="active"></li>
                                 <li data-target="#myCarouselt" data-slide-to="1"></li>
+
                                 <li data-target="#mlyCarouselt" data-slide-to="1"></li>
 
                             </ol>   
 
                             </ol>   
 
                             <div class="carousel-inner">
 
                             <div class="carousel-inner">
 
                             <div class="item active">
 
                             <div class="item active">
                             <img src="img/relics/fg53.png" alt="First slide">
+
                             <img src="https://static.igem.org/mediawiki/2015/c/c6/Cmxcac03.jpg" alt="First slide">
 
                             <br>
 
                             <br>
                             <center><p>Figure 5-3</p></center>
+
                             <center><p>[Ca(COO)2·H2O]'s crystal</p></center>
 
                             </div>
 
                             </div>
 
                              
 
                              
 
                             <div class="item">
 
                             <div class="item">
                             <img src="img/relics/fg54.png" alt="Second slide">
+
                             <img src="https://static.igem.org/mediawiki/2015/2/20/Cmxsem1.jpg" alt="Second slide">
 
                               <br>
 
                               <br>
                             <center><p>Figure 5-4</p></center>
+
                             <center><p>[Ca(COO)2·H2O]'s SEM Picture</p></center>
 
                             </div>
 
                             </div>
 
                             </div>
 
                             </div>
 
                             </div>
 
                             </div>
                                </div>
 
                            <div role="tabpanel" class="tab-pane fade" id="f4"> <!-- feature #2 content -->
 
                                <h4>Principles of experiments</h4>
 
                              <p>&nbsp;&nbsp;&nbsp;&nbsp;The documents cited shows that even after natural weathering, biological decomposition, and acid rain erosion for a time period of time, some stone inscriptions, which are on rock surface containing calcium, remain in good condition because there is a thin layer of naturally formed semitransparent mineralised film that is hydrophilic and compact on such rock surface.</p><p>&nbsp;&nbsp;&nbsp;&nbsp; In some part under the fine film, knife scratches on the stone from over a thousand years ago are still visible indistinctly. According to solid analysis, natural mineralised film is primarily composed of calcium oxalate monohydrate [Ca(COO)2·H2O] whose process of composition is interfered by microorganism.</p><p> &nbsp;&nbsp;&nbsp;&nbsp;
 
    There are some advantages of calcium oxalate being a film as follows,</p>
 
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1) In water, especially in acidulous water, the solubility of calcium oxalate is one order of magnitude smaller than normal calcium carbonate.</p>
 
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2) Organically oriented calcium oxalate crystal's particles are fine and compact, which prevent the infiltration of toxic and harmful materials. </p>
 
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3) The system can't be easily broken by external forces in that there is no distinct boundary between calcium carbonate rock and calcium oxalate film.</p>
 
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;So, this research project has chosen E. coli that has been transcribed with lipase to clean some stone relics that are covered with oil; then, we use E. coli, with transcription, that can secrete oxalate acid upon the stone relics. Therefore, there forms calcium oxalate to be protection film in order to preserve lithic relics.</p>
 
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If we use chemical methods to generate calcium oxalate, we have to immerse the lithic relics in the chemical liquid; however, it is not suitable for the preservation of large-scale outdoor lithic relics. In fact, the natural existing calcium oxalate comes from the reaction of oxalate acid generated by microorganism and calcium compound on the surface of stone. This research project will utilise genetic engineering methods to "graft" the gene that generates calcium oxalate into Escherichia coli (E. coil).</p><p>&nbsp;&nbsp;&nbsp;&nbsp;Then oxalate acid reacts with calcium lithic relics to generate calcium oxalate, which stimulates its natural formation process. Finally, there forms a fine layer to protect the lithic relics. </p>
 
 
                                 </div>
 
                                 </div>
 
                               <div role="tabpanel" class="tab-pane fade" id="f5"> <!-- feature #2 content -->
 
                               <div role="tabpanel" class="tab-pane fade" id="f5"> <!-- feature #2 content -->
Line 11,837: Line 386:
 
  <p>1.1  Experiment reagents and equipment
 
  <p>1.1  Experiment reagents and equipment
 
</p>
 
</p>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;1.1.1 Target genes</p>
+
  <p>&#160;&#160;&#160;&#160;1.1.1 Target genes</p>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1) Lipase: lipase is the target gene segment of this experiment, and the gene sequence is synthesised by IDT Inc. </p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)  Oxaloacetate acetylhydrolase, abbreviation OAH, is the target gene segment of these experiments. The main function of OAH is to transfer oxaloacetic acid to oxalate acid; thus the oxalate acid reacts with the calcium ion to form calcium oxalate that preserves the relics. The target gene segment is synthesised by IDT Inc. after found in gene pool.  
+
  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(1) Lipase: lipase is the target gene segment of this experiment, and the gene sequence is synthesised by IDT Inc. </p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(2)  Oxaloacetate acetylhydrolase, abbreviation OAH, is the target gene segment of these experiments. The main function of OAH is to transfer oxaloacetic acid to oxalate acid; thus the oxalate acid reacts with the calcium ion to form calcium oxalate that preserves the relics. The target gene segment is synthesised by IDT Inc. after found in gene pool.  
 
  </p>
 
  </p>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;1.1.2 Strain and Plasmid
+
  <p>&#160;&#160;&#160;&#160;1.1.2 Strain and Plasmid
 
This experiment uses plasmid pET-28a, and the E. coli is TOP-10 competent cell, provided by TIANGEN Biotech CO., LTD.
 
This experiment uses plasmid pET-28a, and the E. coli is TOP-10 competent cell, provided by TIANGEN Biotech CO., LTD.
 
</p>
 
</p>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;1.1.3 Enzyme and Reagents This experiment uses restriction enzyme provided by NEB; T4 DNA Ligase, TIANprep Mini Plasmid Kit, and TIANquick Midi Purification Kit are provided by Tiangen Biotech CO., LTD.
+
  <p>&#160;&#160;&#160;&#160;1.1.3 Enzyme and Reagents This experiment uses restriction enzyme provided by NEB; T4 DNA Ligase, TIANprep Mini Plasmid Kit, and TIANquick Midi Purification Kit are provided by Tiangen Biotech CO., LTD.
 
</p>
 
</p>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;1.1.4 PCR Primer</p>  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1) Lipase:
+
  <p>&#160;&#160;&#160;&#160;1.1.4 PCR Primer</p>  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(1) Lipase:
 
     According to the sequences and the MCS (multiple cloning sites) to the destination vector of the Lipase, XhoI and NcoI are chosen to be the enzyme cutting cites for the inserting enzyme cutting cites. There form the following primers:  
 
     According to the sequences and the MCS (multiple cloning sites) to the destination vector of the Lipase, XhoI and NcoI are chosen to be the enzyme cutting cites for the inserting enzyme cutting cites. There form the following primers:  
 
</p>
 
</p>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;Sense primer: 5’-AAGCAAGCCCATGGAATTTGTAA-3’ (Underlined proportion is Ncoi enzyme cutting cite)
+
  <p>&#160;&#160;&#160;&#160;Sense primer: 5’-AAGCAAGCCCATGGAATTTGTAA-3’ (Underlined proportion is Ncoi enzyme cutting cite)
 
</p>
 
</p>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;Anti-sense primer: 5’-TTTTGTTGCTCGAGTTAATTCG-3’ (Underlined proportion is Xhoi enzyme cutting cite)
+
  <p>&#160;&#160;&#160;&#160;Anti-sense primer: 5’-TTTTGTTGCTCGAGTTAATTCG-3’ (Underlined proportion is Xhoi enzyme cutting cite)
 
</p>
 
</p>
  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 
(2) OAH:
 
(2) OAH:
 
   According to the sequence detected by OAH, the primer is synthesised by the Invireogen:</p>
 
   According to the sequence detected by OAH, the primer is synthesised by the Invireogen:</p>
   <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sense primer: 5’-ATCATCTTGCATATGGCGTCCACCATTGCTGTT-3’ (Underlined proportion is Ndei enzyme cutting cite)</p>
+
   <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Sense primer: 5’-ATCATCTTGCATATGGCGTCCACCATTGCTGTT-3’ (Underlined proportion is Ndei enzyme cutting cite)</p>
   <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Anti-sense primer: 5’-TTTCCTTTTGCGGCCGCTTAG-3’ (Underlined proportion is Noti enzyme cutting cite)</p>
+
   <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Anti-sense primer: 5’-TTTCCTTTTGCGGCCGCTTAG-3’ (Underlined proportion is Noti enzyme cutting cite)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;1.1.5 Substrate Medium</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1) The experiment contains LB substrate media. Take the example of confecting 200mL; the materials needed are 2g of tryptone, 1g of yeast extract, 4g of sodium chloride, and 200mL of water with 1000× ratio of chloramphenicol. </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2) The experiment contains LB substrate media. Take the example of confecting 200mL; the materials needed are 2g of tryptone, 1g of yeast extract, 4g of sodium chloride, and 200mL of water with 1000× ratio of Kanamycin Sulfate.</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3) The experiment contains Kanamycin Sulfate substrate media. Take the example of confecting 400mL; the materials needed are 4g of tryptone, 2g of yeast extract, 4g of sodium chloride, 6g AGAR powder and 1.2mL  
+
<p>&#160;&#160;&#160;&#160;1.1.5 Substrate Medium</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(1) The experiment contains LB substrate media. Take the example of confecting 200mL; the materials needed are 2g of tryptone, 1g of yeast extract, 4g of sodium chloride, and 200mL of water with 1000× ratio of chloramphenicol. </p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(2) The experiment contains LB substrate media. Take the example of confecting 200mL; the materials needed are 2g of tryptone, 1g of yeast extract, 4g of sodium chloride, and 200mL of water with 1000× ratio of Kanamycin Sulfate.</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(3) The experiment contains Kanamycin Sulfate substrate media. Take the example of confecting 400mL; the materials needed are 4g of tryptone, 2g of yeast extract, 4g of sodium chloride, 6g AGAR powder and 1.2mL  
 
</p>
 
</p>
 +
  
  
Line 11,865: Line 415:
 
               <div role="tabpanel" class="tab-pane fade" id="f8"> <!-- feature #2 content -->
 
               <div role="tabpanel" class="tab-pane fade" id="f8"> <!-- feature #2 content -->
 
                                 <h4>Procedures in detail</h4>
 
                                 <h4>Procedures in detail</h4>
                                 <p>1.2 Procedures of Experiments<p>&nbsp;&nbsp;&nbsp;&nbsp; 1.2.1 PCR Proliferation
+
                                 <p>1.2 Procedures of Experiments<p>&#160;&#160;&#160;&#160; 1.2.1 PCR Proliferation
</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Due to high content of G-C base-pairs in target gene segments, GC Buffer is required in PCR proliferation. Refer to Takara's protocols to prepare 200μL of system: 100μL of GC Buffer, 16μL of dntp mixture, 4μL of sense primer, 4μL of anti-sense primer, 4μL of DNA templet, 2μL of Taq, and 70μL of H2O. 60°C-70°C is used for Gradient PCR, the sixth bad is the brightest (Figure 9) thus the temperature of such is best for annealing. In new system, PCR is proceeded in that temperature; finally we get the gene segments with gene linkers. </p><p>&nbsp;&nbsp;&nbsp;&nbsp;1.2.2 Gel electrophoresis, purification</p><p>&nbsp;&nbsp;&nbsp;&nbsp;1.2.3 Digestion</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Put NotI and NdeI restriction endonuclease in gene segment and vector pET-28a respectively. </p><p>&nbsp;&nbsp;&nbsp;&nbsp;1.2.4</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linking and setting the groups Experimental group:plasmid after digestion + target gene + T4 DNA Ligase + buffer
+
</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Due to high content of G-C base-pairs in target gene segments, GC Buffer is required in PCR proliferation. Refer to Takara's protocols to prepare 200μL of system: 100μL of GC Buffer, 16μL of dntp mixture, 4μL of sense primer, 4μL of anti-sense primer, 4μL of DNA templet, 2μL of Taq, and 70μL of H2O. 60°C-70°C is used for Gradient PCR, the sixth bad is the brightest (Figure 9) thus the temperature of such is best for annealing. In new system, PCR is proceeded in that temperature; finally we get the gene segments with gene linkers. </p><p>&#160;&#160;&#160;&#160;1.2.2 Gel electrophoresis, purification</p><p>&#160;&#160;&#160;&#160;1.2.3 Digestion</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Put NotI and NdeI restriction endonuclease in gene segment and vector pET-28a respectively. </p><p>&#160;&#160;&#160;&#160;1.2.4</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Linking and setting the groups Experimental group:plasmid after digestion + target gene + T4 DNA Ligase + buffer
Control group: plasmid after digestion *Experiment conducted under 16°C</p><p>&nbsp;&nbsp;&nbsp;&nbsp;1.2.5 </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use DNA purification kit to extract product after linking; transcribe in TOP-10 competent cell, put on Kanamycin Sulfate substrate media and then culture under 37°C. </p><p>&nbsp;&nbsp;&nbsp;&nbsp;1.2.6</p><p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;According to the growth of strains, bacterium plasmid is extracted with digesting with two enzymes above. Recheck the correctness of position and size to assure that it has been linked. </p><p>&nbsp;&nbsp;&nbsp;&nbsp;1.2.7 Sequencing by Sangon Shanghai, China</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;1.2.8 Functional Test of Lipase</p>
+
Control group: plasmid after digestion *Experiment conducted under 16°C</p><p>&#160;&#160;&#160;&#160;1.2.5 </p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Use DNA purification kit to extract product after linking; transcribe in TOP-10 competent cell, put on Kanamycin Sulfate substrate media and then culture under 37°C. </p><p>&#160;&#160;&#160;&#160;1.2.6</p><p> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;According to the growth of strains, bacterium plasmid is extracted with digesting with two enzymes above. Recheck the correctness of position and size to assure that it has been linked. </p><p>&#160;&#160;&#160;&#160;1.2.7 Sequencing by Sangon Shanghai, China</p>   <p>&#160;&#160;&#160;&#160;1.2.8 Functional Test of Lipase</p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1) Fasten the AGAR Plane: 2.5g of AGAR powder, 6.25mL of tributyrin, 18.75mL 3g/dL of polyvinyl alcohol, 2.5mL 1g/dL Victorian Blue, 225mL of H2O. Heat and resolve the AGAR powder, pure into substrate media, chilling.  
+
<p> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(1) Fasten the AGAR Plane: 2.5g of AGAR powder, 6.25mL of tributyrin, 18.75mL 3g/dL of polyvinyl alcohol, 2.5mL 1g/dL Victorian Blue, 225mL of H2O. Heat and resolve the AGAR powder, pure into substrate media, chilling.  
IPTG solution: weigh 1.2g of IPTG and put it into centrifugal tubes. Add 40mL of H2O, resolve, then to the constant volume of 50mL. Use 0.22μm strainer to filter out the other bacteria, then put into refrigerator of -20°C. </p>
+
  IPTG solution: weigh 1.2g of IPTG and put it into centrifugal tubes. Add 40mL of H2O, resolve, then to the constant volume of 50mL. Use 0.22μm strainer to filter out the other bacteria, then put into refrigerator of -20°C. </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2) Transcribe the lipase enzyme plasmid into BL-21 competent cell of E. coli, culture. </p>
+
  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(2) Transcribe the lipase enzyme plasmid into BL-21 competent cell of E. coli, culture. </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3) Pick bacteria into small colonies from growing strains on the cultivation board, which has been configured with a medium, Kanamycin, and join the 0.1 mmol/L IPTG solution to carry on the induction, six hours later to take on the culture medium centrifugal supernatant, get with lipase protein nutrient solution.</p>
+
  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(3) Pick bacteria into small colonies from growing strains on the cultivation board, which has been configured with a medium, Kanamycin, and join the 0.1 mmol/L IPTG solution to carry on the induction, six hours later to take on the culture medium centrifugal supernatant, get with lipase protein nutrient solution.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(4) From fixed AGAR plate with holes, pick bacteria. Burn alcohol burner against the bottom of AGAR to assure it is stick. Put 30μL into the holes, lie horizontally in 30°C incubator for a while and then observe the change of colour. </p>
+
  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(4) From fixed AGAR plate with holes, pick bacteria. Burn alcohol burner against the bottom of AGAR to assure it is stick. Put 30μL into the holes, lie horizontally in 30°C incubator for a while and then observe the change of colour. </p>
 +
  <div id="mjyCarouselt" class="carousel slide">
 +
                            <ol class="carousel-indicators">
 +
                                <li data-target="#mjyCarouselt" data-slide-to="0" class="active"></li>
 +
                               
 +
                            </ol> 
 +
                            <div class="carousel-inner">
 +
                            <div class="item active">
 +
                            <img src="https://static.igem.org/mediawiki/2015/7/7b/Cmxpaojiao.jpg" alt="First slide">
 +
                            <br>
 +
                            <center><p>Figure 9  Gradient PCR Electrophoresis (red column is the brightest)</p></center>
 +
                            </div>
 +
                           
 +
                           
 +
                            </div>
 +
                            </div>
  
 
            
 
            
 
                                 </div>
 
                                 </div>
                     
+
                                <div role="tabpanel" class="tab-pane fade" id="f9"> <!-- feature #2 content -->
 +
                                <h4>Results of Experiments and Analysis</h4>
 +
                                <p>1.3 Results of Experiments and Analysis<p>&#160;&#160;&#160;&#160; 1.3.1 Digestion check
 +
</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(1) Use NcoI and XhoI to digest plasmid on lipase after PCR. We know our result is correct because two bright parts of plasmid is in the same position and of the same size.
 +
</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(2) Use NdeI and NotI to digest plasmid on OAH after PCR. We know our result is correct because two bright parts of plasmid is in the same position and of the same size. (Figure 10)
 +
</p><p>&#160;&#160;&#160;&#160;1.3.2 Sequencing</p>
 +
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;The results of t sequencing of Lipase and OAH are both correct, for more detail, check appendix 1. </p>
 +
</p><p>&#160;&#160;&#160;&#160;1.3.3 Functional Test of Lipase
 +
</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Let PET-28a-Lipase plasmid be transcribed into BL-21 E. coli (the procedure is the same as that of TOP-10 E. coli), then put on substrate media. Pick E. coli into shake flask for 3 hours. Join IPTG solution (0.1 mmol/L) for abduction for 6 hours. Put into centrifugal machine then supernatant liquid (with lipase) for lipase test. The result shows that the colour has changed besides plasmid with lipase (Figure 11), showing that LipB2 gene is correctly expressed in BL21 E. coli.
 +
</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Linking and setting the groups Experimental group:plasmid after digestion + target gene + T4 DNA Ligase + buffer
 +
Control group: plasmid after digestion *Experiment conducted under 16°C</p><p>1.4 Result Analysis and Prospect</p><p>&#160;&#160;&#160;&#160;According to the results of sequencing, actual sequence is identical to designed sequence, which testifies the validity of formulation (appendix 1). In lipase functional test, there is relatively obvious phenomenon under IPTG abduction (Figure 11), which testifies the function of gene. </p><p>&#160;&#160;&#160;&#160;Hence, using this reformed lipase can erase the grease cover on relic surface, and we hope to use OAH reconstruct relic surface.
 +
</p><p>&#160;&#160;&#160;&#160;Meanwhile, recombinant lipase can be widely used in any field for de-greasing, for example, the de-greasing process of steel surface, pre-treatment of high-fat food disposal, etc. </p><p>&#160;&#160;&#160;&#160;This research project only recombines the lipase without optimising it according to temperature fluctuation, abduction concentration. We hope our project is helpful in every field. </p>   
 +
<div id="mtyCarouselt" class="carousel slide">
 +
                            <ol class="carousel-indicators">
 +
                                <li data-target="#mtyCarouselt" data-slide-to="0" class="active"></li>
 +
                                <li data-target="#mtyCarouselt" data-slide-to="1"></li>
 +
                            </ol> 
 +
                            <div class="carousel-inner">
 +
                            <div class="item active">
 +
                            <img src="https://static.igem.org/mediawiki/2015/6/66/Cmxpaojiao2.jpg" alt="First slide">
 +
                            <br>
 +
                            <center><p>Figure 10  Digestion result test</p></center>
 +
                            </div>
 +
                           
 +
                            <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/c/c7/Cmxzhifangmei.png" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Figure 11  LipB2 gene in BL21 E. coli</p></center>
 +
                            </div>
 +
                            </div>
 +
                            </div>     
 +
                                </div>
 +
                                              <div role="tabpanel" class="tab-pane fade" id="f6"> <!-- feature #2 content -->
 +
                                <h4>Mathimatical models</h4>
 +
                                <p>&#160;&#160;&#160;&#160;Since there is no one had done the same experiment as ours before, we assumed the growing pattern is similar as E.coil CVCC249. </p><p>&#160;&#160;&#160;&#160;We got the data of this kind of E.coil from a doctoral dissertation,Comparison of Growth Kinetics and Physiological Characteristics of E.coil CVCC249 under both Batch and Continuous Culture by Huaiqiang Zhang, at page34. We used the logistic function data in this form, which is K=1.937 and r=0.550, and we assumed that N0=0.1( since N0 is initial population of E.coil, we can just simply set this data). </p><p>&#160;&#160;&#160;&#160;According to logistic function , we can get the bacteria population-time function:(see Figure 1) </p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;f(t) = 1.937/(1+(1.937-0.1)e^(-0.55t)/0.1)
 +
 
 +
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;f(t) = 1.937/(1+18.37*e^(-0.55t))</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;After that, we assumed that there will be x% of bacteria can present the property we need. Then we can get population of expressed bacteria:</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;fex(t) = x%*1.937/(1+18.37*e^(-0.55t))</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;Because we need the oxalic acid-time function, we assume the speed of oxalic acid secretion of per unit of bacteria is v. So the total speed should be: </p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;V(t) = v*x%*1.937/(1+18.37*e^(-0.55t))</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;Since the secretion of oxalic acid should be accumulated, we take the integration of total speed of time. We used WolframAlpha program to find out this integration.</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;∫1.937/(1+18.37*e^(-0.55t)) dt=3.522*log(18.37+e^(0.55t))+C0</p>
 +
 
 +
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;∫V(t) dt=v*x%*3.522*log(18.37+e^(0.55t))+C
 +
 
 +
<p>&#160;&#160;&#160;&#160;Because the function should began at (0,0) point, we can find out constant C in function.</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0=v*x%*3.522*log(18.37+e^(0.55*0))+C
 +
 
 +
 
 +
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;C=-3.522*log(19.37)*v*x%
 +
 
 +
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;C=-10.438*v*x%
 +
 
 +
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Substitute C=-10.438*v*x%</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Soa(t)=v*x%*(3.522*log(18.37+e^(0.55t))-10.438)</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;This is oxalic acid-time function.</p>
 +
 
 +
 +
 
 +
<p>&#160;&#160;&#160;&#160;We also need to find out lipid-time function. Obviously, it’s more complicated than last function, since the decomposition speed cannot be a constant.</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;The fex(t) function should be also available in this part. Starting constructing process, we assumed that initial total lipid is N, lipid that decomposed is n, and the decomposing speed is relate to following factors:</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;k: a constant representing efficiency of lipase
 +
 
 +
&#160;&#160;&#160;&#160;(N-n): remain amount of lipid
 +
 
 +
&#160;&#160;&#160;&#160;fex(t): quantity of expressed bacteria</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;And there should be a function meaning that decomposing speed is proportional to the remain amount of lipid and quantity of expressed bacteria:</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;dn/dt=k*(N-n)*fex(t)</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Solve that differential equation.</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1/(N-n) dn=k*fex (t) dt
 +
 
 +
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;∫1/(N-n) dn=k∫fex (t) dt
 +
 
 +
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-ln(N-n)=k∫f ex(t) dt + C</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;Since we already know that ∫f ex(t) dt= x%*(3.522*log(18.37+e^(0.55t))-10.438) in this condition.</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-ln(N-n)=k*x%*(3.522*log(18.37+e^(0.55t))-10.438)
 +
 
 +
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(N-n)=e^(-k*x%*(3.522*log(18.37+e^(0.55t))-10.438))</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;So the lipid-time function, Slp(t), were found:</p>
 +
 
 +
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Slp(t)=(N-n)=e^(-k*x%*(3.522*log(18.37+e^(0.55t))-10.438))
 +
</p>
 +
<div id="mayCarouselt" class="carousel slide">
 +
                            <ol class="carousel-indicators">
 +
                                <li data-target="#mayCarouselt" data-slide-to="0" class="active"></li>
 +
                                <li data-target="#mayCarouselt" data-slide-to="1"></li>
 +
                                <li data-target="#mayCarouselt" data-slide-to="2"></li>
 +
                            </ol> 
 +
                            <div class="carousel-inner">
 +
                            <div class="item active">
 +
                            <img src="https://static.igem.org/mediawiki/2015/a/ad/CmxSoa%28t%29.png" alt="First slide">
 +
                            <br>
 +
                            <center><p>Quantity of Oxalic Acid</p></center>
 +
                            </div>
 +
                           
 +
                            <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/8/84/Cmxfex%28t%29.png" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Quantity of Bacteria</p></center>
 +
                            </div>
 +
                            <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/0/0e/Cmximage001.png" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Figure 1</p></center>
 +
                            </div>
 +
                           
 +
                            </div>
 +
                            </div>
 +
 
 +
 
 +
 
 +
         
 +
                                </div>
 +
                                <div role="tabpanel" class="tab-pane fade" id="f7"> <!-- feature #2 content -->
 +
                                <h4>Notebook</h4>
 +
                                <br>
 +
                                <P> Our origin experiment records</P>
 +
 +
                                <div id="mpyCarouselt" class="carousel slide">
 +
                            <ol class="carousel-indicators">
 +
                                <li data-target="#mpyCarouselt" data-slide-to="0" class="active"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="1"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="2"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="3"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="4"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="5"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="6"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="7"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="8"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="9"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="10"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="11"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="12"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="13"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="14"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="15"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="16"></li>
 +
                                <li data-target="#mpyCarouselt" data-slide-to="17"></li>
 +
                                  <li data-target="#mpyCarouselt" data-slide-to="18"></li>
 +
                            </ol> 
 +
                            <div class="carousel-inner">
 +
                            <div class="item active">
 +
                            <img src="https://static.igem.org/mediawiki/2015/d/de/%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E4%B8%80%E9%A1%B5.jpg" alt="First slide">
 +
                            <br>
 +
                            <center><p>Page 1</p></center>
 +
                            </div>
 +
                           
 +
                            <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/4/41/%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E4%BA%8C%E9%A1%B5.jpg" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Page 2</p></center>
 +
                            </div>
 +
                            <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/4/4f/%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E4%B8%89%E9%A1%B5.jpg" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Page 3</p></center>
 +
                            </div>
 +
                              <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/2/23/%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E5%9B%9B%E9%A1%B5.jpg" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Page 4</p></center>
 +
                            </div>
 +
                              <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/4/40/%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E4%BA%94%E9%A1%B5.jpg" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Page 5</p></center>
 +
                            </div>
 +
                              <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/c/c3/%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E5%85%AD%E9%A1%B5.jpg" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Page 6</p></center>
 +
                            </div>
 +
                              <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/9/96/%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E4%B8%83%E9%A1%B5.jpg" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Page 7</p></center>
 +
                            </div>
 +
                              <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/b/b5/%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E5%85%AB%E9%A1%B5.jpg" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Page 8</p></center>
 +
                            </div>
 +
                              <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/7/77/%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E4%B9%9D%E9%A1%B5.jpg" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Page 9</p></center>
 +
                            </div>
 +
                              <div class="item">
 +
                            <img src="https://static.igem.org/mediawiki/2015/e/e4/%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E5%8D%81%E9%A1%B5.jpg" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Page 10</p></center>
 +
                            </div>
 +
                              <div class="item">
 +
                            <img src="https://2015.igem.org/File:%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E4%BA%8C%E9%A1%B5.jpg" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Page 2</p></center>
 +
                            </div>
 +
                              <div class="item">
 +
                            <img src="https://2015.igem.org/File:%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E4%BA%8C%E9%A1%B5.jpg" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Page 2</p></center>
 +
                            </div>
 +
                              <div class="item">
 +
                            <img src="https://2015.igem.org/File:%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95%E7%AC%AC%E4%BA%8C%E9%A1%B5.jpg" alt="Second slide">
 +
                              <br>
 +
                            <center><p>Page 2</p></center>
 +
                            </div>
 +
                           
 +
                            </div>
 +
                            </div>
 +
 
 +
 
 +
         
 +
                                </div>
 +
                                <div role="tabpanel" class="tab-pane fade" id="11"> <!-- feature #2 content -->
 +
                           
 
                         </div> <!-- end tab content wrapper -->
 
                         </div> <!-- end tab content wrapper -->
 
                     </div><!-- end right content col 6 -->
 
                     </div><!-- end right content col 6 -->
Line 11,890: Line 691:
 
         <div class="container">
 
         <div class="container">
 
             <div class="section-header">
 
             <div class="section-header">
                 <h2>iNFO &nbsp; ABOUT &nbsp; <span class="highlight"><strong>Team &nbsp; MEMBER</strong></span></h2>
+
                 <h2>INFO &#160; ABOUT &#160; <span class="highlight"><strong>Team &#160; MEMBER</strong></span></h2>
 
                 <h5><em>suspend your mouse above each images to learn more about our team member.</em></h5>
 
                 <h5><em>suspend your mouse above each images to learn more about our team member.</em></h5>
                 <div class="fancy"><span><img src="img/favicon.ico" alt="..."></span></div>
+
                 <div class="fancy"><span><img src="https://static.igem.org/mediawiki/2015/9/97/Cmxfavicon.png" alt="..."></span></div>
 
             </div>
 
             </div>
 
            
 
            
Line 11,913: Line 714:
 
                              
 
                              
 
                             <p><h10>Zhengdong  Chen</h10></p>
 
                             <p><h10>Zhengdong  Chen</h10></p>
                             <a title="Team Member #1" href="cmxdongdong.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/1/1d/Cmxdongdong.png">
+
                             <a title="Team Member #1" href="https://static.igem.org/mediawiki/2015/1/1d/Cmxdongdong.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/1/1d/Cmxdongdong.png">
                                     <i class="fa fa-expand"></i>
+
                                     <img src="https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png">
 
                                 </a>
 
                                 </a>
 
                              
 
                              
Line 11,928: Line 729:
 
                             <div class="hover-text off">
 
                             <div class="hover-text off">
 
                               <p><h10>Yue Wu</h10></p>
 
                               <p><h10>Yue Wu</h10></p>
                               <a title="Team Member #2" href="cmxwuyue.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="cmxwuyue.png">
+
                               <a title="Team Member #2" href="https://static.igem.org/mediawiki/2015/7/7b/Cmxwuyue.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/7/7b/Cmxwuyue.png">
                                     <i class="fa fa-expand"></i>
+
                                     <img src="https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png">
 
                                 </a>
 
                                 </a>
 
                             </div>
 
                             </div>
                             <img src="h14zcmxt02.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
+
                             <img src="https://static.igem.org/mediawiki/2015/c/c6/H14zcmxt02.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
 
                         </div>
 
                         </div>
 
                     </div>
 
                     </div>
Line 11,942: Line 743:
 
                             <div class="hover-text off">
 
                             <div class="hover-text off">
 
                             <p><h10>Shuyang Zhou</h10></p>
 
                             <p><h10>Shuyang Zhou</h10></p>
                                 <a title="Team Member #3" href="cmxshuyangzhou.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="cmxshuyangzhou.png">
+
                                 <a title="Team Member #3" href="https://static.igem.org/mediawiki/2015/2/2a/Cmxshuyangzhou.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/2/2a/Cmxshuyangzhou.png">
                                     <i class="fa fa-expand"></i>
+
                                     <img src="https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png">
 
                                 </a>
 
                                 </a>
 
                              
 
                              
 
                             </div>
 
                             </div>
                             <img src="h14zcmxt03.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
+
                             <img src="https://static.igem.org/mediawiki/2015/a/ab/H14zcmxt03.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
 
                         </div>
 
                         </div>
 
                     </div>
 
                     </div>
Line 11,957: Line 758:
 
                             <div class="hover-text off">
 
                             <div class="hover-text off">
 
                             <p><h10>Haobo Shao</h10></p>
 
                             <p><h10>Haobo Shao</h10></p>
                                 <a title="Team Member #4" href="cmxhaoboshao.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="cmxhaoboshao.png">
+
                                 <a title="Team Member #4" href="https://static.igem.org/mediawiki/2015/4/41/Cmxhaoboshao.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/4/41/Cmxhaoboshao.png">
                                     <i class="fa fa-expand"></i>
+
                                     <img src="https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png">
 
                                 </a>
 
                                 </a>
 
                                
 
                                
 
                             </div>
 
                             </div>
                             <img src="h14zcmxt04.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
+
                             <img src="https://static.igem.org/mediawiki/2015/c/cd/H14zcmxt04.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
 
                         </div>
 
                         </div>
 
                     </div>
 
                     </div>
Line 11,972: Line 773:
 
                             <div class="hover-text off">
 
                             <div class="hover-text off">
 
                             <p><h10>Yunfeng Guo</h10></p>
 
                             <p><h10>Yunfeng Guo</h10></p>
                                 <a title="Team Member #5" href="cmxyunfengguo.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="cmxyunfengguo.png">
+
                                 <a title="Team Member #5" href="https://static.igem.org/mediawiki/2015/4/48/Cmxyunfengguo.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/4/48/Cmxyunfengguo.png">
                                     <i class="fa fa-expand"></i>
+
                                     <img src="https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png">
 
                                 </a>
 
                                 </a>
 
                              
 
                              
 
                             </div>
 
                             </div>
                             <img src="h14zcmxt05.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
+
                             <img src="https://static.igem.org/mediawiki/2015/1/18/H14zcmxt05.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
 
                         </div>
 
                         </div>
 
                     </div>
 
                     </div>
Line 11,987: Line 788:
 
                             <div class="hover-text off">
 
                             <div class="hover-text off">
 
                             <p><h10>Minxing Chen</h10></p>
 
                             <p><h10>Minxing Chen</h10></p>
                                 <a title="Team Member #6" href="cmxminxingchen.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="cmxminxingchen.png">
+
                                 <a title="Team Member #6" href="https://static.igem.org/mediawiki/2015/e/e3/Cmxminxingchen.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/e/e3/Cmxminxingchen.png">
                                    <i class="fa fa-expand"></i>
+
                                  <img src="https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png">
 
                                 </a>
 
                                 </a>
 
                                  
 
                                  
 
                             </div>
 
                             </div>
                             <img src="h14zcmxt06.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
+
                             <img src="https://static.igem.org/mediawiki/2015/8/82/H14zcmxt06.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
 
                         </div>
 
                         </div>
 
                     </div>
 
                     </div>
Line 12,002: Line 803:
 
                             <div class="hover-text off">
 
                             <div class="hover-text off">
 
                           <p> <h10>Jingcheng Shi</h10></p>
 
                           <p> <h10>Jingcheng Shi</h10></p>
                                 <a title="Team Member #7" href="cmxjingchengshi.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="cmxjingchengshi.png">
+
                                 <a title="Team Member #7" href="https://static.igem.org/mediawiki/2015/6/6d/Cmxjingchengshi.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/6/6d/Cmxjingchengshi.png">
                                    <i class="fa fa-expand"></i>
+
                                    <img src="https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png">
 
                                 </a>
 
                                 </a>
 
                                  
 
                                  
 
                             </div>
 
                             </div>
                             <img src="h14zcmxt07.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
+
                             <img src="https://static.igem.org/mediawiki/2015/6/63/H14zcmxt07.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
 
                         </div>
 
                         </div>
 
                     </div>
 
                     </div>
Line 12,017: Line 818:
 
                             <div class="hover-text off">
 
                             <div class="hover-text off">
 
                             <p><h10>Juncheng Luo</h10></p>
 
                             <p><h10>Juncheng Luo</h10></p>
                                 <a title="Team Member #8" href="cmxjunchengluo.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="cmxjunchengluo.png">
+
                                 <a title="Team Member #8" href="https://static.igem.org/mediawiki/2015/d/d4/Cmxjunchengluo.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/d/d4/Cmxjunchengluo.png">
                                     <i class="fa fa-expand"></i>
+
                                     <img src="https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png">
 
                                 </a>
 
                                 </a>
 
                              
 
                              
 
                             </div>
 
                             </div>
                             <img src="h14zcmxt08.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
+
                             <img src="https://static.igem.org/mediawiki/2015/0/0f/H14zcmxt08.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
 
                         </div>  
 
                         </div>  
 
                     </div>
 
                     </div>
Line 12,032: Line 833:
 
                             <div class="hover-text off">
 
                             <div class="hover-text off">
 
                           <p> <h10>Wei He</h10></p>
 
                           <p> <h10>Wei He</h10></p>
                                 <a title="Team Member #9" href="cmxweihe.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="cmxweihe.png">
+
                                 <a title="Team Member #9" href="https://static.igem.org/mediawiki/2015/9/92/Cmxweihe.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/9/92/Cmxweihe.png">
                                    <i class="fa fa-expand"></i>
+
                                    <img src="https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png">
 
                                 </a>
 
                                 </a>
 
                                  
 
                                  
 
                             </div>
 
                             </div>
                             <img src="h14zcmxt10.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
+
                             <img src="https://static.igem.org/mediawiki/2015/f/f6/H14zcmxt10.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
 
                         </div>
 
                         </div>
 
                     </div>
 
                     </div>
Line 12,047: Line 848:
 
                             <div class="hover-text off">
 
                             <div class="hover-text off">
 
                           <p> <h10>Yuning Gu</h10></p>
 
                           <p> <h10>Yuning Gu</h10></p>
                                 <a title="Team Member #10" href="cmxyuninggu.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="cmxyuninggu.png">
+
                                 <a title="Team Member #10" href="https://static.igem.org/mediawiki/2015/7/7b/Cmxyuninggu.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/7/7b/Cmxyuninggu.png">
                                     <i class="fa fa-expand"></i>
+
                                     <img src="https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png">
 
                                 </a>
 
                                 </a>
 
                                  
 
                                  
 
                             </div>
 
                             </div>
                             <img src="h14zcmxt11.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
+
                             <img src="https://static.igem.org/mediawiki/2015/a/a1/H14zcmxt11.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
 
                         </div>
 
                         </div>
 
                     </div>
 
                     </div>
Line 12,062: Line 863:
 
                             <div class="hover-text off">
 
                             <div class="hover-text off">
 
                           <p> <h10>Xiaomei Tang</h10></p>
 
                           <p> <h10>Xiaomei Tang</h10></p>
                                 <a title="Team Member #11" href="cmxxiaomeitang.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="cmxxiaomeitang.png">
+
                                 <a title="Team Member #11" href="https://static.igem.org/mediawiki/2015/5/59/Cmxxiaomeitang.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/5/59/Cmxxiaomeitang.png">
                                     <i class="fa fa-expand"></i>
+
                                     <img src="https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png">
 
                                 </a>
 
                                 </a>
 
                                  
 
                                  
 
                             </div>
 
                             </div>
                             <img src="h14zcmxt13.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
+
                             <img src="https://static.igem.org/mediawiki/2015/5/55/H14zcmxt13.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
 
                         </div>
 
                         </div>
 
                     </div>
 
                     </div>
Line 12,077: Line 878:
 
                             <div class="hover-text off">
 
                             <div class="hover-text off">
 
                           <p> <h10>Jie Zheng</h10></p>
 
                           <p> <h10>Jie Zheng</h10></p>
                                 <a title="Team Member #12" href="cmxjiezheng.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="cmxjiezheng.png">
+
                                 <a title="Team Member #12" href="https://static.igem.org/mediawiki/2015/c/cf/Cmxjiezheng.png" data-lightbox-gallery="gallery1" data-lightbox-hidpi="https://static.igem.org/mediawiki/2015/c/cf/Cmxjiezheng.png">
                                     <i class="fa fa-expand"></i>
+
                                     <img src="https://static.igem.org/mediawiki/2015/2/21/Cmxexpand.png">
 
                                 </a>
 
                                 </a>
 
                                  
 
                                  
 
                             </div>
 
                             </div>
                             <img src="h14zcmxt14.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
+
                             <img src="https://static.igem.org/mediawiki/2015/6/6e/H14zcmxt14.jpg" class="img-responsive" alt="Image"> <!-- Portfolio Image -->
 
                         </div>
 
                         </div>
 
                     </div>
 
                     </div>
Line 12,098: Line 899:
 
         <div class="container"> <!-- container -->
 
         <div class="container"> <!-- container -->
 
             <div class="section-header">
 
             <div class="section-header">
                 <h2>Policy &nbsp; &  &nbsp;<span class="highlight"><strong>Human practices</strong></span></h2>
+
                 <h2><span class="highlight">Collaborations<strong></strong></span></h2>
                 <h5><em>We design and build functional and beautiful websites</em></h5>
+
                 <h5><em>Our team collaborated with various IGEM teams and other people in this project</em></h5>
                 <div class="fancy"><span><img src="img/favicon.ico" alt="..."></span></div>
+
                 <div class="fancy"><span><img src="https://static.igem.org/mediawiki/2015/9/97/Cmxfavicon.png" alt="..."></span></div>
 
             </div>
 
             </div>
 
         </div><!-- end container -->
 
         </div><!-- end container -->
 +
      <div class="tab-content features-content "> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; We collaborated with the collegiate team— Zhejiang University.</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The students of ZJU helped us in the pre-programm training in the site of Zhejiang Association for Science and Technology.</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;They taught us the basic biology experimental techniques by dyeing colon bacillus in a bio-tech way.</p>
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Meanwhile, they invited the team instructor of Peking University to introduce us how to understand this competition. </p>
 +
<br>
 +
<br>
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Interview with the local experts </p>
 +
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Since our research projects are interdisciplinary as well as socially-based,</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; we consulted our ideas with professor in the field about the production of our experiment applying the other fields beyond the cultural artifacts protection. </p>
 +
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;We then communicate with Prof. Zhang, Zhejiang University, whose field is civil-engineering. </p>
 +
 +
 +
 +
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Q1: How can the greasing removal apply in civil engineering?</p>
 +
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Q2: In the field of civil engineering, are there any other applications? </p>
 +
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Q3: How efficient is this method or else than biological method? </p>
 +
 +
 +
 +
 +
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Based on these three question, Professor gave the following answer to all of these.
 +
</p>
 +
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reinforced concrete structure has been widely used in construction engineering, and the corrosion of concrete will cause irreversible damage of the structure, </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;especially in the moist environment, or in the coastal areas; for example the basement engineering, coastal areas of reinforced concrete Bridges.</p><p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In the dampness and water environment, corrosion speeds faster. At present engineers mainly adopt anticorrosion coating materials, including organic coating, inorganic coating and coating,</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the widely application of polyurethane waterproof coating, polymer cement waterproof coating, cement based waterproof coating and organic silicon waterproof coating, etc.</p><p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;However, there is rare application of biological coating in practical. According to the principle, it has certain feasibility, </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;because the principle of chemical coating is the main component of waterproof material, such as sodium silicate, can quickly and effectively concrete structure layer of calcium hydroxide, aluminium, calcium, calcium silicate, </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to form the wool stoma of inert crystals embedded in concrete,</p><p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to airtight micro cracks, thereby increasing the compactness of concrete surface layer and the compressive strength. In the study of the biological mechanism of action of anticorrosion materials and similar is feasible in theory, </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but in the specific application, also need to further study of the role of timeliness, economy.</p></div>
 +
<div align="center">
 +
<img src="https://static.igem.org/mediawiki/2015/8/88/QQ%E5%9B%BE%E7%89%8720150919003418.jpg"><br><br>
 +
<img src="https://static.igem.org/mediawiki/2015/a/aa/QQ%E5%9B%BE%E7%89%8720150919003423.jpg"><br>
 +
</div>
 +
  
 
          
 
          
Line 12,112: Line 944:
 
         <div class="container"> <!-- container -->
 
         <div class="container"> <!-- container -->
 
             <div class="section-header">
 
             <div class="section-header">
                 <h2>The &nbsp;<span class="highlight"><strong>Support &nbsp;</strong></span>of  our  team  and  project</h2>
+
                 <h2>The Attributions &#160;<span class="highlight"><strong>Acknowledgements &#160;</strong></span></h2>
 
                 <h5><em>This investigative project is supported by various well-known institutes, universities and corporations</em></h5>
 
                 <h5><em>This investigative project is supported by various well-known institutes, universities and corporations</em></h5>
                 <div class="fancy"><span><img src="img/favicon.ico" alt="..."></span></div>
+
                 <div class="fancy"><span><img src="https://static.igem.org/mediawiki/2015/9/97/Cmxfavicon.png" alt="..."></span></div>
 +
                <p>
 +
Professor Luo jianhong, Zhejiang University</p>
 +
 
 +
<p>Dr. Yan yinggang, Zhejiang University</p>
 +
<p>Dr. Ling Zhang, Zhejiang University</p>
 +
<p>Hangzhou #14 High School Bio-technology Laboratory</p>
 +
 
 +
<p>Zhejiang Association For Science and Technology</p>
 +
 
 +
<p>Hangzhou Multiscience Lianke Biotech Company (donator)</p>
 +
 
 +
<p>Hangzhou # 14 High School (donator)</p>
 
             </div>
 
             </div>
 +
            <img src="https://static.igem.org/mediawiki/2015/6/60/H14z.jpg"><br><br><br>
 +
            <img src="https://static.igem.org/mediawiki/2015/4/42/I2mg7379303_n.jpg"><br><br>
 +
            <img src="https://static.igem.org/mediawiki/2015/thumb/4/42/%E8%81%94%E7%A7%91LOGO.jpg/320px-%E8%81%94%E7%A7%91LOGO.jpg"><br>
  
 
              
 
              
Line 12,127: Line 974:
 
         <div class="container"> <!-- container -->
 
         <div class="container"> <!-- container -->
 
             <div class="section-header">
 
             <div class="section-header">
                 <h2>The impact we made about <span class="highlight"><strong> synthetic biology</strong></span></h2>
+
                 <h2>Human practices & <span class="highlight"><strong> Publicity</strong></span></h2>
                 <h5><em>We build a set of pages in our high school's official website to publicize the subject of synthetic biology</em></h5>
+
                 <h5><em>We build a set of pages in our high school's official website to publicize the subject of synthetic biology...</em></h5>
                 <div class="fancy"><span><img src="img/favicon.ico" alt="..."></span></div>
+
                 <div class="fancy"><span><img src="https://static.igem.org/mediawiki/2015/9/97/Cmxfavicon.png" alt="..."></span></div>
 
             </div>
 
             </div>
  
Line 12,139: Line 986:
 
                                 <div class="media process"> <!-- Process #1 -->
 
                                 <div class="media process"> <!-- Process #1 -->
 
                                     <div class="media-right media-middle">
 
                                     <div class="media-right media-middle">
                                       <a href="http://ap.h14z.com/igem/index.html"> <i class="fa fa-hand-o-right"></i></a>
+
                                       <a href="http://ap.h14z.com/igem/index.html"></a>
 
                                     </div>
 
                                     </div>
 
                                     <div class="media-body">
 
                                     <div class="media-body">
Line 12,149: Line 996:
 
                         <div class="media process"> <!-- Process #1 -->
 
                         <div class="media process"> <!-- Process #1 -->
 
                                     <div class="media-right media-middle">
 
                                     <div class="media-right media-middle">
                                       <a href="http://ap.h14z.com"> <i class="fa fa-hand-o-right"></i></a>
+
                                       <a href="http://ap.h14z.com"></a>
 
                                     </div>
 
                                     </div>
 
                                     <div class="media-body">
 
                                     <div class="media-body">
Line 12,158: Line 1,005:
 
                         <div class="media process"> <!-- Process #1 -->
 
                         <div class="media process"> <!-- Process #1 -->
 
                                     <div class="media-right media-middle">
 
                                     <div class="media-right media-middle">
                                       <a href="http://www.h14z.com"> <i class="fa fa-hand-o-right"></i></a>
+
                                       <a href="http://www.h14z.com"> </a>
 
                                     </div>
 
                                     </div>
 
                                     <div class="media-body">
 
                                     <div class="media-body">
Line 12,166: Line 1,013:
 
                                 </div><!-- Process #1 -->                 
 
                                 </div><!-- Process #1 -->                 
 
                     </div>
 
                     </div>
 +
                </div>
 +
                </div>
 
                 </div> <!-- end row -->
 
                 </div> <!-- end row -->
 +
                <br>
 +
                <div class="gray-bg"> <!-- fullwidth gray background -->
 +
                <div class="container"><!-- container -->
 +
              <p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.Training for iGEM</p><p>
 +
The iGEM program requires the interdisciplinary abilities. To approach this purpose, we designed a series of trainings including computer programming, biological experiment skills, etc. (The following photographs illustrates the process)
 +
The collegiate team from Zhejiang University provides an opportunity which shows us how the biological experiments run. </p>
 +
<div align="center"><img src="https://static.igem.org/mediawiki/2015/f/f8/QQ%E5%9B%BE%E7%89%8720150919002721.jpg"><img src="https://static.igem.org/mediawiki/2015/1/1d/QQ%E5%9B%BE%E7%89%8720150919002729.jpg"></div>
 +
<p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Pre-research of project</p>
 +
<p>We distributed questionnaires and conducted survey in order to learn about the current knowledge of local peoples towards cultural artifacts in Hangzhou.
 +
The following diagrams are analyzed by the data. According to the data, the current situation of protection and renovating towards cultural artifacts and synthetic biology does not have bright prospects. The lack of attentions in civilians can cause the enormous negative effects on research and the practical usage, so we organized a series of activities to publicize the cultural artifacts in Hangzhou, the synthetic biology.(more details in Publicity)</p>
 +
<div align="center"><img src="https://static.igem.org/mediawiki/2015/3/33/QQ%E5%9B%BE%E7%89%8720150919002733.jpg"><img src="https://static.igem.org/mediawiki/2015/5/5d/QQ%E5%9B%BE%E7%89%8720150919002740.jpg"></div>
 +
<p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.Publicity</p>
 +
 +
<p>(1)To acquaint students synthetic biology, our team’s human practice group publicize this subject several times during the summer break in our city including the danger and benefits of transgenosis food that was familiar and relevant to the citizens.
 +
Furthermore, we upload the basic synthetic biology knowledge in our school’s official website for months and update the latest information or the experimental knowledge at a time period.</p><div align="center"><img src="https://static.igem.org/mediawiki/2015/b/b9/QQ%E5%9B%BE%E7%89%8720150919003355.jpg"><img src="https://static.igem.org/mediawiki/2015/a/af/QQ%E5%9B%BE%E7%89%8720150919003401.jpg"></div>
 +
<p>(2)We hold a presentation in our school to introduce the iGEM to our successors. It consists that the general ideas of iGEM, the specific parts which are totally different from the biology competition in China, the judgements, also Q&A section and the advantages of taking this competition. Our team leader Andrew Luo gave an excellent lecture.</p>
 +
<div align="center"><img src="https://static.igem.org/mediawiki/2015/6/64/QQ%E5%9B%BE%E7%89%8720150919003410.jpg"></div>
 +
<p>(3)As we mentioned before, to introduce local citizens the importance of cultural artifacts in this city,  we sent out the specialized post cards with 7 different kinds of landscape seals and our team seal in order to publicize our project and the local artifacts protection at the same time. </p>
 +
<div align="center"><img src="https://static.igem.org/mediawiki/2015/9/93/QQ%E5%9B%BE%E7%89%8720150919003413.jpg"></div>
 +
 +
 +
 +
 +
 
             </div><!-- end container -->
 
             </div><!-- end container -->
 
             </div>
 
             </div>
Line 12,174: Line 1,047:
 
     <br>
 
     <br>
 
     <br>
 
     <br>
 +
   
 +
   
 
     <!-- Footer  
 
     <!-- Footer  
 +
   
 
     ================================================== -->
 
     ================================================== -->
 +
    <div id="tf-parts">
 +
        <div class="container"> <!-- container -->
 +
            <div class="section-header">
 +
                <h2>&#160;<span class="highlight"><strong>Parts&#160;</strong></span></h2>
 +
                <h5><em>About parts in our project</em></h5>
 +
                <div class="fancy"><span><img src="https://static.igem.org/mediawiki/2015/9/97/Cmxfavicon.png" alt="..."></span></div>
 +
                <div align="center">
 +
                <p><h2>BBa_K1671000</h2></p><br>
 +
                <P><b>OAH</b></P><br>
 +
                <p>Oxalacetate acetylhydrolase (OAH), </p><P>a member of the phosphoenolpyruvate mutase/isocitrate lyase superfamily,</P> <p>catalyzes the hydrolysis of oxalacetate to oxalic acid and acetate. This part is modified from Bba_J04450.</p><br>
 +
                <P><b>Design Notes</b></P>
 +
<P>The gene sequence of this target gene contains many inappropriate enzyme cutting site, </P><P>we can only constructing other cutting site with PCR by ourself. </P><br>
 +
<p><b>Source</b></p><br>
 +
 +
<p>We found this sequence in the essay 'Structure of Oxalacetate Acetylhydrolase,</p><p> a Virulence Factor of the Chestnut Blight Fungus.' Its accession number in GenBank is GU932672.</p> <br><br>
 +
<img src="https://static.igem.org/mediawiki/2015/8/88/Cache_-f378467aba3c664c..jpg">
 +
 +
 +
                <p><h2>BBa_K1671001</h2></p>
 +
                <P><b>Lipase </b></P><br>
 +
                <p>Lipase, full name triacylglycerol acylhydrolase, is the target gene of this part. </p><p>It is an is an enzyme that catalyzes the hydrolysis of fats, which is able to solve the oil like pollution on the surface of relics.This part is modified from Bba_J04450.  </p><br>
 +
                <P><b>Design Notes</b></P>
 +
<P>The gene sequence of this target gene contains many inappropriate enzyme cutting site, </P><P>we can only constructing other cutting site with PCR by ourself. </P><br>
 +
<p><b>Source</b></p><br>
 +
 +
<p>We found the sequence of this gene from the essay</p><p> ' Induce Secretion Expression of Lipase Gene from Bacillus subtle in Escherichia Coli.' </p> <br><br>
 +
<img src="https://static.igem.org/mediawiki/2015/5/59/Cache_5a19c3725abefddf..jpg">
 +
 +
                </div>
 +
           
 +
               
 +
        </div><!-- end container -->
 +
    </div>
 +
    </div>
 
     <div id="tf-footer">
 
     <div id="tf-footer">
 
         <div class="container"><!-- container -->
 
         <div class="container"><!-- container -->
 
             <p class="pull-left">© 2015 Hangzhou #14 highschool iGEM team. All rights reserved. Powered by Minxing Chen.</p> <!-- copyright text here-->
 
             <p class="pull-left">© 2015 Hangzhou #14 highschool iGEM team. All rights reserved. Powered by Minxing Chen.</p> <!-- copyright text here-->
 
             <ul class="list-inline social pull-right">
 
             <ul class="list-inline social pull-right">
                 <li><a href="#"><i class="fa fa-facebook"></i></a></li> <!-- Change # With your FB Link -->
+
                  
                <li><a href="#"><i class="fa fa-twitter"></i></a></li> <!-- Change # With your Twitter Link -->
+
                <li><a href="#"><i class="fa fa-google-plus"></i></a></li> <!-- Change # With your Google Plus Link -->
+
                <li><a href="#"><i class="fa fa-linkedin"></i></a></li> <!-- Change # With your LinkedIn Link -->
+
                <li><a href="#"><i class="fa fa-youtube"></i></a></li> <!-- Change # With your Youtube Link -->
+
 
             </ul>
 
             </ul>
 
         </div><!-- end container -->
 
         </div><!-- end container -->
Line 12,191: Line 1,097:
  
  
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/jquery1112min?action=raw&ctype=text/javascript"></script>
    <script type="text/javascript">/*! jQuery v1.11.2 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/jquery1111?action=raw&ctype=text/javascript"></script>
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.2",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;
+
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/jqueryisotope?action=raw&ctype=text/javascript"></script>
return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)
+
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/nivolightboxmin?action=raw&ctype=text/javascript"></script>
}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
+
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/owlcarousel?action=raw&ctype=text/javascript"></script>
 +
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/bootstrap?action=raw&ctype=text/javascript"></script>
 +
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/bootstrapmin?action=raw&ctype=text/javascript"></script>
 +
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/skrollr?action=raw&ctype=text/javascript"></script>
 +
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/jqBootstrapValidation?action=raw&ctype=text/javascript">
 
</script>
 
</script>
<script type="text/javascript">/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/contact?action=raw&ctype=text/javascript"></script>
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
+
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/main?action=raw&ctype=text/javascript"></script>
if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
+
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/imagesloaded?action=raw&ctype=text/javascript"></script>
},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});</script>
+
<script type=>/*!
+
* Bootstrap v3.3.2 (http://getbootstrap.com)
+
* Copyright 2011-2015 Twitter, Inc.
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+
*/
+
  
if (typeof jQuery === 'undefined') {
+
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/parallax?action=raw&ctype=text/javascript"></script>
  throw new Error('Bootstrap\'s JavaScript requires jQuery')
+
<script type="text/javascript" src="https://2015.igem.org/Template:Hangzhou-H14Z/js/smoothscroll?action=raw&ctype=text/javascript"></script>
}
+
  
+function ($) {
 
  'use strict';
 
  var version = $.fn.jquery.split(' ')[0].split('.')
 
  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {
 
    throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher')
 
  }
 
}(jQuery);
 
  
/* ========================================================================
 
* Bootstrap: transition.js v3.3.2
 
* http://getbootstrap.com/javascript/#transitions
 
* ========================================================================
 
* Copyright 2011-2015 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
  
 
+function ($) {
 
  'use strict';
 
 
  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
 
  // ============================================================
 
 
  function transitionEnd() {
 
    var el = document.createElement('bootstrap')
 
 
    var transEndEventNames = {
 
      WebkitTransition : 'webkitTransitionEnd',
 
      MozTransition    : 'transitionend',
 
      OTransition      : 'oTransitionEnd otransitionend',
 
      transition      : 'transitionend'
 
    }
 
 
    for (var name in transEndEventNames) {
 
      if (el.style[name] !== undefined) {
 
        return { end: transEndEventNames[name] }
 
      }
 
    }
 
 
    return false // explicit for ie8 (  ._.)
 
  }
 
 
  // http://blog.alexmaccaw.com/css-transitions
 
  $.fn.emulateTransitionEnd = function (duration) {
 
    var called = false
 
    var $el = this
 
    $(this).one('bsTransitionEnd', function () { called = true })
 
    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
 
    setTimeout(callback, duration)
 
    return this
 
  }
 
 
  $(function () {
 
    $.support.transition = transitionEnd()
 
 
    if (!$.support.transition) return
 
 
    $.event.special.bsTransitionEnd = {
 
      bindType: $.support.transition.end,
 
      delegateType: $.support.transition.end,
 
      handle: function (e) {
 
        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
 
      }
 
    }
 
  })
 
 
}(jQuery);
 
 
/* ========================================================================
 
* Bootstrap: alert.js v3.3.2
 
* http://getbootstrap.com/javascript/#alerts
 
* ========================================================================
 
* Copyright 2011-2015 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
 
 
+function ($) {
 
  'use strict';
 
 
  // ALERT CLASS DEFINITION
 
  // ======================
 
 
  var dismiss = '[data-dismiss="alert"]'
 
  var Alert  = function (el) {
 
    $(el).on('click', dismiss, this.close)
 
  }
 
 
  Alert.VERSION = '3.3.2'
 
 
  Alert.TRANSITION_DURATION = 150
 
 
  Alert.prototype.close = function (e) {
 
    var $this    = $(this)
 
    var selector = $this.attr('data-target')
 
 
    if (!selector) {
 
      selector = $this.attr('href')
 
      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
 
    }
 
 
    var $parent = $(selector)
 
 
    if (e) e.preventDefault()
 
 
    if (!$parent.length) {
 
      $parent = $this.closest('.alert')
 
    }
 
 
    $parent.trigger(e = $.Event('close.bs.alert'))
 
 
    if (e.isDefaultPrevented()) return
 
 
    $parent.removeClass('in')
 
 
    function removeElement() {
 
      // detach from parent, fire event then clean up data
 
      $parent.detach().trigger('closed.bs.alert').remove()
 
    }
 
 
    $.support.transition && $parent.hasClass('fade') ?
 
      $parent
 
        .one('bsTransitionEnd', removeElement)
 
        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
 
      removeElement()
 
  }
 
 
 
  // ALERT PLUGIN DEFINITION
 
  // =======================
 
 
  function Plugin(option) {
 
    return this.each(function () {
 
      var $this = $(this)
 
      var data  = $this.data('bs.alert')
 
 
      if (!data) $this.data('bs.alert', (data = new Alert(this)))
 
      if (typeof option == 'string') data[option].call($this)
 
    })
 
  }
 
 
  var old = $.fn.alert
 
 
  $.fn.alert            = Plugin
 
  $.fn.alert.Constructor = Alert
 
 
 
  // ALERT NO CONFLICT
 
  // =================
 
 
  $.fn.alert.noConflict = function () {
 
    $.fn.alert = old
 
    return this
 
  }
 
 
 
  // ALERT DATA-API
 
  // ==============
 
 
  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
 
 
}(jQuery);
 
 
/* ========================================================================
 
* Bootstrap: button.js v3.3.2
 
* http://getbootstrap.com/javascript/#buttons
 
* ========================================================================
 
* Copyright 2011-2015 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
 
 
+function ($) {
 
  'use strict';
 
 
  // BUTTON PUBLIC CLASS DEFINITION
 
  // ==============================
 
 
  var Button = function (element, options) {
 
    this.$element  = $(element)
 
    this.options  = $.extend({}, Button.DEFAULTS, options)
 
    this.isLoading = false
 
  }
 
 
  Button.VERSION  = '3.3.2'
 
 
  Button.DEFAULTS = {
 
    loadingText: 'loading...'
 
  }
 
 
  Button.prototype.setState = function (state) {
 
    var d    = 'disabled'
 
    var $el  = this.$element
 
    var val  = $el.is('input') ? 'val' : 'html'
 
    var data = $el.data()
 
 
    state = state + 'Text'
 
 
    if (data.resetText == null) $el.data('resetText', $el[val]())
 
 
    // push to event loop to allow forms to submit
 
    setTimeout($.proxy(function () {
 
      $el[val](data[state] == null ? this.options[state] : data[state])
 
 
      if (state == 'loadingText') {
 
        this.isLoading = true
 
        $el.addClass(d).attr(d, d)
 
      } else if (this.isLoading) {
 
        this.isLoading = false
 
        $el.removeClass(d).removeAttr(d)
 
      }
 
    }, this), 0)
 
  }
 
 
  Button.prototype.toggle = function () {
 
    var changed = true
 
    var $parent = this.$element.closest('[data-toggle="buttons"]')
 
 
    if ($parent.length) {
 
      var $input = this.$element.find('input')
 
      if ($input.prop('type') == 'radio') {
 
        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
 
        else $parent.find('.active').removeClass('active')
 
      }
 
      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
 
    } else {
 
      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
 
    }
 
 
    if (changed) this.$element.toggleClass('active')
 
  }
 
 
 
  // BUTTON PLUGIN DEFINITION
 
  // ========================
 
 
  function Plugin(option) {
 
    return this.each(function () {
 
      var $this  = $(this)
 
      var data    = $this.data('bs.button')
 
      var options = typeof option == 'object' && option
 
 
      if (!data) $this.data('bs.button', (data = new Button(this, options)))
 
 
      if (option == 'toggle') data.toggle()
 
      else if (option) data.setState(option)
 
    })
 
  }
 
 
  var old = $.fn.button
 
 
  $.fn.button            = Plugin
 
  $.fn.button.Constructor = Button
 
 
 
  // BUTTON NO CONFLICT
 
  // ==================
 
 
  $.fn.button.noConflict = function () {
 
    $.fn.button = old
 
    return this
 
  }
 
 
 
  // BUTTON DATA-API
 
  // ===============
 
 
  $(document)
 
    .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
 
      var $btn = $(e.target)
 
      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
 
      Plugin.call($btn, 'toggle')
 
      e.preventDefault()
 
    })
 
    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
 
      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
 
    })
 
 
}(jQuery);
 
 
/* ========================================================================
 
* Bootstrap: carousel.js v3.3.2
 
* http://getbootstrap.com/javascript/#carousel
 
* ========================================================================
 
* Copyright 2011-2015 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
 
 
+function ($) {
 
  'use strict';
 
 
  // CAROUSEL CLASS DEFINITION
 
  // =========================
 
 
  var Carousel = function (element, options) {
 
    this.$element    = $(element)
 
    this.$indicators = this.$element.find('.carousel-indicators')
 
    this.options    = options
 
    this.paused      =
 
    this.sliding    =
 
    this.interval    =
 
    this.$active    =
 
    this.$items      = null
 
 
    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
 
 
    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
 
      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
 
      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
 
  }
 
 
  Carousel.VERSION  = '3.3.2'
 
 
  Carousel.TRANSITION_DURATION = 600
 
 
  Carousel.DEFAULTS = {
 
    interval: 5000,
 
    pause: 'hover',
 
    wrap: true,
 
    keyboard: true
 
  }
 
 
  Carousel.prototype.keydown = function (e) {
 
    if (/input|textarea/i.test(e.target.tagName)) return
 
    switch (e.which) {
 
      case 37: this.prev(); break
 
      case 39: this.next(); break
 
      default: return
 
    }
 
 
    e.preventDefault()
 
  }
 
 
  Carousel.prototype.cycle = function (e) {
 
    e || (this.paused = false)
 
 
    this.interval && clearInterval(this.interval)
 
 
    this.options.interval
 
      && !this.paused
 
      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
 
 
    return this
 
  }
 
 
  Carousel.prototype.getItemIndex = function (item) {
 
    this.$items = item.parent().children('.item')
 
    return this.$items.index(item || this.$active)
 
  }
 
 
  Carousel.prototype.getItemForDirection = function (direction, active) {
 
    var activeIndex = this.getItemIndex(active)
 
    var willWrap = (direction == 'prev' && activeIndex === 0)
 
                || (direction == 'next' && activeIndex == (this.$items.length - 1))
 
    if (willWrap && !this.options.wrap) return active
 
    var delta = direction == 'prev' ? -1 : 1
 
    var itemIndex = (activeIndex + delta) % this.$items.length
 
    return this.$items.eq(itemIndex)
 
  }
 
 
  Carousel.prototype.to = function (pos) {
 
    var that        = this
 
    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
 
 
    if (pos > (this.$items.length - 1) || pos < 0) return
 
 
    if (this.sliding)      return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
 
    if (activeIndex == pos) return this.pause().cycle()
 
 
    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
 
  }
 
 
  Carousel.prototype.pause = function (e) {
 
    e || (this.paused = true)
 
 
    if (this.$element.find('.next, .prev').length && $.support.transition) {
 
      this.$element.trigger($.support.transition.end)
 
      this.cycle(true)
 
    }
 
 
    this.interval = clearInterval(this.interval)
 
 
    return this
 
  }
 
 
  Carousel.prototype.next = function () {
 
    if (this.sliding) return
 
    return this.slide('next')
 
  }
 
 
  Carousel.prototype.prev = function () {
 
    if (this.sliding) return
 
    return this.slide('prev')
 
  }
 
 
  Carousel.prototype.slide = function (type, next) {
 
    var $active  = this.$element.find('.item.active')
 
    var $next    = next || this.getItemForDirection(type, $active)
 
    var isCycling = this.interval
 
    var direction = type == 'next' ? 'left' : 'right'
 
    var that      = this
 
 
    if ($next.hasClass('active')) return (this.sliding = false)
 
 
    var relatedTarget = $next[0]
 
    var slideEvent = $.Event('slide.bs.carousel', {
 
      relatedTarget: relatedTarget,
 
      direction: direction
 
    })
 
    this.$element.trigger(slideEvent)
 
    if (slideEvent.isDefaultPrevented()) return
 
 
    this.sliding = true
 
 
    isCycling && this.pause()
 
 
    if (this.$indicators.length) {
 
      this.$indicators.find('.active').removeClass('active')
 
      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
 
      $nextIndicator && $nextIndicator.addClass('active')
 
    }
 
 
    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
 
    if ($.support.transition && this.$element.hasClass('slide')) {
 
      $next.addClass(type)
 
      $next[0].offsetWidth // force reflow
 
      $active.addClass(direction)
 
      $next.addClass(direction)
 
      $active
 
        .one('bsTransitionEnd', function () {
 
          $next.removeClass([type, direction].join(' ')).addClass('active')
 
          $active.removeClass(['active', direction].join(' '))
 
          that.sliding = false
 
          setTimeout(function () {
 
            that.$element.trigger(slidEvent)
 
          }, 0)
 
        })
 
        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
 
    } else {
 
      $active.removeClass('active')
 
      $next.addClass('active')
 
      this.sliding = false
 
      this.$element.trigger(slidEvent)
 
    }
 
 
    isCycling && this.cycle()
 
 
    return this
 
  }
 
 
 
  // CAROUSEL PLUGIN DEFINITION
 
  // ==========================
 
 
  function Plugin(option) {
 
    return this.each(function () {
 
      var $this  = $(this)
 
      var data    = $this.data('bs.carousel')
 
      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
 
      var action  = typeof option == 'string' ? option : options.slide
 
 
      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
 
      if (typeof option == 'number') data.to(option)
 
      else if (action) data[action]()
 
      else if (options.interval) data.pause().cycle()
 
    })
 
  }
 
 
  var old = $.fn.carousel
 
 
  $.fn.carousel            = Plugin
 
  $.fn.carousel.Constructor = Carousel
 
 
 
  // CAROUSEL NO CONFLICT
 
  // ====================
 
 
  $.fn.carousel.noConflict = function () {
 
    $.fn.carousel = old
 
    return this
 
  }
 
 
 
  // CAROUSEL DATA-API
 
  // =================
 
 
  var clickHandler = function (e) {
 
    var href
 
    var $this  = $(this)
 
    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
 
    if (!$target.hasClass('carousel')) return
 
    var options = $.extend({}, $target.data(), $this.data())
 
    var slideIndex = $this.attr('data-slide-to')
 
    if (slideIndex) options.interval = false
 
 
    Plugin.call($target, options)
 
 
    if (slideIndex) {
 
      $target.data('bs.carousel').to(slideIndex)
 
    }
 
 
    e.preventDefault()
 
  }
 
 
  $(document)
 
    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
 
    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
 
 
  $(window).on('load', function () {
 
    $('[data-ride="carousel"]').each(function () {
 
      var $carousel = $(this)
 
      Plugin.call($carousel, $carousel.data())
 
    })
 
  })
 
 
}(jQuery);
 
 
/* ========================================================================
 
* Bootstrap: collapse.js v3.3.2
 
* http://getbootstrap.com/javascript/#collapse
 
* ========================================================================
 
* Copyright 2011-2015 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
 
 
+function ($) {
 
  'use strict';
 
 
  // COLLAPSE PUBLIC CLASS DEFINITION
 
  // ================================
 
 
  var Collapse = function (element, options) {
 
    this.$element      = $(element)
 
    this.options      = $.extend({}, Collapse.DEFAULTS, options)
 
    this.$trigger      = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]')
 
    this.transitioning = null
 
 
    if (this.options.parent) {
 
      this.$parent = this.getParent()
 
    } else {
 
      this.addAriaAndCollapsedClass(this.$element, this.$trigger)
 
    }
 
 
    if (this.options.toggle) this.toggle()
 
  }
 
 
  Collapse.VERSION  = '3.3.2'
 
 
  Collapse.TRANSITION_DURATION = 350
 
 
  Collapse.DEFAULTS = {
 
    toggle: true,
 
    trigger: '[data-toggle="collapse"]'
 
  }
 
 
  Collapse.prototype.dimension = function () {
 
    var hasWidth = this.$element.hasClass('width')
 
    return hasWidth ? 'width' : 'height'
 
  }
 
 
  Collapse.prototype.show = function () {
 
    if (this.transitioning || this.$element.hasClass('in')) return
 
 
    var activesData
 
    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
 
 
    if (actives && actives.length) {
 
      activesData = actives.data('bs.collapse')
 
      if (activesData && activesData.transitioning) return
 
    }
 
 
    var startEvent = $.Event('show.bs.collapse')
 
    this.$element.trigger(startEvent)
 
    if (startEvent.isDefaultPrevented()) return
 
 
    if (actives && actives.length) {
 
      Plugin.call(actives, 'hide')
 
      activesData || actives.data('bs.collapse', null)
 
    }
 
 
    var dimension = this.dimension()
 
 
    this.$element
 
      .removeClass('collapse')
 
      .addClass('collapsing')[dimension](0)
 
      .attr('aria-expanded', true)
 
 
    this.$trigger
 
      .removeClass('collapsed')
 
      .attr('aria-expanded', true)
 
 
    this.transitioning = 1
 
 
    var complete = function () {
 
      this.$element
 
        .removeClass('collapsing')
 
        .addClass('collapse in')[dimension]('')
 
      this.transitioning = 0
 
      this.$element
 
        .trigger('shown.bs.collapse')
 
    }
 
 
    if (!$.support.transition) return complete.call(this)
 
 
    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
 
 
    this.$element
 
      .one('bsTransitionEnd', $.proxy(complete, this))
 
      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
 
  }
 
 
  Collapse.prototype.hide = function () {
 
    if (this.transitioning || !this.$element.hasClass('in')) return
 
 
    var startEvent = $.Event('hide.bs.collapse')
 
    this.$element.trigger(startEvent)
 
    if (startEvent.isDefaultPrevented()) return
 
 
    var dimension = this.dimension()
 
 
    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
 
 
    this.$element
 
      .addClass('collapsing')
 
      .removeClass('collapse in')
 
      .attr('aria-expanded', false)
 
 
    this.$trigger
 
      .addClass('collapsed')
 
      .attr('aria-expanded', false)
 
 
    this.transitioning = 1
 
 
    var complete = function () {
 
      this.transitioning = 0
 
      this.$element
 
        .removeClass('collapsing')
 
        .addClass('collapse')
 
        .trigger('hidden.bs.collapse')
 
    }
 
 
    if (!$.support.transition) return complete.call(this)
 
 
    this.$element
 
      [dimension](0)
 
      .one('bsTransitionEnd', $.proxy(complete, this))
 
      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
 
  }
 
 
  Collapse.prototype.toggle = function () {
 
    this[this.$element.hasClass('in') ? 'hide' : 'show']()
 
  }
 
 
  Collapse.prototype.getParent = function () {
 
    return $(this.options.parent)
 
      .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
 
      .each($.proxy(function (i, element) {
 
        var $element = $(element)
 
        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
 
      }, this))
 
      .end()
 
  }
 
 
  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
 
    var isOpen = $element.hasClass('in')
 
 
    $element.attr('aria-expanded', isOpen)
 
    $trigger
 
      .toggleClass('collapsed', !isOpen)
 
      .attr('aria-expanded', isOpen)
 
  }
 
 
  function getTargetFromTrigger($trigger) {
 
    var href
 
    var target = $trigger.attr('data-target')
 
      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
 
 
    return $(target)
 
  }
 
 
 
  // COLLAPSE PLUGIN DEFINITION
 
  // ==========================
 
 
  function Plugin(option) {
 
    return this.each(function () {
 
      var $this  = $(this)
 
      var data    = $this.data('bs.collapse')
 
      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
 
 
      if (!data && options.toggle && option == 'show') options.toggle = false
 
      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
 
      if (typeof option == 'string') data[option]()
 
    })
 
  }
 
 
  var old = $.fn.collapse
 
 
  $.fn.collapse            = Plugin
 
  $.fn.collapse.Constructor = Collapse
 
 
 
  // COLLAPSE NO CONFLICT
 
  // ====================
 
 
  $.fn.collapse.noConflict = function () {
 
    $.fn.collapse = old
 
    return this
 
  }
 
 
 
  // COLLAPSE DATA-API
 
  // =================
 
 
  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
 
    var $this  = $(this)
 
 
    if (!$this.attr('data-target')) e.preventDefault()
 
 
    var $target = getTargetFromTrigger($this)
 
    var data    = $target.data('bs.collapse')
 
    var option  = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this })
 
 
    Plugin.call($target, option)
 
  })
 
 
}(jQuery);
 
 
/* ========================================================================
 
* Bootstrap: dropdown.js v3.3.2
 
* http://getbootstrap.com/javascript/#dropdowns
 
* ========================================================================
 
* Copyright 2011-2015 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
 
 
+function ($) {
 
  'use strict';
 
 
  // DROPDOWN CLASS DEFINITION
 
  // =========================
 
 
  var backdrop = '.dropdown-backdrop'
 
  var toggle  = '[data-toggle="dropdown"]'
 
  var Dropdown = function (element) {
 
    $(element).on('click.bs.dropdown', this.toggle)
 
  }
 
 
  Dropdown.VERSION = '3.3.2'
 
 
  Dropdown.prototype.toggle = function (e) {
 
    var $this = $(this)
 
 
    if ($this.is('.disabled, :disabled')) return
 
 
    var $parent  = getParent($this)
 
    var isActive = $parent.hasClass('open')
 
 
    clearMenus()
 
 
    if (!isActive) {
 
      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
 
        // if mobile we use a backdrop because click events don't delegate
 
        $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
 
      }
 
 
      var relatedTarget = { relatedTarget: this }
 
      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
 
 
      if (e.isDefaultPrevented()) return
 
 
      $this
 
        .trigger('focus')
 
        .attr('aria-expanded', 'true')
 
 
      $parent
 
        .toggleClass('open')
 
        .trigger('shown.bs.dropdown', relatedTarget)
 
    }
 
 
    return false
 
  }
 
 
  Dropdown.prototype.keydown = function (e) {
 
    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
 
 
    var $this = $(this)
 
 
    e.preventDefault()
 
    e.stopPropagation()
 
 
    if ($this.is('.disabled, :disabled')) return
 
 
    var $parent  = getParent($this)
 
    var isActive = $parent.hasClass('open')
 
 
    if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {
 
      if (e.which == 27) $parent.find(toggle).trigger('focus')
 
      return $this.trigger('click')
 
    }
 
 
    var desc = ' li:not(.divider):visible a'
 
    var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
 
 
    if (!$items.length) return
 
 
    var index = $items.index(e.target)
 
 
    if (e.which == 38 && index > 0)                index--                        // up
 
    if (e.which == 40 && index < $items.length - 1) index++                        // down
 
    if (!~index)                                      index = 0
 
 
    $items.eq(index).trigger('focus')
 
  }
 
 
  function clearMenus(e) {
 
    if (e && e.which === 3) return
 
    $(backdrop).remove()
 
    $(toggle).each(function () {
 
      var $this        = $(this)
 
      var $parent      = getParent($this)
 
      var relatedTarget = { relatedTarget: this }
 
 
      if (!$parent.hasClass('open')) return
 
 
      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
 
 
      if (e.isDefaultPrevented()) return
 
 
      $this.attr('aria-expanded', 'false')
 
      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
 
    })
 
  }
 
 
  function getParent($this) {
 
    var selector = $this.attr('data-target')
 
 
    if (!selector) {
 
      selector = $this.attr('href')
 
      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
 
    }
 
 
    var $parent = selector && $(selector)
 
 
    return $parent && $parent.length ? $parent : $this.parent()
 
  }
 
 
 
  // DROPDOWN PLUGIN DEFINITION
 
  // ==========================
 
 
  function Plugin(option) {
 
    return this.each(function () {
 
      var $this = $(this)
 
      var data  = $this.data('bs.dropdown')
 
 
      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
 
      if (typeof option == 'string') data[option].call($this)
 
    })
 
  }
 
 
  var old = $.fn.dropdown
 
 
  $.fn.dropdown            = Plugin
 
  $.fn.dropdown.Constructor = Dropdown
 
 
 
  // DROPDOWN NO CONFLICT
 
  // ====================
 
 
  $.fn.dropdown.noConflict = function () {
 
    $.fn.dropdown = old
 
    return this
 
  }
 
 
 
  // APPLY TO STANDARD DROPDOWN ELEMENTS
 
  // ===================================
 
 
  $(document)
 
    .on('click.bs.dropdown.data-api', clearMenus)
 
    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
 
    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
 
    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
 
    .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
 
    .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
 
 
}(jQuery);
 
 
/* ========================================================================
 
* Bootstrap: modal.js v3.3.2
 
* http://getbootstrap.com/javascript/#modals
 
* ========================================================================
 
* Copyright 2011-2015 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
 
 
+function ($) {
 
  'use strict';
 
 
  // MODAL CLASS DEFINITION
 
  // ======================
 
 
  var Modal = function (element, options) {
 
    this.options        = options
 
    this.$body          = $(document.body)
 
    this.$element      = $(element)
 
    this.$backdrop      =
 
    this.isShown        = null
 
    this.scrollbarWidth = 0
 
 
    if (this.options.remote) {
 
      this.$element
 
        .find('.modal-content')
 
        .load(this.options.remote, $.proxy(function () {
 
          this.$element.trigger('loaded.bs.modal')
 
        }, this))
 
    }
 
  }
 
 
  Modal.VERSION  = '3.3.2'
 
 
  Modal.TRANSITION_DURATION = 300
 
  Modal.BACKDROP_TRANSITION_DURATION = 150
 
 
  Modal.DEFAULTS = {
 
    backdrop: true,
 
    keyboard: true,
 
    show: true
 
  }
 
 
  Modal.prototype.toggle = function (_relatedTarget) {
 
    return this.isShown ? this.hide() : this.show(_relatedTarget)
 
  }
 
 
  Modal.prototype.show = function (_relatedTarget) {
 
    var that = this
 
    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
 
 
    this.$element.trigger(e)
 
 
    if (this.isShown || e.isDefaultPrevented()) return
 
 
    this.isShown = true
 
 
    this.checkScrollbar()
 
    this.setScrollbar()
 
    this.$body.addClass('modal-open')
 
 
    this.escape()
 
    this.resize()
 
 
    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
 
 
    this.backdrop(function () {
 
      var transition = $.support.transition && that.$element.hasClass('fade')
 
 
      if (!that.$element.parent().length) {
 
        that.$element.appendTo(that.$body) // don't move modals dom position
 
      }
 
 
      that.$element
 
        .show()
 
        .scrollTop(0)
 
 
      if (that.options.backdrop) that.adjustBackdrop()
 
      that.adjustDialog()
 
 
      if (transition) {
 
        that.$element[0].offsetWidth // force reflow
 
      }
 
 
      that.$element
 
        .addClass('in')
 
        .attr('aria-hidden', false)
 
 
      that.enforceFocus()
 
 
      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
 
 
      transition ?
 
        that.$element.find('.modal-dialog') // wait for modal to slide in
 
          .one('bsTransitionEnd', function () {
 
            that.$element.trigger('focus').trigger(e)
 
          })
 
          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
 
        that.$element.trigger('focus').trigger(e)
 
    })
 
  }
 
 
  Modal.prototype.hide = function (e) {
 
    if (e) e.preventDefault()
 
 
    e = $.Event('hide.bs.modal')
 
 
    this.$element.trigger(e)
 
 
    if (!this.isShown || e.isDefaultPrevented()) return
 
 
    this.isShown = false
 
 
    this.escape()
 
    this.resize()
 
 
    $(document).off('focusin.bs.modal')
 
 
    this.$element
 
      .removeClass('in')
 
      .attr('aria-hidden', true)
 
      .off('click.dismiss.bs.modal')
 
 
    $.support.transition && this.$element.hasClass('fade') ?
 
      this.$element
 
        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
 
        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
 
      this.hideModal()
 
  }
 
 
  Modal.prototype.enforceFocus = function () {
 
    $(document)
 
      .off('focusin.bs.modal') // guard against infinite focus loop
 
      .on('focusin.bs.modal', $.proxy(function (e) {
 
        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
 
          this.$element.trigger('focus')
 
        }
 
      }, this))
 
  }
 
 
  Modal.prototype.escape = function () {
 
    if (this.isShown && this.options.keyboard) {
 
      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
 
        e.which == 27 && this.hide()
 
      }, this))
 
    } else if (!this.isShown) {
 
      this.$element.off('keydown.dismiss.bs.modal')
 
    }
 
  }
 
 
  Modal.prototype.resize = function () {
 
    if (this.isShown) {
 
      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
 
    } else {
 
      $(window).off('resize.bs.modal')
 
    }
 
  }
 
 
  Modal.prototype.hideModal = function () {
 
    var that = this
 
    this.$element.hide()
 
    this.backdrop(function () {
 
      that.$body.removeClass('modal-open')
 
      that.resetAdjustments()
 
      that.resetScrollbar()
 
      that.$element.trigger('hidden.bs.modal')
 
    })
 
  }
 
 
  Modal.prototype.removeBackdrop = function () {
 
    this.$backdrop && this.$backdrop.remove()
 
    this.$backdrop = null
 
  }
 
 
  Modal.prototype.backdrop = function (callback) {
 
    var that = this
 
    var animate = this.$element.hasClass('fade') ? 'fade' : ''
 
 
    if (this.isShown && this.options.backdrop) {
 
      var doAnimate = $.support.transition && animate
 
 
      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
 
        .prependTo(this.$element)
 
        .on('click.dismiss.bs.modal', $.proxy(function (e) {
 
          if (e.target !== e.currentTarget) return
 
          this.options.backdrop == 'static'
 
            ? this.$element[0].focus.call(this.$element[0])
 
            : this.hide.call(this)
 
        }, this))
 
 
      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
 
 
      this.$backdrop.addClass('in')
 
 
      if (!callback) return
 
 
      doAnimate ?
 
        this.$backdrop
 
          .one('bsTransitionEnd', callback)
 
          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
 
        callback()
 
 
    } else if (!this.isShown && this.$backdrop) {
 
      this.$backdrop.removeClass('in')
 
 
      var callbackRemove = function () {
 
        that.removeBackdrop()
 
        callback && callback()
 
      }
 
      $.support.transition && this.$element.hasClass('fade') ?
 
        this.$backdrop
 
          .one('bsTransitionEnd', callbackRemove)
 
          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
 
        callbackRemove()
 
 
    } else if (callback) {
 
      callback()
 
    }
 
  }
 
 
  // these following methods are used to handle overflowing modals
 
 
  Modal.prototype.handleUpdate = function () {
 
    if (this.options.backdrop) this.adjustBackdrop()
 
    this.adjustDialog()
 
  }
 
 
  Modal.prototype.adjustBackdrop = function () {
 
    this.$backdrop
 
      .css('height', 0)
 
      .css('height', this.$element[0].scrollHeight)
 
  }
 
 
  Modal.prototype.adjustDialog = function () {
 
    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
 
 
    this.$element.css({
 
      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
 
      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
 
    })
 
  }
 
 
  Modal.prototype.resetAdjustments = function () {
 
    this.$element.css({
 
      paddingLeft: '',
 
      paddingRight: ''
 
    })
 
  }
 
 
  Modal.prototype.checkScrollbar = function () {
 
    this.bodyIsOverflowing = document.body.scrollHeight > document.documentElement.clientHeight
 
    this.scrollbarWidth = this.measureScrollbar()
 
  }
 
 
  Modal.prototype.setScrollbar = function () {
 
    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
 
    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
 
  }
 
 
  Modal.prototype.resetScrollbar = function () {
 
    this.$body.css('padding-right', '')
 
  }
 
 
  Modal.prototype.measureScrollbar = function () { // thx walsh
 
    var scrollDiv = document.createElement('div')
 
    scrollDiv.className = 'modal-scrollbar-measure'
 
    this.$body.append(scrollDiv)
 
    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
 
    this.$body[0].removeChild(scrollDiv)
 
    return scrollbarWidth
 
  }
 
 
 
  // MODAL PLUGIN DEFINITION
 
  // =======================
 
 
  function Plugin(option, _relatedTarget) {
 
    return this.each(function () {
 
      var $this  = $(this)
 
      var data    = $this.data('bs.modal')
 
      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
 
 
      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
 
      if (typeof option == 'string') data[option](_relatedTarget)
 
      else if (options.show) data.show(_relatedTarget)
 
    })
 
  }
 
 
  var old = $.fn.modal
 
 
  $.fn.modal            = Plugin
 
  $.fn.modal.Constructor = Modal
 
 
 
  // MODAL NO CONFLICT
 
  // =================
 
 
  $.fn.modal.noConflict = function () {
 
    $.fn.modal = old
 
    return this
 
  }
 
 
 
  // MODAL DATA-API
 
  // ==============
 
 
  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
 
    var $this  = $(this)
 
    var href    = $this.attr('href')
 
    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
 
    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
 
 
    if ($this.is('a')) e.preventDefault()
 
 
    $target.one('show.bs.modal', function (showEvent) {
 
      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
 
      $target.one('hidden.bs.modal', function () {
 
        $this.is(':visible') && $this.trigger('focus')
 
      })
 
    })
 
    Plugin.call($target, option, this)
 
  })
 
 
}(jQuery);
 
 
/* ========================================================================
 
* Bootstrap: tooltip.js v3.3.2
 
* http://getbootstrap.com/javascript/#tooltip
 
* Inspired by the original jQuery.tipsy by Jason Frame
 
* ========================================================================
 
* Copyright 2011-2015 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
 
 
+function ($) {
 
  'use strict';
 
 
  // TOOLTIP PUBLIC CLASS DEFINITION
 
  // ===============================
 
 
  var Tooltip = function (element, options) {
 
    this.type      =
 
    this.options    =
 
    this.enabled    =
 
    this.timeout    =
 
    this.hoverState =
 
    this.$element  = null
 
 
    this.init('tooltip', element, options)
 
  }
 
 
  Tooltip.VERSION  = '3.3.2'
 
 
  Tooltip.TRANSITION_DURATION = 150
 
 
  Tooltip.DEFAULTS = {
 
    animation: true,
 
    placement: 'top',
 
    selector: false,
 
    template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
 
    trigger: 'hover focus',
 
    title: '',
 
    delay: 0,
 
    html: false,
 
    container: false,
 
    viewport: {
 
      selector: 'body',
 
      padding: 0
 
    }
 
  }
 
 
  Tooltip.prototype.init = function (type, element, options) {
 
    this.enabled  = true
 
    this.type      = type
 
    this.$element  = $(element)
 
    this.options  = this.getOptions(options)
 
    this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
 
 
    var triggers = this.options.trigger.split(' ')
 
 
    for (var i = triggers.length; i--;) {
 
      var trigger = triggers[i]
 
 
      if (trigger == 'click') {
 
        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
 
      } else if (trigger != 'manual') {
 
        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
 
        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
 
 
        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
 
        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
 
      }
 
    }
 
 
    this.options.selector ?
 
      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
 
      this.fixTitle()
 
  }
 
 
  Tooltip.prototype.getDefaults = function () {
 
    return Tooltip.DEFAULTS
 
  }
 
 
  Tooltip.prototype.getOptions = function (options) {
 
    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
 
 
    if (options.delay && typeof options.delay == 'number') {
 
      options.delay = {
 
        show: options.delay,
 
        hide: options.delay
 
      }
 
    }
 
 
    return options
 
  }
 
 
  Tooltip.prototype.getDelegateOptions = function () {
 
    var options  = {}
 
    var defaults = this.getDefaults()
 
 
    this._options && $.each(this._options, function (key, value) {
 
      if (defaults[key] != value) options[key] = value
 
    })
 
 
    return options
 
  }
 
 
  Tooltip.prototype.enter = function (obj) {
 
    var self = obj instanceof this.constructor ?
 
      obj : $(obj.currentTarget).data('bs.' + this.type)
 
 
    if (self && self.$tip && self.$tip.is(':visible')) {
 
      self.hoverState = 'in'
 
      return
 
    }
 
 
    if (!self) {
 
      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
 
      $(obj.currentTarget).data('bs.' + this.type, self)
 
    }
 
 
    clearTimeout(self.timeout)
 
 
    self.hoverState = 'in'
 
 
    if (!self.options.delay || !self.options.delay.show) return self.show()
 
 
    self.timeout = setTimeout(function () {
 
      if (self.hoverState == 'in') self.show()
 
    }, self.options.delay.show)
 
  }
 
 
  Tooltip.prototype.leave = function (obj) {
 
    var self = obj instanceof this.constructor ?
 
      obj : $(obj.currentTarget).data('bs.' + this.type)
 
 
    if (!self) {
 
      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
 
      $(obj.currentTarget).data('bs.' + this.type, self)
 
    }
 
 
    clearTimeout(self.timeout)
 
 
    self.hoverState = 'out'
 
 
    if (!self.options.delay || !self.options.delay.hide) return self.hide()
 
 
    self.timeout = setTimeout(function () {
 
      if (self.hoverState == 'out') self.hide()
 
    }, self.options.delay.hide)
 
  }
 
 
  Tooltip.prototype.show = function () {
 
    var e = $.Event('show.bs.' + this.type)
 
 
    if (this.hasContent() && this.enabled) {
 
      this.$element.trigger(e)
 
 
      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
 
      if (e.isDefaultPrevented() || !inDom) return
 
      var that = this
 
 
      var $tip = this.tip()
 
 
      var tipId = this.getUID(this.type)
 
 
      this.setContent()
 
      $tip.attr('id', tipId)
 
      this.$element.attr('aria-describedby', tipId)
 
 
      if (this.options.animation) $tip.addClass('fade')
 
 
      var placement = typeof this.options.placement == 'function' ?
 
        this.options.placement.call(this, $tip[0], this.$element[0]) :
 
        this.options.placement
 
 
      var autoToken = /\s?auto?\s?/i
 
      var autoPlace = autoToken.test(placement)
 
      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
 
 
      $tip
 
        .detach()
 
        .css({ top: 0, left: 0, display: 'block' })
 
        .addClass(placement)
 
        .data('bs.' + this.type, this)
 
 
      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
 
 
      var pos          = this.getPosition()
 
      var actualWidth  = $tip[0].offsetWidth
 
      var actualHeight = $tip[0].offsetHeight
 
 
      if (autoPlace) {
 
        var orgPlacement = placement
 
        var $container  = this.options.container ? $(this.options.container) : this.$element.parent()
 
        var containerDim = this.getPosition($container)
 
 
        placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top'    :
 
                    placement == 'top'    && pos.top    - actualHeight < containerDim.top    ? 'bottom' :
 
                    placement == 'right'  && pos.right  + actualWidth  > containerDim.width  ? 'left'  :
 
                    placement == 'left'  && pos.left  - actualWidth  < containerDim.left  ? 'right'  :
 
                    placement
 
 
        $tip
 
          .removeClass(orgPlacement)
 
          .addClass(placement)
 
      }
 
 
      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
 
 
      this.applyPlacement(calculatedOffset, placement)
 
 
      var complete = function () {
 
        var prevHoverState = that.hoverState
 
        that.$element.trigger('shown.bs.' + that.type)
 
        that.hoverState = null
 
 
        if (prevHoverState == 'out') that.leave(that)
 
      }
 
 
      $.support.transition && this.$tip.hasClass('fade') ?
 
        $tip
 
          .one('bsTransitionEnd', complete)
 
          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
 
        complete()
 
    }
 
  }
 
 
  Tooltip.prototype.applyPlacement = function (offset, placement) {
 
    var $tip  = this.tip()
 
    var width  = $tip[0].offsetWidth
 
    var height = $tip[0].offsetHeight
 
 
    // manually read margins because getBoundingClientRect includes difference
 
    var marginTop = parseInt($tip.css('margin-top'), 10)
 
    var marginLeft = parseInt($tip.css('margin-left'), 10)
 
 
    // we must check for NaN for ie 8/9
 
    if (isNaN(marginTop))  marginTop  = 0
 
    if (isNaN(marginLeft)) marginLeft = 0
 
 
    offset.top  = offset.top  + marginTop
 
    offset.left = offset.left + marginLeft
 
 
    // $.fn.offset doesn't round pixel values
 
    // so we use setOffset directly with our own function B-0
 
    $.offset.setOffset($tip[0], $.extend({
 
      using: function (props) {
 
        $tip.css({
 
          top: Math.round(props.top),
 
          left: Math.round(props.left)
 
        })
 
      }
 
    }, offset), 0)
 
 
    $tip.addClass('in')
 
 
    // check to see if placing tip in new offset caused the tip to resize itself
 
    var actualWidth  = $tip[0].offsetWidth
 
    var actualHeight = $tip[0].offsetHeight
 
 
    if (placement == 'top' && actualHeight != height) {
 
      offset.top = offset.top + height - actualHeight
 
    }
 
 
    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
 
 
    if (delta.left) offset.left += delta.left
 
    else offset.top += delta.top
 
 
    var isVertical          = /top|bottom/.test(placement)
 
    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
 
    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
 
 
    $tip.offset(offset)
 
    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
 
  }
 
 
  Tooltip.prototype.replaceArrow = function (delta, dimension, isHorizontal) {
 
    this.arrow()
 
      .css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
 
      .css(isHorizontal ? 'top' : 'left', '')
 
  }
 
 
  Tooltip.prototype.setContent = function () {
 
    var $tip  = this.tip()
 
    var title = this.getTitle()
 
 
    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
 
    $tip.removeClass('fade in top bottom left right')
 
  }
 
 
  Tooltip.prototype.hide = function (callback) {
 
    var that = this
 
    var $tip = this.tip()
 
    var e    = $.Event('hide.bs.' + this.type)
 
 
    function complete() {
 
      if (that.hoverState != 'in') $tip.detach()
 
      that.$element
 
        .removeAttr('aria-describedby')
 
        .trigger('hidden.bs.' + that.type)
 
      callback && callback()
 
    }
 
 
    this.$element.trigger(e)
 
 
    if (e.isDefaultPrevented()) return
 
 
    $tip.removeClass('in')
 
 
    $.support.transition && this.$tip.hasClass('fade') ?
 
      $tip
 
        .one('bsTransitionEnd', complete)
 
        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
 
      complete()
 
 
    this.hoverState = null
 
 
    return this
 
  }
 
 
  Tooltip.prototype.fixTitle = function () {
 
    var $e = this.$element
 
    if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {
 
      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
 
    }
 
  }
 
 
  Tooltip.prototype.hasContent = function () {
 
    return this.getTitle()
 
  }
 
 
  Tooltip.prototype.getPosition = function ($element) {
 
    $element  = $element || this.$element
 
 
    var el    = $element[0]
 
    var isBody = el.tagName == 'BODY'
 
 
    var elRect    = el.getBoundingClientRect()
 
    if (elRect.width == null) {
 
      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
 
      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
 
    }
 
    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()
 
    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
 
    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
 
 
    return $.extend({}, elRect, scroll, outerDims, elOffset)
 
  }
 
 
  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
 
    return placement == 'bottom' ? { top: pos.top + pos.height,  left: pos.left + pos.width / 2 - actualWidth / 2 } :
 
          placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
 
          placement == 'left'  ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
 
        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
 
 
  }
 
 
  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
 
    var delta = { top: 0, left: 0 }
 
    if (!this.$viewport) return delta
 
 
    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
 
    var viewportDimensions = this.getPosition(this.$viewport)
 
 
    if (/right|left/.test(placement)) {
 
      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
 
      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
 
      if (topEdgeOffset < viewportDimensions.top) { // top overflow
 
        delta.top = viewportDimensions.top - topEdgeOffset
 
      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
 
        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
 
      }
 
    } else {
 
      var leftEdgeOffset  = pos.left - viewportPadding
 
      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
 
      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
 
        delta.left = viewportDimensions.left - leftEdgeOffset
 
      } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow
 
        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
 
      }
 
    }
 
 
    return delta
 
  }
 
 
  Tooltip.prototype.getTitle = function () {
 
    var title
 
    var $e = this.$element
 
    var o  = this.options
 
 
    title = $e.attr('data-original-title')
 
      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
 
 
    return title
 
  }
 
 
  Tooltip.prototype.getUID = function (prefix) {
 
    do prefix += ~~(Math.random() * 1000000)
 
    while (document.getElementById(prefix))
 
    return prefix
 
  }
 
 
  Tooltip.prototype.tip = function () {
 
    return (this.$tip = this.$tip || $(this.options.template))
 
  }
 
 
  Tooltip.prototype.arrow = function () {
 
    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
 
  }
 
 
  Tooltip.prototype.enable = function () {
 
    this.enabled = true
 
  }
 
 
  Tooltip.prototype.disable = function () {
 
    this.enabled = false
 
  }
 
 
  Tooltip.prototype.toggleEnabled = function () {
 
    this.enabled = !this.enabled
 
  }
 
 
  Tooltip.prototype.toggle = function (e) {
 
    var self = this
 
    if (e) {
 
      self = $(e.currentTarget).data('bs.' + this.type)
 
      if (!self) {
 
        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
 
        $(e.currentTarget).data('bs.' + this.type, self)
 
      }
 
    }
 
 
    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
 
  }
 
 
  Tooltip.prototype.destroy = function () {
 
    var that = this
 
    clearTimeout(this.timeout)
 
    this.hide(function () {
 
      that.$element.off('.' + that.type).removeData('bs.' + that.type)
 
    })
 
  }
 
 
 
  // TOOLTIP PLUGIN DEFINITION
 
  // =========================
 
 
  function Plugin(option) {
 
    return this.each(function () {
 
      var $this  = $(this)
 
      var data    = $this.data('bs.tooltip')
 
      var options = typeof option == 'object' && option
 
 
      if (!data && option == 'destroy') return
 
      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
 
      if (typeof option == 'string') data[option]()
 
    })
 
  }
 
 
  var old = $.fn.tooltip
 
 
  $.fn.tooltip            = Plugin
 
  $.fn.tooltip.Constructor = Tooltip
 
 
 
  // TOOLTIP NO CONFLICT
 
  // ===================
 
 
  $.fn.tooltip.noConflict = function () {
 
    $.fn.tooltip = old
 
    return this
 
  }
 
 
}(jQuery);
 
 
/* ========================================================================
 
* Bootstrap: popover.js v3.3.2
 
* http://getbootstrap.com/javascript/#popovers
 
* ========================================================================
 
* Copyright 2011-2015 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
 
 
+function ($) {
 
  'use strict';
 
 
  // POPOVER PUBLIC CLASS DEFINITION
 
  // ===============================
 
 
  var Popover = function (element, options) {
 
    this.init('popover', element, options)
 
  }
 
 
  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
 
 
  Popover.VERSION  = '3.3.2'
 
 
  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
 
    placement: 'right',
 
    trigger: 'click',
 
    content: '',
 
    template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
 
  })
 
 
 
  // NOTE: POPOVER EXTENDS tooltip.js
 
  // ================================
 
 
  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
 
 
  Popover.prototype.constructor = Popover
 
 
  Popover.prototype.getDefaults = function () {
 
    return Popover.DEFAULTS
 
  }
 
 
  Popover.prototype.setContent = function () {
 
    var $tip    = this.tip()
 
    var title  = this.getTitle()
 
    var content = this.getContent()
 
 
    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
 
    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
 
      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
 
    ](content)
 
 
    $tip.removeClass('fade top bottom left right in')
 
 
    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
 
    // this manually by checking the contents.
 
    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
 
  }
 
 
  Popover.prototype.hasContent = function () {
 
    return this.getTitle() || this.getContent()
 
  }
 
 
  Popover.prototype.getContent = function () {
 
    var $e = this.$element
 
    var o  = this.options
 
 
    return $e.attr('data-content')
 
      || (typeof o.content == 'function' ?
 
            o.content.call($e[0]) :
 
            o.content)
 
  }
 
 
  Popover.prototype.arrow = function () {
 
    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
 
  }
 
 
  Popover.prototype.tip = function () {
 
    if (!this.$tip) this.$tip = $(this.options.template)
 
    return this.$tip
 
  }
 
 
 
  // POPOVER PLUGIN DEFINITION
 
  // =========================
 
 
  function Plugin(option) {
 
    return this.each(function () {
 
      var $this  = $(this)
 
      var data    = $this.data('bs.popover')
 
      var options = typeof option == 'object' && option
 
 
      if (!data && option == 'destroy') return
 
      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
 
      if (typeof option == 'string') data[option]()
 
    })
 
  }
 
 
  var old = $.fn.popover
 
 
  $.fn.popover            = Plugin
 
  $.fn.popover.Constructor = Popover
 
 
 
  // POPOVER NO CONFLICT
 
  // ===================
 
 
  $.fn.popover.noConflict = function () {
 
    $.fn.popover = old
 
    return this
 
  }
 
 
}(jQuery);
 
 
/* ========================================================================
 
* Bootstrap: scrollspy.js v3.3.2
 
* http://getbootstrap.com/javascript/#scrollspy
 
* ========================================================================
 
* Copyright 2011-2015 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
 
 
+function ($) {
 
  'use strict';
 
 
  // SCROLLSPY CLASS DEFINITION
 
  // ==========================
 
 
  function ScrollSpy(element, options) {
 
    var process  = $.proxy(this.process, this)
 
 
    this.$body          = $('body')
 
    this.$scrollElement = $(element).is('body') ? $(window) : $(element)
 
    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
 
    this.selector      = (this.options.target || '') + ' .nav li > a'
 
    this.offsets        = []
 
    this.targets        = []
 
    this.activeTarget  = null
 
    this.scrollHeight  = 0
 
 
    this.$scrollElement.on('scroll.bs.scrollspy', process)
 
    this.refresh()
 
    this.process()
 
  }
 
 
  ScrollSpy.VERSION  = '3.3.2'
 
 
  ScrollSpy.DEFAULTS = {
 
    offset: 10
 
  }
 
 
  ScrollSpy.prototype.getScrollHeight = function () {
 
    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
 
  }
 
 
  ScrollSpy.prototype.refresh = function () {
 
    var offsetMethod = 'offset'
 
    var offsetBase  = 0
 
 
    if (!$.isWindow(this.$scrollElement[0])) {
 
      offsetMethod = 'position'
 
      offsetBase  = this.$scrollElement.scrollTop()
 
    }
 
 
    this.offsets = []
 
    this.targets = []
 
    this.scrollHeight = this.getScrollHeight()
 
 
    var self    = this
 
 
    this.$body
 
      .find(this.selector)
 
      .map(function () {
 
        var $el  = $(this)
 
        var href  = $el.data('target') || $el.attr('href')
 
        var $href = /^#./.test(href) && $(href)
 
 
        return ($href
 
          && $href.length
 
          && $href.is(':visible')
 
          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
 
      })
 
      .sort(function (a, b) { return a[0] - b[0] })
 
      .each(function () {
 
        self.offsets.push(this[0])
 
        self.targets.push(this[1])
 
      })
 
  }
 
 
  ScrollSpy.prototype.process = function () {
 
    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
 
    var scrollHeight = this.getScrollHeight()
 
    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
 
    var offsets      = this.offsets
 
    var targets      = this.targets
 
    var activeTarget = this.activeTarget
 
    var i
 
 
    if (this.scrollHeight != scrollHeight) {
 
      this.refresh()
 
    }
 
 
    if (scrollTop >= maxScroll) {
 
      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
 
    }
 
 
    if (activeTarget && scrollTop < offsets[0]) {
 
      this.activeTarget = null
 
      return this.clear()
 
    }
 
 
    for (i = offsets.length; i--;) {
 
      activeTarget != targets[i]
 
        && scrollTop >= offsets[i]
 
        && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
 
        && this.activate(targets[i])
 
    }
 
  }
 
 
  ScrollSpy.prototype.activate = function (target) {
 
    this.activeTarget = target
 
 
    this.clear()
 
 
    var selector = this.selector +
 
        '[data-target="' + target + '"],' +
 
        this.selector + '[href="' + target + '"]'
 
 
    var active = $(selector)
 
      .parents('li')
 
      .addClass('active')
 
 
    if (active.parent('.dropdown-menu').length) {
 
      active = active
 
        .closest('li.dropdown')
 
        .addClass('active')
 
    }
 
 
    active.trigger('activate.bs.scrollspy')
 
  }
 
 
  ScrollSpy.prototype.clear = function () {
 
    $(this.selector)
 
      .parentsUntil(this.options.target, '.active')
 
      .removeClass('active')
 
  }
 
 
 
  // SCROLLSPY PLUGIN DEFINITION
 
  // ===========================
 
 
  function Plugin(option) {
 
    return this.each(function () {
 
      var $this  = $(this)
 
      var data    = $this.data('bs.scrollspy')
 
      var options = typeof option == 'object' && option
 
 
      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
 
      if (typeof option == 'string') data[option]()
 
    })
 
  }
 
 
  var old = $.fn.scrollspy
 
 
  $.fn.scrollspy            = Plugin
 
  $.fn.scrollspy.Constructor = ScrollSpy
 
 
 
  // SCROLLSPY NO CONFLICT
 
  // =====================
 
 
  $.fn.scrollspy.noConflict = function () {
 
    $.fn.scrollspy = old
 
    return this
 
  }
 
 
 
  // SCROLLSPY DATA-API
 
  // ==================
 
 
  $(window).on('load.bs.scrollspy.data-api', function () {
 
    $('[data-spy="scroll"]').each(function () {
 
      var $spy = $(this)
 
      Plugin.call($spy, $spy.data())
 
    })
 
  })
 
 
}(jQuery);
 
 
/* ========================================================================
 
* Bootstrap: tab.js v3.3.2
 
* http://getbootstrap.com/javascript/#tabs
 
* ========================================================================
 
* Copyright 2011-2015 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
 
 
+function ($) {
 
  'use strict';
 
 
  // TAB CLASS DEFINITION
 
  // ====================
 
 
  var Tab = function (element) {
 
    this.element = $(element)
 
  }
 
 
  Tab.VERSION = '3.3.2'
 
 
  Tab.TRANSITION_DURATION = 150
 
 
  Tab.prototype.show = function () {
 
    var $this    = this.element
 
    var $ul      = $this.closest('ul:not(.dropdown-menu)')
 
    var selector = $this.data('target')
 
 
    if (!selector) {
 
      selector = $this.attr('href')
 
      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
 
    }
 
 
    if ($this.parent('li').hasClass('active')) return
 
 
    var $previous = $ul.find('.active:last a')
 
    var hideEvent = $.Event('hide.bs.tab', {
 
      relatedTarget: $this[0]
 
    })
 
    var showEvent = $.Event('show.bs.tab', {
 
      relatedTarget: $previous[0]
 
    })
 
 
    $previous.trigger(hideEvent)
 
 
    $this.trigger(showEvent)
 
 
    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
 
 
    var $target = $(selector)
 
 
    this.activate($this.closest('li'), $ul)
 
    this.activate($target, $target.parent(), function () {
 
      $previous.trigger({
 
        type: 'hidden.bs.tab',
 
        relatedTarget: $this[0]
 
      })
 
      $this.trigger({
 
        type: 'shown.bs.tab',
 
        relatedTarget: $previous[0]
 
      })
 
    })
 
  }
 
 
  Tab.prototype.activate = function (element, container, callback) {
 
    var $active    = container.find('> .active')
 
    var transition = callback
 
      && $.support.transition
 
      && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)
 
 
    function next() {
 
      $active
 
        .removeClass('active')
 
        .find('> .dropdown-menu > .active')
 
          .removeClass('active')
 
        .end()
 
        .find('[data-toggle="tab"]')
 
          .attr('aria-expanded', false)
 
 
      element
 
        .addClass('active')
 
        .find('[data-toggle="tab"]')
 
          .attr('aria-expanded', true)
 
 
      if (transition) {
 
        element[0].offsetWidth // reflow for transition
 
        element.addClass('in')
 
      } else {
 
        element.removeClass('fade')
 
      }
 
 
      if (element.parent('.dropdown-menu')) {
 
        element
 
          .closest('li.dropdown')
 
            .addClass('active')
 
          .end()
 
          .find('[data-toggle="tab"]')
 
            .attr('aria-expanded', true)
 
      }
 
 
      callback && callback()
 
    }
 
 
    $active.length && transition ?
 
      $active
 
        .one('bsTransitionEnd', next)
 
        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
 
      next()
 
 
    $active.removeClass('in')
 
  }
 
 
 
  // TAB PLUGIN DEFINITION
 
  // =====================
 
 
  function Plugin(option) {
 
    return this.each(function () {
 
      var $this = $(this)
 
      var data  = $this.data('bs.tab')
 
 
      if (!data) $this.data('bs.tab', (data = new Tab(this)))
 
      if (typeof option == 'string') data[option]()
 
    })
 
  }
 
 
  var old = $.fn.tab
 
 
  $.fn.tab            = Plugin
 
  $.fn.tab.Constructor = Tab
 
 
 
  // TAB NO CONFLICT
 
  // ===============
 
 
  $.fn.tab.noConflict = function () {
 
    $.fn.tab = old
 
    return this
 
  }
 
 
 
  // TAB DATA-API
 
  // ============
 
 
  var clickHandler = function (e) {
 
    e.preventDefault()
 
    Plugin.call($(this), 'show')
 
  }
 
 
  $(document)
 
    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
 
    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
 
 
}(jQuery);
 
 
/* ========================================================================
 
* Bootstrap: affix.js v3.3.2
 
* http://getbootstrap.com/javascript/#affix
 
* ========================================================================
 
* Copyright 2011-2015 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
 
 
+function ($) {
 
  'use strict';
 
 
  // AFFIX CLASS DEFINITION
 
  // ======================
 
 
  var Affix = function (element, options) {
 
    this.options = $.extend({}, Affix.DEFAULTS, options)
 
 
    this.$target = $(this.options.target)
 
      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
 
      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
 
 
    this.$element    = $(element)
 
    this.affixed      =
 
    this.unpin        =
 
    this.pinnedOffset = null
 
 
    this.checkPosition()
 
  }
 
 
  Affix.VERSION  = '3.3.2'
 
 
  Affix.RESET    = 'affix affix-top affix-bottom'
 
 
  Affix.DEFAULTS = {
 
    offset: 0,
 
    target: window
 
  }
 
 
  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
 
    var scrollTop    = this.$target.scrollTop()
 
    var position    = this.$element.offset()
 
    var targetHeight = this.$target.height()
 
 
    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
 
 
    if (this.affixed == 'bottom') {
 
      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
 
      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
 
    }
 
 
    var initializing  = this.affixed == null
 
    var colliderTop    = initializing ? scrollTop : position.top
 
    var colliderHeight = initializing ? targetHeight : height
 
 
    if (offsetTop != null && scrollTop <= offsetTop) return 'top'
 
    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
 
 
    return false
 
  }
 
 
  Affix.prototype.getPinnedOffset = function () {
 
    if (this.pinnedOffset) return this.pinnedOffset
 
    this.$element.removeClass(Affix.RESET).addClass('affix')
 
    var scrollTop = this.$target.scrollTop()
 
    var position  = this.$element.offset()
 
    return (this.pinnedOffset = position.top - scrollTop)
 
  }
 
 
  Affix.prototype.checkPositionWithEventLoop = function () {
 
    setTimeout($.proxy(this.checkPosition, this), 1)
 
  }
 
 
  Affix.prototype.checkPosition = function () {
 
    if (!this.$element.is(':visible')) return
 
 
    var height      = this.$element.height()
 
    var offset      = this.options.offset
 
    var offsetTop    = offset.top
 
    var offsetBottom = offset.bottom
 
    var scrollHeight = $('body').height()
 
 
    if (typeof offset != 'object')        offsetBottom = offsetTop = offset
 
    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
 
    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
 
 
    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
 
 
    if (this.affixed != affix) {
 
      if (this.unpin != null) this.$element.css('top', '')
 
 
      var affixType = 'affix' + (affix ? '-' + affix : '')
 
      var e        = $.Event(affixType + '.bs.affix')
 
 
      this.$element.trigger(e)
 
 
      if (e.isDefaultPrevented()) return
 
 
      this.affixed = affix
 
      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
 
 
      this.$element
 
        .removeClass(Affix.RESET)
 
        .addClass(affixType)
 
        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
 
    }
 
 
    if (affix == 'bottom') {
 
      this.$element.offset({
 
        top: scrollHeight - height - offsetBottom
 
      })
 
    }
 
  }
 
 
 
  // AFFIX PLUGIN DEFINITION
 
  // =======================
 
 
  function Plugin(option) {
 
    return this.each(function () {
 
      var $this  = $(this)
 
      var data    = $this.data('bs.affix')
 
      var options = typeof option == 'object' && option
 
 
      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
 
      if (typeof option == 'string') data[option]()
 
    })
 
  }
 
 
  var old = $.fn.affix
 
 
  $.fn.affix            = Plugin
 
  $.fn.affix.Constructor = Affix
 
 
 
  // AFFIX NO CONFLICT
 
  // =================
 
 
  $.fn.affix.noConflict = function () {
 
    $.fn.affix = old
 
    return this
 
  }
 
 
 
  // AFFIX DATA-API
 
  // ==============
 
 
  $(window).on('load', function () {
 
    $('[data-spy="affix"]').each(function () {
 
      var $spy = $(this)
 
      var data = $spy.data()
 
 
      data.offset = data.offset || {}
 
 
      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
 
      if (data.offsetTop    != null) data.offset.top    = data.offsetTop
 
 
      Plugin.call($spy, data)
 
    })
 
  })
 
 
}(jQuery);
 
</script>
 
<script type="text/javascript">/*
 
*  jQuery OwlCarousel v1.3.2
 
*
 
*  Copyright (c) 2013 Bartosz Wojciechowski
 
*  http://www.owlgraphic.com/owlcarousel/
 
*
 
*  Licensed under MIT
 
*
 
*/
 
 
/*JS Lint helpers: */
 
/*global dragMove: false, dragEnd: false, $, jQuery, alert, window, document */
 
/*jslint nomen: true, continue:true */
 
 
if (typeof Object.create !== "function") {
 
    Object.create = function (obj) {
 
        function F() {}
 
        F.prototype = obj;
 
        return new F();
 
    };
 
}
 
(function ($, window, document) {
 
 
    var Carousel = {
 
        init : function (options, el) {
 
            var base = this;
 
 
            base.$elem = $(el);
 
            base.options = $.extend({}, $.fn.owlCarousel.options, base.$elem.data(), options);
 
 
            base.userOptions = options;
 
            base.loadContent();
 
        },
 
 
        loadContent : function () {
 
            var base = this, url;
 
 
            function getData(data) {
 
                var i, content = "";
 
                if (typeof base.options.jsonSuccess === "function") {
 
                    base.options.jsonSuccess.apply(this, [data]);
 
                } else {
 
                    for (i in data.owl) {
 
                        if (data.owl.hasOwnProperty(i)) {
 
                            content += data.owl[i].item;
 
                        }
 
                    }
 
                    base.$elem.html(content);
 
                }
 
                base.logIn();
 
            }
 
 
            if (typeof base.options.beforeInit === "function") {
 
                base.options.beforeInit.apply(this, [base.$elem]);
 
            }
 
 
            if (typeof base.options.jsonPath === "string") {
 
                url = base.options.jsonPath;
 
                $.getJSON(url, getData);
 
            } else {
 
                base.logIn();
 
            }
 
        },
 
 
        logIn : function () {
 
            var base = this;
 
 
            base.$elem.data("owl-originalStyles", base.$elem.attr("style"))
 
                      .data("owl-originalClasses", base.$elem.attr("class"));
 
 
            base.$elem.css({opacity: 0});
 
            base.orignalItems = base.options.items;
 
            base.checkBrowser();
 
            base.wrapperWidth = 0;
 
            base.checkVisible = null;
 
            base.setVars();
 
        },
 
 
        setVars : function () {
 
            var base = this;
 
            if (base.$elem.children().length === 0) {return false; }
 
            base.baseClass();
 
            base.eventTypes();
 
            base.$userItems = base.$elem.children();
 
            base.itemsAmount = base.$userItems.length;
 
            base.wrapItems();
 
            base.$owlItems = base.$elem.find(".owl-item");
 
            base.$owlWrapper = base.$elem.find(".owl-wrapper");
 
            base.playDirection = "next";
 
            base.prevItem = 0;
 
            base.prevArr = [0];
 
            base.currentItem = 0;
 
            base.customEvents();
 
            base.onStartup();
 
        },
 
 
        onStartup : function () {
 
            var base = this;
 
            base.updateItems();
 
            base.calculateAll();
 
            base.buildControls();
 
            base.updateControls();
 
            base.response();
 
            base.moveEvents();
 
            base.stopOnHover();
 
            base.owlStatus();
 
 
            if (base.options.transitionStyle !== false) {
 
                base.transitionTypes(base.options.transitionStyle);
 
            }
 
            if (base.options.autoPlay === true) {
 
                base.options.autoPlay = 5000;
 
            }
 
            base.play();
 
 
            base.$elem.find(".owl-wrapper").css("display", "block");
 
 
            if (!base.$elem.is(":visible")) {
 
                base.watchVisibility();
 
            } else {
 
                base.$elem.css("opacity", 1);
 
            }
 
            base.onstartup = false;
 
            base.eachMoveUpdate();
 
            if (typeof base.options.afterInit === "function") {
 
                base.options.afterInit.apply(this, [base.$elem]);
 
            }
 
        },
 
 
        eachMoveUpdate : function () {
 
            var base = this;
 
 
            if (base.options.lazyLoad === true) {
 
                base.lazyLoad();
 
            }
 
            if (base.options.autoHeight === true) {
 
                base.autoHeight();
 
            }
 
            base.onVisibleItems();
 
 
            if (typeof base.options.afterAction === "function") {
 
                base.options.afterAction.apply(this, [base.$elem]);
 
            }
 
        },
 
 
        updateVars : function () {
 
            var base = this;
 
            if (typeof base.options.beforeUpdate === "function") {
 
                base.options.beforeUpdate.apply(this, [base.$elem]);
 
            }
 
            base.watchVisibility();
 
            base.updateItems();
 
            base.calculateAll();
 
            base.updatePosition();
 
            base.updateControls();
 
            base.eachMoveUpdate();
 
            if (typeof base.options.afterUpdate === "function") {
 
                base.options.afterUpdate.apply(this, [base.$elem]);
 
            }
 
        },
 
 
        reload : function () {
 
            var base = this;
 
            window.setTimeout(function () {
 
                base.updateVars();
 
            }, 0);
 
        },
 
 
        watchVisibility : function () {
 
            var base = this;
 
 
            if (base.$elem.is(":visible") === false) {
 
                base.$elem.css({opacity: 0});
 
                window.clearInterval(base.autoPlayInterval);
 
                window.clearInterval(base.checkVisible);
 
            } else {
 
                return false;
 
            }
 
            base.checkVisible = window.setInterval(function () {
 
                if (base.$elem.is(":visible")) {
 
                    base.reload();
 
                    base.$elem.animate({opacity: 1}, 200);
 
                    window.clearInterval(base.checkVisible);
 
                }
 
            }, 500);
 
        },
 
 
        wrapItems : function () {
 
            var base = this;
 
            base.$userItems.wrapAll("<div class=\"owl-wrapper\">").wrap("<div class=\"owl-item\"></div>");
 
            base.$elem.find(".owl-wrapper").wrap("<div class=\"owl-wrapper-outer\">");
 
            base.wrapperOuter = base.$elem.find(".owl-wrapper-outer");
 
            base.$elem.css("display", "block");
 
        },
 
 
        baseClass : function () {
 
            var base = this,
 
                hasBaseClass = base.$elem.hasClass(base.options.baseClass),
 
                hasThemeClass = base.$elem.hasClass(base.options.theme);
 
 
            if (!hasBaseClass) {
 
                base.$elem.addClass(base.options.baseClass);
 
            }
 
 
            if (!hasThemeClass) {
 
                base.$elem.addClass(base.options.theme);
 
            }
 
        },
 
 
        updateItems : function () {
 
            var base = this, width, i;
 
 
            if (base.options.responsive === false) {
 
                return false;
 
            }
 
            if (base.options.singleItem === true) {
 
                base.options.items = base.orignalItems = 1;
 
                base.options.itemsCustom = false;
 
                base.options.itemsDesktop = false;
 
                base.options.itemsDesktopSmall = false;
 
                base.options.itemsTablet = false;
 
                base.options.itemsTabletSmall = false;
 
                base.options.itemsMobile = false;
 
                return false;
 
            }
 
 
            width = $(base.options.responsiveBaseWidth).width();
 
 
            if (width > (base.options.itemsDesktop[0] || base.orignalItems)) {
 
                base.options.items = base.orignalItems;
 
            }
 
            if (base.options.itemsCustom !== false) {
 
                //Reorder array by screen size
 
                base.options.itemsCustom.sort(function (a, b) {return a[0] - b[0]; });
 
 
                for (i = 0; i < base.options.itemsCustom.length; i += 1) {
 
                    if (base.options.itemsCustom[i][0] <= width) {
 
                        base.options.items = base.options.itemsCustom[i][1];
 
                    }
 
                }
 
 
            } else {
 
 
                if (width <= base.options.itemsDesktop[0] && base.options.itemsDesktop !== false) {
 
                    base.options.items = base.options.itemsDesktop[1];
 
                }
 
 
                if (width <= base.options.itemsDesktopSmall[0] && base.options.itemsDesktopSmall !== false) {
 
                    base.options.items = base.options.itemsDesktopSmall[1];
 
                }
 
 
                if (width <= base.options.itemsTablet[0] && base.options.itemsTablet !== false) {
 
                    base.options.items = base.options.itemsTablet[1];
 
                }
 
 
                if (width <= base.options.itemsTabletSmall[0] && base.options.itemsTabletSmall !== false) {
 
                    base.options.items = base.options.itemsTabletSmall[1];
 
                }
 
 
                if (width <= base.options.itemsMobile[0] && base.options.itemsMobile !== false) {
 
                    base.options.items = base.options.itemsMobile[1];
 
                }
 
            }
 
 
            //if number of items is less than declared
 
            if (base.options.items > base.itemsAmount && base.options.itemsScaleUp === true) {
 
                base.options.items = base.itemsAmount;
 
            }
 
        },
 
 
        response : function () {
 
            var base = this,
 
                smallDelay,
 
                lastWindowWidth;
 
 
            if (base.options.responsive !== true) {
 
                return false;
 
            }
 
            lastWindowWidth = $(window).width();
 
 
            base.resizer = function () {
 
                if ($(window).width() !== lastWindowWidth) {
 
                    if (base.options.autoPlay !== false) {
 
                        window.clearInterval(base.autoPlayInterval);
 
                    }
 
                    window.clearTimeout(smallDelay);
 
                    smallDelay = window.setTimeout(function () {
 
                        lastWindowWidth = $(window).width();
 
                        base.updateVars();
 
                    }, base.options.responsiveRefreshRate);
 
                }
 
            };
 
            $(window).resize(base.resizer);
 
        },
 
 
        updatePosition : function () {
 
            var base = this;
 
            base.jumpTo(base.currentItem);
 
            if (base.options.autoPlay !== false) {
 
                base.checkAp();
 
            }
 
        },
 
 
        appendItemsSizes : function () {
 
            var base = this,
 
                roundPages = 0,
 
                lastItem = base.itemsAmount - base.options.items;
 
 
            base.$owlItems.each(function (index) {
 
                var $this = $(this);
 
                $this
 
                    .css({"width": base.itemWidth})
 
                    .data("owl-item", Number(index));
 
 
                if (index % base.options.items === 0 || index === lastItem) {
 
                    if (!(index > lastItem)) {
 
                        roundPages += 1;
 
                    }
 
                }
 
                $this.data("owl-roundPages", roundPages);
 
            });
 
        },
 
 
        appendWrapperSizes : function () {
 
            var base = this,
 
                width = base.$owlItems.length * base.itemWidth;
 
 
            base.$owlWrapper.css({
 
                "width": width * 2,
 
                "left": 0
 
            });
 
            base.appendItemsSizes();
 
        },
 
 
        calculateAll : function () {
 
            var base = this;
 
            base.calculateWidth();
 
            base.appendWrapperSizes();
 
            base.loops();
 
            base.max();
 
        },
 
 
        calculateWidth : function () {
 
            var base = this;
 
            base.itemWidth = Math.round(base.$elem.width() / base.options.items);
 
        },
 
 
        max : function () {
 
            var base = this,
 
                maximum = ((base.itemsAmount * base.itemWidth) - base.options.items * base.itemWidth) * -1;
 
            if (base.options.items > base.itemsAmount) {
 
                base.maximumItem = 0;
 
                maximum = 0;
 
                base.maximumPixels = 0;
 
            } else {
 
                base.maximumItem = base.itemsAmount - base.options.items;
 
                base.maximumPixels = maximum;
 
            }
 
            return maximum;
 
        },
 
 
        min : function () {
 
            return 0;
 
        },
 
 
        loops : function () {
 
            var base = this,
 
                prev = 0,
 
                elWidth = 0,
 
                i,
 
                item,
 
                roundPageNum;
 
 
            base.positionsInArray = [0];
 
            base.pagesInArray = [];
 
 
            for (i = 0; i < base.itemsAmount; i += 1) {
 
                elWidth += base.itemWidth;
 
                base.positionsInArray.push(-elWidth);
 
 
                if (base.options.scrollPerPage === true) {
 
                    item = $(base.$owlItems[i]);
 
                    roundPageNum = item.data("owl-roundPages");
 
                    if (roundPageNum !== prev) {
 
                        base.pagesInArray[prev] = base.positionsInArray[i];
 
                        prev = roundPageNum;
 
                    }
 
                }
 
            }
 
        },
 
 
        buildControls : function () {
 
            var base = this;
 
            if (base.options.navigation === true || base.options.pagination === true) {
 
                base.owlControls = $("<div class=\"owl-controls\"/>").toggleClass("clickable", !base.browser.isTouch).appendTo(base.$elem);
 
            }
 
            if (base.options.pagination === true) {
 
                base.buildPagination();
 
            }
 
            if (base.options.navigation === true) {
 
                base.buildButtons();
 
            }
 
        },
 
 
        buildButtons : function () {
 
            var base = this,
 
                buttonsWrapper = $("<div class=\"owl-buttons\"/>");
 
            base.owlControls.append(buttonsWrapper);
 
 
            base.buttonPrev = $("<div/>", {
 
                "class" : "owl-prev",
 
                "html" : base.options.navigationText[0] || ""
 
            });
 
 
            base.buttonNext = $("<div/>", {
 
                "class" : "owl-next",
 
                "html" : base.options.navigationText[1] || ""
 
            });
 
 
            buttonsWrapper
 
                .append(base.buttonPrev)
 
                .append(base.buttonNext);
 
 
            buttonsWrapper.on("touchstart.owlControls mousedown.owlControls", "div[class^=\"owl\"]", function (event) {
 
                event.preventDefault();
 
            });
 
 
            buttonsWrapper.on("touchend.owlControls mouseup.owlControls", "div[class^=\"owl\"]", function (event) {
 
                event.preventDefault();
 
                if ($(this).hasClass("owl-next")) {
 
                    base.next();
 
                } else {
 
                    base.prev();
 
                }
 
            });
 
        },
 
 
        buildPagination : function () {
 
            var base = this;
 
 
            base.paginationWrapper = $("<div class=\"owl-pagination\"/>");
 
            base.owlControls.append(base.paginationWrapper);
 
 
            base.paginationWrapper.on("touchend.owlControls mouseup.owlControls", ".owl-page", function (event) {
 
                event.preventDefault();
 
                if (Number($(this).data("owl-page")) !== base.currentItem) {
 
                    base.goTo(Number($(this).data("owl-page")), true);
 
                }
 
            });
 
        },
 
 
        updatePagination : function () {
 
            var base = this,
 
                counter,
 
                lastPage,
 
                lastItem,
 
                i,
 
                paginationButton,
 
                paginationButtonInner;
 
 
            if (base.options.pagination === false) {
 
                return false;
 
            }
 
 
            base.paginationWrapper.html("");
 
 
            counter = 0;
 
            lastPage = base.itemsAmount - base.itemsAmount % base.options.items;
 
 
            for (i = 0; i < base.itemsAmount; i += 1) {
 
                if (i % base.options.items === 0) {
 
                    counter += 1;
 
                    if (lastPage === i) {
 
                        lastItem = base.itemsAmount - base.options.items;
 
                    }
 
                    paginationButton = $("<div/>", {
 
                        "class" : "owl-page"
 
                    });
 
                    paginationButtonInner = $("<span></span>", {
 
                        "text": base.options.paginationNumbers === true ? counter : "",
 
                        "class": base.options.paginationNumbers === true ? "owl-numbers" : ""
 
                    });
 
                    paginationButton.append(paginationButtonInner);
 
 
                    paginationButton.data("owl-page", lastPage === i ? lastItem : i);
 
                    paginationButton.data("owl-roundPages", counter);
 
 
                    base.paginationWrapper.append(paginationButton);
 
                }
 
            }
 
            base.checkPagination();
 
        },
 
        checkPagination : function () {
 
            var base = this;
 
            if (base.options.pagination === false) {
 
                return false;
 
            }
 
            base.paginationWrapper.find(".owl-page").each(function () {
 
                if ($(this).data("owl-roundPages") === $(base.$owlItems[base.currentItem]).data("owl-roundPages")) {
 
                    base.paginationWrapper
 
                        .find(".owl-page")
 
                        .removeClass("active");
 
                    $(this).addClass("active");
 
                }
 
            });
 
        },
 
 
        checkNavigation : function () {
 
            var base = this;
 
 
            if (base.options.navigation === false) {
 
                return false;
 
            }
 
            if (base.options.rewindNav === false) {
 
                if (base.currentItem === 0 && base.maximumItem === 0) {
 
                    base.buttonPrev.addClass("disabled");
 
                    base.buttonNext.addClass("disabled");
 
                } else if (base.currentItem === 0 && base.maximumItem !== 0) {
 
                    base.buttonPrev.addClass("disabled");
 
                    base.buttonNext.removeClass("disabled");
 
                } else if (base.currentItem === base.maximumItem) {
 
                    base.buttonPrev.removeClass("disabled");
 
                    base.buttonNext.addClass("disabled");
 
                } else if (base.currentItem !== 0 && base.currentItem !== base.maximumItem) {
 
                    base.buttonPrev.removeClass("disabled");
 
                    base.buttonNext.removeClass("disabled");
 
                }
 
            }
 
        },
 
 
        updateControls : function () {
 
            var base = this;
 
            base.updatePagination();
 
            base.checkNavigation();
 
            if (base.owlControls) {
 
                if (base.options.items >= base.itemsAmount) {
 
                    base.owlControls.hide();
 
                } else {
 
                    base.owlControls.show();
 
                }
 
            }
 
        },
 
 
        destroyControls : function () {
 
            var base = this;
 
            if (base.owlControls) {
 
                base.owlControls.remove();
 
            }
 
        },
 
 
        next : function (speed) {
 
            var base = this;
 
 
            if (base.isTransition) {
 
                return false;
 
            }
 
 
            base.currentItem += base.options.scrollPerPage === true ? base.options.items : 1;
 
            if (base.currentItem > base.maximumItem + (base.options.scrollPerPage === true ? (base.options.items - 1) : 0)) {
 
                if (base.options.rewindNav === true) {
 
                    base.currentItem = 0;
 
                    speed = "rewind";
 
                } else {
 
                    base.currentItem = base.maximumItem;
 
                    return false;
 
                }
 
            }
 
            base.goTo(base.currentItem, speed);
 
        },
 
 
        prev : function (speed) {
 
            var base = this;
 
 
            if (base.isTransition) {
 
                return false;
 
            }
 
 
            if (base.options.scrollPerPage === true && base.currentItem > 0 && base.currentItem < base.options.items) {
 
                base.currentItem = 0;
 
            } else {
 
                base.currentItem -= base.options.scrollPerPage === true ? base.options.items : 1;
 
            }
 
            if (base.currentItem < 0) {
 
                if (base.options.rewindNav === true) {
 
                    base.currentItem = base.maximumItem;
 
                    speed = "rewind";
 
                } else {
 
                    base.currentItem = 0;
 
                    return false;
 
                }
 
            }
 
            base.goTo(base.currentItem, speed);
 
        },
 
 
        goTo : function (position, speed, drag) {
 
            var base = this,
 
                goToPixel;
 
 
            if (base.isTransition) {
 
                return false;
 
            }
 
            if (typeof base.options.beforeMove === "function") {
 
                base.options.beforeMove.apply(this, [base.$elem]);
 
            }
 
            if (position >= base.maximumItem) {
 
                position = base.maximumItem;
 
            } else if (position <= 0) {
 
                position = 0;
 
            }
 
 
            base.currentItem = base.owl.currentItem = position;
 
            if (base.options.transitionStyle !== false && drag !== "drag" && base.options.items === 1 && base.browser.support3d === true) {
 
                base.swapSpeed(0);
 
                if (base.browser.support3d === true) {
 
                    base.transition3d(base.positionsInArray[position]);
 
                } else {
 
                    base.css2slide(base.positionsInArray[position], 1);
 
                }
 
                base.afterGo();
 
                base.singleItemTransition();
 
                return false;
 
            }
 
            goToPixel = base.positionsInArray[position];
 
 
            if (base.browser.support3d === true) {
 
                base.isCss3Finish = false;
 
 
                if (speed === true) {
 
                    base.swapSpeed("paginationSpeed");
 
                    window.setTimeout(function () {
 
                        base.isCss3Finish = true;
 
                    }, base.options.paginationSpeed);
 
 
                } else if (speed === "rewind") {
 
                    base.swapSpeed(base.options.rewindSpeed);
 
                    window.setTimeout(function () {
 
                        base.isCss3Finish = true;
 
                    }, base.options.rewindSpeed);
 
 
                } else {
 
                    base.swapSpeed("slideSpeed");
 
                    window.setTimeout(function () {
 
                        base.isCss3Finish = true;
 
                    }, base.options.slideSpeed);
 
                }
 
                base.transition3d(goToPixel);
 
            } else {
 
                if (speed === true) {
 
                    base.css2slide(goToPixel, base.options.paginationSpeed);
 
                } else if (speed === "rewind") {
 
                    base.css2slide(goToPixel, base.options.rewindSpeed);
 
                } else {
 
                    base.css2slide(goToPixel, base.options.slideSpeed);
 
                }
 
            }
 
            base.afterGo();
 
        },
 
 
        jumpTo : function (position) {
 
            var base = this;
 
            if (typeof base.options.beforeMove === "function") {
 
                base.options.beforeMove.apply(this, [base.$elem]);
 
            }
 
            if (position >= base.maximumItem || position === -1) {
 
                position = base.maximumItem;
 
            } else if (position <= 0) {
 
                position = 0;
 
            }
 
            base.swapSpeed(0);
 
            if (base.browser.support3d === true) {
 
                base.transition3d(base.positionsInArray[position]);
 
            } else {
 
                base.css2slide(base.positionsInArray[position], 1);
 
            }
 
            base.currentItem = base.owl.currentItem = position;
 
            base.afterGo();
 
        },
 
 
        afterGo : function () {
 
            var base = this;
 
 
            base.prevArr.push(base.currentItem);
 
            base.prevItem = base.owl.prevItem = base.prevArr[base.prevArr.length - 2];
 
            base.prevArr.shift(0);
 
 
            if (base.prevItem !== base.currentItem) {
 
                base.checkPagination();
 
                base.checkNavigation();
 
                base.eachMoveUpdate();
 
 
                if (base.options.autoPlay !== false) {
 
                    base.checkAp();
 
                }
 
            }
 
            if (typeof base.options.afterMove === "function" && base.prevItem !== base.currentItem) {
 
                base.options.afterMove.apply(this, [base.$elem]);
 
            }
 
        },
 
 
        stop : function () {
 
            var base = this;
 
            base.apStatus = "stop";
 
            window.clearInterval(base.autoPlayInterval);
 
        },
 
 
        checkAp : function () {
 
            var base = this;
 
            if (base.apStatus !== "stop") {
 
                base.play();
 
            }
 
        },
 
 
        play : function () {
 
            var base = this;
 
            base.apStatus = "play";
 
            if (base.options.autoPlay === false) {
 
                return false;
 
            }
 
            window.clearInterval(base.autoPlayInterval);
 
            base.autoPlayInterval = window.setInterval(function () {
 
                base.next(true);
 
            }, base.options.autoPlay);
 
        },
 
 
        swapSpeed : function (action) {
 
            var base = this;
 
            if (action === "slideSpeed") {
 
                base.$owlWrapper.css(base.addCssSpeed(base.options.slideSpeed));
 
            } else if (action === "paginationSpeed") {
 
                base.$owlWrapper.css(base.addCssSpeed(base.options.paginationSpeed));
 
            } else if (typeof action !== "string") {
 
                base.$owlWrapper.css(base.addCssSpeed(action));
 
            }
 
        },
 
 
        addCssSpeed : function (speed) {
 
            return {
 
                "-webkit-transition": "all " + speed + "ms ease",
 
                "-moz-transition": "all " + speed + "ms ease",
 
                "-o-transition": "all " + speed + "ms ease",
 
                "transition": "all " + speed + "ms ease"
 
            };
 
        },
 
 
        removeTransition : function () {
 
            return {
 
                "-webkit-transition": "",
 
                "-moz-transition": "",
 
                "-o-transition": "",
 
                "transition": ""
 
            };
 
        },
 
 
        doTranslate : function (pixels) {
 
            return {
 
                "-webkit-transform": "translate3d(" + pixels + "px, 0px, 0px)",
 
                "-moz-transform": "translate3d(" + pixels + "px, 0px, 0px)",
 
                "-o-transform": "translate3d(" + pixels + "px, 0px, 0px)",
 
                "-ms-transform": "translate3d(" + pixels + "px, 0px, 0px)",
 
                "transform": "translate3d(" + pixels + "px, 0px,0px)"
 
            };
 
        },
 
 
        transition3d : function (value) {
 
            var base = this;
 
            base.$owlWrapper.css(base.doTranslate(value));
 
        },
 
 
        css2move : function (value) {
 
            var base = this;
 
            base.$owlWrapper.css({"left" : value});
 
        },
 
 
        css2slide : function (value, speed) {
 
            var base = this;
 
 
            base.isCssFinish = false;
 
            base.$owlWrapper.stop(true, true).animate({
 
                "left" : value
 
            }, {
 
                duration : speed || base.options.slideSpeed,
 
                complete : function () {
 
                    base.isCssFinish = true;
 
                }
 
            });
 
        },
 
 
        checkBrowser : function () {
 
            var base = this,
 
                translate3D = "translate3d(0px, 0px, 0px)",
 
                tempElem = document.createElement("div"),
 
                regex,
 
                asSupport,
 
                support3d,
 
                isTouch;
 
 
            tempElem.style.cssText = "  -moz-transform:" + translate3D +
 
 
                                  "; -ms-transform:"    + translate3D +
 
                                  "; -o-transform:"      + translate3D +
 
                                  "; -webkit-transform:" + translate3D +
 
                                  "; transform:"        + translate3D;
 
            regex = /translate3d\(0px, 0px, 0px\)/g;
 
            asSupport = tempElem.style.cssText.match(regex);
 
            support3d = (asSupport !== null && asSupport.length === 1);
 
 
            isTouch = "ontouchstart" in window || window.navigator.msMaxTouchPoints;
 
 
            base.browser = {
 
                "support3d" : support3d,
 
                "isTouch" : isTouch
 
            };
 
        },
 
 
        moveEvents : function () {
 
            var base = this;
 
            if (base.options.mouseDrag !== false || base.options.touchDrag !== false) {
 
                base.gestures();
 
                base.disabledEvents();
 
            }
 
        },
 
 
        eventTypes : function () {
 
            var base = this,
 
                types = ["s", "e", "x"];
 
 
            base.ev_types = {};
 
 
            if (base.options.mouseDrag === true && base.options.touchDrag === true) {
 
                types = [
 
                    "touchstart.owl mousedown.owl",
 
                    "touchmove.owl mousemove.owl",
 
                    "touchend.owl touchcancel.owl mouseup.owl"
 
                ];
 
            } else if (base.options.mouseDrag === false && base.options.touchDrag === true) {
 
                types = [
 
                    "touchstart.owl",
 
                    "touchmove.owl",
 
                    "touchend.owl touchcancel.owl"
 
                ];
 
            } else if (base.options.mouseDrag === true && base.options.touchDrag === false) {
 
                types = [
 
                    "mousedown.owl",
 
                    "mousemove.owl",
 
                    "mouseup.owl"
 
                ];
 
            }
 
 
            base.ev_types.start = types[0];
 
            base.ev_types.move = types[1];
 
            base.ev_types.end = types[2];
 
        },
 
 
        disabledEvents :  function () {
 
            var base = this;
 
            base.$elem.on("dragstart.owl", function (event) { event.preventDefault(); });
 
            base.$elem.on("mousedown.disableTextSelect", function (e) {
 
                return $(e.target).is('input, textarea, select, option');
 
            });
 
        },
 
 
        gestures : function () {
 
            /*jslint unparam: true*/
 
            var base = this,
 
                locals = {
 
                    offsetX : 0,
 
                    offsetY : 0,
 
                    baseElWidth : 0,
 
                    relativePos : 0,
 
                    position: null,
 
                    minSwipe : null,
 
                    maxSwipe: null,
 
                    sliding : null,
 
                    dargging: null,
 
                    targetElement : null
 
                };
 
 
            base.isCssFinish = true;
 
 
            function getTouches(event) {
 
                if (event.touches !== undefined) {
 
                    return {
 
                        x : event.touches[0].pageX,
 
                        y : event.touches[0].pageY
 
                    };
 
                }
 
 
                if (event.touches === undefined) {
 
                    if (event.pageX !== undefined) {
 
                        return {
 
                            x : event.pageX,
 
                            y : event.pageY
 
                        };
 
                    }
 
                    if (event.pageX === undefined) {
 
                        return {
 
                            x : event.clientX,
 
                            y : event.clientY
 
                        };
 
                    }
 
                }
 
            }
 
 
            function swapEvents(type) {
 
                if (type === "on") {
 
                    $(document).on(base.ev_types.move, dragMove);
 
                    $(document).on(base.ev_types.end, dragEnd);
 
                } else if (type === "off") {
 
                    $(document).off(base.ev_types.move);
 
                    $(document).off(base.ev_types.end);
 
                }
 
            }
 
 
            function dragStart(event) {
 
                var ev = event.originalEvent || event || window.event,
 
                    position;
 
 
                if (ev.which === 3) {
 
                    return false;
 
                }
 
                if (base.itemsAmount <= base.options.items) {
 
                    return;
 
                }
 
                if (base.isCssFinish === false && !base.options.dragBeforeAnimFinish) {
 
                    return false;
 
                }
 
                if (base.isCss3Finish === false && !base.options.dragBeforeAnimFinish) {
 
                    return false;
 
                }
 
 
                if (base.options.autoPlay !== false) {
 
                    window.clearInterval(base.autoPlayInterval);
 
                }
 
 
                if (base.browser.isTouch !== true && !base.$owlWrapper.hasClass("grabbing")) {
 
                    base.$owlWrapper.addClass("grabbing");
 
                }
 
 
                base.newPosX = 0;
 
                base.newRelativeX = 0;
 
 
                $(this).css(base.removeTransition());
 
 
                position = $(this).position();
 
                locals.relativePos = position.left;
 
 
                locals.offsetX = getTouches(ev).x - position.left;
 
                locals.offsetY = getTouches(ev).y - position.top;
 
 
                swapEvents("on");
 
 
                locals.sliding = false;
 
                locals.targetElement = ev.target || ev.srcElement;
 
            }
 
 
            function dragMove(event) {
 
                var ev = event.originalEvent || event || window.event,
 
                    minSwipe,
 
                    maxSwipe;
 
 
                base.newPosX = getTouches(ev).x - locals.offsetX;
 
                base.newPosY = getTouches(ev).y - locals.offsetY;
 
                base.newRelativeX = base.newPosX - locals.relativePos;
 
 
                if (typeof base.options.startDragging === "function" && locals.dragging !== true && base.newRelativeX !== 0) {
 
                    locals.dragging = true;
 
                    base.options.startDragging.apply(base, [base.$elem]);
 
                }
 
 
                if ((base.newRelativeX > 8 || base.newRelativeX < -8) && (base.browser.isTouch === true)) {
 
                    if (ev.preventDefault !== undefined) {
 
                        ev.preventDefault();
 
                    } else {
 
                        ev.returnValue = false;
 
                    }
 
                    locals.sliding = true;
 
                }
 
 
                if ((base.newPosY > 10 || base.newPosY < -10) && locals.sliding === false) {
 
                    $(document).off("touchmove.owl");
 
                }
 
 
                minSwipe = function () {
 
                    return base.newRelativeX / 5;
 
                };
 
 
                maxSwipe = function () {
 
                    return base.maximumPixels + base.newRelativeX / 5;
 
                };
 
 
                base.newPosX = Math.max(Math.min(base.newPosX, minSwipe()), maxSwipe());
 
                if (base.browser.support3d === true) {
 
                    base.transition3d(base.newPosX);
 
                } else {
 
                    base.css2move(base.newPosX);
 
                }
 
            }
 
 
            function dragEnd(event) {
 
                var ev = event.originalEvent || event || window.event,
 
                    newPosition,
 
                    handlers,
 
                    owlStopEvent;
 
 
                ev.target = ev.target || ev.srcElement;
 
 
                locals.dragging = false;
 
 
                if (base.browser.isTouch !== true) {
 
                    base.$owlWrapper.removeClass("grabbing");
 
                }
 
 
                if (base.newRelativeX < 0) {
 
                    base.dragDirection = base.owl.dragDirection = "left";
 
                } else {
 
                    base.dragDirection = base.owl.dragDirection = "right";
 
                }
 
 
                if (base.newRelativeX !== 0) {
 
                    newPosition = base.getNewPosition();
 
                    base.goTo(newPosition, false, "drag");
 
                    if (locals.targetElement === ev.target && base.browser.isTouch !== true) {
 
                        $(ev.target).on("click.disable", function (ev) {
 
                            ev.stopImmediatePropagation();
 
                            ev.stopPropagation();
 
                            ev.preventDefault();
 
                            $(ev.target).off("click.disable");
 
                        });
 
                        handlers = $._data(ev.target, "events").click;
 
                        owlStopEvent = handlers.pop();
 
                        handlers.splice(0, 0, owlStopEvent);
 
                    }
 
                }
 
                swapEvents("off");
 
            }
 
            base.$elem.on(base.ev_types.start, ".owl-wrapper", dragStart);
 
        },
 
 
        getNewPosition : function () {
 
            var base = this,
 
                newPosition = base.closestItem();
 
 
            if (newPosition > base.maximumItem) {
 
                base.currentItem = base.maximumItem;
 
                newPosition  = base.maximumItem;
 
            } else if (base.newPosX >= 0) {
 
                newPosition = 0;
 
                base.currentItem = 0;
 
            }
 
            return newPosition;
 
        },
 
        closestItem : function () {
 
            var base = this,
 
                array = base.options.scrollPerPage === true ? base.pagesInArray : base.positionsInArray,
 
                goal = base.newPosX,
 
                closest = null;
 
 
            $.each(array, function (i, v) {
 
                if (goal - (base.itemWidth / 20) > array[i + 1] && goal - (base.itemWidth / 20) < v && base.moveDirection() === "left") {
 
                    closest = v;
 
                    if (base.options.scrollPerPage === true) {
 
                        base.currentItem = $.inArray(closest, base.positionsInArray);
 
                    } else {
 
                        base.currentItem = i;
 
                    }
 
                } else if (goal + (base.itemWidth / 20) < v && goal + (base.itemWidth / 20) > (array[i + 1] || array[i] - base.itemWidth) && base.moveDirection() === "right") {
 
                    if (base.options.scrollPerPage === true) {
 
                        closest = array[i + 1] || array[array.length - 1];
 
                        base.currentItem = $.inArray(closest, base.positionsInArray);
 
                    } else {
 
                        closest = array[i + 1];
 
                        base.currentItem = i + 1;
 
                    }
 
                }
 
            });
 
            return base.currentItem;
 
        },
 
 
        moveDirection : function () {
 
            var base = this,
 
                direction;
 
            if (base.newRelativeX < 0) {
 
                direction = "right";
 
                base.playDirection = "next";
 
            } else {
 
                direction = "left";
 
                base.playDirection = "prev";
 
            }
 
            return direction;
 
        },
 
 
        customEvents : function () {
 
            /*jslint unparam: true*/
 
            var base = this;
 
            base.$elem.on("owl.next", function () {
 
                base.next();
 
            });
 
            base.$elem.on("owl.prev", function () {
 
                base.prev();
 
            });
 
            base.$elem.on("owl.play", function (event, speed) {
 
                base.options.autoPlay = speed;
 
                base.play();
 
                base.hoverStatus = "play";
 
            });
 
            base.$elem.on("owl.stop", function () {
 
                base.stop();
 
                base.hoverStatus = "stop";
 
            });
 
            base.$elem.on("owl.goTo", function (event, item) {
 
                base.goTo(item);
 
            });
 
            base.$elem.on("owl.jumpTo", function (event, item) {
 
                base.jumpTo(item);
 
            });
 
        },
 
 
        stopOnHover : function () {
 
            var base = this;
 
            if (base.options.stopOnHover === true && base.browser.isTouch !== true && base.options.autoPlay !== false) {
 
                base.$elem.on("mouseover", function () {
 
                    base.stop();
 
                });
 
                base.$elem.on("mouseout", function () {
 
                    if (base.hoverStatus !== "stop") {
 
                        base.play();
 
                    }
 
                });
 
            }
 
        },
 
 
        lazyLoad : function () {
 
            var base = this,
 
                i,
 
                $item,
 
                itemNumber,
 
                $lazyImg,
 
                follow;
 
 
            if (base.options.lazyLoad === false) {
 
                return false;
 
            }
 
            for (i = 0; i < base.itemsAmount; i += 1) {
 
                $item = $(base.$owlItems[i]);
 
 
                if ($item.data("owl-loaded") === "loaded") {
 
                    continue;
 
                }
 
 
                itemNumber = $item.data("owl-item");
 
                $lazyImg = $item.find(".lazyOwl");
 
 
                if (typeof $lazyImg.data("src") !== "string") {
 
                    $item.data("owl-loaded", "loaded");
 
                    continue;
 
                }
 
                if ($item.data("owl-loaded") === undefined) {
 
                    $lazyImg.hide();
 
                    $item.addClass("loading").data("owl-loaded", "checked");
 
                }
 
                if (base.options.lazyFollow === true) {
 
                    follow = itemNumber >= base.currentItem;
 
                } else {
 
                    follow = true;
 
                }
 
                if (follow && itemNumber < base.currentItem + base.options.items && $lazyImg.length) {
 
                    base.lazyPreload($item, $lazyImg);
 
                }
 
            }
 
        },
 
 
        lazyPreload : function ($item, $lazyImg) {
 
            var base = this,
 
                iterations = 0,
 
                isBackgroundImg;
 
 
            if ($lazyImg.prop("tagName") === "DIV") {
 
                $lazyImg.css("background-image", "url(" + $lazyImg.data("src") + ")");
 
                isBackgroundImg = true;
 
            } else {
 
                $lazyImg[0].src = $lazyImg.data("src");
 
            }
 
 
            function showImage() {
 
                $item.data("owl-loaded", "loaded").removeClass("loading");
 
                $lazyImg.removeAttr("data-src");
 
                if (base.options.lazyEffect === "fade") {
 
                    $lazyImg.fadeIn(400);
 
                } else {
 
                    $lazyImg.show();
 
                }
 
                if (typeof base.options.afterLazyLoad === "function") {
 
                    base.options.afterLazyLoad.apply(this, [base.$elem]);
 
                }
 
            }
 
 
            function checkLazyImage() {
 
                iterations += 1;
 
                if (base.completeImg($lazyImg.get(0)) || isBackgroundImg === true) {
 
                    showImage();
 
                } else if (iterations <= 100) {//if image loads in less than 10 seconds
 
                    window.setTimeout(checkLazyImage, 100);
 
                } else {
 
                    showImage();
 
                }
 
            }
 
 
            checkLazyImage();
 
        },
 
 
        autoHeight : function () {
 
            var base = this,
 
                $currentimg = $(base.$owlItems[base.currentItem]).find("img"),
 
                iterations;
 
 
            function addHeight() {
 
                var $currentItem = $(base.$owlItems[base.currentItem]).height();
 
                base.wrapperOuter.css("height", $currentItem + "px");
 
                if (!base.wrapperOuter.hasClass("autoHeight")) {
 
                    window.setTimeout(function () {
 
                        base.wrapperOuter.addClass("autoHeight");
 
                    }, 0);
 
                }
 
            }
 
 
            function checkImage() {
 
                iterations += 1;
 
                if (base.completeImg($currentimg.get(0))) {
 
                    addHeight();
 
                } else if (iterations <= 100) { //if image loads in less than 10 seconds
 
                    window.setTimeout(checkImage, 100);
 
                } else {
 
                    base.wrapperOuter.css("height", ""); //Else remove height attribute
 
                }
 
            }
 
 
            if ($currentimg.get(0) !== undefined) {
 
                iterations = 0;
 
                checkImage();
 
            } else {
 
                addHeight();
 
            }
 
        },
 
 
        completeImg : function (img) {
 
            var naturalWidthType;
 
 
            if (!img.complete) {
 
                return false;
 
            }
 
            naturalWidthType = typeof img.naturalWidth;
 
            if (naturalWidthType !== "undefined" && img.naturalWidth === 0) {
 
                return false;
 
            }
 
            return true;
 
        },
 
 
        onVisibleItems : function () {
 
            var base = this,
 
                i;
 
 
            if (base.options.addClassActive === true) {
 
                base.$owlItems.removeClass("active");
 
            }
 
            base.visibleItems = [];
 
            for (i = base.currentItem; i < base.currentItem + base.options.items; i += 1) {
 
                base.visibleItems.push(i);
 
 
                if (base.options.addClassActive === true) {
 
                    $(base.$owlItems[i]).addClass("active");
 
                }
 
            }
 
            base.owl.visibleItems = base.visibleItems;
 
        },
 
 
        transitionTypes : function (className) {
 
            var base = this;
 
            //Currently available: "fade", "backSlide", "goDown", "fadeUp"
 
            base.outClass = "owl-" + className + "-out";
 
            base.inClass = "owl-" + className + "-in";
 
        },
 
 
        singleItemTransition : function () {
 
            var base = this,
 
                outClass = base.outClass,
 
                inClass = base.inClass,
 
                $currentItem = base.$owlItems.eq(base.currentItem),
 
                $prevItem = base.$owlItems.eq(base.prevItem),
 
                prevPos = Math.abs(base.positionsInArray[base.currentItem]) + base.positionsInArray[base.prevItem],
 
                origin = Math.abs(base.positionsInArray[base.currentItem]) + base.itemWidth / 2,
 
                animEnd = 'webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend';
 
 
            base.isTransition = true;
 
 
            base.$owlWrapper
 
                .addClass('owl-origin')
 
                .css({
 
                    "-webkit-transform-origin" : origin + "px",
 
                    "-moz-perspective-origin" : origin + "px",
 
                    "perspective-origin" : origin + "px"
 
                });
 
            function transStyles(prevPos) {
 
                return {
 
                    "position" : "relative",
 
                    "left" : prevPos + "px"
 
                };
 
            }
 
 
            $prevItem
 
                .css(transStyles(prevPos, 10))
 
                .addClass(outClass)
 
                .on(animEnd, function () {
 
                    base.endPrev = true;
 
                    $prevItem.off(animEnd);
 
                    base.clearTransStyle($prevItem, outClass);
 
                });
 
 
            $currentItem
 
                .addClass(inClass)
 
                .on(animEnd, function () {
 
                    base.endCurrent = true;
 
                    $currentItem.off(animEnd);
 
                    base.clearTransStyle($currentItem, inClass);
 
                });
 
        },
 
 
        clearTransStyle : function (item, classToRemove) {
 
            var base = this;
 
            item.css({
 
                "position" : "",
 
                "left" : ""
 
            }).removeClass(classToRemove);
 
 
            if (base.endPrev && base.endCurrent) {
 
                base.$owlWrapper.removeClass('owl-origin');
 
                base.endPrev = false;
 
                base.endCurrent = false;
 
                base.isTransition = false;
 
            }
 
        },
 
 
        owlStatus : function () {
 
            var base = this;
 
            base.owl = {
 
                "userOptions"  : base.userOptions,
 
                "baseElement"  : base.$elem,
 
                "userItems"    : base.$userItems,
 
                "owlItems"      : base.$owlItems,
 
                "currentItem"  : base.currentItem,
 
                "prevItem"      : base.prevItem,
 
                "visibleItems"  : base.visibleItems,
 
                "isTouch"      : base.browser.isTouch,
 
                "browser"      : base.browser,
 
                "dragDirection" : base.dragDirection
 
            };
 
        },
 
 
        clearEvents : function () {
 
            var base = this;
 
            base.$elem.off(".owl owl mousedown.disableTextSelect");
 
            $(document).off(".owl owl");
 
            $(window).off("resize", base.resizer);
 
        },
 
 
        unWrap : function () {
 
            var base = this;
 
            if (base.$elem.children().length !== 0) {
 
                base.$owlWrapper.unwrap();
 
                base.$userItems.unwrap().unwrap();
 
                if (base.owlControls) {
 
                    base.owlControls.remove();
 
                }
 
            }
 
            base.clearEvents();
 
            base.$elem
 
                .attr("style", base.$elem.data("owl-originalStyles") || "")
 
                .attr("class", base.$elem.data("owl-originalClasses"));
 
        },
 
 
        destroy : function () {
 
            var base = this;
 
            base.stop();
 
            window.clearInterval(base.checkVisible);
 
            base.unWrap();
 
            base.$elem.removeData();
 
        },
 
 
        reinit : function (newOptions) {
 
            var base = this,
 
                options = $.extend({}, base.userOptions, newOptions);
 
            base.unWrap();
 
            base.init(options, base.$elem);
 
        },
 
 
        addItem : function (htmlString, targetPosition) {
 
            var base = this,
 
                position;
 
 
            if (!htmlString) {return false; }
 
 
            if (base.$elem.children().length === 0) {
 
                base.$elem.append(htmlString);
 
                base.setVars();
 
                return false;
 
            }
 
            base.unWrap();
 
            if (targetPosition === undefined || targetPosition === -1) {
 
                position = -1;
 
            } else {
 
                position = targetPosition;
 
            }
 
            if (position >= base.$userItems.length || position === -1) {
 
                base.$userItems.eq(-1).after(htmlString);
 
            } else {
 
                base.$userItems.eq(position).before(htmlString);
 
            }
 
 
            base.setVars();
 
        },
 
 
        removeItem : function (targetPosition) {
 
            var base = this,
 
                position;
 
 
            if (base.$elem.children().length === 0) {
 
                return false;
 
            }
 
            if (targetPosition === undefined || targetPosition === -1) {
 
                position = -1;
 
            } else {
 
                position = targetPosition;
 
            }
 
 
            base.unWrap();
 
            base.$userItems.eq(position).remove();
 
            base.setVars();
 
        }
 
 
    };
 
 
    $.fn.owlCarousel = function (options) {
 
        return this.each(function () {
 
            if ($(this).data("owl-init") === true) {
 
                return false;
 
            }
 
            $(this).data("owl-init", true);
 
            var carousel = Object.create(Carousel);
 
            carousel.init(options, this);
 
            $.data(this, "owlCarousel", carousel);
 
        });
 
    };
 
 
    $.fn.owlCarousel.options = {
 
 
        items : 5,
 
        itemsCustom : false,
 
        itemsDesktop : [1199, 4],
 
        itemsDesktopSmall : [979, 3],
 
        itemsTablet : [768, 2],
 
        itemsTabletSmall : false,
 
        itemsMobile : [479, 1],
 
        singleItem : false,
 
        itemsScaleUp : false,
 
 
        slideSpeed : 200,
 
        paginationSpeed : 800,
 
        rewindSpeed : 1000,
 
 
        autoPlay : false,
 
        stopOnHover : false,
 
 
        navigation : false,
 
        navigationText : ["prev", "next"],
 
        rewindNav : true,
 
        scrollPerPage : false,
 
 
        pagination : true,
 
        paginationNumbers : false,
 
 
        responsive : true,
 
        responsiveRefreshRate : 200,
 
        responsiveBaseWidth : window,
 
 
        baseClass : "owl-carousel",
 
        theme : "owl-theme",
 
 
        lazyLoad : false,
 
        lazyFollow : true,
 
        lazyEffect : "fade",
 
 
        autoHeight : false,
 
 
        jsonPath : false,
 
        jsonSuccess : false,
 
 
        dragBeforeAnimFinish : true,
 
        mouseDrag : true,
 
        touchDrag : true,
 
 
        addClassActive : false,
 
        transitionStyle : false,
 
 
        beforeUpdate : false,
 
        afterUpdate : false,
 
        beforeInit : false,
 
        afterInit : false,
 
        beforeMove : false,
 
        afterMove : false,
 
        afterAction : false,
 
        startDragging : false,
 
        afterLazyLoad: false
 
    };
 
}(jQuery, window, document));</script><!-- Owl Carousel Plugin -->
 
<script type="text/javascript">// SmoothScroll for websites v1.2.1
 
// Licensed under the terms of the MIT license.
 
 
// People involved
 
//  - Balazs Galambosi (maintainer) 
 
//  - Michael Herf    (Pulse Algorithm)
 
 
(function(){
 
 
 
// Scroll Variables (tweakable)
 
var defaultOptions = {
 
 
    // Scrolling Core
 
    frameRate        : 150, // [Hz]
 
    animationTime    : 400, // [px]
 
    stepSize        : 120, // [px]
 
 
    // Pulse (less tweakable)
 
    // ratio of "tail" to "acceleration"
 
    pulseAlgorithm  : true,
 
    pulseScale      : 8,
 
    pulseNormalize  : 1,
 
 
    // Acceleration
 
    accelerationDelta : 20,  // 20
 
    accelerationMax  : 1,  // 1
 
 
    // Keyboard Settings
 
    keyboardSupport  : true,  // option
 
    arrowScroll      : 50,    // [px]
 
 
    // Other
 
    touchpadSupport  : true,
 
    fixedBackground  : true,
 
    excluded          : ""   
 
};
 
 
var options = defaultOptions;
 
 
 
// Other Variables
 
var isExcluded = false;
 
var isFrame = false;
 
var direction = { x: 0, y: 0 };
 
var initDone  = false;
 
var root = document.documentElement;
 
var activeElement;
 
var observer;
 
var deltaBuffer = [ 120, 120, 120 ];
 
 
var key = { left: 37, up: 38, right: 39, down: 40, spacebar: 32,
 
            pageup: 33, pagedown: 34, end: 35, home: 36 };
 
 
 
/***********************************************
 
* SETTINGS
 
***********************************************/
 
 
var options = defaultOptions;
 
 
 
/***********************************************
 
* INITIALIZE
 
***********************************************/
 
 
/**
 
* Tests if smooth scrolling is allowed. Shuts down everything if not.
 
*/
 
function initTest() {
 
 
    var disableKeyboard = false;
 
   
 
    // disable keyboard support if anything above requested it
 
    if (disableKeyboard) {
 
        removeEvent("keydown", keydown);
 
    }
 
 
    if (options.keyboardSupport && !disableKeyboard) {
 
        addEvent("keydown", keydown);
 
    }
 
}
 
 
/**
 
* Sets up scrolls array, determines if frames are involved.
 
*/
 
function init() {
 
 
 
    if (!document.body) return;
 
 
    var body = document.body;
 
    var html = document.documentElement;
 
    var windowHeight = window.innerHeight;
 
    var scrollHeight = body.scrollHeight;
 
   
 
    // check compat mode for root element
 
    root = (document.compatMode.indexOf('CSS') >= 0) ? html : body;
 
    activeElement = body;
 
   
 
    initTest();
 
    initDone = true;
 
 
    // Checks if this script is running in a frame
 
    if (top != self) {
 
        isFrame = true;
 
    }
 
 
    /**
 
    * This fixes a bug where the areas left and right to
 
    * the content does not trigger the onmousewheel event
 
    * on some pages. e.g.: html, body { height: 100% }
 
    */
 
    else if (scrollHeight > windowHeight &&
 
            (body.offsetHeight <= windowHeight ||
 
            html.offsetHeight <= windowHeight)) {
 
 
        html.style.height = 'auto';
 
        setTimeout(refresh, 10);
 
 
        // clearfix
 
        if (root.offsetHeight <= windowHeight) {
 
            var underlay = document.createElement("div");
 
            underlay.style.clear = "both";
 
            body.appendChild(underlay);
 
        }
 
    }
 
 
    // disable fixed background
 
    if (!options.fixedBackground && !isExcluded) {
 
        body.style.backgroundAttachment = "scroll";
 
        html.style.backgroundAttachment = "scroll";
 
    }
 
}
 
 
 
/************************************************
 
* SCROLLING
 
************************************************/
 
 
var que = [];
 
var pending = false;
 
var lastScroll = +new Date;
 
 
/**
 
* Pushes scroll actions to the scrolling queue.
 
*/
 
function scrollArray(elem, left, top, delay) {
 
   
 
    delay || (delay = 1000);
 
    directionCheck(left, top);
 
 
    if (options.accelerationMax != 1) {
 
        var now = +new Date;
 
        var elapsed = now - lastScroll;
 
        if (elapsed < options.accelerationDelta) {
 
            var factor = (1 + (30 / elapsed)) / 2;
 
            if (factor > 1) {
 
                factor = Math.min(factor, options.accelerationMax);
 
                left *= factor;
 
                top  *= factor;
 
            }
 
        }
 
        lastScroll = +new Date;
 
    }         
 
   
 
    // push a scroll command
 
    que.push({
 
        x: left,
 
        y: top,
 
        lastX: (left < 0) ? 0.99 : -0.99,
 
        lastY: (top  < 0) ? 0.99 : -0.99,
 
        start: +new Date
 
    });
 
       
 
    // don't act if there's a pending queue
 
    if (pending) {
 
        return;
 
    } 
 
 
    var scrollWindow = (elem === document.body);
 
   
 
    var step = function (time) {
 
       
 
        var now = +new Date;
 
        var scrollX = 0;
 
        var scrollY = 0;
 
   
 
        for (var i = 0; i < que.length; i++) {
 
           
 
            var item = que[i];
 
            var elapsed  = now - item.start;
 
            var finished = (elapsed >= options.animationTime);
 
           
 
            // scroll position: [0, 1]
 
            var position = (finished) ? 1 : elapsed / options.animationTime;
 
           
 
            // easing [optional]
 
            if (options.pulseAlgorithm) {
 
                position = pulse(position);
 
            }
 
           
 
            // only need the difference
 
            var x = (item.x * position - item.lastX) >> 0;
 
            var y = (item.y * position - item.lastY) >> 0;
 
           
 
            // add this to the total scrolling
 
            scrollX += x;
 
            scrollY += y;           
 
           
 
            // update last values
 
            item.lastX += x;
 
            item.lastY += y;
 
       
 
            // delete and step back if it's over
 
            if (finished) {
 
                que.splice(i, 1); i--;
 
            }         
 
        }
 
 
        // scroll left and top
 
        if (scrollWindow) {
 
            window.scrollBy(scrollX, scrollY);
 
        }
 
        else {
 
            if (scrollX) elem.scrollLeft += scrollX;
 
            if (scrollY) elem.scrollTop  += scrollY;                   
 
        }
 
       
 
        // clean up if there's nothing left to do
 
        if (!left && !top) {
 
            que = [];
 
        }
 
       
 
        if (que.length) {
 
            requestFrame(step, elem, (delay / options.frameRate + 1));
 
        } else {
 
            pending = false;
 
        }
 
    };
 
   
 
    // start a new queue of actions
 
    requestFrame(step, elem, 0);
 
    pending = true;
 
}
 
 
 
/***********************************************
 
* EVENTS
 
***********************************************/
 
 
/**
 
* Mouse wheel handler.
 
* @param {Object} event
 
*/
 
function wheel(event) {
 
 
    if (!initDone) {
 
        init();
 
    }
 
   
 
    var target = event.target;
 
    var overflowing = overflowingAncestor(target);
 
   
 
    // use default if there's no overflowing
 
    // element or default action is prevented   
 
    if (!overflowing || event.defaultPrevented ||
 
        isNodeName(activeElement, "embed") ||
 
      (isNodeName(target, "embed") && /\.pdf/i.test(target.src))) {
 
        return true;
 
    }
 
 
    var deltaX = event.wheelDeltaX || 0;
 
    var deltaY = event.wheelDeltaY || 0;
 
   
 
    // use wheelDelta if deltaX/Y is not available
 
    if (!deltaX && !deltaY) {
 
        deltaY = event.wheelDelta || 0;
 
    }
 
 
    // check if it's a touchpad scroll that should be ignored
 
    if (!options.touchpadSupport && isTouchpad(deltaY)) {
 
        return true;
 
    }
 
 
    // scale by step size
 
    // delta is 120 most of the time
 
    // synaptics seems to send 1 sometimes
 
    if (Math.abs(deltaX) > 1.2) {
 
        deltaX *= options.stepSize / 120;
 
    }
 
    if (Math.abs(deltaY) > 1.2) {
 
        deltaY *= options.stepSize / 120;
 
    }
 
   
 
    scrollArray(overflowing, -deltaX, -deltaY);
 
    event.preventDefault();
 
}
 
 
/**
 
* Keydown event handler.
 
* @param {Object} event
 
*/
 
function keydown(event) {
 
 
    var target  = event.target;
 
    var modifier = event.ctrlKey || event.altKey || event.metaKey ||
 
                  (event.shiftKey && event.keyCode !== key.spacebar);
 
   
 
    // do nothing if user is editing text
 
    // or using a modifier key (except shift)
 
    // or in a dropdown
 
    if ( /input|textarea|select|embed/i.test(target.nodeName) ||
 
        target.isContentEditable ||
 
        event.defaultPrevented  ||
 
        modifier ) {
 
      return true;
 
    }
 
    // spacebar should trigger button press
 
    if (isNodeName(target, "button") &&
 
        event.keyCode === key.spacebar) {
 
      return true;
 
    }
 
   
 
    var shift, x = 0, y = 0;
 
    var elem = overflowingAncestor(activeElement);
 
    var clientHeight = elem.clientHeight;
 
 
    if (elem == document.body) {
 
        clientHeight = window.innerHeight;
 
    }
 
 
    switch (event.keyCode) {
 
        case key.up:
 
            y = -options.arrowScroll;
 
            break;
 
        case key.down:
 
            y = options.arrowScroll;
 
            break;       
 
        case key.spacebar: // (+ shift)
 
            shift = event.shiftKey ? 1 : -1;
 
            y = -shift * clientHeight * 0.9;
 
            break;
 
        case key.pageup:
 
            y = -clientHeight * 0.9;
 
            break;
 
        case key.pagedown:
 
            y = clientHeight * 0.9;
 
            break;
 
        case key.home:
 
            y = -elem.scrollTop;
 
            break;
 
        case key.end:
 
            var damt = elem.scrollHeight - elem.scrollTop - clientHeight;
 
            y = (damt > 0) ? damt+10 : 0;
 
            break;
 
        case key.left:
 
            x = -options.arrowScroll;
 
            break;
 
        case key.right:
 
            x = options.arrowScroll;
 
            break;           
 
        default:
 
            return true; // a key we don't care about
 
    }
 
 
    scrollArray(elem, x, y);
 
    event.preventDefault();
 
}
 
 
/**
 
* Mousedown event only for updating activeElement
 
*/
 
function mousedown(event) {
 
    activeElement = event.target;
 
}
 
 
 
/***********************************************
 
* OVERFLOW
 
***********************************************/
 
 
var cache = {}; // cleared out every once in while
 
setInterval(function () { cache = {}; }, 10 * 1000);
 
 
var uniqueID = (function () {
 
    var i = 0;
 
    return function (el) {
 
        return el.uniqueID || (el.uniqueID = i++);
 
    };
 
})();
 
 
function setCache(elems, overflowing) {
 
    for (var i = elems.length; i--;)
 
        cache[uniqueID(elems[i])] = overflowing;
 
    return overflowing;
 
}
 
 
function overflowingAncestor(el) {
 
    var elems = [];
 
    var rootScrollHeight = root.scrollHeight;
 
    do {
 
        var cached = cache[uniqueID(el)];
 
        if (cached) {
 
            return setCache(elems, cached);
 
        }
 
        elems.push(el);
 
        if (rootScrollHeight === el.scrollHeight) {
 
            if (!isFrame || root.clientHeight + 10 < rootScrollHeight) {
 
                return setCache(elems, document.body); // scrolling root in WebKit
 
            }
 
        } else if (el.clientHeight + 10 < el.scrollHeight) {
 
            overflow = getComputedStyle(el, "").getPropertyValue("overflow-y");
 
            if (overflow === "scroll" || overflow === "auto") {
 
                return setCache(elems, el);
 
            }
 
        }
 
    } while (el = el.parentNode);
 
}
 
 
 
/***********************************************
 
* HELPERS
 
***********************************************/
 
 
function addEvent(type, fn, bubble) {
 
    window.addEventListener(type, fn, (bubble||false));
 
}
 
 
function removeEvent(type, fn, bubble) {
 
    window.removeEventListener(type, fn, (bubble||false)); 
 
}
 
 
function isNodeName(el, tag) {
 
    return (el.nodeName||"").toLowerCase() === tag.toLowerCase();
 
}
 
 
function directionCheck(x, y) {
 
    x = (x > 0) ? 1 : -1;
 
    y = (y > 0) ? 1 : -1;
 
    if (direction.x !== x || direction.y !== y) {
 
        direction.x = x;
 
        direction.y = y;
 
        que = [];
 
        lastScroll = 0;
 
    }
 
}
 
 
var deltaBufferTimer;
 
 
function isTouchpad(deltaY) {
 
    if (!deltaY) return;
 
    deltaY = Math.abs(deltaY)
 
    deltaBuffer.push(deltaY);
 
    deltaBuffer.shift();
 
    clearTimeout(deltaBufferTimer);
 
 
    var allEquals    = (deltaBuffer[0] == deltaBuffer[1] &&
 
                        deltaBuffer[1] == deltaBuffer[2]);
 
    var allDivisable = (isDivisible(deltaBuffer[0], 120) &&
 
                        isDivisible(deltaBuffer[1], 120) &&
 
                        isDivisible(deltaBuffer[2], 120));
 
    return !(allEquals || allDivisable);
 
}
 
 
function isDivisible(n, divisor) {
 
    return (Math.floor(n / divisor) == n / divisor);
 
}
 
 
var requestFrame = (function () {
 
      return  window.requestAnimationFrame      ||
 
              window.webkitRequestAnimationFrame ||
 
              function (callback, element, delay) {
 
                  window.setTimeout(callback, delay || (1000/60));
 
              };
 
})();
 
 
 
/***********************************************
 
* PULSE
 
***********************************************/
 
 
/**
 
* Viscous fluid with a pulse for part and decay for the rest.
 
* - Applies a fixed force over an interval (a damped acceleration), and
 
* - Lets the exponential bleed away the velocity over a longer interval
 
* - Michael Herf, http://stereopsis.com/stopping/
 
*/
 
function pulse_(x) {
 
    var val, start, expx;
 
    // test
 
    x = x * options.pulseScale;
 
    if (x < 1) { // acceleartion
 
        val = x - (1 - Math.exp(-x));
 
    } else {    // tail
 
        // the previous animation ended here:
 
        start = Math.exp(-1);
 
        // simple viscous drag
 
        x -= 1;
 
        expx = 1 - Math.exp(-x);
 
        val = start + (expx * (1 - start));
 
    }
 
    return val * options.pulseNormalize;
 
}
 
 
function pulse(x) {
 
    if (x >= 1) return 1;
 
    if (x <= 0) return 0;
 
 
    if (options.pulseNormalize == 1) {
 
        options.pulseNormalize /= pulse_(1);
 
    }
 
    return pulse_(x);
 
}
 
 
var isChrome = /chrome/i.test(window.navigator.userAgent);
 
var isMouseWheelSupported = 'onmousewheel' in document;
 
 
if (isMouseWheelSupported && isChrome) {
 
addEvent("mousedown", mousedown);
 
addEvent("mousewheel", wheel);
 
addEvent("load", init);
 
};
 
 
})();</script>
 
<script type="text/javascript" >/*!
 
* skrollr core
 
*
 
* Alexander Prinzhorn - https://github.com/Prinzhorn/skrollr
 
*
 
* Free to use under terms of MIT license
 
*/
 
(function(window, document, undefined) {
 
'use strict';
 
 
/*
 
* Global api.
 
*/
 
var skrollr = window.skrollr = {
 
get: function() {
 
return _instance;
 
},
 
//Main entry point.
 
init: function(options) {
 
return _instance || new Skrollr(options);
 
},
 
VERSION: '0.6.21'
 
};
 
 
//Minify optimization.
 
var hasProp = Object.prototype.hasOwnProperty;
 
var Math = window.Math;
 
var getStyle = window.getComputedStyle;
 
 
//They will be filled when skrollr gets initialized.
 
var documentElement;
 
var body;
 
 
var EVENT_TOUCHSTART = 'touchstart';
 
var EVENT_TOUCHMOVE = 'touchmove';
 
var EVENT_TOUCHCANCEL = 'touchcancel';
 
var EVENT_TOUCHEND = 'touchend';
 
 
var SKROLLABLE_CLASS = 'skrollable';
 
var SKROLLABLE_BEFORE_CLASS = SKROLLABLE_CLASS + '-before';
 
var SKROLLABLE_BETWEEN_CLASS = SKROLLABLE_CLASS + '-between';
 
var SKROLLABLE_AFTER_CLASS = SKROLLABLE_CLASS + '-after';
 
 
var SKROLLR_CLASS = 'skrollr';
 
var NO_SKROLLR_CLASS = 'no-' + SKROLLR_CLASS;
 
var SKROLLR_DESKTOP_CLASS = SKROLLR_CLASS + '-desktop';
 
var SKROLLR_MOBILE_CLASS = SKROLLR_CLASS + '-mobile';
 
 
var DEFAULT_EASING = 'linear';
 
var DEFAULT_DURATION = 1000;//ms
 
var DEFAULT_MOBILE_DECELERATION = 0.004;//pixel/ms²
 
 
var DEFAULT_SMOOTH_SCROLLING_DURATION = 200;//ms
 
 
var ANCHOR_START = 'start';
 
var ANCHOR_END = 'end';
 
var ANCHOR_CENTER = 'center';
 
var ANCHOR_BOTTOM = 'bottom';
 
 
//The property which will be added to the DOM element to hold the ID of the skrollable.
 
var SKROLLABLE_ID_DOM_PROPERTY = '___skrollable_id';
 
 
var rxTouchIgnoreTags = /^(?:input|textarea|button|select)$/i;
 
 
var rxTrim = /^\s+|\s+$/g;
 
 
//Find all data-attributes. data-[_constant]-[offset]-[anchor]-[anchor].
 
var rxKeyframeAttribute = /^data(?:-(_\w+))?(?:-?(-?\d*\.?\d+p?))?(?:-?(start|end|top|center|bottom))?(?:-?(top|center|bottom))?$/;
 
 
var rxPropValue = /\s*([\w\-\[\]]+)\s*:\s*(.+?)\s*(?:;|$)/gi;
 
 
//Easing function names follow the property in square brackets.
 
var rxPropEasing = /^([a-z\-]+)\[(\w+)\]$/;
 
 
var rxCamelCase = /-([a-z])/g;
 
var rxCamelCaseFn = function(str, letter) {
 
return letter.toUpperCase();
 
};
 
 
//Numeric values with optional sign.
 
var rxNumericValue = /[\-+]?[\d]*\.?[\d]+/g;
 
 
//Used to replace occurences of {?} with a number.
 
var rxInterpolateString = /\{\?\}/g;
 
 
//Finds rgb(a) colors, which don't use the percentage notation.
 
var rxRGBAIntegerColor = /rgba?\(\s*-?\d+\s*,\s*-?\d+\s*,\s*-?\d+/g;
 
 
//Finds all gradients.
 
var rxGradient = /[a-z\-]+-gradient/g;
 
 
//Vendor prefix. Will be set once skrollr gets initialized.
 
var theCSSPrefix = '';
 
var theDashedCSSPrefix = '';
 
 
//Will be called once (when skrollr gets initialized).
 
var detectCSSPrefix = function() {
 
//Only relevant prefixes. May be extended.
 
//Could be dangerous if there will ever be a CSS property which actually starts with "ms". Don't hope so.
 
var rxPrefixes = /^(?:O|Moz|webkit|ms)|(?:-(?:o|moz|webkit|ms)-)/;
 
 
//Detect prefix for current browser by finding the first property using a prefix.
 
if(!getStyle) {
 
return;
 
}
 
 
var style = getStyle(body, null);
 
 
for(var k in style) {
 
//We check the key and if the key is a number, we check the value as well, because safari's getComputedStyle returns some weird array-like thingy.
 
theCSSPrefix = (k.match(rxPrefixes) || (+k == k && style[k].match(rxPrefixes)));
 
 
if(theCSSPrefix) {
 
break;
 
}
 
}
 
 
//Did we even detect a prefix?
 
if(!theCSSPrefix) {
 
theCSSPrefix = theDashedCSSPrefix = '';
 
 
return;
 
}
 
 
theCSSPrefix = theCSSPrefix[0];
 
 
//We could have detected either a dashed prefix or this camelCaseish-inconsistent stuff.
 
if(theCSSPrefix.slice(0,1) === '-') {
 
theDashedCSSPrefix = theCSSPrefix;
 
 
//There's no logic behind these. Need a look up.
 
theCSSPrefix = ({
 
'-webkit-': 'webkit',
 
'-moz-': 'Moz',
 
'-ms-': 'ms',
 
'-o-': 'O'
 
})[theCSSPrefix];
 
} else {
 
theDashedCSSPrefix = '-' + theCSSPrefix.toLowerCase() + '-';
 
}
 
};
 
 
var polyfillRAF = function() {
 
var requestAnimFrame = window.requestAnimationFrame || window[theCSSPrefix.toLowerCase() + 'RequestAnimationFrame'];
 
 
var lastTime = _now();
 
 
if(_isMobile || !requestAnimFrame) {
 
requestAnimFrame = function(callback) {
 
//How long did it take to render?
 
var deltaTime = _now() - lastTime;
 
var delay = Math.max(0, 1000 / 60 - deltaTime);
 
 
return window.setTimeout(function() {
 
lastTime = _now();
 
callback();
 
}, delay);
 
};
 
}
 
 
return requestAnimFrame;
 
};
 
 
var polyfillCAF = function() {
 
var cancelAnimFrame = window.cancelAnimationFrame || window[theCSSPrefix.toLowerCase() + 'CancelAnimationFrame'];
 
 
if(_isMobile || !cancelAnimFrame) {
 
cancelAnimFrame = function(timeout) {
 
return window.clearTimeout(timeout);
 
};
 
}
 
 
return cancelAnimFrame;
 
};
 
 
//Built-in easing functions.
 
var easings = {
 
begin: function() {
 
return 0;
 
},
 
end: function() {
 
return 1;
 
},
 
linear: function(p) {
 
return p;
 
},
 
quadratic: function(p) {
 
return p * p;
 
},
 
cubic: function(p) {
 
return p * p * p;
 
},
 
swing: function(p) {
 
return (-Math.cos(p * Math.PI) / 2) + 0.5;
 
},
 
sqrt: function(p) {
 
return Math.sqrt(p);
 
},
 
outCubic: function(p) {
 
return (Math.pow((p - 1), 3) + 1);
 
},
 
//see https://www.desmos.com/calculator/tbr20s8vd2 for how I did this
 
bounce: function(p) {
 
var a;
 
 
if(p <= 0.5083) {
 
a = 3;
 
} else if(p <= 0.8489) {
 
a = 9;
 
} else if(p <= 0.96208) {
 
a = 27;
 
} else if(p <= 0.99981) {
 
a = 91;
 
} else {
 
return 1;
 
}
 
 
return 1 - Math.abs(3 * Math.cos(p * a * 1.028) / a);
 
}
 
};
 
 
/**
 
* Constructor.
 
*/
 
function Skrollr(options) {
 
documentElement = document.documentElement;
 
body = document.body;
 
 
detectCSSPrefix();
 
 
_instance = this;
 
 
options = options || {};
 
 
_constants = options.constants || {};
 
 
//We allow defining custom easings or overwrite existing.
 
if(options.easing) {
 
for(var e in options.easing) {
 
easings[e] = options.easing[e];
 
}
 
}
 
 
_edgeStrategy = options.edgeStrategy || 'set';
 
 
_listeners = {
 
//Function to be called right before rendering.
 
beforerender: options.beforerender,
 
 
//Function to be called right after finishing rendering.
 
render: options.render
 
};
 
 
//forceHeight is true by default
 
_forceHeight = options.forceHeight !== false;
 
 
if(_forceHeight) {
 
_scale = options.scale || 1;
 
}
 
 
_mobileDeceleration = options.mobileDeceleration || DEFAULT_MOBILE_DECELERATION;
 
 
_smoothScrollingEnabled = options.smoothScrolling !== false;
 
_smoothScrollingDuration = options.smoothScrollingDuration || DEFAULT_SMOOTH_SCROLLING_DURATION;
 
 
//Dummy object. Will be overwritten in the _render method when smooth scrolling is calculated.
 
_smoothScrolling = {
 
targetTop: _instance.getScrollTop()
 
};
 
 
//A custom check function may be passed.
 
_isMobile = ((options.mobileCheck || function() {
 
return (/Android|iPhone|iPad|iPod|BlackBerry/i).test(navigator.userAgent || navigator.vendor || window.opera);
 
})());
 
 
if(_isMobile) {
 
_skrollrBody = document.getElementById('skrollr-body');
 
 
//Detect 3d transform if there's a skrollr-body (only needed for #skrollr-body).
 
if(_skrollrBody) {
 
_detect3DTransforms();
 
}
 
 
_initMobile();
 
_updateClass(documentElement, [SKROLLR_CLASS, SKROLLR_MOBILE_CLASS], [NO_SKROLLR_CLASS]);
 
} else {
 
_updateClass(documentElement, [SKROLLR_CLASS, SKROLLR_DESKTOP_CLASS], [NO_SKROLLR_CLASS]);
 
}
 
 
//Triggers parsing of elements and a first reflow.
 
_instance.refresh();
 
 
_addEvent(window, 'resize orientationchange', function() {
 
var width = documentElement.clientWidth;
 
var height = documentElement.clientHeight;
 
 
//Only reflow if the size actually changed (#271).
 
if(height !== _lastViewportHeight || width !== _lastViewportWidth) {
 
_lastViewportHeight = height;
 
_lastViewportWidth = width;
 
 
_requestReflow = true;
 
}
 
});
 
 
var requestAnimFrame = polyfillRAF();
 
 
//Let's go.
 
(function animloop(){
 
_render();
 
_animFrame = requestAnimFrame(animloop);
 
}());
 
 
return _instance;
 
}
 
 
/**
 
* (Re)parses some or all elements.
 
*/
 
Skrollr.prototype.refresh = function(elements) {
 
var elementIndex;
 
var elementsLength;
 
var ignoreID = false;
 
 
//Completely reparse anything without argument.
 
if(elements === undefined) {
 
//Ignore that some elements may already have a skrollable ID.
 
ignoreID = true;
 
 
_skrollables = [];
 
_skrollableIdCounter = 0;
 
 
elements = document.getElementsByTagName('*');
 
} else {
 
//We accept a single element or an array of elements.
 
elements = [].concat(elements);
 
}
 
 
elementIndex = 0;
 
elementsLength = elements.length;
 
 
for(; elementIndex < elementsLength; elementIndex++) {
 
var el = elements[elementIndex];
 
var anchorTarget = el;
 
var keyFrames = [];
 
 
//If this particular element should be smooth scrolled.
 
var smoothScrollThis = _smoothScrollingEnabled;
 
 
//The edge strategy for this particular element.
 
var edgeStrategy = _edgeStrategy;
 
 
if(!el.attributes) {
 
continue;
 
}
 
 
//Iterate over all attributes and search for key frame attributes.
 
var attributeIndex = 0;
 
var attributesLength = el.attributes.length;
 
 
for (; attributeIndex < attributesLength; attributeIndex++) {
 
var attr = el.attributes[attributeIndex];
 
 
if(attr.name === 'data-anchor-target') {
 
anchorTarget = document.querySelector(attr.value);
 
 
if(anchorTarget === null) {
 
throw 'Unable to find anchor target "' + attr.value + '"';
 
}
 
 
continue;
 
}
 
 
//Global smooth scrolling can be overridden by the element attribute.
 
if(attr.name === 'data-smooth-scrolling') {
 
smoothScrollThis = attr.value !== 'off';
 
 
continue;
 
}
 
 
//Global edge strategy can be overridden by the element attribute.
 
if(attr.name === 'data-edge-strategy') {
 
edgeStrategy = attr.value;
 
 
continue;
 
}
 
 
var match = attr.name.match(rxKeyframeAttribute);
 
 
if(match === null) {
 
continue;
 
}
 
 
var kf = {
 
props: attr.value,
 
//Point back to the element as well.
 
element: el
 
};
 
 
keyFrames.push(kf);
 
 
var constant = match[1];
 
 
if(constant) {
 
//Strip the underscore prefix.
 
kf.constant = constant.substr(1);
 
}
 
 
//Get the key frame offset.
 
var offset = match[2];
 
 
//Is it a percentage offset?
 
if(/p$/.test(offset)) {
 
kf.isPercentage = true;
 
kf.offset = (offset.slice(0, -1) | 0) / 100;
 
} else {
 
kf.offset = (offset | 0);
 
}
 
 
var anchor1 = match[3];
 
 
//If second anchor is not set, the first will be taken for both.
 
var anchor2 = match[4] || anchor1;
 
 
//"absolute" (or "classic") mode, where numbers mean absolute scroll offset.
 
if(!anchor1 || anchor1 === ANCHOR_START || anchor1 === ANCHOR_END) {
 
kf.mode = 'absolute';
 
 
//data-end needs to be calculated after all key frames are known.
 
if(anchor1 === ANCHOR_END) {
 
kf.isEnd = true;
 
} else if(!kf.isPercentage) {
 
//For data-start we can already set the key frame w/o calculations.
 
//#59: "scale" options should only affect absolute mode.
 
kf.offset = kf.offset * _scale;
 
}
 
}
 
//"relative" mode, where numbers are relative to anchors.
 
else {
 
kf.mode = 'relative';
 
kf.anchors = [anchor1, anchor2];
 
}
 
}
 
 
//Does this element have key frames?
 
if(!keyFrames.length) {
 
continue;
 
}
 
 
//Will hold the original style and class attributes before we controlled the element (see #80).
 
var styleAttr, classAttr;
 
 
var id;
 
 
if(!ignoreID && SKROLLABLE_ID_DOM_PROPERTY in el) {
 
//We already have this element under control. Grab the corresponding skrollable id.
 
id = el[SKROLLABLE_ID_DOM_PROPERTY];
 
styleAttr = _skrollables[id].styleAttr;
 
classAttr = _skrollables[id].classAttr;
 
} else {
 
//It's an unknown element. Asign it a new skrollable id.
 
id = (el[SKROLLABLE_ID_DOM_PROPERTY] = _skrollableIdCounter++);
 
styleAttr = el.style.cssText;
 
classAttr = _getClass(el);
 
}
 
 
_skrollables[id] = {
 
element: el,
 
styleAttr: styleAttr,
 
classAttr: classAttr,
 
anchorTarget: anchorTarget,
 
keyFrames: keyFrames,
 
smoothScrolling: smoothScrollThis,
 
edgeStrategy: edgeStrategy
 
};
 
 
_updateClass(el, [SKROLLABLE_CLASS], []);
 
}
 
 
//Reflow for the first time.
 
_reflow();
 
 
//Now that we got all key frame numbers right, actually parse the properties.
 
elementIndex = 0;
 
elementsLength = elements.length;
 
 
for(; elementIndex < elementsLength; elementIndex++) {
 
var sk = _skrollables[elements[elementIndex][SKROLLABLE_ID_DOM_PROPERTY]];
 
 
if(sk === undefined) {
 
continue;
 
}
 
 
//Parse the property string to objects
 
_parseProps(sk);
 
 
//Fill key frames with missing properties from left and right
 
_fillProps(sk);
 
}
 
 
return _instance;
 
};
 
 
/**
 
* Transform "relative" mode to "absolute" mode.
 
* That is, calculate anchor position and offset of element.
 
*/
 
Skrollr.prototype.relativeToAbsolute = function(element, viewportAnchor, elementAnchor) {
 
var viewportHeight = documentElement.clientHeight;
 
var box = element.getBoundingClientRect();
 
var absolute = box.top;
 
 
//#100: IE doesn't supply "height" with getBoundingClientRect.
 
var boxHeight = box.bottom - box.top;
 
 
if(viewportAnchor === ANCHOR_BOTTOM) {
 
absolute -= viewportHeight;
 
} else if(viewportAnchor === ANCHOR_CENTER) {
 
absolute -= viewportHeight / 2;
 
}
 
 
if(elementAnchor === ANCHOR_BOTTOM) {
 
absolute += boxHeight;
 
} else if(elementAnchor === ANCHOR_CENTER) {
 
absolute += boxHeight / 2;
 
}
 
 
//Compensate scrolling since getBoundingClientRect is relative to viewport.
 
absolute += _instance.getScrollTop();
 
 
return (absolute + 0.5) | 0;
 
};
 
 
/**
 
* Animates scroll top to new position.
 
*/
 
Skrollr.prototype.animateTo = function(top, options) {
 
options = options || {};
 
 
var now = _now();
 
var scrollTop = _instance.getScrollTop();
 
 
//Setting this to a new value will automatically cause the current animation to stop, if any.
 
_scrollAnimation = {
 
startTop: scrollTop,
 
topDiff: top - scrollTop,
 
targetTop: top,
 
duration: options.duration || DEFAULT_DURATION,
 
startTime: now,
 
endTime: now + (options.duration || DEFAULT_DURATION),
 
easing: easings[options.easing || DEFAULT_EASING],
 
done: options.done
 
};
 
 
//Don't queue the animation if there's nothing to animate.
 
if(!_scrollAnimation.topDiff) {
 
if(_scrollAnimation.done) {
 
_scrollAnimation.done.call(_instance, false);
 
}
 
 
_scrollAnimation = undefined;
 
}
 
 
return _instance;
 
};
 
 
/**
 
* Stops animateTo animation.
 
*/
 
Skrollr.prototype.stopAnimateTo = function() {
 
if(_scrollAnimation && _scrollAnimation.done) {
 
_scrollAnimation.done.call(_instance, true);
 
}
 
 
_scrollAnimation = undefined;
 
};
 
 
/**
 
* Returns if an animation caused by animateTo is currently running.
 
*/
 
Skrollr.prototype.isAnimatingTo = function() {
 
return !!_scrollAnimation;
 
};
 
 
Skrollr.prototype.setScrollTop = function(top, force) {
 
_forceRender = (force === true);
 
 
if(_isMobile) {
 
_mobileOffset = Math.min(Math.max(top, 0), _maxKeyFrame);
 
} else {
 
window.scrollTo(0, top);
 
}
 
 
return _instance;
 
};
 
 
Skrollr.prototype.getScrollTop = function() {
 
if(_isMobile) {
 
return _mobileOffset;
 
} else {
 
return window.pageYOffset || documentElement.scrollTop || body.scrollTop || 0;
 
}
 
};
 
 
Skrollr.prototype.getMaxScrollTop = function() {
 
return _maxKeyFrame;
 
};
 
 
Skrollr.prototype.on = function(name, fn) {
 
_listeners[name] = fn;
 
 
return _instance;
 
};
 
 
Skrollr.prototype.off = function(name) {
 
delete _listeners[name];
 
 
return _instance;
 
};
 
 
Skrollr.prototype.destroy = function() {
 
var cancelAnimFrame = polyfillCAF();
 
cancelAnimFrame(_animFrame);
 
_removeAllEvents();
 
 
_updateClass(documentElement, [NO_SKROLLR_CLASS], [SKROLLR_CLASS, SKROLLR_DESKTOP_CLASS, SKROLLR_MOBILE_CLASS]);
 
 
var skrollableIndex = 0;
 
var skrollablesLength = _skrollables.length;
 
 
for(; skrollableIndex < skrollablesLength; skrollableIndex++) {
 
_reset(_skrollables[skrollableIndex].element);
 
}
 
 
documentElement.style.overflow = body.style.overflow = 'auto';
 
documentElement.style.height = body.style.height = 'auto';
 
 
if(_skrollrBody) {
 
skrollr.setStyle(_skrollrBody, 'transform', 'none');
 
}
 
 
_instance = undefined;
 
_skrollrBody = undefined;
 
_listeners = undefined;
 
_forceHeight = undefined;
 
_maxKeyFrame = 0;
 
_scale = 1;
 
_constants = undefined;
 
_mobileDeceleration = undefined;
 
_direction = 'down';
 
_lastTop = -1;
 
_lastViewportWidth = 0;
 
_lastViewportHeight = 0;
 
_requestReflow = false;
 
_scrollAnimation = undefined;
 
_smoothScrollingEnabled = undefined;
 
_smoothScrollingDuration = undefined;
 
_smoothScrolling = undefined;
 
_forceRender = undefined;
 
_skrollableIdCounter = 0;
 
_edgeStrategy = undefined;
 
_isMobile = false;
 
_mobileOffset = 0;
 
_translateZ = undefined;
 
};
 
 
/*
 
Private methods.
 
*/
 
 
var _initMobile = function() {
 
var initialElement;
 
var initialTouchY;
 
var initialTouchX;
 
var currentElement;
 
var currentTouchY;
 
var currentTouchX;
 
var lastTouchY;
 
var deltaY;
 
 
var initialTouchTime;
 
var currentTouchTime;
 
var lastTouchTime;
 
var deltaTime;
 
 
_addEvent(documentElement, [EVENT_TOUCHSTART, EVENT_TOUCHMOVE, EVENT_TOUCHCANCEL, EVENT_TOUCHEND].join(' '), function(e) {
 
var touch = e.changedTouches[0];
 
 
currentElement = e.target;
 
 
//We don't want text nodes.
 
while(currentElement.nodeType === 3) {
 
currentElement = currentElement.parentNode;
 
}
 
 
currentTouchY = touch.clientY;
 
currentTouchX = touch.clientX;
 
currentTouchTime = e.timeStamp;
 
 
if(!rxTouchIgnoreTags.test(currentElement.tagName)) {
 
e.preventDefault();
 
}
 
 
switch(e.type) {
 
case EVENT_TOUCHSTART:
 
//The last element we tapped on.
 
if(initialElement) {
 
initialElement.blur();
 
}
 
 
_instance.stopAnimateTo();
 
 
initialElement = currentElement;
 
 
initialTouchY = lastTouchY = currentTouchY;
 
initialTouchX = currentTouchX;
 
initialTouchTime = currentTouchTime;
 
 
break;
 
case EVENT_TOUCHMOVE:
 
//Prevent default event on touchIgnore elements in case they don't have focus yet.
 
if(rxTouchIgnoreTags.test(currentElement.tagName) && document.activeElement !== currentElement) {
 
e.preventDefault();
 
}
 
 
deltaY = currentTouchY - lastTouchY;
 
deltaTime = currentTouchTime - lastTouchTime;
 
 
_instance.setScrollTop(_mobileOffset - deltaY, true);
 
 
lastTouchY = currentTouchY;
 
lastTouchTime = currentTouchTime;
 
break;
 
default:
 
case EVENT_TOUCHCANCEL:
 
case EVENT_TOUCHEND:
 
var distanceY = initialTouchY - currentTouchY;
 
var distanceX = initialTouchX - currentTouchX;
 
var distance2 = distanceX * distanceX + distanceY * distanceY;
 
 
//Check if it was more like a tap (moved less than 7px).
 
if(distance2 < 49) {
 
if(!rxTouchIgnoreTags.test(initialElement.tagName)) {
 
initialElement.focus();
 
 
//It was a tap, click the element.
 
var clickEvent = document.createEvent('MouseEvents');
 
clickEvent.initMouseEvent('click', true, true, e.view, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, 0, null);
 
initialElement.dispatchEvent(clickEvent);
 
}
 
 
return;
 
}
 
 
initialElement = undefined;
 
 
var speed = deltaY / deltaTime;
 
 
//Cap speed at 3 pixel/ms.
 
speed = Math.max(Math.min(speed, 3), -3);
 
 
var duration = Math.abs(speed / _mobileDeceleration);
 
var targetOffset = speed * duration + 0.5 * _mobileDeceleration * duration * duration;
 
var targetTop = _instance.getScrollTop() - targetOffset;
 
 
//Relative duration change for when scrolling above bounds.
 
var targetRatio = 0;
 
 
//Change duration proportionally when scrolling would leave bounds.
 
if(targetTop > _maxKeyFrame) {
 
targetRatio = (_maxKeyFrame - targetTop) / targetOffset;
 
 
targetTop = _maxKeyFrame;
 
} else if(targetTop < 0) {
 
targetRatio = -targetTop / targetOffset;
 
 
targetTop = 0;
 
}
 
 
duration = duration * (1 - targetRatio);
 
 
_instance.animateTo((targetTop + 0.5) | 0, {easing: 'outCubic', duration: duration});
 
break;
 
}
 
});
 
 
//Just in case there has already been some native scrolling, reset it.
 
window.scrollTo(0, 0);
 
documentElement.style.overflow = body.style.overflow = 'hidden';
 
};
 
 
/**
 
* Updates key frames which depend on others / need to be updated on resize.
 
* That is "end" in "absolute" mode and all key frames in "relative" mode.
 
* Also handles constants, because they may change on resize.
 
*/
 
var _updateDependentKeyFrames = function() {
 
var viewportHeight = documentElement.clientHeight;
 
var processedConstants = _processConstants();
 
var skrollable;
 
var element;
 
var anchorTarget;
 
var keyFrames;
 
var keyFrameIndex;
 
var keyFramesLength;
 
var kf;
 
var skrollableIndex;
 
var skrollablesLength;
 
var offset;
 
var constantValue;
 
 
//First process all relative-mode elements and find the max key frame.
 
skrollableIndex = 0;
 
skrollablesLength = _skrollables.length;
 
 
for(; skrollableIndex < skrollablesLength; skrollableIndex++) {
 
skrollable = _skrollables[skrollableIndex];
 
element = skrollable.element;
 
anchorTarget = skrollable.anchorTarget;
 
keyFrames = skrollable.keyFrames;
 
 
keyFrameIndex = 0;
 
keyFramesLength = keyFrames.length;
 
 
for(; keyFrameIndex < keyFramesLength; keyFrameIndex++) {
 
kf = keyFrames[keyFrameIndex];
 
 
offset = kf.offset;
 
constantValue = processedConstants[kf.constant] || 0;
 
 
kf.frame = offset;
 
 
if(kf.isPercentage) {
 
//Convert the offset to percentage of the viewport height.
 
offset = offset * viewportHeight;
 
 
//Absolute + percentage mode.
 
kf.frame = offset;
 
}
 
 
if(kf.mode === 'relative') {
 
_reset(element);
 
 
kf.frame = _instance.relativeToAbsolute(anchorTarget, kf.anchors[0], kf.anchors[1]) - offset;
 
 
_reset(element, true);
 
}
 
 
kf.frame += constantValue;
 
 
//Only search for max key frame when forceHeight is enabled.
 
if(_forceHeight) {
 
//Find the max key frame, but don't use one of the data-end ones for comparison.
 
if(!kf.isEnd && kf.frame > _maxKeyFrame) {
 
_maxKeyFrame = kf.frame;
 
}
 
}
 
}
 
}
 
 
//#133: The document can be larger than the maxKeyFrame we found.
 
_maxKeyFrame = Math.max(_maxKeyFrame, _getDocumentHeight());
 
 
//Now process all data-end keyframes.
 
skrollableIndex = 0;
 
skrollablesLength = _skrollables.length;
 
 
for(; skrollableIndex < skrollablesLength; skrollableIndex++) {
 
skrollable = _skrollables[skrollableIndex];
 
keyFrames = skrollable.keyFrames;
 
 
keyFrameIndex = 0;
 
keyFramesLength = keyFrames.length;
 
 
for(; keyFrameIndex < keyFramesLength; keyFrameIndex++) {
 
kf = keyFrames[keyFrameIndex];
 
 
constantValue = processedConstants[kf.constant] || 0;
 
 
if(kf.isEnd) {
 
kf.frame = _maxKeyFrame - kf.offset + constantValue;
 
}
 
}
 
 
skrollable.keyFrames.sort(_keyFrameComparator);
 
}
 
};
 
 
/**
 
* Calculates and sets the style properties for the element at the given frame.
 
* @param fakeFrame The frame to render at when smooth scrolling is enabled.
 
* @param actualFrame The actual frame we are at.
 
*/
 
var _calcSteps = function(fakeFrame, actualFrame) {
 
//Iterate over all skrollables.
 
var skrollableIndex = 0;
 
var skrollablesLength = _skrollables.length;
 
 
for(; skrollableIndex < skrollablesLength; skrollableIndex++) {
 
var skrollable = _skrollables[skrollableIndex];
 
var element = skrollable.element;
 
var frame = skrollable.smoothScrolling ? fakeFrame : actualFrame;
 
var frames = skrollable.keyFrames;
 
var firstFrame = frames[0].frame;
 
var lastFrame = frames[frames.length - 1].frame;
 
var beforeFirst = frame < firstFrame;
 
var afterLast = frame > lastFrame;
 
var firstOrLastFrame = frames[beforeFirst ? 0 : frames.length - 1];
 
var key;
 
var value;
 
 
//If we are before/after the first/last frame, set the styles according to the given edge strategy.
 
if(beforeFirst || afterLast) {
 
//Check if we already handled this edge case last time.
 
//Note: using setScrollTop it's possible that we jumped from one edge to the other.
 
if(beforeFirst && skrollable.edge === -1 || afterLast && skrollable.edge === 1) {
 
continue;
 
}
 
 
//Add the skrollr-before or -after class.
 
_updateClass(element, [beforeFirst ? SKROLLABLE_BEFORE_CLASS : SKROLLABLE_AFTER_CLASS], [SKROLLABLE_BEFORE_CLASS, SKROLLABLE_BETWEEN_CLASS, SKROLLABLE_AFTER_CLASS]);
 
 
//Remember that we handled the edge case (before/after the first/last keyframe).
 
skrollable.edge = beforeFirst ? -1 : 1;
 
 
switch(skrollable.edgeStrategy) {
 
case 'reset':
 
_reset(element);
 
continue;
 
case 'ease':
 
//Handle this case like it would be exactly at first/last keyframe and just pass it on.
 
frame = firstOrLastFrame.frame;
 
break;
 
default:
 
case 'set':
 
var props = firstOrLastFrame.props;
 
 
for(key in props) {
 
if(hasProp.call(props, key)) {
 
value = _interpolateString(props[key].value);
 
 
skrollr.setStyle(element, key, value);
 
}
 
}
 
 
continue;
 
}
 
} else {
 
//Did we handle an edge last time?
 
if(skrollable.edge !== 0) {
 
_updateClass(element, [SKROLLABLE_CLASS, SKROLLABLE_BETWEEN_CLASS], [SKROLLABLE_BEFORE_CLASS, SKROLLABLE_AFTER_CLASS]);
 
skrollable.edge = 0;
 
}
 
}
 
 
//Find out between which two key frames we are right now.
 
var keyFrameIndex = 0;
 
var framesLength = frames.length - 1;
 
 
for(; keyFrameIndex < framesLength; keyFrameIndex++) {
 
if(frame >= frames[keyFrameIndex].frame && frame <= frames[keyFrameIndex + 1].frame) {
 
var left = frames[keyFrameIndex];
 
var right = frames[keyFrameIndex + 1];
 
 
for(key in left.props) {
 
if(hasProp.call(left.props, key)) {
 
var progress = (frame - left.frame) / (right.frame - left.frame);
 
 
//Transform the current progress using the given easing function.
 
progress = left.props[key].easing(progress);
 
 
//Interpolate between the two values
 
value = _calcInterpolation(left.props[key].value, right.props[key].value, progress);
 
 
value = _interpolateString(value);
 
 
skrollr.setStyle(element, key, value);
 
}
 
}
 
 
break;
 
}
 
}
 
}
 
};
 
 
/**
 
* Renders all elements.
 
*/
 
var _render = function() {
 
if(_requestReflow) {
 
_requestReflow = false;
 
_reflow();
 
}
 
 
//We may render something else than the actual scrollbar position.
 
var renderTop = _instance.getScrollTop();
 
 
//If there's an animation, which ends in current render call, call the callback after rendering.
 
var afterAnimationCallback;
 
var now = _now();
 
var progress;
 
 
//Before actually rendering handle the scroll animation, if any.
 
if(_scrollAnimation) {
 
//It's over
 
if(now >= _scrollAnimation.endTime) {
 
renderTop = _scrollAnimation.targetTop;
 
afterAnimationCallback = _scrollAnimation.done;
 
_scrollAnimation = undefined;
 
} else {
 
//Map the current progress to the new progress using given easing function.
 
progress = _scrollAnimation.easing((now - _scrollAnimation.startTime) / _scrollAnimation.duration);
 
 
renderTop = (_scrollAnimation.startTop + progress * _scrollAnimation.topDiff) | 0;
 
}
 
 
_instance.setScrollTop(renderTop, true);
 
}
 
//Smooth scrolling only if there's no animation running and if we're not forcing the rendering.
 
else if(!_forceRender) {
 
var smoothScrollingDiff = _smoothScrolling.targetTop - renderTop;
 
 
//The user scrolled, start new smooth scrolling.
 
if(smoothScrollingDiff) {
 
_smoothScrolling = {
 
startTop: _lastTop,
 
topDiff: renderTop - _lastTop,
 
targetTop: renderTop,
 
startTime: _lastRenderCall,
 
endTime: _lastRenderCall + _smoothScrollingDuration
 
};
 
}
 
 
//Interpolate the internal scroll position (not the actual scrollbar).
 
if(now <= _smoothScrolling.endTime) {
 
//Map the current progress to the new progress using easing function.
 
progress = easings.sqrt((now - _smoothScrolling.startTime) / _smoothScrollingDuration);
 
 
renderTop = (_smoothScrolling.startTop + progress * _smoothScrolling.topDiff) | 0;
 
}
 
}
 
 
//That's were we actually "scroll" on mobile.
 
if(_isMobile && _skrollrBody) {
 
//Set the transform ("scroll it").
 
skrollr.setStyle(_skrollrBody, 'transform', 'translate(0, ' + -(_mobileOffset) + 'px) ' + _translateZ);
 
}
 
 
//Did the scroll position even change?
 
if(_forceRender || _lastTop !== renderTop) {
 
//Remember in which direction are we scrolling?
 
_direction = (renderTop > _lastTop) ? 'down' : (renderTop < _lastTop ? 'up' : _direction);
 
 
_forceRender = false;
 
 
var listenerParams = {
 
curTop: renderTop,
 
lastTop: _lastTop,
 
maxTop: _maxKeyFrame,
 
direction: _direction
 
};
 
 
//Tell the listener we are about to render.
 
var continueRendering = _listeners.beforerender && _listeners.beforerender.call(_instance, listenerParams);
 
 
//The beforerender listener function is able the cancel rendering.
 
if(continueRendering !== false) {
 
//Now actually interpolate all the styles.
 
_calcSteps(renderTop, _instance.getScrollTop());
 
 
//Remember when we last rendered.
 
_lastTop = renderTop;
 
 
if(_listeners.render) {
 
_listeners.render.call(_instance, listenerParams);
 
}
 
}
 
 
if(afterAnimationCallback) {
 
afterAnimationCallback.call(_instance, false);
 
}
 
}
 
 
_lastRenderCall = now;
 
};
 
 
/**
 
* Parses the properties for each key frame of the given skrollable.
 
*/
 
var _parseProps = function(skrollable) {
 
//Iterate over all key frames
 
var keyFrameIndex = 0;
 
var keyFramesLength = skrollable.keyFrames.length;
 
 
for(; keyFrameIndex < keyFramesLength; keyFrameIndex++) {
 
var frame = skrollable.keyFrames[keyFrameIndex];
 
var easing;
 
var value;
 
var prop;
 
var props = {};
 
 
var match;
 
 
while((match = rxPropValue.exec(frame.props)) !== null) {
 
prop = match[1];
 
value = match[2];
 
 
easing = prop.match(rxPropEasing);
 
 
//Is there an easing specified for this prop?
 
if(easing !== null) {
 
prop = easing[1];
 
easing = easing[2];
 
} else {
 
easing = DEFAULT_EASING;
 
}
 
 
//Exclamation point at first position forces the value to be taken literal.
 
value = value.indexOf('!') ? _parseProp(value) : [value.slice(1)];
 
 
//Save the prop for this key frame with his value and easing function
 
props[prop] = {
 
value: value,
 
easing: easings[easing]
 
};
 
}
 
 
frame.props = props;
 
}
 
};
 
 
/**
 
* Parses a value extracting numeric values and generating a format string
 
* for later interpolation of the new values in old string.
 
*
 
* @param val The CSS value to be parsed.
 
* @return Something like ["rgba(?%,?%, ?%,?)", 100, 50, 0, .7]
 
* where the first element is the format string later used
 
* and all following elements are the numeric value.
 
*/
 
var _parseProp = function(val) {
 
var numbers = [];
 
 
//One special case, where floats don't work.
 
//We replace all occurences of rgba colors
 
//which don't use percentage notation with the percentage notation.
 
rxRGBAIntegerColor.lastIndex = 0;
 
val = val.replace(rxRGBAIntegerColor, function(rgba) {
 
return rgba.replace(rxNumericValue, function(n) {
 
return n / 255 * 100 + '%';
 
});
 
});
 
 
//Handle prefixing of "gradient" values.
 
//For now only the prefixed value will be set. Unprefixed isn't supported anyway.
 
if(theDashedCSSPrefix) {
 
rxGradient.lastIndex = 0;
 
val = val.replace(rxGradient, function(s) {
 
return theDashedCSSPrefix + s;
 
});
 
}
 
 
//Now parse ANY number inside this string and create a format string.
 
val = val.replace(rxNumericValue, function(n) {
 
numbers.push(+n);
 
return '{?}';
 
});
 
 
//Add the formatstring as first value.
 
numbers.unshift(val);
 
 
return numbers;
 
};
 
 
/**
 
* Fills the key frames with missing left and right hand properties.
 
* If key frame 1 has property X and key frame 2 is missing X,
 
* but key frame 3 has X again, then we need to assign X to key frame 2 too.
 
*
 
* @param sk A skrollable.
 
*/
 
var _fillProps = function(sk) {
 
//Will collect the properties key frame by key frame
 
var propList = {};
 
var keyFrameIndex;
 
var keyFramesLength;
 
 
//Iterate over all key frames from left to right
 
keyFrameIndex = 0;
 
keyFramesLength = sk.keyFrames.length;
 
 
for(; keyFrameIndex < keyFramesLength; keyFrameIndex++) {
 
_fillPropForFrame(sk.keyFrames[keyFrameIndex], propList);
 
}
 
 
//Now do the same from right to fill the last gaps
 
 
propList = {};
 
 
//Iterate over all key frames from right to left
 
keyFrameIndex = sk.keyFrames.length - 1;
 
 
for(; keyFrameIndex >= 0; keyFrameIndex--) {
 
_fillPropForFrame(sk.keyFrames[keyFrameIndex], propList);
 
}
 
};
 
 
var _fillPropForFrame = function(frame, propList) {
 
var key;
 
 
//For each key frame iterate over all right hand properties and assign them,
 
//but only if the current key frame doesn't have the property by itself
 
for(key in propList) {
 
//The current frame misses this property, so assign it.
 
if(!hasProp.call(frame.props, key)) {
 
frame.props[key] = propList[key];
 
}
 
}
 
 
//Iterate over all props of the current frame and collect them
 
for(key in frame.props) {
 
propList[key] = frame.props[key];
 
}
 
};
 
 
/**
 
* Calculates the new values for two given values array.
 
*/
 
var _calcInterpolation = function(val1, val2, progress) {
 
var valueIndex;
 
var val1Length = val1.length;
 
 
//They both need to have the same length
 
if(val1Length !== val2.length) {
 
throw 'Can\'t interpolate between "' + val1[0] + '" and "' + val2[0] + '"';
 
}
 
 
//Add the format string as first element.
 
var interpolated = [val1[0]];
 
 
valueIndex = 1;
 
 
for(; valueIndex < val1Length; valueIndex++) {
 
//That's the line where the two numbers are actually interpolated.
 
interpolated[valueIndex] = val1[valueIndex] + ((val2[valueIndex] - val1[valueIndex]) * progress);
 
}
 
 
return interpolated;
 
};
 
 
/**
 
* Interpolates the numeric values into the format string.
 
*/
 
var _interpolateString = function(val) {
 
var valueIndex = 1;
 
 
rxInterpolateString.lastIndex = 0;
 
 
return val[0].replace(rxInterpolateString, function() {
 
return val[valueIndex++];
 
});
 
};
 
 
/**
 
* Resets the class and style attribute to what it was before skrollr manipulated the element.
 
* Also remembers the values it had before reseting, in order to undo the reset.
 
*/
 
var _reset = function(elements, undo) {
 
//We accept a single element or an array of elements.
 
elements = [].concat(elements);
 
 
var skrollable;
 
var element;
 
var elementsIndex = 0;
 
var elementsLength = elements.length;
 
 
for(; elementsIndex < elementsLength; elementsIndex++) {
 
element = elements[elementsIndex];
 
skrollable = _skrollables[element[SKROLLABLE_ID_DOM_PROPERTY]];
 
 
//Couldn't find the skrollable for this DOM element.
 
if(!skrollable) {
 
continue;
 
}
 
 
if(undo) {
 
//Reset class and style to the "dirty" (set by skrollr) values.
 
element.style.cssText = skrollable.dirtyStyleAttr;
 
_updateClass(element, skrollable.dirtyClassAttr);
 
} else {
 
//Remember the "dirty" (set by skrollr) class and style.
 
skrollable.dirtyStyleAttr = element.style.cssText;
 
skrollable.dirtyClassAttr = _getClass(element);
 
 
//Reset class and style to what it originally was.
 
element.style.cssText = skrollable.styleAttr;
 
_updateClass(element, skrollable.classAttr);
 
}
 
}
 
};
 
 
/**
 
* Detects support for 3d transforms by applying it to the skrollr-body.
 
*/
 
var _detect3DTransforms = function() {
 
_translateZ = 'translateZ(0)';
 
skrollr.setStyle(_skrollrBody, 'transform', _translateZ);
 
 
var computedStyle = getStyle(_skrollrBody);
 
var computedTransform = computedStyle.getPropertyValue('transform');
 
var computedTransformWithPrefix = computedStyle.getPropertyValue(theDashedCSSPrefix + 'transform');
 
var has3D = (computedTransform && computedTransform !== 'none') || (computedTransformWithPrefix && computedTransformWithPrefix !== 'none');
 
 
if(!has3D) {
 
_translateZ = '';
 
}
 
};
 
 
/**
 
* Set the CSS property on the given element. Sets prefixed properties as well.
 
*/
 
skrollr.setStyle = function(el, prop, val) {
 
var style = el.style;
 
 
//Camel case.
 
prop = prop.replace(rxCamelCase, rxCamelCaseFn).replace('-', '');
 
 
//Make sure z-index gets a <integer>.
 
//This is the only <integer> case we need to handle.
 
if(prop === 'zIndex') {
 
if(isNaN(val)) {
 
//If it's not a number, don't touch it.
 
//It could for example be "auto" (#351).
 
style[prop] = val;
 
} else {
 
//Floor the number.
 
style[prop] = '' + (val | 0);
 
}
 
}
 
//#64: "float" can't be set across browsers. Needs to use "cssFloat" for all except IE.
 
else if(prop === 'float') {
 
style.styleFloat = style.cssFloat = val;
 
}
 
else {
 
//Need try-catch for old IE.
 
try {
 
//Set prefixed property if there's a prefix.
 
if(theCSSPrefix) {
 
style[theCSSPrefix + prop.slice(0,1).toUpperCase() + prop.slice(1)] = val;
 
}
 
 
//Set unprefixed.
 
style[prop] = val;
 
} catch(ignore) {}
 
}
 
};
 
 
/**
 
* Cross browser event handling.
 
*/
 
var _addEvent = skrollr.addEvent = function(element, names, callback) {
 
var intermediate = function(e) {
 
//Normalize IE event stuff.
 
e = e || window.event;
 
 
if(!e.target) {
 
e.target = e.srcElement;
 
}
 
 
if(!e.preventDefault) {
 
e.preventDefault = function() {
 
e.returnValue = false;
 
};
 
}
 
 
return callback.call(this, e);
 
};
 
 
names = names.split(' ');
 
 
var name;
 
var nameCounter = 0;
 
var namesLength = names.length;
 
 
for(; nameCounter < namesLength; nameCounter++) {
 
name = names[nameCounter];
 
 
if(element.addEventListener) {
 
element.addEventListener(name, callback, false);
 
} else {
 
element.attachEvent('on' + name, intermediate);
 
}
 
 
//Remember the events to be able to flush them later.
 
_registeredEvents.push({
 
element: element,
 
name: name,
 
listener: callback
 
});
 
}
 
};
 
 
var _removeEvent = skrollr.removeEvent = function(element, names, callback) {
 
names = names.split(' ');
 
 
var nameCounter = 0;
 
var namesLength = names.length;
 
 
for(; nameCounter < namesLength; nameCounter++) {
 
if(element.removeEventListener) {
 
element.removeEventListener(names[nameCounter], callback, false);
 
} else {
 
element.detachEvent('on' + names[nameCounter], callback);
 
}
 
}
 
};
 
 
var _removeAllEvents = function() {
 
var eventData;
 
var eventCounter = 0;
 
var eventsLength = _registeredEvents.length;
 
 
for(; eventCounter < eventsLength; eventCounter++) {
 
eventData = _registeredEvents[eventCounter];
 
 
_removeEvent(eventData.element, eventData.name, eventData.listener);
 
}
 
 
_registeredEvents = [];
 
};
 
 
var _reflow = function() {
 
var pos = _instance.getScrollTop();
 
 
//Will be recalculated by _updateDependentKeyFrames.
 
_maxKeyFrame = 0;
 
 
if(_forceHeight && !_isMobile) {
 
//un-"force" the height to not mess with the calculations in _updateDependentKeyFrames (#216).
 
body.style.height = 'auto';
 
}
 
 
_updateDependentKeyFrames();
 
 
if(_forceHeight && !_isMobile) {
 
//"force" the height.
 
body.style.height = (_maxKeyFrame + documentElement.clientHeight) + 'px';
 
}
 
 
//The scroll offset may now be larger than needed (on desktop the browser/os prevents scrolling farther than the bottom).
 
if(_isMobile) {
 
_instance.setScrollTop(Math.min(_instance.getScrollTop(), _maxKeyFrame));
 
} else {
 
//Remember and reset the scroll pos (#217).
 
_instance.setScrollTop(pos, true);
 
}
 
 
_forceRender = true;
 
};
 
 
/*
 
* Returns a copy of the constants object where all functions and strings have been evaluated.
 
*/
 
var _processConstants = function() {
 
var viewportHeight = documentElement.clientHeight;
 
var copy = {};
 
var prop;
 
var value;
 
 
for(prop in _constants) {
 
value = _constants[prop];
 
 
if(typeof value === 'function') {
 
value = value.call(_instance);
 
}
 
//Percentage offset.
 
else if((/p$/).test(value)) {
 
value = (value.slice(0, -1) / 100) * viewportHeight;
 
}
 
 
copy[prop] = value;
 
}
 
 
return copy;
 
};
 
 
/*
 
* Returns the height of the document.
 
*/
 
var _getDocumentHeight = function() {
 
var skrollrBodyHeight = (_skrollrBody && _skrollrBody.offsetHeight || 0);
 
var bodyHeight = Math.max(skrollrBodyHeight, body.scrollHeight, body.offsetHeight, documentElement.scrollHeight, documentElement.offsetHeight, documentElement.clientHeight);
 
 
return bodyHeight - documentElement.clientHeight;
 
};
 
 
/**
 
* Returns a string of space separated classnames for the current element.
 
* Works with SVG as well.
 
*/
 
var _getClass = function(element) {
 
var prop = 'className';
 
 
//SVG support by using className.baseVal instead of just className.
 
if(window.SVGElement && element instanceof window.SVGElement) {
 
element = element[prop];
 
prop = 'baseVal';
 
}
 
 
return element[prop];
 
};
 
 
/**
 
* Adds and removes a CSS classes.
 
* Works with SVG as well.
 
* add and remove are arrays of strings,
 
* or if remove is ommited add is a string and overwrites all classes.
 
*/
 
var _updateClass = function(element, add, remove) {
 
var prop = 'className';
 
 
//SVG support by using className.baseVal instead of just className.
 
if(window.SVGElement && element instanceof window.SVGElement) {
 
element = element[prop];
 
prop = 'baseVal';
 
}
 
 
//When remove is ommited, we want to overwrite/set the classes.
 
if(remove === undefined) {
 
element[prop] = add;
 
return;
 
}
 
 
//Cache current classes. We will work on a string before passing back to DOM.
 
var val = element[prop];
 
 
//All classes to be removed.
 
var classRemoveIndex = 0;
 
var removeLength = remove.length;
 
 
for(; classRemoveIndex < removeLength; classRemoveIndex++) {
 
val = _untrim(val).replace(_untrim(remove[classRemoveIndex]), ' ');
 
}
 
 
val = _trim(val);
 
 
//All classes to be added.
 
var classAddIndex = 0;
 
var addLength = add.length;
 
 
for(; classAddIndex < addLength; classAddIndex++) {
 
//Only add if el not already has class.
 
if(_untrim(val).indexOf(_untrim(add[classAddIndex])) === -1) {
 
val += ' ' + add[classAddIndex];
 
}
 
}
 
 
element[prop] = _trim(val);
 
};
 
 
var _trim = function(a) {
 
return a.replace(rxTrim, '');
 
};
 
 
/**
 
* Adds a space before and after the string.
 
*/
 
var _untrim = function(a) {
 
return ' ' + a + ' ';
 
};
 
 
var _now = Date.now || function() {
 
return +new Date();
 
};
 
 
var _keyFrameComparator = function(a, b) {
 
return a.frame - b.frame;
 
};
 
 
/*
 
* Private variables.
 
*/
 
 
//Singleton
 
var _instance;
 
 
/*
 
A list of all elements which should be animated associated with their the metadata.
 
Exmaple skrollable with two key frames animating from 100px width to 20px:
 
 
skrollable = {
 
element: <the DOM element>,
 
styleAttr: <style attribute of the element before skrollr>,
 
classAttr: <class attribute of the element before skrollr>,
 
keyFrames: [
 
{
 
frame: 100,
 
props: {
 
width: {
 
value: ['{?}px', 100],
 
easing: <reference to easing function>
 
}
 
},
 
mode: "absolute"
 
},
 
{
 
frame: 200,
 
props: {
 
width: {
 
value: ['{?}px', 20],
 
easing: <reference to easing function>
 
}
 
},
 
mode: "absolute"
 
}
 
]
 
};
 
*/
 
var _skrollables;
 
 
var _skrollrBody;
 
 
var _listeners;
 
var _forceHeight;
 
var _maxKeyFrame = 0;
 
 
var _scale = 1;
 
var _constants;
 
 
var _mobileDeceleration;
 
 
//Current direction (up/down).
 
var _direction = 'down';
 
 
//The last top offset value. Needed to determine direction.
 
var _lastTop = -1;
 
 
//The last time we called the render method (doesn't mean we rendered!).
 
var _lastRenderCall = _now();
 
 
//For detecting if it actually resized (#271).
 
var _lastViewportWidth = 0;
 
var _lastViewportHeight = 0;
 
 
var _requestReflow = false;
 
 
//Will contain data about a running scrollbar animation, if any.
 
var _scrollAnimation;
 
 
var _smoothScrollingEnabled;
 
 
var _smoothScrollingDuration;
 
 
//Will contain settins for smooth scrolling if enabled.
 
var _smoothScrolling;
 
 
//Can be set by any operation/event to force rendering even if the scrollbar didn't move.
 
var _forceRender;
 
 
//Each skrollable gets an unique ID incremented for each skrollable.
 
//The ID is the index in the _skrollables array.
 
var _skrollableIdCounter = 0;
 
 
var _edgeStrategy;
 
 
 
//Mobile specific vars. Will be stripped by UglifyJS when not in use.
 
var _isMobile = false;
 
 
//The virtual scroll offset when using mobile scrolling.
 
var _mobileOffset = 0;
 
 
//If the browser supports 3d transforms, this will be filled with 'translateZ(0)' (empty string otherwise).
 
var _translateZ;
 
 
//Will contain data about registered events by skrollr.
 
var _registeredEvents = [];
 
 
//Animation frame id returned by RequestAnimationFrame (or timeout when RAF is not supported).
 
var _animFrame;
 
}(window, document));</script>
 
<script type="text/javascript">/*!
 
* imagesLoaded PACKAGED v3.0.4
 
* JavaScript is all like "You images are done yet or what?"
 
* MIT License
 
*/
 
 
 
/*!
 
* EventEmitter v4.2.4 - git.io/ee
 
* Oliver Caldwell
 
* MIT license
 
* @preserve
 
*/
 
 
(function () {
 
 
 
/**
 
* Class for managing events.
 
* Can be extended to provide event functionality in other classes.
 
*
 
* @class EventEmitter Manages event registering and emitting.
 
*/
 
function EventEmitter() {}
 
 
// Shortcuts to improve speed and size
 
 
// Easy access to the prototype
 
var proto = EventEmitter.prototype;
 
 
/**
 
* Finds the index of the listener for the event in it's storage array.
 
*
 
* @param {Function[]} listeners Array of listeners to search through.
 
* @param {Function} listener Method to look for.
 
* @return {Number} Index of the specified listener, -1 if not found
 
* @api private
 
*/
 
function indexOfListener(listeners, listener) {
 
var i = listeners.length;
 
while (i--) {
 
if (listeners[i].listener === listener) {
 
return i;
 
}
 
}
 
 
return -1;
 
}
 
 
/**
 
* Alias a method while keeping the context correct, to allow for overwriting of target method.
 
*
 
* @param {String} name The name of the target method.
 
* @return {Function} The aliased method
 
* @api private
 
*/
 
function alias(name) {
 
return function aliasClosure() {
 
return this[name].apply(this, arguments);
 
};
 
}
 
 
/**
 
* Returns the listener array for the specified event.
 
* Will initialise the event object and listener arrays if required.
 
* Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.
 
* Each property in the object response is an array of listener functions.
 
*
 
* @param {String|RegExp} evt Name of the event to return the listeners from.
 
* @return {Function[]|Object} All listener functions for the event.
 
*/
 
proto.getListeners = function getListeners(evt) {
 
var events = this._getEvents();
 
var response;
 
var key;
 
 
// Return a concatenated array of all matching events if
 
// the selector is a regular expression.
 
if (typeof evt === 'object') {
 
response = {};
 
for (key in events) {
 
if (events.hasOwnProperty(key) && evt.test(key)) {
 
response[key] = events[key];
 
}
 
}
 
}
 
else {
 
response = events[evt] || (events[evt] = []);
 
}
 
 
return response;
 
};
 
 
/**
 
* Takes a list of listener objects and flattens it into a list of listener functions.
 
*
 
* @param {Object[]} listeners Raw listener objects.
 
* @return {Function[]} Just the listener functions.
 
*/
 
proto.flattenListeners = function flattenListeners(listeners) {
 
var flatListeners = [];
 
var i;
 
 
for (i = 0; i < listeners.length; i += 1) {
 
flatListeners.push(listeners[i].listener);
 
}
 
 
return flatListeners;
 
};
 
 
/**
 
* Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.
 
*
 
* @param {String|RegExp} evt Name of the event to return the listeners from.
 
* @return {Object} All listener functions for an event in an object.
 
*/
 
proto.getListenersAsObject = function getListenersAsObject(evt) {
 
var listeners = this.getListeners(evt);
 
var response;
 
 
if (listeners instanceof Array) {
 
response = {};
 
response[evt] = listeners;
 
}
 
 
return response || listeners;
 
};
 
 
/**
 
* Adds a listener function to the specified event.
 
* The listener will not be added if it is a duplicate.
 
* If the listener returns true then it will be removed after it is called.
 
* If you pass a regular expression as the event name then the listener will be added to all events that match it.
 
*
 
* @param {String|RegExp} evt Name of the event to attach the listener to.
 
* @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.
 
* @return {Object} Current instance of EventEmitter for chaining.
 
*/
 
proto.addListener = function addListener(evt, listener) {
 
var listeners = this.getListenersAsObject(evt);
 
var listenerIsWrapped = typeof listener === 'object';
 
var key;
 
 
for (key in listeners) {
 
if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {
 
listeners[key].push(listenerIsWrapped ? listener : {
 
listener: listener,
 
once: false
 
});
 
}
 
}
 
 
return this;
 
};
 
 
/**
 
* Alias of addListener
 
*/
 
proto.on = alias('addListener');
 
 
/**
 
* Semi-alias of addListener. It will add a listener that will be
 
* automatically removed after it's first execution.
 
*
 
* @param {String|RegExp} evt Name of the event to attach the listener to.
 
* @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.
 
* @return {Object} Current instance of EventEmitter for chaining.
 
*/
 
proto.addOnceListener = function addOnceListener(evt, listener) {
 
return this.addListener(evt, {
 
listener: listener,
 
once: true
 
});
 
};
 
 
/**
 
* Alias of addOnceListener.
 
*/
 
proto.once = alias('addOnceListener');
 
 
/**
 
* Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.
 
* You need to tell it what event names should be matched by a regex.
 
*
 
* @param {String} evt Name of the event to create.
 
* @return {Object} Current instance of EventEmitter for chaining.
 
*/
 
proto.defineEvent = function defineEvent(evt) {
 
this.getListeners(evt);
 
return this;
 
};
 
 
/**
 
* Uses defineEvent to define multiple events.
 
*
 
* @param {String[]} evts An array of event names to define.
 
* @return {Object} Current instance of EventEmitter for chaining.
 
*/
 
proto.defineEvents = function defineEvents(evts) {
 
for (var i = 0; i < evts.length; i += 1) {
 
this.defineEvent(evts[i]);
 
}
 
return this;
 
};
 
 
/**
 
* Removes a listener function from the specified event.
 
* When passed a regular expression as the event name, it will remove the listener from all events that match it.
 
*
 
* @param {String|RegExp} evt Name of the event to remove the listener from.
 
* @param {Function} listener Method to remove from the event.
 
* @return {Object} Current instance of EventEmitter for chaining.
 
*/
 
proto.removeListener = function removeListener(evt, listener) {
 
var listeners = this.getListenersAsObject(evt);
 
var index;
 
var key;
 
 
for (key in listeners) {
 
if (listeners.hasOwnProperty(key)) {
 
index = indexOfListener(listeners[key], listener);
 
 
if (index !== -1) {
 
listeners[key].splice(index, 1);
 
}
 
}
 
}
 
 
return this;
 
};
 
 
/**
 
* Alias of removeListener
 
*/
 
proto.off = alias('removeListener');
 
 
/**
 
* Adds listeners in bulk using the manipulateListeners method.
 
* If you pass an object as the second argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.
 
* You can also pass it a regular expression to add the array of listeners to all events that match it.
 
* Yeah, this function does quite a bit. That's probably a bad thing.
 
*
 
* @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.
 
* @param {Function[]} [listeners] An optional array of listener functions to add.
 
* @return {Object} Current instance of EventEmitter for chaining.
 
*/
 
proto.addListeners = function addListeners(evt, listeners) {
 
// Pass through to manipulateListeners
 
return this.manipulateListeners(false, evt, listeners);
 
};
 
 
/**
 
* Removes listeners in bulk using the manipulateListeners method.
 
* If you pass an object as the second argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.
 
* You can also pass it an event name and an array of listeners to be removed.
 
* You can also pass it a regular expression to remove the listeners from all events that match it.
 
*
 
* @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.
 
* @param {Function[]} [listeners] An optional array of listener functions to remove.
 
* @return {Object} Current instance of EventEmitter for chaining.
 
*/
 
proto.removeListeners = function removeListeners(evt, listeners) {
 
// Pass through to manipulateListeners
 
return this.manipulateListeners(true, evt, listeners);
 
};
 
 
/**
 
* Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.
 
* The first argument will determine if the listeners are removed (true) or added (false).
 
* If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.
 
* You can also pass it an event name and an array of listeners to be added/removed.
 
* You can also pass it a regular expression to manipulate the listeners of all events that match it.
 
*
 
* @param {Boolean} remove True if you want to remove listeners, false if you want to add.
 
* @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.
 
* @param {Function[]} [listeners] An optional array of listener functions to add/remove.
 
* @return {Object} Current instance of EventEmitter for chaining.
 
*/
 
proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {
 
var i;
 
var value;
 
var single = remove ? this.removeListener : this.addListener;
 
var multiple = remove ? this.removeListeners : this.addListeners;
 
 
// If evt is an object then pass each of it's properties to this method
 
if (typeof evt === 'object' && !(evt instanceof RegExp)) {
 
for (i in evt) {
 
if (evt.hasOwnProperty(i) && (value = evt[i])) {
 
// Pass the single listener straight through to the singular method
 
if (typeof value === 'function') {
 
single.call(this, i, value);
 
}
 
else {
 
// Otherwise pass back to the multiple function
 
multiple.call(this, i, value);
 
}
 
}
 
}
 
}
 
else {
 
// So evt must be a string
 
// And listeners must be an array of listeners
 
// Loop over it and pass each one to the multiple method
 
i = listeners.length;
 
while (i--) {
 
single.call(this, evt, listeners[i]);
 
}
 
}
 
 
return this;
 
};
 
 
/**
 
* Removes all listeners from a specified event.
 
* If you do not specify an event then all listeners will be removed.
 
* That means every event will be emptied.
 
* You can also pass a regex to remove all events that match it.
 
*
 
* @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.
 
* @return {Object} Current instance of EventEmitter for chaining.
 
*/
 
proto.removeEvent = function removeEvent(evt) {
 
var type = typeof evt;
 
var events = this._getEvents();
 
var key;
 
 
// Remove different things depending on the state of evt
 
if (type === 'string') {
 
// Remove all listeners for the specified event
 
delete events[evt];
 
}
 
else if (type === 'object') {
 
// Remove all events matching the regex.
 
for (key in events) {
 
if (events.hasOwnProperty(key) && evt.test(key)) {
 
delete events[key];
 
}
 
}
 
}
 
else {
 
// Remove all listeners in all events
 
delete this._events;
 
}
 
 
return this;
 
};
 
 
/**
 
* Alias of removeEvent.
 
*
 
* Added to mirror the node API.
 
*/
 
proto.removeAllListeners = alias('removeEvent');
 
 
/**
 
* Emits an event of your choice.
 
* When emitted, every listener attached to that event will be executed.
 
* If you pass the optional argument array then those arguments will be passed to every listener upon execution.
 
* Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.
 
* So they will not arrive within the array on the other side, they will be separate.
 
* You can also pass a regular expression to emit to all events that match it.
 
*
 
* @param {String|RegExp} evt Name of the event to emit and execute listeners for.
 
* @param {Array} [args] Optional array of arguments to be passed to each listener.
 
* @return {Object} Current instance of EventEmitter for chaining.
 
*/
 
proto.emitEvent = function emitEvent(evt, args) {
 
var listeners = this.getListenersAsObject(evt);
 
var listener;
 
var i;
 
var key;
 
var response;
 
 
for (key in listeners) {
 
if (listeners.hasOwnProperty(key)) {
 
i = listeners[key].length;
 
 
while (i--) {
 
// If the listener returns true then it shall be removed from the event
 
// The function is executed either with a basic call or an apply if there is an args array
 
listener = listeners[key][i];
 
 
if (listener.once === true) {
 
this.removeListener(evt, listener.listener);
 
}
 
 
response = listener.listener.apply(this, args || []);
 
 
if (response === this._getOnceReturnValue()) {
 
this.removeListener(evt, listener.listener);
 
}
 
}
 
}
 
}
 
 
return this;
 
};
 
 
/**
 
* Alias of emitEvent
 
*/
 
proto.trigger = alias('emitEvent');
 
 
/**
 
* Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.
 
* As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.
 
*
 
* @param {String|RegExp} evt Name of the event to emit and execute listeners for.
 
* @param {...*} Optional additional arguments to be passed to each listener.
 
* @return {Object} Current instance of EventEmitter for chaining.
 
*/
 
proto.emit = function emit(evt) {
 
var args = Array.prototype.slice.call(arguments, 1);
 
return this.emitEvent(evt, args);
 
};
 
 
/**
 
* Sets the current value to check against when executing listeners. If a
 
* listeners return value matches the one set here then it will be removed
 
* after execution. This value defaults to true.
 
*
 
* @param {*} value The new value to check for when executing listeners.
 
* @return {Object} Current instance of EventEmitter for chaining.
 
*/
 
proto.setOnceReturnValue = function setOnceReturnValue(value) {
 
this._onceReturnValue = value;
 
return this;
 
};
 
 
/**
 
* Fetches the current value to check against when executing listeners. If
 
* the listeners return value matches this one then it should be removed
 
* automatically. It will return true by default.
 
*
 
* @return {*|Boolean} The current value to check for or the default, true.
 
* @api private
 
*/
 
proto._getOnceReturnValue = function _getOnceReturnValue() {
 
if (this.hasOwnProperty('_onceReturnValue')) {
 
return this._onceReturnValue;
 
}
 
else {
 
return true;
 
}
 
};
 
 
/**
 
* Fetches the events object and creates one if required.
 
*
 
* @return {Object} The events storage object.
 
* @api private
 
*/
 
proto._getEvents = function _getEvents() {
 
return this._events || (this._events = {});
 
};
 
 
// Expose the class either via AMD, CommonJS or the global object
 
if (typeof define === 'function' && define.amd) {
 
define('eventEmitter/EventEmitter',[],function () {
 
return EventEmitter;
 
});
 
}
 
else if (typeof module === 'object' && module.exports){
 
module.exports = EventEmitter;
 
}
 
else {
 
this.EventEmitter = EventEmitter;
 
}
 
}.call(this));
 
 
/*!
 
* eventie v1.0.3
 
* event binding helper
 
*  eventie.bind( elem, 'click', myFn )
 
*  eventie.unbind( elem, 'click', myFn )
 
*/
 
 
/*jshint browser: true, undef: true, unused: true */
 
/*global define: false */
 
 
( function( window ) {
 
 
 
 
var docElem = document.documentElement;
 
 
var bind = function() {};
 
 
if ( docElem.addEventListener ) {
 
  bind = function( obj, type, fn ) {
 
    obj.addEventListener( type, fn, false );
 
  };
 
} else if ( docElem.attachEvent ) {
 
  bind = function( obj, type, fn ) {
 
    obj[ type + fn ] = fn.handleEvent ?
 
      function() {
 
        var event = window.event;
 
        // add event.target
 
        event.target = event.target || event.srcElement;
 
        fn.handleEvent.call( fn, event );
 
      } :
 
      function() {
 
        var event = window.event;
 
        // add event.target
 
        event.target = event.target || event.srcElement;
 
        fn.call( obj, event );
 
      };
 
    obj.attachEvent( "on" + type, obj[ type + fn ] );
 
  };
 
}
 
 
var unbind = function() {};
 
 
if ( docElem.removeEventListener ) {
 
  unbind = function( obj, type, fn ) {
 
    obj.removeEventListener( type, fn, false );
 
  };
 
} else if ( docElem.detachEvent ) {
 
  unbind = function( obj, type, fn ) {
 
    obj.detachEvent( "on" + type, obj[ type + fn ] );
 
    try {
 
      delete obj[ type + fn ];
 
    } catch ( err ) {
 
      // can't delete window object properties
 
      obj[ type + fn ] = undefined;
 
    }
 
  };
 
}
 
 
var eventie = {
 
  bind: bind,
 
  unbind: unbind
 
};
 
 
// transport
 
if ( typeof define === 'function' && define.amd ) {
 
  // AMD
 
  define( 'eventie/eventie',eventie );
 
} else {
 
  // browser global
 
  window.eventie = eventie;
 
}
 
 
})( this );
 
 
/*!
 
* imagesLoaded v3.0.4
 
* JavaScript is all like "You images are done yet or what?"
 
* MIT License
 
*/
 
 
( function( window ) {
 
 
 
 
var $ = window.jQuery;
 
var console = window.console;
 
var hasConsole = typeof console !== 'undefined';
 
 
// -------------------------- helpers -------------------------- //
 
 
// extend objects
 
function extend( a, b ) {
 
  for ( var prop in b ) {
 
    a[ prop ] = b[ prop ];
 
  }
 
  return a;
 
}
 
 
var objToString = Object.prototype.toString;
 
function isArray( obj ) {
 
  return objToString.call( obj ) === '[object Array]';
 
}
 
 
// turn element or nodeList into an array
 
function makeArray( obj ) {
 
  var ary = [];
 
  if ( isArray( obj ) ) {
 
    // use object if already an array
 
    ary = obj;
 
  } else if ( typeof obj.length === 'number' ) {
 
    // convert nodeList to array
 
    for ( var i=0, len = obj.length; i < len; i++ ) {
 
      ary.push( obj[i] );
 
    }
 
  } else {
 
    // array of single index
 
    ary.push( obj );
 
  }
 
  return ary;
 
}
 
 
// --------------------------  -------------------------- //
 
 
function defineImagesLoaded( EventEmitter, eventie ) {
 
 
  /**
 
  * @param {Array, Element, NodeList, String} elem
 
  * @param {Object or Function} options - if function, use as callback
 
  * @param {Function} onAlways - callback function
 
  */
 
  function ImagesLoaded( elem, options, onAlways ) {
 
    // coerce ImagesLoaded() without new, to be new ImagesLoaded()
 
    if ( !( this instanceof ImagesLoaded ) ) {
 
      return new ImagesLoaded( elem, options );
 
    }
 
    // use elem as selector string
 
    if ( typeof elem === 'string' ) {
 
      elem = document.querySelectorAll( elem );
 
    }
 
 
    this.elements = makeArray( elem );
 
    this.options = extend( {}, this.options );
 
 
    if ( typeof options === 'function' ) {
 
      onAlways = options;
 
    } else {
 
      extend( this.options, options );
 
    }
 
 
    if ( onAlways ) {
 
      this.on( 'always', onAlways );
 
    }
 
 
    this.getImages();
 
 
    if ( $ ) {
 
      // add jQuery Deferred object
 
      this.jqDeferred = new $.Deferred();
 
    }
 
 
    // HACK check async to allow time to bind listeners
 
    var _this = this;
 
    setTimeout( function() {
 
      _this.check();
 
    });
 
  }
 
 
  ImagesLoaded.prototype = new EventEmitter();
 
 
  ImagesLoaded.prototype.options = {};
 
 
  ImagesLoaded.prototype.getImages = function() {
 
    this.images = [];
 
 
    // filter & find items if we have an item selector
 
    for ( var i=0, len = this.elements.length; i < len; i++ ) {
 
      var elem = this.elements[i];
 
      // filter siblings
 
      if ( elem.nodeName === 'IMG' ) {
 
        this.addImage( elem );
 
      }
 
      // find children
 
      var childElems = elem.querySelectorAll('img');
 
      // concat childElems to filterFound array
 
      for ( var j=0, jLen = childElems.length; j < jLen; j++ ) {
 
        var img = childElems[j];
 
        this.addImage( img );
 
      }
 
    }
 
  };
 
 
  /**
 
  * @param {Image} img
 
  */
 
  ImagesLoaded.prototype.addImage = function( img ) {
 
    var loadingImage = new LoadingImage( img );
 
    this.images.push( loadingImage );
 
  };
 
 
  ImagesLoaded.prototype.check = function() {
 
    var _this = this;
 
    var checkedCount = 0;
 
    var length = this.images.length;
 
    this.hasAnyBroken = false;
 
    // complete if no images
 
    if ( !length ) {
 
      this.complete();
 
      return;
 
    }
 
 
    function onConfirm( image, message ) {
 
      if ( _this.options.debug && hasConsole ) {
 
        console.log( 'confirm', image, message );
 
      }
 
 
      _this.progress( image );
 
      checkedCount++;
 
      if ( checkedCount === length ) {
 
        _this.complete();
 
      }
 
      return true; // bind once
 
    }
 
 
    for ( var i=0; i < length; i++ ) {
 
      var loadingImage = this.images[i];
 
      loadingImage.on( 'confirm', onConfirm );
 
      loadingImage.check();
 
    }
 
  };
 
 
  ImagesLoaded.prototype.progress = function( image ) {
 
    this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
 
    // HACK - Chrome triggers event before object properties have changed. #83
 
    var _this = this;
 
    setTimeout( function() {
 
      _this.emit( 'progress', _this, image );
 
      if ( _this.jqDeferred ) {
 
        _this.jqDeferred.notify( _this, image );
 
      }
 
    });
 
  };
 
 
  ImagesLoaded.prototype.complete = function() {
 
    var eventName = this.hasAnyBroken ? 'fail' : 'done';
 
    this.isComplete = true;
 
    var _this = this;
 
    // HACK - another setTimeout so that confirm happens after progress
 
    setTimeout( function() {
 
      _this.emit( eventName, _this );
 
      _this.emit( 'always', _this );
 
      if ( _this.jqDeferred ) {
 
        var jqMethod = _this.hasAnyBroken ? 'reject' : 'resolve';
 
        _this.jqDeferred[ jqMethod ]( _this );
 
      }
 
    });
 
  };
 
 
  // -------------------------- jquery -------------------------- //
 
 
  if ( $ ) {
 
    $.fn.imagesLoaded = function( options, callback ) {
 
      var instance = new ImagesLoaded( this, options, callback );
 
      return instance.jqDeferred.promise( $(this) );
 
    };
 
  }
 
 
 
  // --------------------------  -------------------------- //
 
 
  var cache = {};
 
 
  function LoadingImage( img ) {
 
    this.img = img;
 
  }
 
 
  LoadingImage.prototype = new EventEmitter();
 
 
  LoadingImage.prototype.check = function() {
 
    // first check cached any previous images that have same src
 
    var cached = cache[ this.img.src ];
 
    if ( cached ) {
 
      this.useCached( cached );
 
      return;
 
    }
 
    // add this to cache
 
    cache[ this.img.src ] = this;
 
 
    // If complete is true and browser supports natural sizes,
 
    // try to check for image status manually.
 
    if ( this.img.complete && this.img.naturalWidth !== undefined ) {
 
      // report based on naturalWidth
 
      this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
 
      return;
 
    }
 
 
    // If none of the checks above matched, simulate loading on detached element.
 
    var proxyImage = this.proxyImage = new Image();
 
    eventie.bind( proxyImage, 'load', this );
 
    eventie.bind( proxyImage, 'error', this );
 
    proxyImage.src = this.img.src;
 
  };
 
 
  LoadingImage.prototype.useCached = function( cached ) {
 
    if ( cached.isConfirmed ) {
 
      this.confirm( cached.isLoaded, 'cached was confirmed' );
 
    } else {
 
      var _this = this;
 
      cached.on( 'confirm', function( image ) {
 
        _this.confirm( image.isLoaded, 'cache emitted confirmed' );
 
        return true; // bind once
 
      });
 
    }
 
  };
 
 
  LoadingImage.prototype.confirm = function( isLoaded, message ) {
 
    this.isConfirmed = true;
 
    this.isLoaded = isLoaded;
 
    this.emit( 'confirm', this, message );
 
  };
 
 
  // trigger specified handler for event type
 
  LoadingImage.prototype.handleEvent = function( event ) {
 
    var method = 'on' + event.type;
 
    if ( this[ method ] ) {
 
      this[ method ]( event );
 
    }
 
  };
 
 
  LoadingImage.prototype.onload = function() {
 
    this.confirm( true, 'onload' );
 
    this.unbindProxyEvents();
 
  };
 
 
  LoadingImage.prototype.onerror = function() {
 
    this.confirm( false, 'onerror' );
 
    this.unbindProxyEvents();
 
  };
 
 
  LoadingImage.prototype.unbindProxyEvents = function() {
 
    eventie.unbind( this.proxyImage, 'load', this );
 
    eventie.unbind( this.proxyImage, 'error', this );
 
  };
 
 
  // -----  ----- //
 
 
  return ImagesLoaded;
 
}
 
 
// -------------------------- transport -------------------------- //
 
 
if ( typeof define === 'function' && define.amd ) {
 
  // AMD
 
  define( [
 
      'eventEmitter/EventEmitter',
 
      'eventie/eventie'
 
    ],
 
    defineImagesLoaded );
 
} else {
 
  // browser global
 
  window.imagesLoaded = defineImagesLoaded(
 
    window.EventEmitter,
 
    window.eventie
 
  );
 
}
 
 
})( window );</script>
 
    <!-- Portfolio Filter -->
 
<script type="text/javascript">/**
 
* Isotope v1.5.25
 
* An exquisite jQuery plugin for magical layouts
 
* http://isotope.metafizzy.co
 
*
 
* Commercial use requires one-time license fee
 
* http://metafizzy.co/#licenses
 
*
 
* Copyright 2012 David DeSandro / Metafizzy
 
*/
 
 
/*jshint asi: true, browser: true, curly: true, eqeqeq: true, forin: false, immed: false, newcap: true, noempty: true, strict: true, undef: true */
 
/*global jQuery: false */
 
 
(function( window, $, undefined ){
 
 
  'use strict';
 
 
  // get global vars
 
  var document = window.document;
 
  var Modernizr = window.Modernizr;
 
 
  // helper function
 
  var capitalize = function( str ) {
 
    return str.charAt(0).toUpperCase() + str.slice(1);
 
  };
 
 
  // ========================= getStyleProperty by kangax ===============================
 
  // http://perfectionkills.com/feature-testing-css-properties/
 
 
  var prefixes = 'Moz Webkit O Ms'.split(' ');
 
 
  var getStyleProperty = function( propName ) {
 
    var style = document.documentElement.style,
 
        prefixed;
 
 
    // test standard property first
 
    if ( typeof style[propName] === 'string' ) {
 
      return propName;
 
    }
 
 
    // capitalize
 
    propName = capitalize( propName );
 
 
    // test vendor specific properties
 
    for ( var i=0, len = prefixes.length; i < len; i++ ) {
 
      prefixed = prefixes[i] + propName;
 
      if ( typeof style[ prefixed ] === 'string' ) {
 
        return prefixed;
 
      }
 
    }
 
  };
 
 
  var transformProp = getStyleProperty('transform'),
 
      transitionProp = getStyleProperty('transitionProperty');
 
 
 
  // ========================= miniModernizr ===============================
 
  // <3<3<3 and thanks to Faruk and Paul for doing the heavy lifting
 
 
  /*!
 
  * Modernizr v1.6ish: miniModernizr for Isotope
 
  * http://www.modernizr.com
 
  *
 
  * Developed by:
 
  * - Faruk Ates  http://farukat.es/
 
  * - Paul Irish  http://paulirish.com/
 
  *
 
  * Copyright (c) 2009-2010
 
  * Dual-licensed under the BSD or MIT licenses.
 
  * http://www.modernizr.com/license/
 
  */
 
 
  /*
 
  * This version whittles down the script just to check support for
 
  * CSS transitions, transforms, and 3D transforms.
 
  */
 
 
  var tests = {
 
    csstransforms: function() {
 
      return !!transformProp;
 
    },
 
 
    csstransforms3d: function() {
 
      var test = !!getStyleProperty('perspective');
 
      // double check for Chrome's false positive
 
      if ( test ) {
 
        var vendorCSSPrefixes = ' -o- -moz- -ms- -webkit- -khtml- '.split(' '),
 
            mediaQuery = '@media (' + vendorCSSPrefixes.join('transform-3d),(') + 'modernizr)',
 
            $style = $('<style>' + mediaQuery + '{#modernizr{height:3px}}' + '</style>')
 
                        .appendTo('head'),
 
            $div = $('<div id="modernizr" />').appendTo('html');
 
 
        test = $div.height() === 3;
 
 
        $div.remove();
 
        $style.remove();
 
      }
 
      return test;
 
    },
 
 
    csstransitions: function() {
 
      return !!transitionProp;
 
    }
 
  };
 
 
  var testName;
 
 
  if ( Modernizr ) {
 
    // if there's a previous Modernzir, check if there are necessary tests
 
    for ( testName in tests) {
 
      if ( !Modernizr.hasOwnProperty( testName ) ) {
 
        // if test hasn't been run, use addTest to run it
 
        Modernizr.addTest( testName, tests[ testName ] );
 
      }
 
    }
 
  } else {
 
    // or create new mini Modernizr that just has the 3 tests
 
    Modernizr = window.Modernizr = {
 
      _version : '1.6ish: miniModernizr for Isotope'
 
    };
 
 
    var classes = ' ';
 
    var result;
 
 
    // Run through tests
 
    for ( testName in tests) {
 
      result = tests[ testName ]();
 
      Modernizr[ testName ] = result;
 
      classes += ' ' + ( result ?  '' : 'no-' ) + testName;
 
    }
 
 
    // Add the new classes to the <html> element.
 
    $('html').addClass( classes );
 
  }
 
 
 
  // ========================= isoTransform ===============================
 
 
  /**
 
  *  provides hooks for .css({ scale: value, translate: [x, y] })
 
  *  Progressively enhanced CSS transforms
 
  *  Uses hardware accelerated 3D transforms for Safari
 
  *  or falls back to 2D transforms.
 
  */
 
 
  if ( Modernizr.csstransforms ) {
 
 
        // i.e. transformFnNotations.scale(0.5) >> 'scale3d( 0.5, 0.5, 1)'
 
    var transformFnNotations = Modernizr.csstransforms3d ?
 
      { // 3D transform functions
 
        translate : function ( position ) {
 
          return 'translate3d(' + position[0] + 'px, ' + position[1] + 'px, 0) ';
 
        },
 
        scale : function ( scale ) {
 
          return 'scale3d(' + scale + ', ' + scale + ', 1) ';
 
        }
 
      } :
 
      { // 2D transform functions
 
        translate : function ( position ) {
 
          return 'translate(' + position[0] + 'px, ' + position[1] + 'px) ';
 
        },
 
        scale : function ( scale ) {
 
          return 'scale(' + scale + ') ';
 
        }
 
      }
 
    ;
 
 
    var setIsoTransform = function ( elem, name, value ) {
 
          // unpack current transform data
 
      var data =  $.data( elem, 'isoTransform' ) || {},
 
          newData = {},
 
          fnName,
 
          transformObj = {},
 
          transformValue;
 
 
      // i.e. newData.scale = 0.5
 
      newData[ name ] = value;
 
      // extend new value over current data
 
      $.extend( data, newData );
 
 
      for ( fnName in data ) {
 
        transformValue = data[ fnName ];
 
        transformObj[ fnName ] = transformFnNotations[ fnName ]( transformValue );
 
      }
 
 
      // get proper order
 
      // ideally, we could loop through this give an array, but since we only have
 
      // a couple transforms we're keeping track of, we'll do it like so
 
      var translateFn = transformObj.translate || '',
 
          scaleFn = transformObj.scale || '',
 
          // sorting so translate always comes first
 
          valueFns = translateFn + scaleFn;
 
 
      // set data back in elem
 
      $.data( elem, 'isoTransform', data );
 
 
      // set name to vendor specific property
 
      elem.style[ transformProp ] = valueFns;
 
    };
 
 
    // ==================== scale ===================
 
 
    $.cssNumber.scale = true;
 
 
    $.cssHooks.scale = {
 
      set: function( elem, value ) {
 
        // uncomment this bit if you want to properly parse strings
 
        // if ( typeof value === 'string' ) {
 
        //  value = parseFloat( value );
 
        // }
 
        setIsoTransform( elem, 'scale', value );
 
      },
 
      get: function( elem, computed ) {
 
        var transform = $.data( elem, 'isoTransform' );
 
        return transform && transform.scale ? transform.scale : 1;
 
      }
 
    };
 
 
    $.fx.step.scale = function( fx ) {
 
      $.cssHooks.scale.set( fx.elem, fx.now+fx.unit );
 
    };
 
 
 
    // ==================== translate ===================
 
 
    $.cssNumber.translate = true;
 
 
    $.cssHooks.translate = {
 
      set: function( elem, value ) {
 
 
        // uncomment this bit if you want to properly parse strings
 
        // if ( typeof value === 'string' ) {
 
        //  value = value.split(' ');
 
        // }
 
        //
 
        // var i, val;
 
        // for ( i = 0; i < 2; i++ ) {
 
        //  val = value[i];
 
        //  if ( typeof val === 'string' ) {
 
        //    val = parseInt( val );
 
        //  }
 
        // }
 
 
        setIsoTransform( elem, 'translate', value );
 
      },
 
 
      get: function( elem, computed ) {
 
        var transform = $.data( elem, 'isoTransform' );
 
        return transform && transform.translate ? transform.translate : [ 0, 0 ];
 
      }
 
    };
 
 
  }
 
 
  // ========================= get transition-end event ===============================
 
  var transitionEndEvent, transitionDurProp;
 
 
  if ( Modernizr.csstransitions ) {
 
    transitionEndEvent = {
 
      WebkitTransitionProperty: 'webkitTransitionEnd',  // webkit
 
      MozTransitionProperty: 'transitionend',
 
      OTransitionProperty: 'oTransitionEnd otransitionend',
 
      transitionProperty: 'transitionend'
 
    }[ transitionProp ];
 
 
    transitionDurProp = getStyleProperty('transitionDuration');
 
  }
 
 
  // ========================= smartresize ===============================
 
 
  /*
 
  * smartresize: debounced resize event for jQuery
 
  *
 
  * latest version and complete README available on Github:
 
  * https://github.com/louisremi/jquery.smartresize.js
 
  *
 
  * Copyright 2011 @louis_remi
 
  * Licensed under the MIT license.
 
  */
 
 
  var $event = $.event,
 
      dispatchMethod = $.event.handle ? 'handle' : 'dispatch',
 
      resizeTimeout;
 
 
  $event.special.smartresize = {
 
    setup: function() {
 
      $(this).bind( "resize", $event.special.smartresize.handler );
 
    },
 
    teardown: function() {
 
      $(this).unbind( "resize", $event.special.smartresize.handler );
 
    },
 
    handler: function( event, execAsap ) {
 
      // Save the context
 
      var context = this,
 
          args = arguments;
 
 
      // set correct event type
 
      event.type = "smartresize";
 
 
      if ( resizeTimeout ) { clearTimeout( resizeTimeout ); }
 
      resizeTimeout = setTimeout(function() {
 
        $event[ dispatchMethod ].apply( context, args );
 
      }, execAsap === "execAsap"? 0 : 100 );
 
    }
 
  };
 
 
  $.fn.smartresize = function( fn ) {
 
    return fn ? this.bind( "smartresize", fn ) : this.trigger( "smartresize", ["execAsap"] );
 
  };
 
 
 
 
// ========================= Isotope ===============================
 
 
 
  // our "Widget" object constructor
 
  $.Isotope = function( options, element, callback ){
 
    this.element = $( element );
 
 
    this._create( options );
 
    this._init( callback );
 
  };
 
 
  // styles of container element we want to keep track of
 
  var isoContainerStyles = [ 'width', 'height' ];
 
 
  var $window = $(window);
 
 
  $.Isotope.settings = {
 
    resizable: true,
 
    layoutMode : 'masonry',
 
    containerClass : 'isotope',
 
    itemClass : 'isotope-item',
 
    hiddenClass : 'isotope-hidden',
 
    hiddenStyle: { opacity: 0, scale: 0.001 },
 
    visibleStyle: { opacity: 1, scale: 1 },
 
    containerStyle: {
 
      position: 'relative',
 
      overflow: 'hidden'
 
    },
 
    animationEngine: 'best-available',
 
    animationOptions: {
 
      queue: false,
 
      duration: 800
 
    },
 
    sortBy : 'original-order',
 
    sortAscending : true,
 
    resizesContainer : true,
 
    transformsEnabled: true,
 
    itemPositionDataEnabled: false
 
  };
 
 
  $.Isotope.prototype = {
 
 
    // sets up widget
 
    _create : function( options ) {
 
 
      this.options = $.extend( {}, $.Isotope.settings, options );
 
 
      this.styleQueue = [];
 
      this.elemCount = 0;
 
 
      // get original styles in case we re-apply them in .destroy()
 
      var elemStyle = this.element[0].style;
 
      this.originalStyle = {};
 
      // keep track of container styles
 
      var containerStyles = isoContainerStyles.slice(0);
 
      for ( var prop in this.options.containerStyle ) {
 
        containerStyles.push( prop );
 
      }
 
      for ( var i=0, len = containerStyles.length; i < len; i++ ) {
 
        prop = containerStyles[i];
 
        this.originalStyle[ prop ] = elemStyle[ prop ] || '';
 
      }
 
      // apply container style from options
 
      this.element.css( this.options.containerStyle );
 
 
      this._updateAnimationEngine();
 
      this._updateUsingTransforms();
 
 
      // sorting
 
      var originalOrderSorter = {
 
        'original-order' : function( $elem, instance ) {
 
          instance.elemCount ++;
 
          return instance.elemCount;
 
        },
 
        random : function() {
 
          return Math.random();
 
        }
 
      };
 
 
      this.options.getSortData = $.extend( this.options.getSortData, originalOrderSorter );
 
 
      // need to get atoms
 
      this.reloadItems();
 
 
      // get top left position of where the bricks should be
 
      this.offset = {
 
        left: parseInt( ( this.element.css('padding-left') || 0 ), 10 ),
 
        top: parseInt( ( this.element.css('padding-top') || 0 ), 10 )
 
      };
 
 
      // add isotope class first time around
 
      var instance = this;
 
      setTimeout( function() {
 
        instance.element.addClass( instance.options.containerClass );
 
      }, 0 );
 
 
      // bind resize method
 
      if ( this.options.resizable ) {
 
        $window.bind( 'smartresize.isotope', function() {
 
          instance.resize();
 
        });
 
      }
 
 
      // dismiss all click events from hidden events
 
      this.element.delegate( '.' + this.options.hiddenClass, 'click', function(){
 
        return false;
 
      });
 
 
    },
 
 
    _getAtoms : function( $elems ) {
 
      var selector = this.options.itemSelector,
 
          // filter & find
 
          $atoms = selector ? $elems.filter( selector ).add( $elems.find( selector ) ) : $elems,
 
          // base style for atoms
 
          atomStyle = { position: 'absolute' };
 
 
      // filter out text nodes
 
      $atoms = $atoms.filter( function( i, atom ) {
 
        return atom.nodeType === 1;
 
      });
 
 
      if ( this.usingTransforms ) {
 
        atomStyle.left = 0;
 
        atomStyle.top = 0;
 
      }
 
 
      $atoms.css( atomStyle ).addClass( this.options.itemClass );
 
 
      this.updateSortData( $atoms, true );
 
 
      return $atoms;
 
    },
 
 
    // _init fires when your instance is first created
 
    // (from the constructor above), and when you
 
    // attempt to initialize the widget again (by the bridge)
 
    // after it has already been initialized.
 
    _init : function( callback ) {
 
 
      this.$filteredAtoms = this._filter( this.$allAtoms );
 
      this._sort();
 
      this.reLayout( callback );
 
 
    },
 
 
    option : function( opts ){
 
      // change options AFTER initialization:
 
      // signature: $('#foo').bar({ cool:false });
 
      if ( $.isPlainObject( opts ) ){
 
        this.options = $.extend( true, this.options, opts );
 
 
        // trigger _updateOptionName if it exists
 
        var updateOptionFn;
 
        for ( var optionName in opts ) {
 
          updateOptionFn = '_update' + capitalize( optionName );
 
          if ( this[ updateOptionFn ] ) {
 
            this[ updateOptionFn ]();
 
          }
 
        }
 
      }
 
    },
 
 
    // ====================== updaters ====================== //
 
    // kind of like setters
 
 
    _updateAnimationEngine : function() {
 
      var animationEngine = this.options.animationEngine.toLowerCase().replace( /[ _\-]/g, '');
 
      var isUsingJQueryAnimation;
 
      // set applyStyleFnName
 
      switch ( animationEngine ) {
 
        case 'css' :
 
        case 'none' :
 
          isUsingJQueryAnimation = false;
 
          break;
 
        case 'jquery' :
 
          isUsingJQueryAnimation = true;
 
          break;
 
        default : // best available
 
          isUsingJQueryAnimation = !Modernizr.csstransitions;
 
      }
 
      this.isUsingJQueryAnimation = isUsingJQueryAnimation;
 
      this._updateUsingTransforms();
 
    },
 
 
    _updateTransformsEnabled : function() {
 
      this._updateUsingTransforms();
 
    },
 
 
    _updateUsingTransforms : function() {
 
      var usingTransforms = this.usingTransforms = this.options.transformsEnabled &&
 
        Modernizr.csstransforms && Modernizr.csstransitions && !this.isUsingJQueryAnimation;
 
 
      // prevent scales when transforms are disabled
 
      if ( !usingTransforms ) {
 
        delete this.options.hiddenStyle.scale;
 
        delete this.options.visibleStyle.scale;
 
      }
 
 
      this.getPositionStyles = usingTransforms ? this._translate : this._positionAbs;
 
    },
 
 
 
    // ====================== Filtering ======================
 
 
    _filter : function( $atoms ) {
 
      var filter = this.options.filter === '' ? '*' : this.options.filter;
 
 
      if ( !filter ) {
 
        return $atoms;
 
      }
 
 
      var hiddenClass    = this.options.hiddenClass,
 
          hiddenSelector = '.' + hiddenClass,
 
          $hiddenAtoms  = $atoms.filter( hiddenSelector ),
 
          $atomsToShow  = $hiddenAtoms;
 
 
      if ( filter !== '*' ) {
 
        $atomsToShow = $hiddenAtoms.filter( filter );
 
        var $atomsToHide = $atoms.not( hiddenSelector ).not( filter ).addClass( hiddenClass );
 
        this.styleQueue.push({ $el: $atomsToHide, style: this.options.hiddenStyle });
 
      }
 
 
      this.styleQueue.push({ $el: $atomsToShow, style: this.options.visibleStyle });
 
      $atomsToShow.removeClass( hiddenClass );
 
 
      return $atoms.filter( filter );
 
    },
 
 
    // ====================== Sorting ======================
 
 
    updateSortData : function( $atoms, isIncrementingElemCount ) {
 
      var instance = this,
 
          getSortData = this.options.getSortData,
 
          $this, sortData;
 
      $atoms.each(function(){
 
        $this = $(this);
 
        sortData = {};
 
        // get value for sort data based on fn( $elem ) passed in
 
        for ( var key in getSortData ) {
 
          if ( !isIncrementingElemCount && key === 'original-order' ) {
 
            // keep original order original
 
            sortData[ key ] = $.data( this, 'isotope-sort-data' )[ key ];
 
          } else {
 
            sortData[ key ] = getSortData[ key ]( $this, instance );
 
          }
 
        }
 
        // apply sort data to element
 
        $.data( this, 'isotope-sort-data', sortData );
 
      });
 
    },
 
 
    // used on all the filtered atoms
 
    _sort : function() {
 
 
      var sortBy = this.options.sortBy,
 
          getSorter = this._getSorter,
 
          sortDir = this.options.sortAscending ? 1 : -1,
 
          sortFn = function( alpha, beta ) {
 
            var a = getSorter( alpha, sortBy ),
 
                b = getSorter( beta, sortBy );
 
            // fall back to original order if data matches
 
            if ( a === b && sortBy !== 'original-order') {
 
              a = getSorter( alpha, 'original-order' );
 
              b = getSorter( beta, 'original-order' );
 
            }
 
            return ( ( a > b ) ? 1 : ( a < b ) ? -1 : 0 ) * sortDir;
 
          };
 
 
      this.$filteredAtoms.sort( sortFn );
 
    },
 
 
    _getSorter : function( elem, sortBy ) {
 
      return $.data( elem, 'isotope-sort-data' )[ sortBy ];
 
    },
 
 
    // ====================== Layout Helpers ======================
 
 
    _translate : function( x, y ) {
 
      return { translate : [ x, y ] };
 
    },
 
 
    _positionAbs : function( x, y ) {
 
      return { left: x, top: y };
 
    },
 
 
    _pushPosition : function( $elem, x, y ) {
 
      x = Math.round( x + this.offset.left );
 
      y = Math.round( y + this.offset.top );
 
      var position = this.getPositionStyles( x, y );
 
      this.styleQueue.push({ $el: $elem, style: position });
 
      if ( this.options.itemPositionDataEnabled ) {
 
        $elem.data('isotope-item-position', {x: x, y: y} );
 
      }
 
    },
 
 
 
    // ====================== General Layout ======================
 
 
    // used on collection of atoms (should be filtered, and sorted before )
 
    // accepts atoms-to-be-laid-out to start with
 
    layout : function( $elems, callback ) {
 
 
      var layoutMode = this.options.layoutMode;
 
 
      // layout logic
 
      this[ '_' +  layoutMode + 'Layout' ]( $elems );
 
 
      // set the size of the container
 
      if ( this.options.resizesContainer ) {
 
        var containerStyle = this[ '_' +  layoutMode + 'GetContainerSize' ]();
 
        this.styleQueue.push({ $el: this.element, style: containerStyle });
 
      }
 
 
      this._processStyleQueue( $elems, callback );
 
 
      this.isLaidOut = true;
 
    },
 
 
    _processStyleQueue : function( $elems, callback ) {
 
      // are we animating the layout arrangement?
 
      // use plugin-ish syntax for css or animate
 
      var styleFn = !this.isLaidOut ? 'css' : (
 
            this.isUsingJQueryAnimation ? 'animate' : 'css'
 
          ),
 
          animOpts = this.options.animationOptions,
 
          onLayout = this.options.onLayout,
 
          objStyleFn, processor,
 
          triggerCallbackNow, callbackFn;
 
 
      // default styleQueue processor, may be overwritten down below
 
      processor = function( i, obj ) {
 
        obj.$el[ styleFn ]( obj.style, animOpts );
 
      };
 
 
      if ( this._isInserting && this.isUsingJQueryAnimation ) {
 
        // if using styleQueue to insert items
 
        processor = function( i, obj ) {
 
          // only animate if it not being inserted
 
          objStyleFn = obj.$el.hasClass('no-transition') ? 'css' : styleFn;
 
          obj.$el[ objStyleFn ]( obj.style, animOpts );
 
        };
 
 
      } else if ( callback || onLayout || animOpts.complete ) {
 
        // has callback
 
        var isCallbackTriggered = false,
 
            // array of possible callbacks to trigger
 
            callbacks = [ callback, onLayout, animOpts.complete ],
 
            instance = this;
 
        triggerCallbackNow = true;
 
        // trigger callback only once
 
        callbackFn = function() {
 
          if ( isCallbackTriggered ) {
 
            return;
 
          }
 
          var hollaback;
 
          for (var i=0, len = callbacks.length; i < len; i++) {
 
            hollaback = callbacks[i];
 
            if ( typeof hollaback === 'function' ) {
 
              hollaback.call( instance.element, $elems, instance );
 
            }
 
          }
 
          isCallbackTriggered = true;
 
        };
 
 
        if ( this.isUsingJQueryAnimation && styleFn === 'animate' ) {
 
          // add callback to animation options
 
          animOpts.complete = callbackFn;
 
          triggerCallbackNow = false;
 
 
        } else if ( Modernizr.csstransitions ) {
 
          // detect if first item has transition
 
          var i = 0,
 
              firstItem = this.styleQueue[0],
 
              testElem = firstItem && firstItem.$el,
 
              styleObj;
 
          // get first non-empty jQ object
 
          while ( !testElem || !testElem.length ) {
 
            styleObj = this.styleQueue[ i++ ];
 
            // HACK: sometimes styleQueue[i] is undefined
 
            if ( !styleObj ) {
 
              return;
 
            }
 
            testElem = styleObj.$el;
 
          }
 
          // get transition duration of the first element in that object
 
          // yeah, this is inexact
 
          var duration = parseFloat( getComputedStyle( testElem[0] )[ transitionDurProp ] );
 
          if ( duration > 0 ) {
 
            processor = function( i, obj ) {
 
              obj.$el[ styleFn ]( obj.style, animOpts )
 
                // trigger callback at transition end
 
                .one( transitionEndEvent, callbackFn );
 
            };
 
            triggerCallbackNow = false;
 
          }
 
        }
 
      }
 
 
      // process styleQueue
 
      $.each( this.styleQueue, processor );
 
 
      if ( triggerCallbackNow ) {
 
        callbackFn();
 
      }
 
 
      // clear out queue for next time
 
      this.styleQueue = [];
 
    },
 
 
 
    resize : function() {
 
      if ( this[ '_' + this.options.layoutMode + 'ResizeChanged' ]() ) {
 
        this.reLayout();
 
      }
 
    },
 
 
 
    reLayout : function( callback ) {
 
 
      this[ '_' +  this.options.layoutMode + 'Reset' ]();
 
      this.layout( this.$filteredAtoms, callback );
 
 
    },
 
 
    // ====================== Convenience methods ======================
 
 
    // ====================== Adding items ======================
 
 
    // adds a jQuery object of items to a isotope container
 
    addItems : function( $content, callback ) {
 
      var $newAtoms = this._getAtoms( $content );
 
      // add new atoms to atoms pools
 
      this.$allAtoms = this.$allAtoms.add( $newAtoms );
 
 
      if ( callback ) {
 
        callback( $newAtoms );
 
      }
 
    },
 
 
    // convienence method for adding elements properly to any layout
 
    // positions items, hides them, then animates them back in <--- very sezzy
 
    insert : function( $content, callback ) {
 
      // position items
 
      this.element.append( $content );
 
 
      var instance = this;
 
      this.addItems( $content, function( $newAtoms ) {
 
        var $newFilteredAtoms = instance._filter( $newAtoms );
 
        instance._addHideAppended( $newFilteredAtoms );
 
        instance._sort();
 
        instance.reLayout();
 
        instance._revealAppended( $newFilteredAtoms, callback );
 
      });
 
 
    },
 
 
    // convienence method for working with Infinite Scroll
 
    appended : function( $content, callback ) {
 
      var instance = this;
 
      this.addItems( $content, function( $newAtoms ) {
 
        instance._addHideAppended( $newAtoms );
 
        instance.layout( $newAtoms );
 
        instance._revealAppended( $newAtoms, callback );
 
      });
 
    },
 
 
    // adds new atoms, then hides them before positioning
 
    _addHideAppended : function( $newAtoms ) {
 
      this.$filteredAtoms = this.$filteredAtoms.add( $newAtoms );
 
      $newAtoms.addClass('no-transition');
 
 
      this._isInserting = true;
 
 
      // apply hidden styles
 
      this.styleQueue.push({ $el: $newAtoms, style: this.options.hiddenStyle });
 
    },
 
 
    // sets visible style on new atoms
 
    _revealAppended : function( $newAtoms, callback ) {
 
      var instance = this;
 
      // apply visible style after a sec
 
      setTimeout( function() {
 
        // enable animation
 
        $newAtoms.removeClass('no-transition');
 
        // reveal newly inserted filtered elements
 
        instance.styleQueue.push({ $el: $newAtoms, style: instance.options.visibleStyle });
 
        instance._isInserting = false;
 
        instance._processStyleQueue( $newAtoms, callback );
 
      }, 10 );
 
    },
 
 
    // gathers all atoms
 
    reloadItems : function() {
 
      this.$allAtoms = this._getAtoms( this.element.children() );
 
    },
 
 
    // removes elements from Isotope widget
 
    remove: function( $content, callback ) {
 
      // remove elements immediately from Isotope instance
 
      this.$allAtoms = this.$allAtoms.not( $content );
 
      this.$filteredAtoms = this.$filteredAtoms.not( $content );
 
      // remove() as a callback, for after transition / animation
 
      var instance = this;
 
      var removeContent = function() {
 
        $content.remove();
 
        if ( callback ) {
 
          callback.call( instance.element );
 
        }
 
      };
 
 
      if ( $content.filter( ':not(.' + this.options.hiddenClass + ')' ).length ) {
 
        // if any non-hidden content needs to be removed
 
        this.styleQueue.push({ $el: $content, style: this.options.hiddenStyle });
 
        this._sort();
 
        this.reLayout( removeContent );
 
      } else {
 
        // remove it now
 
        removeContent();
 
      }
 
 
    },
 
 
    shuffle : function( callback ) {
 
      this.updateSortData( this.$allAtoms );
 
      this.options.sortBy = 'random';
 
      this._sort();
 
      this.reLayout( callback );
 
    },
 
 
    // destroys widget, returns elements and container back (close) to original style
 
    destroy : function() {
 
 
      var usingTransforms = this.usingTransforms;
 
      var options = this.options;
 
 
      this.$allAtoms
 
        .removeClass( options.hiddenClass + ' ' + options.itemClass )
 
        .each(function(){
 
          var style = this.style;
 
          style.position = '';
 
          style.top = '';
 
          style.left = '';
 
          style.opacity = '';
 
          if ( usingTransforms ) {
 
            style[ transformProp ] = '';
 
          }
 
        });
 
 
      // re-apply saved container styles
 
      var elemStyle = this.element[0].style;
 
      for ( var prop in this.originalStyle ) {
 
        elemStyle[ prop ] = this.originalStyle[ prop ];
 
      }
 
 
      this.element
 
        .unbind('.isotope')
 
        .undelegate( '.' + options.hiddenClass, 'click' )
 
        .removeClass( options.containerClass )
 
        .removeData('isotope');
 
 
      $window.unbind('.isotope');
 
 
    },
 
 
 
    // ====================== LAYOUTS ======================
 
 
    // calculates number of rows or columns
 
    // requires columnWidth or rowHeight to be set on namespaced object
 
    // i.e. this.masonry.columnWidth = 200
 
    _getSegments : function( isRows ) {
 
      var namespace = this.options.layoutMode,
 
          measure  = isRows ? 'rowHeight' : 'columnWidth',
 
          size    = isRows ? 'height' : 'width',
 
          segmentsName = isRows ? 'rows' : 'cols',
 
          containerSize = this.element[ size ](),
 
          segments,
 
                    // i.e. options.masonry && options.masonry.columnWidth
 
          segmentSize = this.options[ namespace ] && this.options[ namespace ][ measure ] ||
 
                    // or use the size of the first item, i.e. outerWidth
 
                    this.$filteredAtoms[ 'outer' + capitalize(size) ](true) ||
 
                    // if there's no items, use size of container
 
                    containerSize;
 
 
      segments = Math.floor( containerSize / segmentSize );
 
      segments = Math.max( segments, 1 );
 
 
      // i.e. this.masonry.cols = ....
 
      this[ namespace ][ segmentsName ] = segments;
 
      // i.e. this.masonry.columnWidth = ...
 
      this[ namespace ][ measure ] = segmentSize;
 
 
    },
 
 
    _checkIfSegmentsChanged : function( isRows ) {
 
      var namespace = this.options.layoutMode,
 
          segmentsName = isRows ? 'rows' : 'cols',
 
          prevSegments = this[ namespace ][ segmentsName ];
 
      // update cols/rows
 
      this._getSegments( isRows );
 
      // return if updated cols/rows is not equal to previous
 
      return ( this[ namespace ][ segmentsName ] !== prevSegments );
 
    },
 
 
    // ====================== Masonry ======================
 
 
    _masonryReset : function() {
 
      // layout-specific props
 
      this.masonry = {};
 
      // FIXME shouldn't have to call this again
 
      this._getSegments();
 
      var i = this.masonry.cols;
 
      this.masonry.colYs = [];
 
      while (i--) {
 
        this.masonry.colYs.push( 0 );
 
      }
 
    },
 
 
    _masonryLayout : function( $elems ) {
 
      var instance = this,
 
          props = instance.masonry;
 
      $elems.each(function(){
 
        var $this  = $(this),
 
            //how many columns does this brick span
 
            colSpan = Math.ceil( $this.outerWidth(true) / props.columnWidth );
 
        colSpan = Math.min( colSpan, props.cols );
 
 
        if ( colSpan === 1 ) {
 
          // if brick spans only one column, just like singleMode
 
          instance._masonryPlaceBrick( $this, props.colYs );
 
        } else {
 
          // brick spans more than one column
 
          // how many different places could this brick fit horizontally
 
          var groupCount = props.cols + 1 - colSpan,
 
              groupY = [],
 
              groupColY,
 
              i;
 
 
          // for each group potential horizontal position
 
          for ( i=0; i < groupCount; i++ ) {
 
            // make an array of colY values for that one group
 
            groupColY = props.colYs.slice( i, i+colSpan );
 
            // and get the max value of the array
 
            groupY[i] = Math.max.apply( Math, groupColY );
 
          }
 
 
          instance._masonryPlaceBrick( $this, groupY );
 
        }
 
      });
 
    },
 
 
    // worker method that places brick in the columnSet
 
    //  with the the minY
 
    _masonryPlaceBrick : function( $brick, setY ) {
 
      // get the minimum Y value from the columns
 
      var minimumY = Math.min.apply( Math, setY ),
 
          shortCol = 0;
 
 
      // Find index of short column, the first from the left
 
      for (var i=0, len = setY.length; i < len; i++) {
 
        if ( setY[i] === minimumY ) {
 
          shortCol = i;
 
          break;
 
        }
 
      }
 
 
      // position the brick
 
      var x = this.masonry.columnWidth * shortCol,
 
          y = minimumY;
 
      this._pushPosition( $brick, x, y );
 
 
      // apply setHeight to necessary columns
 
      var setHeight = minimumY + $brick.outerHeight(true),
 
          setSpan = this.masonry.cols + 1 - len;
 
      for ( i=0; i < setSpan; i++ ) {
 
        this.masonry.colYs[ shortCol + i ] = setHeight;
 
      }
 
 
    },
 
 
    _masonryGetContainerSize : function() {
 
      var containerHeight = Math.max.apply( Math, this.masonry.colYs );
 
      return { height: containerHeight };
 
    },
 
 
    _masonryResizeChanged : function() {
 
      return this._checkIfSegmentsChanged();
 
    },
 
 
    // ====================== fitRows ======================
 
 
    _fitRowsReset : function() {
 
      this.fitRows = {
 
        x : 0,
 
        y : 0,
 
        height : 0
 
      };
 
    },
 
 
    _fitRowsLayout : function( $elems ) {
 
      var instance = this,
 
          containerWidth = this.element.width(),
 
          props = this.fitRows;
 
 
      $elems.each( function() {
 
        var $this = $(this),
 
            atomW = $this.outerWidth(true),
 
            atomH = $this.outerHeight(true);
 
 
        if ( props.x !== 0 && atomW + props.x > containerWidth ) {
 
          // if this element cannot fit in the current row
 
          props.x = 0;
 
          props.y = props.height;
 
        }
 
 
        // position the atom
 
        instance._pushPosition( $this, props.x, props.y );
 
 
        props.height = Math.max( props.y + atomH, props.height );
 
        props.x += atomW;
 
 
      });
 
    },
 
 
    _fitRowsGetContainerSize : function () {
 
      return { height : this.fitRows.height };
 
    },
 
 
    _fitRowsResizeChanged : function() {
 
      return true;
 
    },
 
 
 
    // ====================== cellsByRow ======================
 
 
    _cellsByRowReset : function() {
 
      this.cellsByRow = {
 
        index : 0
 
      };
 
      // get this.cellsByRow.columnWidth
 
      this._getSegments();
 
      // get this.cellsByRow.rowHeight
 
      this._getSegments(true);
 
    },
 
 
    _cellsByRowLayout : function( $elems ) {
 
      var instance = this,
 
          props = this.cellsByRow;
 
      $elems.each( function(){
 
        var $this = $(this),
 
            col = props.index % props.cols,
 
            row = Math.floor( props.index / props.cols ),
 
            x = ( col + 0.5 ) * props.columnWidth - $this.outerWidth(true) / 2,
 
            y = ( row + 0.5 ) * props.rowHeight - $this.outerHeight(true) / 2;
 
        instance._pushPosition( $this, x, y );
 
        props.index ++;
 
      });
 
    },
 
 
    _cellsByRowGetContainerSize : function() {
 
      return { height : Math.ceil( this.$filteredAtoms.length / this.cellsByRow.cols ) * this.cellsByRow.rowHeight + this.offset.top };
 
    },
 
 
    _cellsByRowResizeChanged : function() {
 
      return this._checkIfSegmentsChanged();
 
    },
 
 
 
    // ====================== straightDown ======================
 
 
    _straightDownReset : function() {
 
      this.straightDown = {
 
        y : 0
 
      };
 
    },
 
 
    _straightDownLayout : function( $elems ) {
 
      var instance = this;
 
      $elems.each( function( i ){
 
        var $this = $(this);
 
        instance._pushPosition( $this, 0, instance.straightDown.y );
 
        instance.straightDown.y += $this.outerHeight(true);
 
      });
 
    },
 
 
    _straightDownGetContainerSize : function() {
 
      return { height : this.straightDown.y };
 
    },
 
 
    _straightDownResizeChanged : function() {
 
      return true;
 
    },
 
 
 
    // ====================== masonryHorizontal ======================
 
 
    _masonryHorizontalReset : function() {
 
      // layout-specific props
 
      this.masonryHorizontal = {};
 
      // FIXME shouldn't have to call this again
 
      this._getSegments( true );
 
      var i = this.masonryHorizontal.rows;
 
      this.masonryHorizontal.rowXs = [];
 
      while (i--) {
 
        this.masonryHorizontal.rowXs.push( 0 );
 
      }
 
    },
 
 
    _masonryHorizontalLayout : function( $elems ) {
 
      var instance = this,
 
          props = instance.masonryHorizontal;
 
      $elems.each(function(){
 
        var $this  = $(this),
 
            //how many rows does this brick span
 
            rowSpan = Math.ceil( $this.outerHeight(true) / props.rowHeight );
 
        rowSpan = Math.min( rowSpan, props.rows );
 
 
        if ( rowSpan === 1 ) {
 
          // if brick spans only one column, just like singleMode
 
          instance._masonryHorizontalPlaceBrick( $this, props.rowXs );
 
        } else {
 
          // brick spans more than one row
 
          // how many different places could this brick fit horizontally
 
          var groupCount = props.rows + 1 - rowSpan,
 
              groupX = [],
 
              groupRowX, i;
 
 
          // for each group potential horizontal position
 
          for ( i=0; i < groupCount; i++ ) {
 
            // make an array of colY values for that one group
 
            groupRowX = props.rowXs.slice( i, i+rowSpan );
 
            // and get the max value of the array
 
            groupX[i] = Math.max.apply( Math, groupRowX );
 
          }
 
 
          instance._masonryHorizontalPlaceBrick( $this, groupX );
 
        }
 
      });
 
    },
 
 
    _masonryHorizontalPlaceBrick : function( $brick, setX ) {
 
      // get the minimum Y value from the columns
 
      var minimumX  = Math.min.apply( Math, setX ),
 
          smallRow  = 0;
 
      // Find index of smallest row, the first from the top
 
      for (var i=0, len = setX.length; i < len; i++) {
 
        if ( setX[i] === minimumX ) {
 
          smallRow = i;
 
          break;
 
        }
 
      }
 
 
      // position the brick
 
      var x = minimumX,
 
          y = this.masonryHorizontal.rowHeight * smallRow;
 
      this._pushPosition( $brick, x, y );
 
 
      // apply setHeight to necessary columns
 
      var setWidth = minimumX + $brick.outerWidth(true),
 
          setSpan = this.masonryHorizontal.rows + 1 - len;
 
      for ( i=0; i < setSpan; i++ ) {
 
        this.masonryHorizontal.rowXs[ smallRow + i ] = setWidth;
 
      }
 
    },
 
 
    _masonryHorizontalGetContainerSize : function() {
 
      var containerWidth = Math.max.apply( Math, this.masonryHorizontal.rowXs );
 
      return { width: containerWidth };
 
    },
 
 
    _masonryHorizontalResizeChanged : function() {
 
      return this._checkIfSegmentsChanged(true);
 
    },
 
 
 
    // ====================== fitColumns ======================
 
 
    _fitColumnsReset : function() {
 
      this.fitColumns = {
 
        x : 0,
 
        y : 0,
 
        width : 0
 
      };
 
    },
 
 
    _fitColumnsLayout : function( $elems ) {
 
      var instance = this,
 
          containerHeight = this.element.height(),
 
          props = this.fitColumns;
 
      $elems.each( function() {
 
        var $this = $(this),
 
            atomW = $this.outerWidth(true),
 
            atomH = $this.outerHeight(true);
 
 
        if ( props.y !== 0 && atomH + props.y > containerHeight ) {
 
          // if this element cannot fit in the current column
 
          props.x = props.width;
 
          props.y = 0;
 
        }
 
 
        // position the atom
 
        instance._pushPosition( $this, props.x, props.y );
 
 
        props.width = Math.max( props.x + atomW, props.width );
 
        props.y += atomH;
 
 
      });
 
    },
 
 
    _fitColumnsGetContainerSize : function () {
 
      return { width : this.fitColumns.width };
 
    },
 
 
    _fitColumnsResizeChanged : function() {
 
      return true;
 
    },
 
 
 
 
    // ====================== cellsByColumn ======================
 
 
    _cellsByColumnReset : function() {
 
      this.cellsByColumn = {
 
        index : 0
 
      };
 
      // get this.cellsByColumn.columnWidth
 
      this._getSegments();
 
      // get this.cellsByColumn.rowHeight
 
      this._getSegments(true);
 
    },
 
 
    _cellsByColumnLayout : function( $elems ) {
 
      var instance = this,
 
          props = this.cellsByColumn;
 
      $elems.each( function(){
 
        var $this = $(this),
 
            col = Math.floor( props.index / props.rows ),
 
            row = props.index % props.rows,
 
            x = ( col + 0.5 ) * props.columnWidth - $this.outerWidth(true) / 2,
 
            y = ( row + 0.5 ) * props.rowHeight - $this.outerHeight(true) / 2;
 
        instance._pushPosition( $this, x, y );
 
        props.index ++;
 
      });
 
    },
 
 
    _cellsByColumnGetContainerSize : function() {
 
      return { width : Math.ceil( this.$filteredAtoms.length / this.cellsByColumn.rows ) * this.cellsByColumn.columnWidth };
 
    },
 
 
    _cellsByColumnResizeChanged : function() {
 
      return this._checkIfSegmentsChanged(true);
 
    },
 
 
    // ====================== straightAcross ======================
 
 
    _straightAcrossReset : function() {
 
      this.straightAcross = {
 
        x : 0
 
      };
 
    },
 
 
    _straightAcrossLayout : function( $elems ) {
 
      var instance = this;
 
      $elems.each( function( i ){
 
        var $this = $(this);
 
        instance._pushPosition( $this, instance.straightAcross.x, 0 );
 
        instance.straightAcross.x += $this.outerWidth(true);
 
      });
 
    },
 
 
    _straightAcrossGetContainerSize : function() {
 
      return { width : this.straightAcross.x };
 
    },
 
 
    _straightAcrossResizeChanged : function() {
 
      return true;
 
    }
 
 
  };
 
 
 
  // ======================= imagesLoaded Plugin ===============================
 
  /*!
 
  * jQuery imagesLoaded plugin v1.1.0
 
  * http://github.com/desandro/imagesloaded
 
  *
 
  * MIT License. by Paul Irish et al.
 
  */
 
 
 
  // $('#my-container').imagesLoaded(myFunction)
 
  // or
 
  // $('img').imagesLoaded(myFunction)
 
 
  // execute a callback when all images have loaded.
 
  // needed because .load() doesn't work on cached images
 
 
  // callback function gets image collection as argument
 
  //  `this` is the container
 
 
  $.fn.imagesLoaded = function( callback ) {
 
    var $this = this,
 
        $images = $this.find('img').add( $this.filter('img') ),
 
        len = $images.length,
 
        blank = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==',
 
        loaded = [];
 
 
    function triggerCallback() {
 
      callback.call( $this, $images );
 
    }
 
 
    function imgLoaded( event ) {
 
      var img = event.target;
 
      if ( img.src !== blank && $.inArray( img, loaded ) === -1 ){
 
        loaded.push( img );
 
        if ( --len <= 0 ){
 
          setTimeout( triggerCallback );
 
          $images.unbind( '.imagesLoaded', imgLoaded );
 
        }
 
      }
 
    }
 
 
    // if no images, trigger immediately
 
    if ( !len ) {
 
      triggerCallback();
 
    }
 
 
    $images.bind( 'load.imagesLoaded error.imagesLoaded',  imgLoaded ).each( function() {
 
      // cached images don't fire load sometimes, so we reset src.
 
      var src = this.src;
 
      // webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f
 
      // data uri bypasses webkit log warning (thx doug jones)
 
      this.src = blank;
 
      this.src = src;
 
    });
 
 
    return $this;
 
  };
 
 
 
  // helper function for logging errors
 
  // $.error breaks jQuery chaining
 
  var logError = function( message ) {
 
    if ( window.console ) {
 
      window.console.error( message );
 
    }
 
  };
 
 
  // =======================  Plugin bridge  ===============================
 
  // leverages data method to either create or return $.Isotope constructor
 
  // A bit from jQuery UI
 
  //  https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.widget.js
 
  // A bit from jcarousel
 
  //  https://github.com/jsor/jcarousel/blob/master/lib/jquery.jcarousel.js
 
 
  $.fn.isotope = function( options, callback ) {
 
    if ( typeof options === 'string' ) {
 
      // call method
 
      var args = Array.prototype.slice.call( arguments, 1 );
 
 
      this.each(function(){
 
        var instance = $.data( this, 'isotope' );
 
        if ( !instance ) {
 
          logError( "cannot call methods on isotope prior to initialization; " +
 
              "attempted to call method '" + options + "'" );
 
          return;
 
        }
 
        if ( !$.isFunction( instance[options] ) || options.charAt(0) === "_" ) {
 
          logError( "no such method '" + options + "' for isotope instance" );
 
          return;
 
        }
 
        // apply method
 
        instance[ options ].apply( instance, args );
 
      });
 
    } else {
 
      this.each(function() {
 
        var instance = $.data( this, 'isotope' );
 
        if ( instance ) {
 
          // apply options & init
 
          instance.option( options );
 
          instance._init( callback );
 
        } else {
 
          // initialize new instance
 
          $.data( this, 'isotope', new $.Isotope( options, this, callback ) );
 
        }
 
      });
 
    }
 
    // return jQuery object
 
    // so plugin methods do not have to
 
    return this;
 
  };
 
 
})( window, jQuery );</script>
 
 
    <!-- LightBox Nivo -->
 
<script type="text/javascript">/*
 
* Nivo Lightbox v1.2.0
 
* http://dev7studios.com/nivo-lightbox
 
*
 
* Copyright 2013, Dev7studios
 
* Free to use and abuse under the MIT license.
 
* http://www.opensource.org/licenses/mit-license.php
 
*/
 
(function(e,t,n,r){function o(t,n){this.el=t;this.$el=e(this.el);this.options=e.extend({},s,n);this._defaults=s;this._name=i;this.init()}var i="nivoLightbox",s={effect:"fade",theme:"default",keyboardNav:true,clickOverlayToClose:true,onInit:function(){},beforeShowLightbox:function(){},afterShowLightbox:function(e){},beforeHideLightbox:function(){},afterHideLightbox:function(){},onPrev:function(e){},onNext:function(e){},errorMessage:"The requested content cannot be loaded. Please try again later."};o.prototype={init:function(){var t=this;if(!e("html").hasClass("nivo-lightbox-notouch"))e("html").addClass("nivo-lightbox-notouch");if("ontouchstart"in n)e("html").removeClass("nivo-lightbox-notouch");this.$el.on("click",function(e){t.showLightbox(e)});if(this.options.keyboardNav){e("body").off("keyup").on("keyup",function(n){var r=n.keyCode?n.keyCode:n.which;if(r==27)t.destructLightbox();if(r==37)e(".nivo-lightbox-prev").trigger("click");if(r==39)e(".nivo-lightbox-next").trigger("click")})}this.options.onInit.call(this)},showLightbox:function(t){var n=this,r=this.$el;var i=this.checkContent(r);if(!i)return;t.preventDefault();this.options.beforeShowLightbox.call(this);var s=this.constructLightbox();if(!s)return;var o=s.find(".nivo-lightbox-content");if(!o)return;e("body").addClass("nivo-lightbox-body-effect-"+this.options.effect);this.processContent(o,r);if(this.$el.attr("data-lightbox-gallery")){var u=e('[data-lightbox-gallery="'+this.$el.attr("data-lightbox-gallery")+'"]');e(".nivo-lightbox-nav").show();e(".nivo-lightbox-prev").off("click").on("click",function(t){t.preventDefault();var i=u.index(r);r=u.eq(i-1);if(!e(r).length)r=u.last();n.processContent(o,r);n.options.onPrev.call(this,[r])});e(".nivo-lightbox-next").off("click").on("click",function(t){t.preventDefault();var i=u.index(r);r=u.eq(i+1);if(!e(r).length)r=u.first();n.processContent(o,r);n.options.onNext.call(this,[r])})}setTimeout(function(){s.addClass("nivo-lightbox-open");n.options.afterShowLightbox.call(this,[s])},1)},checkContent:function(e){var t=this,n=e.attr("href"),r=n.match(/(youtube|youtu|vimeo)\.(com|be)\/(watch\?v=([\w-]+)|([\w-]+))/);if(n.match(/\.(jpeg|jpg|gif|png)$/i)!==null){return true}else if(r){return true}else if(e.attr("data-lightbox-type")=="ajax"){return true}else if(n.substring(0,1)=="#"&&e.attr("data-lightbox-type")=="inline"){return true}else if(e.attr("data-lightbox-type")=="iframe"){return true}return false},processContent:function(n,r){var i=this,s=r.attr("href"),o=s.match(/(youtube|youtu|vimeo)\.(com|be)\/(watch\?v=([\w-]+)|([\w-]+))/);n.html("").addClass("nivo-lightbox-loading");if(this.isHidpi()&&r.attr("data-lightbox-hidpi")){s=r.attr("data-lightbox-hidpi")}if(s.match(/\.(jpeg|jpg|gif|png)$/i)!==null){var u=e("<img>",{src:s});u.one("load",function(){var r=e('<div class="nivo-lightbox-image" />');r.append(u);n.html(r).removeClass("nivo-lightbox-loading");r.css({"line-height":e(".nivo-lightbox-content").height()+"px",height:e(".nivo-lightbox-content").height()+"px"});e(t).resize(function(){r.css({"line-height":e(".nivo-lightbox-content").height()+"px",height:e(".nivo-lightbox-content").height()+"px"})})}).each(function(){if(this.complete)e(this).load()});u.error(function(){var t=e('<div class="nivo-lightbox-error"><p>'+i.options.errorMessage+"</p></div>");n.html(t).removeClass("nivo-lightbox-loading")})}else if(o){var a="",f="nivo-lightbox-video";if(o[1]=="youtube"){a="http://www.youtube.com/embed/"+o[4];f="nivo-lightbox-youtube"}if(o[1]=="youtu"){a="http://www.youtube.com/embed/"+o[3];f="nivo-lightbox-youtube"}if(o[1]=="vimeo"){a="http://player.vimeo.com/video/"+o[3];f="nivo-lightbox-vimeo"}if(a){var l=e("<iframe>",{src:a,"class":f,frameborder:0,vspace:0,hspace:0,scrolling:"auto"});n.html(l);l.load(function(){n.removeClass("nivo-lightbox-loading")})}}else if(r.attr("data-lightbox-type")=="ajax"){e.ajax({url:s,cache:false,success:function(r){var i=e('<div class="nivo-lightbox-ajax" />');i.append(r);n.html(i).removeClass("nivo-lightbox-loading");if(i.outerHeight()<n.height()){i.css({position:"relative",top:"50%","margin-top":-(i.outerHeight()/2)+"px"})}e(t).resize(function(){if(i.outerHeight()<n.height()){i.css({position:"relative",top:"50%","margin-top":-(i.outerHeight()/2)+"px"})}})},error:function(){var t=e('<div class="nivo-lightbox-error"><p>'+i.options.errorMessage+"</p></div>");n.html(t).removeClass("nivo-lightbox-loading")}})}else if(s.substring(0,1)=="#"&&r.attr("data-lightbox-type")=="inline"){if(e(s).length){var c=e('<div class="nivo-lightbox-inline" />');c.append(e(s).clone().show());n.html(c).removeClass("nivo-lightbox-loading");if(c.outerHeight()<n.height()){c.css({position:"relative",top:"50%","margin-top":-(c.outerHeight()/2)+"px"})}e(t).resize(function(){if(c.outerHeight()<n.height()){c.css({position:"relative",top:"50%","margin-top":-(c.outerHeight()/2)+"px"})}})}else{var h=e('<div class="nivo-lightbox-error"><p>'+i.options.errorMessage+"</p></div>");n.html(h).removeClass("nivo-lightbox-loading")}}else if(r.attr("data-lightbox-type")=="iframe"){var p=e("<iframe>",{src:s,"class":"nivo-lightbox-item",frameborder:0,vspace:0,hspace:0,scrolling:"auto"});n.html(p);p.load(function(){n.removeClass("nivo-lightbox-loading")})}else{return false}if(r.attr("title")){var d=e("<span>",{"class":"nivo-lightbox-title"});d.text(r.attr("title"));e(".nivo-lightbox-title-wrap").html(d)}else{e(".nivo-lightbox-title-wrap").html("")}},constructLightbox:function(){if(e(".nivo-lightbox-overlay").length)return e(".nivo-lightbox-overlay");var t=e("<div>",{"class":"nivo-lightbox-overlay nivo-lightbox-theme-"+this.options.theme+" nivo-lightbox-effect-"+this.options.effect});var n=e("<div>",{"class":"nivo-lightbox-wrap"});var r=e("<div>",{"class":"nivo-lightbox-content"});var i=e('<a href="#" class="nivo-lightbox-nav nivo-lightbox-prev">Previous</a><a href="#" class="nivo-lightbox-nav nivo-lightbox-next">Next</a>');var s=e('<a href="#" class="nivo-lightbox-close" title="Close">Close</a>');var o=e("<div>",{"class":"nivo-lightbox-title-wrap"});var u=0;if(u)t.addClass("nivo-lightbox-ie");n.append(r);n.append(o);t.append(n);t.append(i);t.append(s);e("body").append(t);var a=this;if(a.options.clickOverlayToClose){t.on("click",function(t){if(t.target===this||e(t.target).hasClass("nivo-lightbox-content")||e(t.target).hasClass("nivo-lightbox-image")){a.destructLightbox()}})}s.on("click",function(e){e.preventDefault();a.destructLightbox()});return t},destructLightbox:function(){var t=this;this.options.beforeHideLightbox.call(this);e(".nivo-lightbox-overlay").removeClass("nivo-lightbox-open");e(".nivo-lightbox-nav").hide();e("body").removeClass("nivo-lightbox-body-effect-"+t.options.effect);var n=0;if(n){e(".nivo-lightbox-overlay iframe").attr("src"," ");e(".nivo-lightbox-overlay iframe").remove()}e(".nivo-lightbox-prev").off("click");e(".nivo-lightbox-next").off("click");e(".nivo-lightbox-content").empty();this.options.afterHideLightbox.call(this)},isHidpi:function(){var e="(-webkit-min-device-pixel-ratio: 1.5),                              (min--moz-device-pixel-ratio: 1.5),                              (-o-min-device-pixel-ratio: 3/2),                              (min-resolution: 1.5dppx)";if(t.devicePixelRatio>1)return true;if(t.matchMedia&&t.matchMedia(e).matches)return true;return false}};e.fn[i]=function(t){return this.each(function(){if(!e.data(this,i)){e.data(this,i,new o(this,t))}})}})(jQuery,window,document)
 
</script>
 
 
    <!-- Contact page-->
 
<script type="text/javascript">/* jqBootstrapValidation
 
* A plugin for automating validation on Twitter Bootstrap formatted forms.
 
*
 
* v1.3.6
 
*
 
* License: MIT <http://opensource.org/licenses/mit-license.php> - see LICENSE file
 
*
 
* http://ReactiveRaven.github.com/jqBootstrapValidation/
 
*/
 
 
(function( $ ){
 
 
var createdElements = [];
 
 
var defaults = {
 
options: {
 
prependExistingHelpBlock: false,
 
sniffHtml: true, // sniff for 'required', 'maxlength', etc
 
preventSubmit: true, // stop the form submit event from firing if validation fails
 
submitError: false, // function called if there is an error when trying to submit
 
submitSuccess: false, // function called just before a successful submit event is sent to the server
 
            semanticallyStrict: false, // set to true to tidy up generated HTML output
 
autoAdd: {
 
helpBlocks: true
 
},
 
            filter: function () {
 
                // return $(this).is(":visible"); // only validate elements you can see
 
                return true; // validate everything
 
            }
 
},
 
    methods: {
 
      init : function( options ) {
 
 
        var settings = $.extend(true, {}, defaults);
 
 
        settings.options = $.extend(true, settings.options, options);
 
 
        var $siblingElements = this;
 
 
        var uniqueForms = $.unique(
 
          $siblingElements.map( function () {
 
            return $(this).parents("form")[0];
 
          }).toArray()
 
        );
 
 
        $(uniqueForms).bind("submit", function (e) {
 
          var $form = $(this);
 
          var warningsFound = 0;
 
          var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter);
 
          $inputs.trigger("submit.validation").trigger("validationLostFocus.validation");
 
 
          $inputs.each(function (i, el) {
 
            var $this = $(el),
 
              $controlGroup = $this.parents(".form-group").first();
 
            if (
 
              $controlGroup.hasClass("warning")
 
            ) {
 
              $controlGroup.removeClass("warning").addClass("error");
 
              warningsFound++;
 
            }
 
          });
 
 
          $inputs.trigger("validationLostFocus.validation");
 
 
          if (warningsFound) {
 
            if (settings.options.preventSubmit) {
 
              e.preventDefault();
 
            }
 
            $form.addClass("error");
 
            if ($.isFunction(settings.options.submitError)) {
 
              settings.options.submitError($form, e, $inputs.jqBootstrapValidation("collectErrors", true));
 
            }
 
          } else {
 
            $form.removeClass("error");
 
            if ($.isFunction(settings.options.submitSuccess)) {
 
              settings.options.submitSuccess($form, e);
 
            }
 
          }
 
        });
 
 
        return this.each(function(){
 
 
          // Get references to everything we're interested in
 
          var $this = $(this),
 
            $controlGroup = $this.parents(".form-group").first(),
 
            $helpBlock = $controlGroup.find(".help-block").first(),
 
            $form = $this.parents("form").first(),
 
            validatorNames = [];
 
 
          // create message container if not exists
 
          if (!$helpBlock.length && settings.options.autoAdd && settings.options.autoAdd.helpBlocks) {
 
              $helpBlock = $('<div class="help-block" />');
 
              $controlGroup.find('.controls').append($helpBlock);
 
createdElements.push($helpBlock[0]);
 
          }
 
 
          // =============================================================
 
          //                                    SNIFF HTML FOR VALIDATORS
 
          // =============================================================
 
 
          // *snort sniff snuffle*
 
 
          if (settings.options.sniffHtml) {
 
            var message = "";
 
            // ---------------------------------------------------------
 
            //                                                  PATTERN
 
            // ---------------------------------------------------------
 
            if ($this.attr("pattern") !== undefined) {
 
              message = "Not in the expected format<!-- data-validation-pattern-message to override -->";
 
              if ($this.data("validationPatternMessage")) {
 
                message = $this.data("validationPatternMessage");
 
              }
 
              $this.data("validationPatternMessage", message);
 
              $this.data("validationPatternRegex", $this.attr("pattern"));
 
            }
 
            // ---------------------------------------------------------
 
            //                                                      MAX
 
            // ---------------------------------------------------------
 
            if ($this.attr("max") !== undefined || $this.attr("aria-valuemax") !== undefined) {
 
              var max = ($this.attr("max") !== undefined ? $this.attr("max") : $this.attr("aria-valuemax"));
 
              message = "Too high: Maximum of '" + max + "'<!-- data-validation-max-message to override -->";
 
              if ($this.data("validationMaxMessage")) {
 
                message = $this.data("validationMaxMessage");
 
              }
 
              $this.data("validationMaxMessage", message);
 
              $this.data("validationMaxMax", max);
 
            }
 
            // ---------------------------------------------------------
 
            //                                                      MIN
 
            // ---------------------------------------------------------
 
            if ($this.attr("min") !== undefined || $this.attr("aria-valuemin") !== undefined) {
 
              var min = ($this.attr("min") !== undefined ? $this.attr("min") : $this.attr("aria-valuemin"));
 
              message = "Too low: Minimum of '" + min + "'<!-- data-validation-min-message to override -->";
 
              if ($this.data("validationMinMessage")) {
 
                message = $this.data("validationMinMessage");
 
              }
 
              $this.data("validationMinMessage", message);
 
              $this.data("validationMinMin", min);
 
            }
 
            // ---------------------------------------------------------
 
            //                                                MAXLENGTH
 
            // ---------------------------------------------------------
 
            if ($this.attr("maxlength") !== undefined) {
 
              message = "Too long: Maximum of '" + $this.attr("maxlength") + "' characters<!-- data-validation-maxlength-message to override -->";
 
              if ($this.data("validationMaxlengthMessage")) {
 
                message = $this.data("validationMaxlengthMessage");
 
              }
 
              $this.data("validationMaxlengthMessage", message);
 
              $this.data("validationMaxlengthMaxlength", $this.attr("maxlength"));
 
            }
 
            // ---------------------------------------------------------
 
            //                                                MINLENGTH
 
            // ---------------------------------------------------------
 
            if ($this.attr("minlength") !== undefined) {
 
              message = "Too short: Minimum of '" + $this.attr("minlength") + "' characters<!-- data-validation-minlength-message to override -->";
 
              if ($this.data("validationMinlengthMessage")) {
 
                message = $this.data("validationMinlengthMessage");
 
              }
 
              $this.data("validationMinlengthMessage", message);
 
              $this.data("validationMinlengthMinlength", $this.attr("minlength"));
 
            }
 
            // ---------------------------------------------------------
 
            //                                                  REQUIRED
 
            // ---------------------------------------------------------
 
            if ($this.attr("required") !== undefined || $this.attr("aria-required") !== undefined) {
 
              message = settings.builtInValidators.required.message;
 
              if ($this.data("validationRequiredMessage")) {
 
                message = $this.data("validationRequiredMessage");
 
              }
 
              $this.data("validationRequiredMessage", message);
 
            }
 
            // ---------------------------------------------------------
 
            //                                                    NUMBER
 
            // ---------------------------------------------------------
 
            if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "number") {
 
              message = settings.builtInValidators.number.message;
 
              if ($this.data("validationNumberMessage")) {
 
                message = $this.data("validationNumberMessage");
 
              }
 
              $this.data("validationNumberMessage", message);
 
            }
 
            // ---------------------------------------------------------
 
            //                                                    EMAIL
 
            // ---------------------------------------------------------
 
            if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "email") {
 
              message = "Not a valid email address<!-- data-validator-validemail-message to override -->";
 
              if ($this.data("validationValidemailMessage")) {
 
                message = $this.data("validationValidemailMessage");
 
              } else if ($this.data("validationEmailMessage")) {
 
                message = $this.data("validationEmailMessage");
 
              }
 
              $this.data("validationValidemailMessage", message);
 
            }
 
            // ---------------------------------------------------------
 
            //                                                MINCHECKED
 
            // ---------------------------------------------------------
 
            if ($this.attr("minchecked") !== undefined) {
 
              message = "Not enough options checked; Minimum of '" + $this.attr("minchecked") + "' required<!-- data-validation-minchecked-message to override -->";
 
              if ($this.data("validationMincheckedMessage")) {
 
                message = $this.data("validationMincheckedMessage");
 
              }
 
              $this.data("validationMincheckedMessage", message);
 
              $this.data("validationMincheckedMinchecked", $this.attr("minchecked"));
 
            }
 
            // ---------------------------------------------------------
 
            //                                                MAXCHECKED
 
            // ---------------------------------------------------------
 
            if ($this.attr("maxchecked") !== undefined) {
 
              message = "Too many options checked; Maximum of '" + $this.attr("maxchecked") + "' required<!-- data-validation-maxchecked-message to override -->";
 
              if ($this.data("validationMaxcheckedMessage")) {
 
                message = $this.data("validationMaxcheckedMessage");
 
              }
 
              $this.data("validationMaxcheckedMessage", message);
 
              $this.data("validationMaxcheckedMaxchecked", $this.attr("maxchecked"));
 
            }
 
          }
 
 
          // =============================================================
 
          //                                      COLLECT VALIDATOR NAMES
 
          // =============================================================
 
 
          // Get named validators
 
          if ($this.data("validation") !== undefined) {
 
            validatorNames = $this.data("validation").split(",");
 
          }
 
 
          // Get extra ones defined on the element's data attributes
 
          $.each($this.data(), function (i, el) {
 
            var parts = i.replace(/([A-Z])/g, ",$1").split(",");
 
            if (parts[0] === "validation" && parts[1]) {
 
              validatorNames.push(parts[1]);
 
            }
 
          });
 
 
          // =============================================================
 
          //                                    NORMALISE VALIDATOR NAMES
 
          // =============================================================
 
 
          var validatorNamesToInspect = validatorNames;
 
          var newValidatorNamesToInspect = [];
 
 
          do // repeatedly expand 'shortcut' validators into their real validators
 
          {
 
            // Uppercase only the first letter of each name
 
            $.each(validatorNames, function (i, el) {
 
              validatorNames[i] = formatValidatorName(el);
 
            });
 
 
            // Remove duplicate validator names
 
            validatorNames = $.unique(validatorNames);
 
 
            // Pull out the new validator names from each shortcut
 
            newValidatorNamesToInspect = [];
 
            $.each(validatorNamesToInspect, function(i, el) {
 
              if ($this.data("validation" + el + "Shortcut") !== undefined) {
 
                // Are these custom validators?
 
                // Pull them out!
 
                $.each($this.data("validation" + el + "Shortcut").split(","), function(i2, el2) {
 
                  newValidatorNamesToInspect.push(el2);
 
                });
 
              } else if (settings.builtInValidators[el.toLowerCase()]) {
 
                // Is this a recognised built-in?
 
                // Pull it out!
 
                var validator = settings.builtInValidators[el.toLowerCase()];
 
                if (validator.type.toLowerCase() === "shortcut") {
 
                  $.each(validator.shortcut.split(","), function (i, el) {
 
                    el = formatValidatorName(el);
 
                    newValidatorNamesToInspect.push(el);
 
                    validatorNames.push(el);
 
                  });
 
                }
 
              }
 
            });
 
 
            validatorNamesToInspect = newValidatorNamesToInspect;
 
 
          } while (validatorNamesToInspect.length > 0)
 
 
          // =============================================================
 
          //                                      SET UP VALIDATOR ARRAYS
 
          // =============================================================
 
 
          var validators = {};
 
 
          $.each(validatorNames, function (i, el) {
 
            // Set up the 'override' message
 
            var message = $this.data("validation" + el + "Message");
 
            var hasOverrideMessage = (message !== undefined);
 
            var foundValidator = false;
 
            message =
 
              (
 
                message
 
                  ? message
 
                  : "'" + el + "' validation failed <!-- Add attribute 'data-validation-" + el.toLowerCase() + "-message' to input to change this message -->"
 
              )
 
            ;
 
 
            $.each(
 
              settings.validatorTypes,
 
              function (validatorType, validatorTemplate) {
 
                if (validators[validatorType] === undefined) {
 
                  validators[validatorType] = [];
 
                }
 
                if (!foundValidator && $this.data("validation" + el + formatValidatorName(validatorTemplate.name)) !== undefined) {
 
                  validators[validatorType].push(
 
                    $.extend(
 
                      true,
 
                      {
 
                        name: formatValidatorName(validatorTemplate.name),
 
                        message: message
 
                      },
 
                      validatorTemplate.init($this, el)
 
                    )
 
                  );
 
                  foundValidator = true;
 
                }
 
              }
 
            );
 
 
            if (!foundValidator && settings.builtInValidators[el.toLowerCase()]) {
 
 
              var validator = $.extend(true, {}, settings.builtInValidators[el.toLowerCase()]);
 
              if (hasOverrideMessage) {
 
                validator.message = message;
 
              }
 
              var validatorType = validator.type.toLowerCase();
 
 
              if (validatorType === "shortcut") {
 
                foundValidator = true;
 
              } else {
 
                $.each(
 
                  settings.validatorTypes,
 
                  function (validatorTemplateType, validatorTemplate) {
 
                    if (validators[validatorTemplateType] === undefined) {
 
                      validators[validatorTemplateType] = [];
 
                    }
 
                    if (!foundValidator && validatorType === validatorTemplateType.toLowerCase()) {
 
                      $this.data("validation" + el + formatValidatorName(validatorTemplate.name), validator[validatorTemplate.name.toLowerCase()]);
 
                      validators[validatorType].push(
 
                        $.extend(
 
                          validator,
 
                          validatorTemplate.init($this, el)
 
                        )
 
                      );
 
                      foundValidator = true;
 
                    }
 
                  }
 
                );
 
              }
 
            }
 
 
            if (! foundValidator) {
 
              $.error("Cannot find validation info for '" + el + "'");
 
            }
 
          });
 
 
          // =============================================================
 
          //                                        STORE FALLBACK VALUES
 
          // =============================================================
 
 
          $helpBlock.data(
 
            "original-contents",
 
            (
 
              $helpBlock.data("original-contents")
 
                ? $helpBlock.data("original-contents")
 
                : $helpBlock.html()
 
            )
 
          );
 
 
          $helpBlock.data(
 
            "original-role",
 
            (
 
              $helpBlock.data("original-role")
 
                ? $helpBlock.data("original-role")
 
                : $helpBlock.attr("role")
 
            )
 
          );
 
 
          $controlGroup.data(
 
            "original-classes",
 
            (
 
              $controlGroup.data("original-clases")
 
                ? $controlGroup.data("original-classes")
 
                : $controlGroup.attr("class")
 
            )
 
          );
 
 
          $this.data(
 
            "original-aria-invalid",
 
            (
 
              $this.data("original-aria-invalid")
 
                ? $this.data("original-aria-invalid")
 
                : $this.attr("aria-invalid")
 
            )
 
          );
 
 
          // =============================================================
 
          //                                                    VALIDATION
 
          // =============================================================
 
 
          $this.bind(
 
            "validation.validation",
 
            function (event, params) {
 
 
              var value = getValue($this);
 
 
              // Get a list of the errors to apply
 
              var errorsFound = [];
 
 
              $.each(validators, function (validatorType, validatorTypeArray) {
 
                if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) {
 
                  $.each(validatorTypeArray, function (i, validator) {
 
                    if (settings.validatorTypes[validatorType].validate($this, value, validator)) {
 
                      errorsFound.push(validator.message);
 
                    }
 
                  });
 
                }
 
              });
 
 
              return errorsFound;
 
            }
 
          );
 
 
          $this.bind(
 
            "getValidators.validation",
 
            function () {
 
              return validators;
 
            }
 
          );
 
 
          // =============================================================
 
          //                                            WATCH FOR CHANGES
 
          // =============================================================
 
          $this.bind(
 
            "submit.validation",
 
            function () {
 
              return $this.triggerHandler("change.validation", {submitting: true});
 
            }
 
          );
 
          $this.bind(
 
            [
 
              "keyup",
 
              "focus",
 
              "blur",
 
              "click",
 
              "keydown",
 
              "keypress",
 
              "change"
 
            ].join(".validation ") + ".validation",
 
            function (e, params) {
 
 
              var value = getValue($this);
 
 
              var errorsFound = [];
 
 
              $controlGroup.find("input,textarea,select").each(function (i, el) {
 
                var oldCount = errorsFound.length;
 
                $.each($(el).triggerHandler("validation.validation", params), function (j, message) {
 
                  errorsFound.push(message);
 
                });
 
                if (errorsFound.length > oldCount) {
 
                  $(el).attr("aria-invalid", "true");
 
                } else {
 
                  var original = $this.data("original-aria-invalid");
 
                  $(el).attr("aria-invalid", (original !== undefined ? original : false));
 
                }
 
              });
 
 
              $form.find("input,select,textarea").not($this).not("[name=\"" + $this.attr("name") + "\"]").trigger("validationLostFocus.validation");
 
 
              errorsFound = $.unique(errorsFound.sort());
 
 
              // Were there any errors?
 
              if (errorsFound.length) {
 
                // Better flag it up as a warning.
 
                $controlGroup.removeClass("success error").addClass("warning");
 
 
                // How many errors did we find?
 
                if (settings.options.semanticallyStrict && errorsFound.length === 1) {
 
                  // Only one? Being strict? Just output it.
 
                  $helpBlock.html(errorsFound[0] +
 
                    ( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" ));
 
                } else {
 
                  // Multiple? Being sloppy? Glue them together into an UL.
 
                  $helpBlock.html("<ul role=\"alert\"><li>" + errorsFound.join("</li><li>") + "</li></ul>" +
 
                    ( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" ));
 
                }
 
              } else {
 
                $controlGroup.removeClass("warning error success");
 
                if (value.length > 0) {
 
                  $controlGroup.addClass("success");
 
                }
 
                $helpBlock.html($helpBlock.data("original-contents"));
 
              }
 
 
              if (e.type === "blur") {
 
                $controlGroup.removeClass("success");
 
              }
 
            }
 
          );
 
          $this.bind("validationLostFocus.validation", function () {
 
            $controlGroup.removeClass("success");
 
          });
 
        });
 
      },
 
      destroy : function( ) {
 
 
        return this.each(
 
          function() {
 
 
            var
 
              $this = $(this),
 
              $controlGroup = $this.parents(".form-group").first(),
 
              $helpBlock = $controlGroup.find(".help-block").first();
 
 
            // remove our events
 
            $this.unbind('.validation'); // events are namespaced.
 
            // reset help text
 
            $helpBlock.html($helpBlock.data("original-contents"));
 
            // reset classes
 
            $controlGroup.attr("class", $controlGroup.data("original-classes"));
 
            // reset aria
 
            $this.attr("aria-invalid", $this.data("original-aria-invalid"));
 
            // reset role
 
            $helpBlock.attr("role", $this.data("original-role"));
 
// remove all elements we created
 
if (createdElements.indexOf($helpBlock[0]) > -1) {
 
$helpBlock.remove();
 
}
 
 
          }
 
        );
 
 
      },
 
      collectErrors : function(includeEmpty) {
 
 
        var errorMessages = {};
 
        this.each(function (i, el) {
 
          var $el = $(el);
 
          var name = $el.attr("name");
 
          var errors = $el.triggerHandler("validation.validation", {includeEmpty: true});
 
          errorMessages[name] = $.extend(true, errors, errorMessages[name]);
 
        });
 
 
        $.each(errorMessages, function (i, el) {
 
          if (el.length === 0) {
 
            delete errorMessages[i];
 
          }
 
        });
 
 
        return errorMessages;
 
 
      },
 
      hasErrors: function() {
 
 
        var errorMessages = [];
 
 
        this.each(function (i, el) {
 
          errorMessages = errorMessages.concat(
 
 
            $(el).triggerHandler("getValidators.validation") ? $(el).triggerHandler("validation.validation", {submitting: true}) : []
 
          );
 
        });
 
 
        return (errorMessages.length > 0);
 
      },
 
      override : function (newDefaults) {
 
        defaults = $.extend(true, defaults, newDefaults);
 
      }
 
    },
 
validatorTypes: {
 
      callback: {
 
        name: "callback",
 
        init: function ($this, name) {
 
          return {
 
            validatorName: name,
 
            callback: $this.data("validation" + name + "Callback"),
 
            lastValue: $this.val(),
 
            lastValid: true,
 
            lastFinished: true
 
          };
 
        },
 
        validate: function ($this, value, validator) {
 
          if (validator.lastValue === value && validator.lastFinished) {
 
            return !validator.lastValid;
 
          }
 
 
          if (validator.lastFinished === true)
 
          {
 
            validator.lastValue = value;
 
            validator.lastValid = true;
 
            validator.lastFinished = false;
 
 
            var rrjqbvValidator = validator;
 
            var rrjqbvThis = $this;
 
            executeFunctionByName(
 
              validator.callback,
 
              window,
 
              $this,
 
              value,
 
              function (data) {
 
                if (rrjqbvValidator.lastValue === data.value) {
 
                  rrjqbvValidator.lastValid = data.valid;
 
                  if (data.message) {
 
                    rrjqbvValidator.message = data.message;
 
                  }
 
                  rrjqbvValidator.lastFinished = true;
 
                  rrjqbvThis.data("validation" + rrjqbvValidator.validatorName + "Message", rrjqbvValidator.message);
 
                  // Timeout is set to avoid problems with the events being considered 'already fired'
 
                  setTimeout(function () {
 
                    rrjqbvThis.trigger("change.validation");
 
                  }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
 
                }
 
              }
 
            );
 
          }
 
 
          return false;
 
 
        }
 
      },
 
      ajax: {
 
        name: "ajax",
 
        init: function ($this, name) {
 
          return {
 
            validatorName: name,
 
            url: $this.data("validation" + name + "Ajax"),
 
            lastValue: $this.val(),
 
            lastValid: true,
 
            lastFinished: true
 
          };
 
        },
 
        validate: function ($this, value, validator) {
 
          if (""+validator.lastValue === ""+value && validator.lastFinished === true) {
 
            return validator.lastValid === false;
 
          }
 
 
          if (validator.lastFinished === true)
 
          {
 
            validator.lastValue = value;
 
            validator.lastValid = true;
 
            validator.lastFinished = false;
 
            $.ajax({
 
              url: validator.url,
 
              data: "value=" + value + "&field=" + $this.attr("name"),
 
              dataType: "json",
 
              success: function (data) {
 
                if (""+validator.lastValue === ""+data.value) {
 
                  validator.lastValid = !!(data.valid);
 
                  if (data.message) {
 
                    validator.message = data.message;
 
                  }
 
                  validator.lastFinished = true;
 
                  $this.data("validation" + validator.validatorName + "Message", validator.message);
 
                  // Timeout is set to avoid problems with the events being considered 'already fired'
 
                  setTimeout(function () {
 
                    $this.trigger("change.validation");
 
                  }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
 
                }
 
              },
 
              failure: function () {
 
                validator.lastValid = true;
 
                validator.message = "ajax call failed";
 
                validator.lastFinished = true;
 
                $this.data("validation" + validator.validatorName + "Message", validator.message);
 
                // Timeout is set to avoid problems with the events being considered 'already fired'
 
                setTimeout(function () {
 
                  $this.trigger("change.validation");
 
                }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
 
              }
 
            });
 
          }
 
 
          return false;
 
 
        }
 
      },
 
regex: {
 
name: "regex",
 
init: function ($this, name) {
 
return {regex: regexFromString($this.data("validation" + name + "Regex"))};
 
},
 
validate: function ($this, value, validator) {
 
return (!validator.regex.test(value) && ! validator.negative)
 
|| (validator.regex.test(value) && validator.negative);
 
}
 
},
 
required: {
 
name: "required",
 
init: function ($this, name) {
 
return {};
 
},
 
validate: function ($this, value, validator) {
 
return !!(value.length === 0  && ! validator.negative)
 
|| !!(value.length > 0 && validator.negative);
 
},
 
        blockSubmit: true
 
},
 
match: {
 
name: "match",
 
init: function ($this, name) {
 
var element = $this.parents("form").first().find("[name=\"" + $this.data("validation" + name + "Match") + "\"]").first();
 
element.bind("validation.validation", function () {
 
$this.trigger("change.validation", {submitting: true});
 
});
 
return {"element": element};
 
},
 
validate: function ($this, value, validator) {
 
return (value !== validator.element.val() && ! validator.negative)
 
|| (value === validator.element.val() && validator.negative);
 
},
 
        blockSubmit: true
 
},
 
max: {
 
name: "max",
 
init: function ($this, name) {
 
return {max: $this.data("validation" + name + "Max")};
 
},
 
validate: function ($this, value, validator) {
 
return (parseFloat(value, 10) > parseFloat(validator.max, 10) && ! validator.negative)
 
|| (parseFloat(value, 10) <= parseFloat(validator.max, 10) && validator.negative);
 
}
 
},
 
min: {
 
name: "min",
 
init: function ($this, name) {
 
return {min: $this.data("validation" + name + "Min")};
 
},
 
validate: function ($this, value, validator) {
 
return (parseFloat(value) < parseFloat(validator.min) && ! validator.negative)
 
|| (parseFloat(value) >= parseFloat(validator.min) && validator.negative);
 
}
 
},
 
maxlength: {
 
name: "maxlength",
 
init: function ($this, name) {
 
return {maxlength: $this.data("validation" + name + "Maxlength")};
 
},
 
validate: function ($this, value, validator) {
 
return ((value.length > validator.maxlength) && ! validator.negative)
 
|| ((value.length <= validator.maxlength) && validator.negative);
 
}
 
},
 
minlength: {
 
name: "minlength",
 
init: function ($this, name) {
 
return {minlength: $this.data("validation" + name + "Minlength")};
 
},
 
validate: function ($this, value, validator) {
 
return ((value.length < validator.minlength) && ! validator.negative)
 
|| ((value.length >= validator.minlength) && validator.negative);
 
}
 
},
 
maxchecked: {
 
name: "maxchecked",
 
init: function ($this, name) {
 
var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]");
 
elements.bind("click.validation", function () {
 
$this.trigger("change.validation", {includeEmpty: true});
 
});
 
return {maxchecked: $this.data("validation" + name + "Maxchecked"), elements: elements};
 
},
 
validate: function ($this, value, validator) {
 
return (validator.elements.filter(":checked").length > validator.maxchecked && ! validator.negative)
 
|| (validator.elements.filter(":checked").length <= validator.maxchecked && validator.negative);
 
},
 
        blockSubmit: true
 
},
 
minchecked: {
 
name: "minchecked",
 
init: function ($this, name) {
 
var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]");
 
elements.bind("click.validation", function () {
 
$this.trigger("change.validation", {includeEmpty: true});
 
});
 
return {minchecked: $this.data("validation" + name + "Minchecked"), elements: elements};
 
},
 
validate: function ($this, value, validator) {
 
return (validator.elements.filter(":checked").length < validator.minchecked && ! validator.negative)
 
|| (validator.elements.filter(":checked").length >= validator.minchecked && validator.negative);
 
},
 
        blockSubmit: true
 
}
 
},
 
builtInValidators: {
 
email: {
 
name: "Email",
 
type: "shortcut",
 
shortcut: "validemail"
 
},
 
validemail: {
 
name: "Validemail",
 
type: "regex",
 
regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\.[A-Za-z]{2,4}",
 
message: "Not a valid email address<!-- data-validator-validemail-message to override -->"
 
},
 
passwordagain: {
 
name: "Passwordagain",
 
type: "match",
 
match: "password",
 
message: "Does not match the given password<!-- data-validator-paswordagain-message to override -->"
 
},
 
positive: {
 
name: "Positive",
 
type: "shortcut",
 
shortcut: "number,positivenumber"
 
},
 
negative: {
 
name: "Negative",
 
type: "shortcut",
 
shortcut: "number,negativenumber"
 
},
 
number: {
 
name: "Number",
 
type: "regex",
 
regex: "([+-]?\\\d+(\\\.\\\d*)?([eE][+-]?[0-9]+)?)?",
 
message: "Must be a number<!-- data-validator-number-message to override -->"
 
},
 
integer: {
 
name: "Integer",
 
type: "regex",
 
regex: "[+-]?\\\d+",
 
message: "No decimal places allowed<!-- data-validator-integer-message to override -->"
 
},
 
positivenumber: {
 
name: "Positivenumber",
 
type: "min",
 
min: 0,
 
message: "Must be a positive number<!-- data-validator-positivenumber-message to override -->"
 
},
 
negativenumber: {
 
name: "Negativenumber",
 
type: "max",
 
max: 0,
 
message: "Must be a negative number<!-- data-validator-negativenumber-message to override -->"
 
},
 
required: {
 
name: "Required",
 
type: "required",
 
message: "This is required<!-- data-validator-required-message to override -->"
 
},
 
checkone: {
 
name: "Checkone",
 
type: "minchecked",
 
minchecked: 1,
 
message: "Check at least one option<!-- data-validation-checkone-message to override -->"
 
}
 
}
 
};
 
 
var formatValidatorName = function (name) {
 
return name
 
.toLowerCase()
 
.replace(
 
/(^|\s)([a-z])/g ,
 
function(m,p1,p2) {
 
return p1+p2.toUpperCase();
 
}
 
)
 
;
 
};
 
 
var getValue = function ($this) {
 
// Extract the value we're talking about
 
var value = $this.val();
 
var type = $this.attr("type");
 
if (type === "checkbox") {
 
value = ($this.is(":checked") ? value : "");
 
}
 
if (type === "radio") {
 
value = ($('input[name="' + $this.attr("name") + '"]:checked').length > 0 ? value : "");
 
}
 
return value;
 
};
 
 
  function regexFromString(inputstring) {
 
return new RegExp("^" + inputstring + "$");
 
}
 
 
  /**
 
  * Thanks to Jason Bunting via StackOverflow.com
 
  *
 
  * http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string#answer-359910
 
  * Short link: http://tinyurl.com/executeFunctionByName
 
  **/
 
  function executeFunctionByName(functionName, context /*, args*/) {
 
    var args = Array.prototype.slice.call(arguments).splice(2);
 
    var namespaces = functionName.split(".");
 
    var func = namespaces.pop();
 
    for(var i = 0; i < namespaces.length; i++) {
 
      context = context[namespaces[i]];
 
    }
 
    return context[func].apply(this, args);
 
  }
 
 
$.fn.jqBootstrapValidation = function( method ) {
 
 
if ( defaults.methods[method] ) {
 
return defaults.methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
 
} else if ( typeof method === 'object' || ! method ) {
 
return defaults.methods.init.apply( this, arguments );
 
} else {
 
$.error( 'Method ' +  method + ' does not exist on jQuery.jqBootstrapValidation' );
 
return null;
 
}
 
 
};
 
 
  $.jqBootstrapValidation = function (options) {
 
    $(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this,arguments);
 
  };
 
 
})( jQuery );
 
</script>
 
<script type="text/javascript">$(function() {
 
 
    $("input,textarea").jqBootstrapValidation({
 
        preventSubmit: true,
 
        submitError: function($form, event, errors) {
 
            // additional error messages or events
 
        },
 
        submitSuccess: function($form, event) {
 
            event.preventDefault(); // prevent default submit behaviour
 
            // get values from FORM
 
            var name = $("input#name").val();
 
            var email = $("input#email").val();
 
            var phone = $("input#phone").val();
 
            var message = $("textarea#message").val();
 
            var firstName = name; // For Success/Failure Message
 
            // Check for white space in name for Success/Fail message
 
            if (firstName.indexOf(' ') >= 0) {
 
                firstName = name.split(' ').slice(0, -1).join(' ');
 
            }
 
            $.ajax({
 
                url: "../submit.php",
 
                type: "POST",
 
                data: {
 
                    name: name,
 
                    phone: phone,
 
                    email: email,
 
                    message: message
 
                },
 
                cache: false,
 
                success: function() {
 
                    // Success message
 
                    $('#success').html("<div class='alert alert-success'>");
 
                    $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
 
                        .append("</button>");
 
                    $('#success > .alert-success')
 
                        .append("<strong>Your message has been sent. </strong>");
 
                    $('#success > .alert-success')
 
                        .append('</div>');
 
 
                    //clear all fields
 
                    $('#contact-form').trigger("reset");
 
                },
 
                error: function() {
 
                    // Fail message
 
                    $('#success').html("<div class='alert alert-danger'>");
 
                    $('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
 
                        .append("</button>");
 
                    $('#success > .alert-danger').append("<strong>Sorry " + firstName + ", it seems that my mail server is not responding. Please try again later!");
 
                    $('#success > .alert-danger').append('</div>');
 
                    //clear all fields
 
                    $('#contact-form').trigger("reset");
 
                },
 
            })
 
        },
 
        filter: function() {
 
            return $(this).is(":visible");
 
        },
 
    });
 
 
    $("a[data-toggle=\"tab\"]").click(function(e) {
 
        e.preventDefault();
 
        $(this).tab("show");
 
    });
 
});
 
 
 
/*When clicking on Full hide fail/success boxes */
 
$('#name').focus(function() {
 
    $('#success').html('');
 
});
 
</script>
 
 
    <!-- Javascripts
 
    ================================================== -->
 
<script type="text/javascript">// Hello.
 
//
 
// This is The Scripts used for ___________ Theme
 
//
 
//
 
 
function main() {
 
 
(function () {
 
  'use strict';
 
 
   
 
// Smooth Scrolling
 
    //==========================================
 
    $(function() {
 
      $('a.scroll').click(function() {
 
        if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
 
          var target = $(this.hash);
 
          target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
 
          if (target.length) {
 
            $('html,body').animate({
 
              scrollTop: target.offset().top -50
 
            }, 1000);
 
            return false;
 
          }
 
        }
 
      });
 
    });
 
 
    /*====================================
 
    Script for the Counters for Facts Section
 
    ======================================*/
 
    $('.count').each(function() {
 
        var $this = $(this);
 
        $this.data('target', parseInt($this.html()));
 
        $this.data('counted', false);
 
        $this.html('0');
 
    });
 
    $(window).bind('scroll', function() {
 
        var speed = 3000;
 
        $('.count').each(function() {
 
            var $this = $(this);
 
            if (!$this.data('counted') && $(window).scrollTop() +
 
                $(window).height() >= $this.offset().top) {
 
                $this.data('counted', true);
 
                $this.animate({
 
                    dummy: 1
 
                }, {
 
                    duration: speed,
 
                    step: function(now) {
 
                        var $this = $(this);
 
                        var val = Math.round(
 
                            $this.data(
 
                                'target') *
 
                            now);
 
                        $this.html(val);
 
                        if (0 < $this.parent(
 
                            '.value').length) {
 
                            $this.parent(
 
                                '.value').css(
 
                                'width',
 
                                val + '%');
 
                        }
 
                    }
 
                });
 
            }
 
        });
 
    }).triggerHandler('scroll');
 
 
    /*====================================
 
    Portfolio Carousel
 
    ======================================*/
 
  $(document).ready(function() {
 
    var owl = $("#team");
 
    owl.owlCarousel({
 
     
 
        itemsCustom : [
 
          [0, 1],
 
          [450, 1],
 
          [660, 2],
 
          [700, 2],
 
          [1200, 3],
 
          [1600, 3]
 
        ],
 
        navigation : false,
 
        pagination: true,
 
    });
 
 
 
  });
 
 
    /*====================================
 
    Portfolio Isotope Filter
 
    ======================================*/
 
    $(window).load(function() {
 
        var $container = $('#itemsWork , #itemsWorkTwo, #itemsWorkThree');
 
        $container.isotope({
 
            filter: '* , all',
 
            animationOptions: {
 
                duration: 750,
 
                easing: 'linear',
 
                queue: false
 
            }
 
        });
 
        $('.cat a').click(function() {
 
            $('.cat .active').removeClass('active');
 
            $(this).addClass('active');
 
            var selector = $(this).attr('data-filter');
 
            $container.isotope({
 
                filter: selector,
 
                animationOptions: {
 
                    duration: 750,
 
                    easing: 'linear',
 
                    queue: false
 
                }
 
            });
 
            return false;
 
        });
 
 
    });
 
 
    /*====================================
 
    Nivo Lightbox
 
    ======================================*/
 
    // Agency Portfolio Popup
 
    $('#itemsWork a , #itemsWorkTwo a , #itemsWorkThree a , #popup a').nivoLightbox({
 
            effect: 'slideDown', 
 
            keyboardNav: true,                           
 
        });
 
 
    $(document).ready(function() {
 
 
  $("#owl-demo").owlCarousel({
 
 
      navigation : false, // Show next and prev buttons
 
      slideSpeed : 300,
 
      paginationSpeed : 400,
 
      singleItem:true
 
 
      // "singleItem:true" is a shortcut for:
 
      // items : 1,
 
      // itemsDesktop : false,
 
      // itemsDesktopSmall : false,
 
      // itemsTablet: false,
 
      // itemsMobile : false
 
 
  });
 
 
});
 
 
 
 
 
}());
 
 
 
}
 
main();</script>
 
   
 
  
 
   </body>
 
   </body>
 
</html>
 
</html>

Latest revision as of 01:53, 19 September 2015

2015_IGEM_H14Zteam_Wiki

The best way ever to preserve lithic relics

an innovative biochemical method to resolve erosion.

View Our Works


The inscriptions on Precipice are one of the most common and fundamental forms of traditional Chinese relics. Due to having been carved in open areas plus the exposure to sunshine and raindrops, which is often the case for most of them,the Inscriptions are weathered readily. Currently, there are quite a few methods to resolve this phenomenon but some of them are not used properly which occasionally cause the damage for the Inscriptions. Our research project aims at using microorganism method, which is to put a plasmid with the ability to convert bio-oriented oxaloacetic acid to oxalate acid into the cell of E.coil, inducing the cell and the product will react with one component of the Inscriptions-- calcium carbonate-- to generate nearly insoluble calcium oxalate monohydrate to adhere to the Inscriptions for protection. Another E.coil with the ablility to secrete lipase has also been constructed; we aim to add this cell when we are cleansing the Inscriptions to resolve the oil substances on the surface of them. By constructing these products, we are able to protect the relics either from human errors as cleaning and protecting or from natural damnification.

some   destroyed   inscriptions   on   Precipice

photos were took within Hangzhou
...

Project's  Presentation

photoes were took within Hangzhou
...

Project's background

       The area near Qiantang River has a profound history of wealth. Hangzhou, in the heart of this area, situated many astonishing lithic cultural relics. Most of them were made during The Ten Kingdoms (A.D. 891-A.D. 979) and Song Dynasty (A.D. 960- A.D. 1279). Not only do those lithic relics represent the cutting edge of stone carving technology in contemporary time, but also they provide historians and archaeologists with solid historical evidence.

        There are three main types of lithic relics in Hangzhou; they are stone sculptures, stone towers also known as Dhavaja, and stone inscriptions. The stone sculptures are primarily represented by Feilai Peak (飞来峰), Ciyun Ridge (慈云岭), and Statue of Mahakala in Baocheng Temple (宝成寺麻曷葛剌). Stone Towers are primarily represented by White Tower (白塔). Stone inscriptions are primarily represented by Hetingwuhe Fubei on Lonely Mountain (孤山放鹤亭舞鹤赋碑).

        Plus, Feilai Peak and White Tower are National Key Historical Relics. Most lithic relics encounter physical, chemical and biological interaction, resulting in weathering corrosion, pulverisation lesion, cracking, contamination, and colour mottling. Those phenomena jeopardise the value of lithic relics and even lithic relics themselves, and the lithic relics in Hangzhou are not of exceptions.

        In 2002, some of the classic lithic relics were inspected and it was found that the surface of Feilai Peak Sculpture was greatly ruined (Figure 1), and there is leaking on Ciyun Ridge Sculpture (Figure 2)..

    Meanwhile, Cultural Relics Department of China has been trying to maintain and recover the lithic relics. Since 2002, Cultural Relics Department of China mainly has been removing surface deposit, depleting pounding, strengthening crag, and changing flora; the government washed Feilai Peak Sculpture for many times (Figure 3).Government built a top above the Ciyun Peak Sculpture, this relic no longer had to expose to sun and rain henceforward (Figure 4).

    White Tower was comprehensively cleaned and strengthened by silicone by Zhejiang University of Technology (Figure 5).

     The power plants and railways were removed. During the washing, the staff intentionally left part of this tower intact, and made an contrast for further research of anti-contamination and anti-weathering (Figure 5-3, 5-4)

    However, 2015 field research shows most external lithic murals, statue, and towers still suffer from damage. Some even have distraction in main stone body. Meanwhile, there grows moss. Indoor stone inscriptions though are visible; there are obvious and irremovable cracks.

     Today, most preservation of lithic relics employ physical, chemical, or engineer approaches no matter where. It has been proven by reality that each of those approaches has fatal disadvantages for long-standing preservation of lithic relics, and those disadvantages would even lead to the ruin of lithic relics.

    Since forever, there are two categories of methods to preserve-- organic and inorganic. Organic materials cannot reach the standard of time to preserve relics such as epoxy resin, acrylic resin, silicone, etc.; inorganic materials would form hard shell that is not compatible or even react with the lithic relics, such as lime, barium hydroxide, and sulphuric acid.

     In conclusion, finding a long-standing, inexpensive, and efficient method to preserve lithic relics is an impending issue.

Principles of experiments

    The documents cited shows that even after natural weathering, biological decomposition, and acid rain erosion for a time period of time, some stone inscriptions, which are on rock surface containing calcium, remain in good condition because there is a thin layer of naturally formed semitransparent mineralised film that is hydrophilic and compact on such rock surface.

     In some part under the fine film, knife scratches on the stone from over a thousand years ago are still visible indistinctly. According to solid analysis, natural mineralised film is primarily composed of calcium oxalate monohydrate [Ca(COO)2·H2O] whose process of composition is interfered by microorganism.

     There are some advantages of calcium oxalate being a film as follows,

        1) In water, especially in acidulous water, the solubility of calcium oxalate is one order of magnitude smaller than normal calcium carbonate.

        2) Organically oriented calcium oxalate crystal's particles are fine and compact, which prevent the infiltration of toxic and harmful materials.

        3) The system can't be easily broken by external forces in that there is no distinct boundary between calcium carbonate rock and calcium oxalate film.

        So, this research project has chosen E. coli that has been transcribed with lipase to clean some stone relics that are covered with oil; then, we use E. coli, with transcription, that can secrete oxalate acid upon the stone relics. Therefore, there forms calcium oxalate to be protection film in order to preserve lithic relics.

        If we use chemical methods to generate calcium oxalate, we have to immerse the lithic relics in the chemical liquid; however, it is not suitable for the preservation of large-scale outdoor lithic relics. In fact, the natural existing calcium oxalate comes from the reaction of oxalate acid generated by microorganism and calcium compound on the surface of stone. This research project will utilise genetic engineering methods to "graft" the gene that generates calcium oxalate into Escherichia coli (E. coil).

    Then oxalate acid reacts with calcium lithic relics to generate calcium oxalate, which stimulates its natural formation process. Finally, there forms a fine layer to protect the lithic relics.

Procedures in detail

1.1 Experiment reagents and equipment

    1.1.1 Target genes

        (1) Lipase: lipase is the target gene segment of this experiment, and the gene sequence is synthesised by IDT Inc.

        (2) Oxaloacetate acetylhydrolase, abbreviation OAH, is the target gene segment of these experiments. The main function of OAH is to transfer oxaloacetic acid to oxalate acid; thus the oxalate acid reacts with the calcium ion to form calcium oxalate that preserves the relics. The target gene segment is synthesised by IDT Inc. after found in gene pool.

    1.1.2 Strain and Plasmid This experiment uses plasmid pET-28a, and the E. coli is TOP-10 competent cell, provided by TIANGEN Biotech CO., LTD.

    1.1.3 Enzyme and Reagents This experiment uses restriction enzyme provided by NEB; T4 DNA Ligase, TIANprep Mini Plasmid Kit, and TIANquick Midi Purification Kit are provided by Tiangen Biotech CO., LTD.

    1.1.4 PCR Primer

        (1) Lipase: According to the sequences and the MCS (multiple cloning sites) to the destination vector of the Lipase, XhoI and NcoI are chosen to be the enzyme cutting cites for the inserting enzyme cutting cites. There form the following primers:

    Sense primer: 5’-AAGCAAGCCCATGGAATTTGTAA-3’ (Underlined proportion is Ncoi enzyme cutting cite)

    Anti-sense primer: 5’-TTTTGTTGCTCGAGTTAATTCG-3’ (Underlined proportion is Xhoi enzyme cutting cite)

         (2) OAH: According to the sequence detected by OAH, the primer is synthesised by the Invireogen:

        Sense primer: 5’-ATCATCTTGCATATGGCGTCCACCATTGCTGTT-3’ (Underlined proportion is Ndei enzyme cutting cite)

         Anti-sense primer: 5’-TTTCCTTTTGCGGCCGCTTAG-3’ (Underlined proportion is Noti enzyme cutting cite)

    1.1.5 Substrate Medium

        (1) The experiment contains LB substrate media. Take the example of confecting 200mL; the materials needed are 2g of tryptone, 1g of yeast extract, 4g of sodium chloride, and 200mL of water with 1000× ratio of chloramphenicol.

        (2) The experiment contains LB substrate media. Take the example of confecting 200mL; the materials needed are 2g of tryptone, 1g of yeast extract, 4g of sodium chloride, and 200mL of water with 1000× ratio of Kanamycin Sulfate.

        (3) The experiment contains Kanamycin Sulfate substrate media. Take the example of confecting 400mL; the materials needed are 4g of tryptone, 2g of yeast extract, 4g of sodium chloride, 6g AGAR powder and 1.2mL

Procedures in detail

1.2 Procedures of Experiments

     1.2.1 PCR Proliferation

        Due to high content of G-C base-pairs in target gene segments, GC Buffer is required in PCR proliferation. Refer to Takara's protocols to prepare 200μL of system: 100μL of GC Buffer, 16μL of dntp mixture, 4μL of sense primer, 4μL of anti-sense primer, 4μL of DNA templet, 2μL of Taq, and 70μL of H2O. 60°C-70°C is used for Gradient PCR, the sixth bad is the brightest (Figure 9) thus the temperature of such is best for annealing. In new system, PCR is proceeded in that temperature; finally we get the gene segments with gene linkers.

    1.2.2 Gel electrophoresis, purification

    1.2.3 Digestion

        Put NotI and NdeI restriction endonuclease in gene segment and vector pET-28a respectively.

    1.2.4

         Linking and setting the groups Experimental group:plasmid after digestion + target gene + T4 DNA Ligase + buffer Control group: plasmid after digestion *Experiment conducted under 16°C

    1.2.5

        Use DNA purification kit to extract product after linking; transcribe in TOP-10 competent cell, put on Kanamycin Sulfate substrate media and then culture under 37°C.

    1.2.6

        According to the growth of strains, bacterium plasmid is extracted with digesting with two enzymes above. Recheck the correctness of position and size to assure that it has been linked.

    1.2.7 Sequencing by Sangon Shanghai, China

    1.2.8 Functional Test of Lipase

        (1) Fasten the AGAR Plane: 2.5g of AGAR powder, 6.25mL of tributyrin, 18.75mL 3g/dL of polyvinyl alcohol, 2.5mL 1g/dL Victorian Blue, 225mL of H2O. Heat and resolve the AGAR powder, pure into substrate media, chilling. IPTG solution: weigh 1.2g of IPTG and put it into centrifugal tubes. Add 40mL of H2O, resolve, then to the constant volume of 50mL. Use 0.22μm strainer to filter out the other bacteria, then put into refrigerator of -20°C.

        (2) Transcribe the lipase enzyme plasmid into BL-21 competent cell of E. coli, culture.

        (3) Pick bacteria into small colonies from growing strains on the cultivation board, which has been configured with a medium, Kanamycin, and join the 0.1 mmol/L IPTG solution to carry on the induction, six hours later to take on the culture medium centrifugal supernatant, get with lipase protein nutrient solution.

        (4) From fixed AGAR plate with holes, pick bacteria. Burn alcohol burner against the bottom of AGAR to assure it is stick. Put 30μL into the holes, lie horizontally in 30°C incubator for a while and then observe the change of colour.

Results of Experiments and Analysis

1.3 Results of Experiments and Analysis

     1.3.1 Digestion check

        (1) Use NcoI and XhoI to digest plasmid on lipase after PCR. We know our result is correct because two bright parts of plasmid is in the same position and of the same size.

        (2) Use NdeI and NotI to digest plasmid on OAH after PCR. We know our result is correct because two bright parts of plasmid is in the same position and of the same size. (Figure 10)

    1.3.2 Sequencing

        The results of t sequencing of Lipase and OAH are both correct, for more detail, check appendix 1.

    1.3.3 Functional Test of Lipase

        Let PET-28a-Lipase plasmid be transcribed into BL-21 E. coli (the procedure is the same as that of TOP-10 E. coli), then put on substrate media. Pick E. coli into shake flask for 3 hours. Join IPTG solution (0.1 mmol/L) for abduction for 6 hours. Put into centrifugal machine then supernatant liquid (with lipase) for lipase test. The result shows that the colour has changed besides plasmid with lipase (Figure 11), showing that LipB2 gene is correctly expressed in BL21 E. coli.

         Linking and setting the groups Experimental group:plasmid after digestion + target gene + T4 DNA Ligase + buffer Control group: plasmid after digestion *Experiment conducted under 16°C

1.4 Result Analysis and Prospect

    According to the results of sequencing, actual sequence is identical to designed sequence, which testifies the validity of formulation (appendix 1). In lipase functional test, there is relatively obvious phenomenon under IPTG abduction (Figure 11), which testifies the function of gene.

    Hence, using this reformed lipase can erase the grease cover on relic surface, and we hope to use OAH reconstruct relic surface.

    Meanwhile, recombinant lipase can be widely used in any field for de-greasing, for example, the de-greasing process of steel surface, pre-treatment of high-fat food disposal, etc.

    This research project only recombines the lipase without optimising it according to temperature fluctuation, abduction concentration. We hope our project is helpful in every field.

Mathimatical models

    Since there is no one had done the same experiment as ours before, we assumed the growing pattern is similar as E.coil CVCC249.

    We got the data of this kind of E.coil from a doctoral dissertation,Comparison of Growth Kinetics and Physiological Characteristics of E.coil CVCC249 under both Batch and Continuous Culture by Huaiqiang Zhang, at page34. We used the logistic function data in this form, which is K=1.937 and r=0.550, and we assumed that N0=0.1( since N0 is initial population of E.coil, we can just simply set this data).

    According to logistic function , we can get the bacteria population-time function:(see Figure 1)

        f(t) = 1.937/(1+(1.937-0.1)e^(-0.55t)/0.1)         f(t) = 1.937/(1+18.37*e^(-0.55t))

    After that, we assumed that there will be x% of bacteria can present the property we need. Then we can get population of expressed bacteria:

        fex(t) = x%*1.937/(1+18.37*e^(-0.55t))

    Because we need the oxalic acid-time function, we assume the speed of oxalic acid secretion of per unit of bacteria is v. So the total speed should be:

        V(t) = v*x%*1.937/(1+18.37*e^(-0.55t))

    Since the secretion of oxalic acid should be accumulated, we take the integration of total speed of time. We used WolframAlpha program to find out this integration.

        ∫1.937/(1+18.37*e^(-0.55t)) dt=3.522*log(18.37+e^(0.55t))+C0

        ∫V(t) dt=v*x%*3.522*log(18.37+e^(0.55t))+C

    Because the function should began at (0,0) point, we can find out constant C in function.

        0=v*x%*3.522*log(18.37+e^(0.55*0))+C         C=-3.522*log(19.37)*v*x%         C=-10.438*v*x%         Substitute C=-10.438*v*x%

        Soa(t)=v*x%*(3.522*log(18.37+e^(0.55t))-10.438)

    This is oxalic acid-time function.

    We also need to find out lipid-time function. Obviously, it’s more complicated than last function, since the decomposition speed cannot be a constant.

    The fex(t) function should be also available in this part. Starting constructing process, we assumed that initial total lipid is N, lipid that decomposed is n, and the decomposing speed is relate to following factors:

    k: a constant representing efficiency of lipase     (N-n): remain amount of lipid     fex(t): quantity of expressed bacteria

    And there should be a function meaning that decomposing speed is proportional to the remain amount of lipid and quantity of expressed bacteria:

        dn/dt=k*(N-n)*fex(t)

        Solve that differential equation.

        1/(N-n) dn=k*fex (t) dt         ∫1/(N-n) dn=k∫fex (t) dt         -ln(N-n)=k∫f ex(t) dt + C

    Since we already know that ∫f ex(t) dt= x%*(3.522*log(18.37+e^(0.55t))-10.438) in this condition.

        -ln(N-n)=k*x%*(3.522*log(18.37+e^(0.55t))-10.438)         (N-n)=e^(-k*x%*(3.522*log(18.37+e^(0.55t))-10.438))

    So the lipid-time function, Slp(t), were found:

        Slp(t)=(N-n)=e^(-k*x%*(3.522*log(18.37+e^(0.55t))-10.438))

Notebook


Our origin experiment records

INFO   ABOUT   Team   MEMBER

suspend your mouse above each images to learn more about our team member.
...

Zhengdong Chen

Image

Yue Wu

Image

Shuyang Zhou

Image

Haobo Shao

Image

Yunfeng Guo

Image

Minxing Chen

Image

Jingcheng Shi

Image

Juncheng Luo

Image

Wei He

Image

Yuning Gu

Image

Xiaomei Tang

Image

Jie Zheng

Image

Collaborations

Our team collaborated with various IGEM teams and other people in this project
...

                                                                                                                                                                 We collaborated with the collegiate team— Zhejiang University.

                                                                                                                                                                The students of ZJU helped us in the pre-programm training in the site of Zhejiang Association for Science and Technology.

                                                                                                                                                                They taught us the basic biology experimental techniques by dyeing colon bacillus in a bio-tech way.

                                                                                                                                                                Meanwhile, they invited the team instructor of Peking University to introduce us how to understand this competition.



                                                                                                                                                                Interview with the local experts

                                                                                                                                                                Since our research projects are interdisciplinary as well as socially-based,

                                                                                                                                                                 we consulted our ideas with professor in the field about the production of our experiment applying the other fields beyond the cultural artifacts protection.

                                                                                                                                                                We then communicate with Prof. Zhang, Zhejiang University, whose field is civil-engineering.

                                                                                                                                                                        Q1: How can the greasing removal apply in civil engineering?

                                                                                                                                                                        Q2: In the field of civil engineering, are there any other applications?

                                                                                                                                                                        Q3: How efficient is this method or else than biological method?

                                                                                                                                                                Based on these three question, Professor gave the following answer to all of these.

                                                                                                                                                                Reinforced concrete structure has been widely used in construction engineering, and the corrosion of concrete will cause irreversible damage of the structure,

                                                                                                                                                                especially in the moist environment, or in the coastal areas; for example the basement engineering, coastal areas of reinforced concrete Bridges.

                                                                                                                                                                In the dampness and water environment, corrosion speeds faster. At present engineers mainly adopt anticorrosion coating materials, including organic coating, inorganic coating and coating,

                                                                                                                                                                 the widely application of polyurethane waterproof coating, polymer cement waterproof coating, cement based waterproof coating and organic silicon waterproof coating, etc.

                                                                                                                                                                However, there is rare application of biological coating in practical. According to the principle, it has certain feasibility,

                                                                                                                                                                because the principle of chemical coating is the main component of waterproof material, such as sodium silicate, can quickly and effectively concrete structure layer of calcium hydroxide, aluminium, calcium, calcium silicate,

                                                                                                                                                                to form the wool stoma of inert crystals embedded in concrete,

                                                                                                                                                                 to airtight micro cracks, thereby increasing the compactness of concrete surface layer and the compressive strength. In the study of the biological mechanism of action of anticorrosion materials and similar is feasible in theory,

                                                                                                                                                                but in the specific application, also need to further study of the role of timeliness, economy.




The Attributions  Acknowledgements  

This investigative project is supported by various well-known institutes, universities and corporations
...

Professor Luo jianhong, Zhejiang University

Dr. Yan yinggang, Zhejiang University

Dr. Ling Zhang, Zhejiang University

Hangzhou #14 High School Bio-technology Laboratory

Zhejiang Association For Science and Technology

Hangzhou Multiscience Lianke Biotech Company (donator)

Hangzhou # 14 High School (donator)







Human practices & Publicity

We build a set of pages in our high school's official website to publicize the subject of synthetic biology...
...

     1.Training for iGEM

The iGEM program requires the interdisciplinary abilities. To approach this purpose, we designed a series of trainings including computer programming, biological experiment skills, etc. (The following photographs illustrates the process) The collegiate team from Zhejiang University provides an opportunity which shows us how the biological experiments run.

     2. Pre-research of project

We distributed questionnaires and conducted survey in order to learn about the current knowledge of local peoples towards cultural artifacts in Hangzhou. The following diagrams are analyzed by the data. According to the data, the current situation of protection and renovating towards cultural artifacts and synthetic biology does not have bright prospects. The lack of attentions in civilians can cause the enormous negative effects on research and the practical usage, so we organized a series of activities to publicize the cultural artifacts in Hangzhou, the synthetic biology.(more details in Publicity)

     3.Publicity

(1)To acquaint students synthetic biology, our team’s human practice group publicize this subject several times during the summer break in our city including the danger and benefits of transgenosis food that was familiar and relevant to the citizens. Furthermore, we upload the basic synthetic biology knowledge in our school’s official website for months and update the latest information or the experimental knowledge at a time period.

(2)We hold a presentation in our school to introduce the iGEM to our successors. It consists that the general ideas of iGEM, the specific parts which are totally different from the biology competition in China, the judgements, also Q&A section and the advantages of taking this competition. Our team leader Andrew Luo gave an excellent lecture.

(3)As we mentioned before, to introduce local citizens the importance of cultural artifacts in this city, we sent out the specialized post cards with 7 different kinds of landscape seals and our team seal in order to publicize our project and the local artifacts protection at the same time.



 Parts 

About parts in our project
...

BBa_K1671000


OAH


Oxalacetate acetylhydrolase (OAH),

a member of the phosphoenolpyruvate mutase/isocitrate lyase superfamily,

catalyzes the hydrolysis of oxalacetate to oxalic acid and acetate. This part is modified from Bba_J04450.


Design Notes

The gene sequence of this target gene contains many inappropriate enzyme cutting site,

we can only constructing other cutting site with PCR by ourself.


Source


We found this sequence in the essay 'Structure of Oxalacetate Acetylhydrolase,

a Virulence Factor of the Chestnut Blight Fungus.' Its accession number in GenBank is GU932672.



BBa_K1671001

Lipase


Lipase, full name triacylglycerol acylhydrolase, is the target gene of this part.

It is an is an enzyme that catalyzes the hydrolysis of fats, which is able to solve the oil like pollution on the surface of relics.This part is modified from Bba_J04450.


Design Notes

The gene sequence of this target gene contains many inappropriate enzyme cutting site,

we can only constructing other cutting site with PCR by ourself.


Source


We found the sequence of this gene from the essay

' Induce Secretion Expression of Lipase Gene from Bacillus subtle in Escherichia Coli.'