├── .DS_Store ├── js ├── .DS_Store ├── modernizr.js ├── main.js └── jquery-3.0.0.min.js ├── img ├── photo-1.jpg ├── photo-2.jpg ├── photo-3.jpg ├── photo-4.jpg ├── photo-5.jpg ├── photo-6.jpg ├── photo-7.jpg ├── photo-8.jpg ├── photo-9.jpg └── cd-icon-arrow.svg ├── partials ├── _variables.scss ├── _layout.scss └── _mixins.scss ├── README.md ├── css ├── reset.css └── style.css ├── scss └── style.scss └── index.html /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyhouse/3d-portfolio-template/HEAD/.DS_Store -------------------------------------------------------------------------------- /js/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyhouse/3d-portfolio-template/HEAD/js/.DS_Store -------------------------------------------------------------------------------- /img/photo-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyhouse/3d-portfolio-template/HEAD/img/photo-1.jpg -------------------------------------------------------------------------------- /img/photo-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyhouse/3d-portfolio-template/HEAD/img/photo-2.jpg -------------------------------------------------------------------------------- /img/photo-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyhouse/3d-portfolio-template/HEAD/img/photo-3.jpg -------------------------------------------------------------------------------- /img/photo-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyhouse/3d-portfolio-template/HEAD/img/photo-4.jpg -------------------------------------------------------------------------------- /img/photo-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyhouse/3d-portfolio-template/HEAD/img/photo-5.jpg -------------------------------------------------------------------------------- /img/photo-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyhouse/3d-portfolio-template/HEAD/img/photo-6.jpg -------------------------------------------------------------------------------- /img/photo-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyhouse/3d-portfolio-template/HEAD/img/photo-7.jpg -------------------------------------------------------------------------------- /img/photo-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyhouse/3d-portfolio-template/HEAD/img/photo-8.jpg -------------------------------------------------------------------------------- /img/photo-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyhouse/3d-portfolio-template/HEAD/img/photo-9.jpg -------------------------------------------------------------------------------- /partials/_variables.scss: -------------------------------------------------------------------------------- 1 | // colors 2 | $color-1: #43202f; // Livid Brown 3 | $color-2: #72a987; // Bay Leaf 4 | $color-3: #edeade; // Pearl Bush 5 | 6 | // fonts 7 | $heading: 'Lora', serif; 8 | 9 | // Parallelepiped size 10 | $parallelepiped-width: 100vw; 11 | 12 | // Animations 13 | $open-animation: .6s; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 3D Portfolio Template 2 | ========= 3 | 4 | A portfolio template, with a filter that triggers 3D rotating sections. 5 | 6 | [Article on CodyHouse](http://codyhouse.co/gem/3d-portfolio-template/) 7 | 8 | [Demo](http://codyhouse.co/demo/3d-portfolio-template/index.html) 9 | 10 | [Terms](http://codyhouse.co/terms/) 11 | 12 | Images: [Unsplash](https://unsplash.com/) 13 | -------------------------------------------------------------------------------- /img/cd-icon-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /partials/_layout.scss: -------------------------------------------------------------------------------- 1 | // breakpoints 2 | 3 | $S: 480px; 4 | $M: 768px; 5 | $L: 1170px; 6 | 7 | // media queries 8 | 9 | @mixin MQ($canvas) { 10 | @if $canvas == S { 11 | @media only screen and (min-width: $S) { @content; } 12 | } 13 | @else if $canvas == M { 14 | @media only screen and (min-width: $M) { @content; } 15 | } 16 | @else if $canvas == L { 17 | @media only screen and (min-width: $L) { @content; } 18 | } 19 | } 20 | 21 | // super light grid system 22 | 23 | @mixin column($percentage, $float-direction:left) { 24 | width: 100% * $percentage; 25 | float: $float-direction; 26 | } 27 | 28 | -------------------------------------------------------------------------------- /partials/_mixins.scss: -------------------------------------------------------------------------------- 1 | // center vertically and/or horizontally an absolute positioned element 2 | 3 | @mixin center($xy:xy) { 4 | @if $xy == xy { 5 | left: 50%; 6 | top: 50%; 7 | bottom: auto; 8 | right: auto; 9 | transform: translateX(-50%) translateY(-50%); 10 | } 11 | @else if $xy == x { 12 | left: 50%; 13 | right: auto; 14 | transform: translateX(-50%); 15 | } 16 | @else if $xy == y { 17 | top: 50%; 18 | bottom: auto; 19 | transform: translateY(-50%); 20 | } 21 | } 22 | 23 | // border radius 24 | 25 | @mixin border-radius($radius:.25em) { 26 | border-radius: $radius; 27 | } 28 | 29 | // antialiasing mode font rendering 30 | 31 | @mixin font-smoothing { 32 | -webkit-font-smoothing: antialiased; 33 | -moz-osx-font-smoothing: grayscale; 34 | } 35 | 36 | // clearfix 37 | 38 | @mixin clearfix { 39 | &::after { 40 | clear: both; 41 | content: ""; 42 | display: block; 43 | } 44 | } 45 | 46 | // color tint and shade 47 | 48 | @function shade( 49 | $color, 50 | $percent 51 | ) { 52 | 53 | @return mix(#000, $color, $percent); 54 | } 55 | @function tint( 56 | $color, 57 | $percent 58 | ) { 59 | 60 | @return mix(#fff, $color, $percent); 61 | } 62 | -------------------------------------------------------------------------------- /css/reset.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v2.0 | 20110126 3 | License: none (public domain) 4 | */ 5 | 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font-size: 100%; 23 | font: inherit; 24 | vertical-align: baseline; 25 | } 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, hgroup, menu, nav, section, main { 29 | display: block; 30 | } 31 | body { 32 | line-height: 1; 33 | } 34 | ol, ul { 35 | list-style: none; 36 | } 37 | blockquote, q { 38 | quotes: none; 39 | } 40 | blockquote:before, blockquote:after, 41 | q:before, q:after { 42 | content: ''; 43 | content: none; 44 | } 45 | table { 46 | border-collapse: collapse; 47 | border-spacing: 0; 48 | } -------------------------------------------------------------------------------- /js/modernizr.js: -------------------------------------------------------------------------------- 1 | /*! modernizr 3.3.1 (Custom Build) | MIT * 2 | * https://modernizr.com/download/?-csstransitions-preserve3d-setclasses !*/ 3 | !function(e,n,t){function r(e,n){return typeof e===n}function s(){var e,n,t,s,o,i,a;for(var l in C)if(C.hasOwnProperty(l)){if(e=[],n=C[l],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;tp;p++)if(h=e[p],g=P.style[h],a(h,"-")&&(h=l(h)),P.style[h]!==t){if(o||r(s,"undefined"))return f(),"pfx"==n?h:!0;try{P.style[h]=s}catch(y){}if(P.style[h]!=g)return f(),"pfx"==n?h:!0}return f(),!1}function g(e,n,t,s,o){var i=e.charAt(0).toUpperCase()+e.slice(1),a=(e+" "+b.join(i+" ")+i).split(" ");return r(n,"string")||r(n,"undefined")?h(a,n,s,o):(a=(e+" "+T.join(i+" ")+i).split(" "),u(a,n,t))}function v(e,n,r){return g(e,t,t,n,r)}var y=[],C=[],w={_version:"3.3.1",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var t=this;setTimeout(function(){n(t[e])},0)},addTest:function(e,n,t){C.push({name:e,fn:n,options:t})},addAsyncTest:function(e){C.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=w,Modernizr=new Modernizr;var x=n.documentElement,_="svg"===x.nodeName.toLowerCase();Modernizr.addTest("preserve3d",function(){var e=i("a"),n=i("a");e.style.cssText="display: block; transform-style: preserve-3d; transform-origin: right; transform: rotateY(40deg);",n.style.cssText="display: block; width: 9px; height: 1px; background: #000; transform-origin: right; transform: rotateY(40deg);",e.appendChild(n),x.appendChild(e);var t=n.getBoundingClientRect();return x.removeChild(e),t.width&&t.width<4});var S="Moz O ms Webkit",b=w._config.usePrefixes?S.split(" "):[];w._cssomPrefixes=b;var T=w._config.usePrefixes?S.toLowerCase().split(" "):[];w._domPrefixes=T;var E={elem:i("modernizr")};Modernizr._q.push(function(){delete E.elem});var P={style:E.elem.style};Modernizr._q.unshift(function(){delete P.style}),w.testAllProps=g,w.testAllProps=v,Modernizr.addTest("csstransitions",v("transition","all",!0)),s(),o(y),delete w.addTest,delete w.addAsyncTest;for(var k=0;k 0 ), 3 | isTransitionSupported = ( $('.csstransitions').length > 0 ), 4 | backToTopBtn = $('.cd-top'); 5 | 6 | function Portfolio3D( element ) { 7 | //define a Portfolio3D object 8 | this.element = element; 9 | this.navigation = this.element.children('.cd-3d-portfolio-navigation'); 10 | this.rowsWrapper = this.element.children('.projects'); 11 | this.rows = this.rowsWrapper.children('.row'); 12 | this.visibleFace = 'front'; 13 | this.visibleRowIndex = 0; 14 | this.rotationValue = 0; 15 | //animating variables 16 | this.animating = false; 17 | this.scrolling = false; 18 | // bind portfolio events 19 | this.bindEvents(); 20 | } 21 | 22 | Portfolio3D.prototype.bindEvents = function() { 23 | var self = this; 24 | 25 | this.navigation.on('click', 'a:not(.selected)', function(event){ 26 | //update visible projects when clicking on the filter 27 | event.preventDefault(); 28 | if( !self.animating ) { 29 | self.animating = true; 30 | var index = $(this).parent('li').index(); 31 | //update filter 32 | $(this).addClass('selected').parent('li').siblings('li').find('.selected').removeClass('selected'); 33 | //show new projects 34 | self.showNewContent(index); 35 | } 36 | }); 37 | 38 | this.rows.on('click', 'li.selected', function(){ 39 | //open a new project 40 | if( !self.animating && !$(this).hasClass('open')) { 41 | self.animating = true; 42 | self.rowsWrapper.addClass('project-is-open project-has-transition'); 43 | 44 | $(this).addClass('open').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ 45 | //wait for the end of the transition and set the animating variable to tru 46 | self.animating = false; 47 | $(this).off('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend'); 48 | }); 49 | 50 | if(!isTransitionSupported) self.animating = false; 51 | } 52 | }); 53 | 54 | this.element.on('click', '.close-project', function(event){ 55 | event.preventDefault(); 56 | //close a project 57 | if( !self.animating ) { 58 | self.animating = true; 59 | self.rowsWrapper.removeClass('project-is-open'); 60 | 61 | self.rows.find('li.open').find('.project-title').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ 62 | //wait until the project is clodes and remove classes/set animating to false 63 | $(this).off('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend'); 64 | self.resetProjects(); 65 | }); 66 | 67 | if(!isTransitionSupported) self.resetProjects(); 68 | } 69 | }); 70 | 71 | this.rowsWrapper.find('.project-wrapper').on('scroll', function(){ 72 | //detect scroll incide an open project - hide/show back to top 73 | var scrollValue = $(this).scrollTop(); 74 | if(!self.scrolling) { 75 | self.scrolling = true; 76 | (!window.requestAnimationFrame) ? setTimeout(function() {self.checkScroll(scrollValue);}, 250) : window.requestAnimationFrame(function() {self.checkScroll(scrollValue);}); 77 | } 78 | }); 79 | }; 80 | 81 | Portfolio3D.prototype.resetProjects = function() { 82 | this.rows.find('li.open').removeClass('open'); 83 | this.rowsWrapper.removeClass('project-has-transition'); 84 | this.animating = false; 85 | }; 86 | 87 | Portfolio3D.prototype.checkScroll = function(scrollValue) { 88 | ( scrollValue > 300 ) ? backToTopBtn.addClass('is-visible') : backToTopBtn.removeClass('is-visible cd-fade-out'); 89 | this.scrolling = false; 90 | } 91 | 92 | Portfolio3D.prototype.showNewContent = function(index) { 93 | var self = this, 94 | direction = ( index > self.visibleRowIndex ) ? 'rightToLeft' : 'leftToRight', 95 | rotationParams = this.getRotationPrameters( direction ), 96 | newVisibleFace = rotationParams[0], 97 | rotationY = rotationParams[1], 98 | translateZ = $(window).width()/2; 99 | 100 | 101 | this.rows.each(function() { 102 | $(this).children('li').addClass('hidden').removeClass('selected').eq(index).removeClass('hidden left-face right-face back-face front-face').addClass(newVisibleFace + '-face selected').end().eq(self.visibleRowIndex).removeClass('hidden selected'); 103 | }); 104 | 105 | //if preserve3D is supported -> rotate projects 106 | isPreserve3DSupported 107 | ? this.setTransform(rotationY, translateZ) 108 | : self.animating = false; 109 | this.visibleFace = newVisibleFace; 110 | this.visibleRowIndex = index; 111 | this.rotationValue = rotationY; 112 | }; 113 | 114 | Portfolio3D.prototype.getRotationPrameters = function(direction) { 115 | var newVisibleFace, 116 | rotationY; 117 | if( this.visibleFace == 'front' ) { 118 | newVisibleFace = ( direction == 'rightToLeft' ) ? 'right' : 'left'; 119 | } else if( this.visibleFace == 'right' ) { 120 | newVisibleFace = ( direction =='rightToLeft' ) ? 'back' : 'front'; 121 | } else if( this.visibleFace == 'left' ) { 122 | newVisibleFace = ( direction =='rightToLeft' ) ? 'front' : 'back'; 123 | } else { 124 | newVisibleFace = ( direction =='rightToLeft' ) ? 'left' : 'right'; 125 | } 126 | 127 | if( direction == 'rightToLeft' ) { 128 | rotationY = this.rotationValue - 90; 129 | } else { 130 | rotationY = this.rotationValue + 90; 131 | } 132 | 133 | return [newVisibleFace, rotationY]; 134 | }; 135 | 136 | Portfolio3D.prototype.setTransform = function(rotationValue, translateValue) { 137 | var self = this; 138 | this.rows.each(function(index){ 139 | $(this).css({ 140 | '-moz-transform': 'translateZ(-'+ translateValue +'px) rotateY(' + rotationValue + 'deg)', 141 | '-webkit-transform': 'translateZ(-'+ translateValue +'px) rotateY(' + rotationValue + 'deg)', 142 | '-ms-transform': 'translateZ('-+ translateValue +'px) rotateY(' + rotationValue + 'deg)', 143 | '-o-transform': 'translateZ(-'+ translateValue +'px) rotateY(' + rotationValue + 'deg)', 144 | 'transform': 'translateZ(-'+ translateValue +'px) rotateY(' + rotationValue + 'deg)' 145 | }); 146 | 147 | if(index == 2) 148 | $(this).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ 149 | $(this).off('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend'); 150 | self.animating = false; 151 | }); 152 | }); 153 | }; 154 | 155 | Portfolio3D.prototype.scrollProjectTop = function() { 156 | this.rows.children('li.selected.open').find('.project-wrapper').animate({scrollTop: 0 }, 300); 157 | } 158 | 159 | if( $('.cd-3d-portfolio').length > 0 ) { 160 | var portfolios3D = []; 161 | $('.cd-3d-portfolio').each(function(){ 162 | //create a Portfolio3D object for each .cd-3d-portfolio 163 | portfolios3D.push(new Portfolio3D($(this))); 164 | }); 165 | } 166 | 167 | var windowResize = false; 168 | //detect window resize - reset .cd-products-comparison-table properties 169 | $(window).on('resize', function(){ 170 | if(!windowResize) { 171 | windowResize = true; 172 | (!window.requestAnimationFrame) ? setTimeout(checkResize, 250) : window.requestAnimationFrame(checkResize); 173 | } 174 | }); 175 | 176 | function checkResize(){ 177 | portfolios3D.forEach(function(element){ 178 | //update transform values on resize 179 | element.setTransform(element.rotationValue, $(window).width()/2); 180 | }); 181 | 182 | windowResize = false; 183 | } 184 | 185 | backToTopBtn.on('click', function(event){ 186 | //scroll to the top of a project when clicking the backToTop button 187 | event.preventDefault(); 188 | portfolios3D.forEach(function(element){ 189 | element.scrollProjectTop(); 190 | }); 191 | }); 192 | }); -------------------------------------------------------------------------------- /scss/style.scss: -------------------------------------------------------------------------------- 1 | // Note: we use Autoprefixer to add vendor prefixes to our CSS -> https://github.com/postcss/autoprefixer 2 | 3 | @import '../partials/variables'; // colors, fonts etc... 4 | 5 | @import '../partials/mixins'; // custom mixins 6 | 7 | @import '../partials/layout'; // responsive grid and media queries 8 | 9 | /* -------------------------------- 10 | 11 | Primary style 12 | 13 | -------------------------------- */ 14 | 15 | *, *::after, *::before { 16 | box-sizing: border-box; 17 | } 18 | 19 | html { 20 | font-size: 62.5%; 21 | } 22 | 23 | body { 24 | font: { 25 | size: 1.6rem; 26 | } 27 | color: $color-3; // variables inside partials > _variables.scss 28 | background-color: $color-1; 29 | font-family: sans-serif; 30 | @include font-smoothing; 31 | } 32 | 33 | a { 34 | color: $color-2; 35 | text-decoration: none; 36 | } 37 | 38 | /* -------------------------------- 39 | 40 | Portfolio Navigation 41 | 42 | -------------------------------- */ 43 | 44 | .cd-3d-portfolio-navigation { 45 | width: 100%; 46 | height: 25vh; 47 | text-align: center; 48 | display: table; 49 | 50 | .cd-wrapper { 51 | display: table-cell; 52 | width: 100%; 53 | vertical-align: middle; 54 | } 55 | 56 | h1 { 57 | font-size: 2rem; 58 | margin-bottom: .6em; 59 | font-family: $heading; 60 | font-weight: bold; 61 | } 62 | 63 | li { 64 | display: inline-block; 65 | margin: 0 .3em; 66 | 67 | a { 68 | display: inline-block; 69 | color: $color-3; 70 | border: 2px solid darken($color-1, 3%); 71 | padding: .6em; 72 | transition: all .2s; 73 | 74 | &:hover { 75 | border-color: $color-2; 76 | } 77 | } 78 | 79 | .selected { 80 | color: $color-3; 81 | background: $color-2; 82 | border-color: $color-2; 83 | cursor: default; 84 | box-shadow: 0 4px 20px rgba(#000, .2); 85 | } 86 | } 87 | 88 | @include MQ(M) { 89 | h1 { 90 | font-size: 3.2rem; 91 | } 92 | } 93 | } 94 | 95 | /* -------------------------------- 96 | 97 | Portfolio Projects 98 | 99 | -------------------------------- */ 100 | 101 | .cd-3d-portfolio { 102 | overflow: hidden; 103 | 104 | .close-project { 105 | /* this is the 'X' icon - visible when a project has been selected */ 106 | position: absolute; 107 | z-index: 2; 108 | top: 24px; 109 | right: 5%; 110 | /* replace text with image */ 111 | color: transparent; 112 | white-space: nowrap; 113 | text-indent: 100%; 114 | overflow: hidden; 115 | height: 48px; 116 | width: 48px; 117 | border-radius: 50%; 118 | background: rgba(#000, .6); 119 | transform: scale(0); 120 | transition: transform .3s 0s; 121 | 122 | &:hover { 123 | background: rgba(#000, 1); 124 | } 125 | 126 | &::after, &::before { 127 | /* the 'X' lines */ 128 | content: ''; 129 | position: absolute; 130 | width: 18px; 131 | height: 2px; 132 | top: 50%; 133 | left: 50%; 134 | background: $color-3; 135 | } 136 | 137 | &::before { 138 | transform: translateX(-50%) translateY(-50%) rotate(45deg); 139 | } 140 | 141 | &::after { 142 | transform: translateX(-50%) translateY(-50%) rotate(-45deg); 143 | } 144 | } 145 | 146 | .project-is-open .open .close-project { 147 | /* show the 'X' icon when a project has been selected */ 148 | transform: scale(1); 149 | transition-delay: $open-animation; 150 | transition: transform .3s $open-animation, background .3s; 151 | } 152 | } 153 | 154 | 155 | .cd-3d-portfolio .projects { 156 | /* used to render its children in a 3D space - add perspective */ 157 | perspective: 1000px; 158 | 159 | .row { 160 | height: 25vh; 161 | position: relative; 162 | z-index: 1; 163 | /* position its children in a 3d space */ 164 | transform-style: preserve-3d; 165 | /* Force hardware acceleration */ 166 | will-change: transform; 167 | transform: translateZ(-$parallelepiped-width/2); 168 | transition: transform .6s cubic-bezier(.5,0,.1,1); 169 | pointer-events: none; 170 | 171 | &:nth-of-type(2) { 172 | transition-delay: .1s; 173 | } 174 | 175 | &:nth-of-type(3) { 176 | transition-delay: .2s; 177 | } 178 | 179 | &::after { 180 | /* this is used to create the row bottom face */ 181 | content: ''; 182 | position: absolute; 183 | z-index: 1; 184 | bottom: 0; 185 | left: 0; 186 | height: 100vw; 187 | width: 100%; 188 | background: darken($color-1, 15%); 189 | transform: translateZ($parallelepiped-width/2) rotateX(90deg); 190 | transform-origin: bottom center; 191 | transition: visibility 0s $open-animation; 192 | } 193 | 194 | &:last-of-type::after { 195 | /* use its ::after element as top face (rather than bottom face) */ 196 | top: 0; 197 | bottom: auto; 198 | transform: translateZ($parallelepiped-width/2) rotateX(-90deg); 199 | transform-origin: top center; 200 | } 201 | } 202 | 203 | &:not(.project-has-transition) .row:nth-of-type(2) { 204 | /* increase z-index of the second row - this way the back faces of the first and thirdv rows won't be visible (only of no project has been selected) */ 205 | z-index: 2; 206 | } 207 | 208 | .no-preserve3d & .row { 209 | /* fallback for browsers that don't support the preser3d property */ 210 | transform: translateZ(0); 211 | } 212 | 213 | .row > li { 214 | /* this is the single project */ 215 | position: absolute; 216 | z-index: 1; 217 | height: 100%; 218 | width: 100%; 219 | transform: translateZ($parallelepiped-width/2); 220 | will-change: transform; 221 | overflow: hidden; 222 | 223 | &.selected { 224 | /* this the project on the visible face of the parallelepiped */ 225 | pointer-events: auto; 226 | } 227 | 228 | &.front-face { 229 | transform: translateZ($parallelepiped-width/2); 230 | } 231 | 232 | &.right-face { 233 | transform: rotateY(90deg) translateZ($parallelepiped-width/2); 234 | } 235 | 236 | &.left-face { 237 | transform: rotateY(-90deg) translateZ($parallelepiped-width/2); 238 | } 239 | 240 | &.back-face { 241 | transform: rotateY(180deg) translateZ($parallelepiped-width/2); 242 | } 243 | 244 | &.hidden { 245 | opacity: 0; 246 | visibility: hidden; 247 | } 248 | } 249 | 250 | .no-preserve3d & .row > li { 251 | opacity: 0; 252 | transform: translateX(0); 253 | transition: opacity .4s; 254 | 255 | &.front-face, &.right-face, &.left-face, &.back-face { 256 | transform: translateX(0); 257 | } 258 | 259 | &.selected { 260 | opacity: 1; 261 | } 262 | } 263 | 264 | .project-wrapper { 265 | position: absolute; 266 | top: 0; 267 | left: 0; 268 | height: 100vh; 269 | width: 100%; 270 | } 271 | 272 | .project-image { 273 | position: relative; 274 | z-index: 2; 275 | /* vertically center its content */ 276 | display: table; 277 | width: 100%; 278 | height: 25%; 279 | cursor: pointer; 280 | /* force hardware acceleration */ 281 | transform: translateZ(0); 282 | will-change: transform; 283 | backface-visibility: hidden; 284 | transition: transform $open-animation; 285 | 286 | &::before, &::after { 287 | content: ''; 288 | position: absolute; 289 | top: 0; 290 | left: 0; 291 | width: 100%; 292 | } 293 | 294 | &::before { 295 | /* this is the project background image */ 296 | z-index: 1; 297 | height: 240%; 298 | background-color: darken($color-1, 10%); 299 | background-position: center center; 300 | background-repeat: no-repeat; 301 | background-size: cover; 302 | } 303 | 304 | &::after { 305 | /* this is the project image cover layer - this is visible only during a rotation of the parallelepiped (while the project is disappearing) */ 306 | z-index: 3; 307 | height: 100%; 308 | background: darken($color-1, 30%); 309 | opacity: 0; 310 | transition: opacity .5s; 311 | } 312 | } 313 | 314 | .row > li:not(.selected) .project-image::after { 315 | opacity: 1; 316 | } 317 | 318 | .row:nth-of-type(2) > li:not(.selected) .project-image::after { 319 | transition-delay: .1s; 320 | } 321 | 322 | .row:nth-of-type(3) > li:not(.selected) .project-image::after { 323 | transition-delay: .2s; 324 | } 325 | 326 | .row > li.project-1 { 327 | 328 | .project-image::before { 329 | /* set project background image */ 330 | background-image: url(../img/photo-1.jpg); 331 | } 332 | } 333 | 334 | .row > li.project-2 { 335 | 336 | .project-image::before { 337 | background-image: url(../img/photo-2.jpg); 338 | } 339 | } 340 | 341 | .row > li.project-3 { 342 | 343 | .project-image::before { 344 | background-image: url(../img/photo-3.jpg); 345 | } 346 | } 347 | 348 | .row > li.project-4 { 349 | 350 | .project-image::before { 351 | background-image: url(../img/photo-4.jpg); 352 | } 353 | } 354 | 355 | .row > li.project-5 { 356 | 357 | .project-image::before { 358 | background-image: url(../img/photo-5.jpg); 359 | } 360 | } 361 | 362 | .row > li.project-6 { 363 | 364 | .project-image::before { 365 | background-image: url(../img/photo-6.jpg); 366 | } 367 | } 368 | 369 | .row > li.project-7 { 370 | 371 | .project-image::before { 372 | background-image: url(../img/photo-7.jpg); 373 | } 374 | } 375 | 376 | .row > li.project-8 { 377 | 378 | .project-image::before { 379 | background-image: url(../img/photo-8.jpg); 380 | } 381 | } 382 | 383 | .row > li.project-9 { 384 | 385 | .project-image::before { 386 | background-image: url(../img/photo-9.jpg); 387 | } 388 | } 389 | 390 | .project-title { 391 | position: relative; 392 | z-index: 2; 393 | /* vertically center inside its parent */ 394 | display: table-cell; 395 | vertical-align: middle; 396 | text-align: center; 397 | /* force hardware acceleration */ 398 | transform: translateZ(0); 399 | will-change: transform; 400 | transition: transform $open-animation cubic-bezier(.5,0,.1,1); 401 | } 402 | 403 | h2 { 404 | color: $color-3; 405 | font-size: 2.2rem; 406 | font-weight: bold; 407 | font-family: $heading; 408 | } 409 | 410 | .project-content { 411 | position: absolute; 412 | z-index: 1; 413 | /* place the content right below the project image */ 414 | top: 60%; 415 | width: 100%; 416 | background: white; 417 | box-shadow: 0 -5px 0 white; 418 | 419 | > div { 420 | opacity: 0; 421 | transform: translateY(25%); 422 | transition: all $open-animation cubic-bezier(.5,0,.1,1); 423 | } 424 | 425 | p { 426 | width: 90%; 427 | max-width: 800px; 428 | margin: 2em auto; 429 | line-height: 1.6; 430 | color: tint($color-1, 20%); 431 | } 432 | } 433 | 434 | &.project-has-transition .row > li { 435 | /* the project-has-transition class is used to add a transition to the tranform property of the single projects - it's added when a project is selected (before opening it) and removed when a project is colsed (when the closing animation is finished) */ 436 | transition: transform $open-animation cubic-bezier(.5,0,.1,1), opacity 0s $open-animation; 437 | 438 | &.selected.open { 439 | overflow: visible; 440 | } 441 | 442 | &:not(.selected) { 443 | opacity: 0; 444 | } 445 | } 446 | 447 | &.project-has-transition .row::after { 448 | /* hide the bottom/top parallelepiped face when a project is selected */ 449 | visibility: hidden; 450 | transition: visibility 0s; 451 | } 452 | 453 | &.project-is-open .row > li { 454 | /* the project-is-open class is used when a project is selected - it's added when a project is selected (before opening it) and removed when a project is closed (before the closing animation begins) */ 455 | transition: transform $open-animation cubic-bezier(.5,0,.1,1), opacity 0s; 456 | 457 | &.selected.open .project-wrapper { 458 | /* selected project on the visible face of the parallelepiped */ 459 | overflow: auto; 460 | -webkit-overflow-scrolling: touch; 461 | } 462 | 463 | &.selected .project-image { 464 | /* projects on the visible face of the parallelepiped */ 465 | transform: translateY(0); 466 | } 467 | 468 | &.selected.open .project-image { 469 | cursor: auto; 470 | } 471 | 472 | &.selected.open .project-title { 473 | transform: translateY(70%); 474 | } 475 | 476 | &.selected.open .project-content > div { 477 | opacity: 1; 478 | transform: translateY(0); 479 | } 480 | } 481 | 482 | &.project-is-open .row:first-of-type { 483 | 484 | .selected.open.front-face { 485 | /* if the project selected is inside the first row */ 486 | transform: translateZ($parallelepiped-width/2) translateY(-100%); 487 | } 488 | 489 | .selected.open.right-face { 490 | transform: rotateY(90deg) translateZ($parallelepiped-width/2) translateY(-100%); 491 | } 492 | 493 | .selected.open.left-face { 494 | transform: rotateY(-90deg) translateZ($parallelepiped-width/2) translateY(-100%); 495 | } 496 | 497 | .selected.open.back-face { 498 | transform: rotateY(180deg) translateZ($parallelepiped-width/2) translateY(-100%); 499 | } 500 | 501 | .selected:not(.open).front-face { 502 | /* if the project selected is not inside the first row */ 503 | transform: translateZ($parallelepiped-width/2) translateY(300%); 504 | } 505 | 506 | .selected:not(.open).right-face { 507 | transform: rotateY(90deg) translateZ($parallelepiped-width/2) translateY(300%); 508 | } 509 | 510 | .selected:not(.open).left-face { 511 | transform: rotateY(-90deg) translateZ($parallelepiped-width/2) translateY(300%); 512 | } 513 | 514 | .selected:not(.open).back-face { 515 | transform: rotateY(180deg) translateZ($parallelepiped-width/2) translateY(300%); 516 | } 517 | } 518 | 519 | &.project-is-open .row:nth-of-type(2) { 520 | 521 | .selected.open.front-face { 522 | /* if the project selected is inside the second row */ 523 | transform: translateZ($parallelepiped-width/2) translateY(-200%); 524 | } 525 | 526 | .selected.open.right-face { 527 | transform: rotateY(90deg) translateZ($parallelepiped-width/2) translateY(-200%); 528 | } 529 | 530 | .selected.open.left-face { 531 | transform: rotateY(-90deg) translateZ($parallelepiped-width/2) translateY(-200%); 532 | } 533 | 534 | .selected.open.back-face { 535 | transform: rotateY(180deg) translateZ($parallelepiped-width/2) translateY(-200%); 536 | } 537 | 538 | .selected:not(.open).front-face { 539 | /* if the project selected is not inside the second row */ 540 | transform: translateZ($parallelepiped-width/2) translateY(200%); 541 | } 542 | 543 | .selected:not(.open).right-face { 544 | transform: rotateY(90deg) translateZ($parallelepiped-width/2) translateY(200%); 545 | } 546 | 547 | .selected:not(.open).left-face { 548 | transform: rotateY(-90deg) translateZ($parallelepiped-width/2) translateY(200%); 549 | } 550 | 551 | .selected:not(.open).back-face { 552 | transform: rotateY(180deg) translateZ($parallelepiped-width/2) translateY(200%); 553 | } 554 | } 555 | 556 | &.project-is-open .row:nth-of-type(3) { 557 | 558 | .selected.open.front-face { 559 | /* if the project selected is inside the third row */ 560 | transform: translateZ($parallelepiped-width/2) translateY(-300%); 561 | } 562 | 563 | .selected.open.right-face { 564 | transform: rotateY(90deg) translateZ($parallelepiped-width/2) translateY(-300%); 565 | } 566 | 567 | .selected.open.left-face { 568 | transform: rotateY(-90deg) translateZ($parallelepiped-width/2) translateY(-300%); 569 | } 570 | 571 | .selected.open.back-face { 572 | transform: rotateY(180deg) translateZ($parallelepiped-width/2) translateY(-300%); 573 | } 574 | 575 | .selected:not(.open).front-face { 576 | /* if the project selected is not inside the third row */ 577 | transform: translateZ($parallelepiped-width/2) translateY(100%); 578 | } 579 | 580 | .selected:not(.open).right-face { 581 | transform: rotateY(90deg) translateZ($parallelepiped-width/2) translateY(100%); 582 | } 583 | 584 | .selected:not(.open).left-face { 585 | transform: rotateY(-90deg) translateZ($parallelepiped-width/2) translateY(100%); 586 | } 587 | 588 | .selected:not(.open).back-face { 589 | transform: rotateY(180deg) translateZ($parallelepiped-width/2) translateY(100%); 590 | } 591 | } 592 | 593 | .no-preserve3d &.project-is-open .row.row:first-of-type > li.selected { 594 | transform: translateY(300%); 595 | 596 | &.open { 597 | transform: translateY(-100%); 598 | } 599 | } 600 | 601 | .no-preserve3d &.project-is-open .row.row:nth-of-type(2) > li.selected { 602 | transform: translateY(200%); 603 | 604 | &.open { 605 | transform: translateY(-200%); 606 | } 607 | } 608 | 609 | .no-preserve3d &.project-is-open .row.row:nth-of-type(3) > li.selected { 610 | transform: translateY(100%); 611 | 612 | &.open { 613 | transform: translateY(-300%); 614 | } 615 | } 616 | 617 | @include MQ(M) { 618 | 619 | h2 { 620 | font-size: 3.5rem; 621 | } 622 | 623 | p { 624 | font-size: 2rem; 625 | } 626 | } 627 | } 628 | 629 | /* -------------------------------- 630 | 631 | Back to top 632 | 633 | -------------------------------- */ 634 | 635 | .cd-top { 636 | position: fixed; 637 | z-index: 3; 638 | bottom: 40px; 639 | right: 5%; 640 | display: inline-block; 641 | height: 48px; 642 | width: 48px; 643 | /* replace text with image */ 644 | overflow: hidden; 645 | text-indent: 100%; 646 | white-space: nowrap; 647 | background: rgba(#000, .6) url(../img/cd-icon-arrow.svg) no-repeat center center; 648 | visibility: hidden; 649 | opacity: 0; 650 | transition: opacity .3s, visibility .3s; 651 | 652 | &.is-visible { 653 | /* the button becomes visible */ 654 | visibility: visible; 655 | opacity: 1; 656 | } 657 | 658 | &:hover { 659 | background-color: rgba(#000, 1); 660 | opacity: 1; 661 | } 662 | } -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------- 2 | 3 | Primary style 4 | 5 | -------------------------------- */ 6 | *, *::after, *::before { 7 | box-sizing: border-box; 8 | } 9 | 10 | html { 11 | font-size: 62.5%; 12 | } 13 | 14 | body { 15 | font-size: 1.6rem; 16 | color: #edeade; 17 | background-color: #43202f; 18 | font-family: sans-serif; 19 | -webkit-font-smoothing: antialiased; 20 | -moz-osx-font-smoothing: grayscale; 21 | } 22 | 23 | a { 24 | color: #72a987; 25 | text-decoration: none; 26 | } 27 | 28 | /* -------------------------------- 29 | 30 | Portfolio Navigation 31 | 32 | -------------------------------- */ 33 | .cd-3d-portfolio-navigation { 34 | width: 100%; 35 | height: 25vh; 36 | text-align: center; 37 | display: table; 38 | } 39 | .cd-3d-portfolio-navigation .cd-wrapper { 40 | display: table-cell; 41 | width: 100%; 42 | vertical-align: middle; 43 | } 44 | .cd-3d-portfolio-navigation h1 { 45 | font-size: 2rem; 46 | margin-bottom: .6em; 47 | font-family: "Lora", serif; 48 | font-weight: bold; 49 | } 50 | .cd-3d-portfolio-navigation li { 51 | display: inline-block; 52 | margin: 0 .3em; 53 | } 54 | .cd-3d-portfolio-navigation li a { 55 | display: inline-block; 56 | color: #edeade; 57 | border: 2px solid #391b28; 58 | padding: .6em; 59 | -webkit-transition: all .2s; 60 | transition: all .2s; 61 | } 62 | .cd-3d-portfolio-navigation li a:hover { 63 | border-color: #72a987; 64 | } 65 | .cd-3d-portfolio-navigation li .selected { 66 | color: #edeade; 67 | background: #72a987; 68 | border-color: #72a987; 69 | cursor: default; 70 | box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); 71 | } 72 | @media only screen and (min-width: 768px) { 73 | .cd-3d-portfolio-navigation h1 { 74 | font-size: 3.2rem; 75 | } 76 | } 77 | 78 | /* -------------------------------- 79 | 80 | Portfolio Projects 81 | 82 | -------------------------------- */ 83 | .cd-3d-portfolio { 84 | overflow: hidden; 85 | } 86 | .cd-3d-portfolio .close-project { 87 | /* this is the 'X' icon - visible when a project has been selected */ 88 | position: absolute; 89 | z-index: 2; 90 | top: 24px; 91 | right: 5%; 92 | /* replace text with image */ 93 | color: transparent; 94 | white-space: nowrap; 95 | text-indent: 100%; 96 | overflow: hidden; 97 | height: 48px; 98 | width: 48px; 99 | border-radius: 50%; 100 | background: rgba(0, 0, 0, 0.6); 101 | -webkit-transform: scale(0); 102 | -ms-transform: scale(0); 103 | transform: scale(0); 104 | -webkit-transition: -webkit-transform .3s 0s; 105 | transition: -webkit-transform .3s 0s; 106 | transition: transform .3s 0s; 107 | transition: transform .3s 0s, -webkit-transform .3s 0s; 108 | } 109 | .cd-3d-portfolio .close-project:hover { 110 | background: black; 111 | } 112 | .cd-3d-portfolio .close-project::after, .cd-3d-portfolio .close-project::before { 113 | /* the 'X' lines */ 114 | content: ''; 115 | position: absolute; 116 | width: 18px; 117 | height: 2px; 118 | top: 50%; 119 | left: 50%; 120 | background: #edeade; 121 | } 122 | .cd-3d-portfolio .close-project::before { 123 | -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg); 124 | -ms-transform: translateX(-50%) translateY(-50%) rotate(45deg); 125 | transform: translateX(-50%) translateY(-50%) rotate(45deg); 126 | } 127 | .cd-3d-portfolio .close-project::after { 128 | -webkit-transform: translateX(-50%) translateY(-50%) rotate(-45deg); 129 | -ms-transform: translateX(-50%) translateY(-50%) rotate(-45deg); 130 | transform: translateX(-50%) translateY(-50%) rotate(-45deg); 131 | } 132 | .cd-3d-portfolio .project-is-open .open .close-project { 133 | /* show the 'X' icon when a project has been selected */ 134 | -webkit-transform: scale(1); 135 | -ms-transform: scale(1); 136 | transform: scale(1); 137 | -webkit-transition-delay: 0.6s; 138 | transition-delay: 0.6s; 139 | -webkit-transition: background 0.3s, -webkit-transform 0.3s 0.6s; 140 | transition: background 0.3s, -webkit-transform 0.3s 0.6s; 141 | transition: transform 0.3s 0.6s, background 0.3s; 142 | transition: transform 0.3s 0.6s, background 0.3s, -webkit-transform 0.3s 0.6s; 143 | } 144 | 145 | .cd-3d-portfolio .projects { 146 | /* used to render its children in a 3D space - add perspective */ 147 | -webkit-perspective: 1000px; 148 | perspective: 1000px; 149 | } 150 | .cd-3d-portfolio .projects .row { 151 | height: 25vh; 152 | position: relative; 153 | z-index: 1; 154 | /* position its children in a 3d space */ 155 | -webkit-transform-style: preserve-3d; 156 | transform-style: preserve-3d; 157 | /* Force hardware acceleration */ 158 | will-change: transform; 159 | -webkit-transform: translateZ(-50vw); 160 | transform: translateZ(-50vw); 161 | -webkit-transition: -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 162 | transition: -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 163 | transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 164 | transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1), -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 165 | pointer-events: none; 166 | } 167 | .cd-3d-portfolio .projects .row:nth-of-type(2) { 168 | -webkit-transition-delay: .1s; 169 | transition-delay: .1s; 170 | } 171 | .cd-3d-portfolio .projects .row:nth-of-type(3) { 172 | -webkit-transition-delay: .2s; 173 | transition-delay: .2s; 174 | } 175 | .cd-3d-portfolio .projects .row::after { 176 | /* this is used to create the row bottom face */ 177 | content: ''; 178 | position: absolute; 179 | z-index: 1; 180 | bottom: 0; 181 | left: 0; 182 | height: 100vw; 183 | width: 100%; 184 | background: #0f070b; 185 | -webkit-transform: translateZ(50vw) rotateX(90deg); 186 | transform: translateZ(50vw) rotateX(90deg); 187 | -webkit-transform-origin: bottom center; 188 | -ms-transform-origin: bottom center; 189 | transform-origin: bottom center; 190 | -webkit-transition: visibility 0s 0.6s; 191 | transition: visibility 0s 0.6s; 192 | } 193 | .cd-3d-portfolio .projects .row:last-of-type::after { 194 | /* use its ::after element as top face (rather than bottom face) */ 195 | top: 0; 196 | bottom: auto; 197 | -webkit-transform: translateZ(50vw) rotateX(-90deg); 198 | transform: translateZ(50vw) rotateX(-90deg); 199 | -webkit-transform-origin: top center; 200 | -ms-transform-origin: top center; 201 | transform-origin: top center; 202 | } 203 | .cd-3d-portfolio .projects:not(.project-has-transition) .row:nth-of-type(2) { 204 | /* increase z-index of the second row - this way the back faces of the first and thirdv rows won't be visible (only of no project has been selected) */ 205 | z-index: 2; 206 | } 207 | .no-preserve3d .cd-3d-portfolio .projects .row { 208 | /* fallback for browsers that don't support the preser3d property */ 209 | -webkit-transform: translateZ(0); 210 | transform: translateZ(0); 211 | } 212 | .cd-3d-portfolio .projects .row > li { 213 | /* this is the single project */ 214 | position: absolute; 215 | z-index: 1; 216 | height: 100%; 217 | width: 100%; 218 | -webkit-transform: translateZ(50vw); 219 | transform: translateZ(50vw); 220 | will-change: transform; 221 | overflow: hidden; 222 | } 223 | .cd-3d-portfolio .projects .row > li.selected { 224 | /* this the project on the visible face of the parallelepiped */ 225 | pointer-events: auto; 226 | } 227 | .cd-3d-portfolio .projects .row > li.front-face { 228 | -webkit-transform: translateZ(50vw); 229 | transform: translateZ(50vw); 230 | } 231 | .cd-3d-portfolio .projects .row > li.right-face { 232 | -webkit-transform: rotateY(90deg) translateZ(50vw); 233 | transform: rotateY(90deg) translateZ(50vw); 234 | } 235 | .cd-3d-portfolio .projects .row > li.left-face { 236 | -webkit-transform: rotateY(-90deg) translateZ(50vw); 237 | transform: rotateY(-90deg) translateZ(50vw); 238 | } 239 | .cd-3d-portfolio .projects .row > li.back-face { 240 | -webkit-transform: rotateY(180deg) translateZ(50vw); 241 | transform: rotateY(180deg) translateZ(50vw); 242 | } 243 | .cd-3d-portfolio .projects .row > li.hidden { 244 | opacity: 0; 245 | visibility: hidden; 246 | } 247 | .no-preserve3d .cd-3d-portfolio .projects .row > li { 248 | opacity: 0; 249 | -webkit-transform: translateX(0); 250 | -ms-transform: translateX(0); 251 | transform: translateX(0); 252 | -webkit-transition: opacity .4s; 253 | transition: opacity .4s; 254 | } 255 | .no-preserve3d .cd-3d-portfolio .projects .row > li.front-face, .no-preserve3d .cd-3d-portfolio .projects .row > li.right-face, .no-preserve3d .cd-3d-portfolio .projects .row > li.left-face, .no-preserve3d .cd-3d-portfolio .projects .row > li.back-face { 256 | -webkit-transform: translateX(0); 257 | -ms-transform: translateX(0); 258 | transform: translateX(0); 259 | } 260 | .no-preserve3d .cd-3d-portfolio .projects .row > li.selected { 261 | opacity: 1; 262 | } 263 | .cd-3d-portfolio .projects .project-wrapper { 264 | position: absolute; 265 | top: 0; 266 | left: 0; 267 | height: 100vh; 268 | width: 100%; 269 | } 270 | .cd-3d-portfolio .projects .project-image { 271 | position: relative; 272 | z-index: 2; 273 | /* vertically center its content */ 274 | display: table; 275 | width: 100%; 276 | height: 25%; 277 | cursor: pointer; 278 | /* force hardware acceleration */ 279 | -webkit-transform: translateZ(0); 280 | transform: translateZ(0); 281 | will-change: transform; 282 | -webkit-backface-visibility: hidden; 283 | backface-visibility: hidden; 284 | -webkit-transition: -webkit-transform 0.6s; 285 | transition: -webkit-transform 0.6s; 286 | transition: transform 0.6s; 287 | transition: transform 0.6s, -webkit-transform 0.6s; 288 | } 289 | .cd-3d-portfolio .projects .project-image::before, .cd-3d-portfolio .projects .project-image::after { 290 | content: ''; 291 | position: absolute; 292 | top: 0; 293 | left: 0; 294 | width: 100%; 295 | } 296 | .cd-3d-portfolio .projects .project-image::before { 297 | /* this is the project background image */ 298 | z-index: 1; 299 | height: 240%; 300 | background-color: #201017; 301 | background-position: center center; 302 | background-repeat: no-repeat; 303 | background-size: cover; 304 | } 305 | .cd-3d-portfolio .projects .project-image::after { 306 | /* this is the project image cover layer - this is visible only during a rotation of the parallelepiped (while the project is disappearing) */ 307 | z-index: 3; 308 | height: 100%; 309 | background: black; 310 | opacity: 0; 311 | -webkit-transition: opacity .5s; 312 | transition: opacity .5s; 313 | } 314 | .cd-3d-portfolio .projects .row > li:not(.selected) .project-image::after { 315 | opacity: 1; 316 | } 317 | .cd-3d-portfolio .projects .row:nth-of-type(2) > li:not(.selected) .project-image::after { 318 | -webkit-transition-delay: .1s; 319 | transition-delay: .1s; 320 | } 321 | .cd-3d-portfolio .projects .row:nth-of-type(3) > li:not(.selected) .project-image::after { 322 | -webkit-transition-delay: .2s; 323 | transition-delay: .2s; 324 | } 325 | .cd-3d-portfolio .projects .row > li.project-1 .project-image::before { 326 | /* set project background image */ 327 | background-image: url(../img/photo-1.jpg); 328 | } 329 | .cd-3d-portfolio .projects .row > li.project-2 .project-image::before { 330 | background-image: url(../img/photo-2.jpg); 331 | } 332 | .cd-3d-portfolio .projects .row > li.project-3 .project-image::before { 333 | background-image: url(../img/photo-3.jpg); 334 | } 335 | .cd-3d-portfolio .projects .row > li.project-4 .project-image::before { 336 | background-image: url(../img/photo-4.jpg); 337 | } 338 | .cd-3d-portfolio .projects .row > li.project-5 .project-image::before { 339 | background-image: url(../img/photo-5.jpg); 340 | } 341 | .cd-3d-portfolio .projects .row > li.project-6 .project-image::before { 342 | background-image: url(../img/photo-6.jpg); 343 | } 344 | .cd-3d-portfolio .projects .row > li.project-7 .project-image::before { 345 | background-image: url(../img/photo-7.jpg); 346 | } 347 | .cd-3d-portfolio .projects .row > li.project-8 .project-image::before { 348 | background-image: url(../img/photo-8.jpg); 349 | } 350 | .cd-3d-portfolio .projects .row > li.project-9 .project-image::before { 351 | background-image: url(../img/photo-9.jpg); 352 | } 353 | .cd-3d-portfolio .projects .project-title { 354 | position: relative; 355 | z-index: 2; 356 | /* vertically center inside its parent */ 357 | display: table-cell; 358 | vertical-align: middle; 359 | text-align: center; 360 | /* force hardware acceleration */ 361 | -webkit-transform: translateZ(0); 362 | transform: translateZ(0); 363 | will-change: transform; 364 | -webkit-transition: -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 365 | transition: -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 366 | transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 367 | transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1), -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 368 | } 369 | .cd-3d-portfolio .projects h2 { 370 | color: #edeade; 371 | font-size: 2.2rem; 372 | font-weight: bold; 373 | font-family: "Lora", serif; 374 | } 375 | .cd-3d-portfolio .projects .project-content { 376 | position: absolute; 377 | z-index: 1; 378 | /* place the content right below the project image */ 379 | top: 60%; 380 | width: 100%; 381 | background: white; 382 | box-shadow: 0 -5px 0 white; 383 | } 384 | .cd-3d-portfolio .projects .project-content > div { 385 | opacity: 0; 386 | -webkit-transform: translateY(25%); 387 | -ms-transform: translateY(25%); 388 | transform: translateY(25%); 389 | -webkit-transition: all 0.6s cubic-bezier(0.5, 0, 0.1, 1); 390 | transition: all 0.6s cubic-bezier(0.5, 0, 0.1, 1); 391 | } 392 | .cd-3d-portfolio .projects .project-content p { 393 | width: 90%; 394 | max-width: 800px; 395 | margin: 2em auto; 396 | line-height: 1.6; 397 | color: #694d59; 398 | } 399 | .cd-3d-portfolio .projects.project-has-transition .row > li { 400 | /* the project-has-transition class is used to add a transition to the tranform property of the single projects - it's added when a project is selected (before opening it) and removed when a project is colsed (when the closing animation is finished) */ 401 | -webkit-transition: opacity 0s 0.6s, -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 402 | transition: opacity 0s 0.6s, -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 403 | transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1), opacity 0s 0.6s; 404 | transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1), opacity 0s 0.6s, -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 405 | } 406 | .cd-3d-portfolio .projects.project-has-transition .row > li.selected.open { 407 | overflow: visible; 408 | } 409 | .cd-3d-portfolio .projects.project-has-transition .row > li:not(.selected) { 410 | opacity: 0; 411 | } 412 | .cd-3d-portfolio .projects.project-has-transition .row::after { 413 | /* hide the bottom/top parallelepiped face when a project is selected */ 414 | visibility: hidden; 415 | -webkit-transition: visibility 0s; 416 | transition: visibility 0s; 417 | } 418 | .cd-3d-portfolio .projects.project-is-open .row > li { 419 | /* the project-is-open class is used when a project is selected - it's added when a project is selected (before opening it) and removed when a project is closed (before the closing animation begins) */ 420 | -webkit-transition: opacity 0s, -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 421 | transition: opacity 0s, -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 422 | transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1), opacity 0s; 423 | transition: transform 0.6s cubic-bezier(0.5, 0, 0.1, 1), opacity 0s, -webkit-transform 0.6s cubic-bezier(0.5, 0, 0.1, 1); 424 | } 425 | .cd-3d-portfolio .projects.project-is-open .row > li.selected.open .project-wrapper { 426 | /* selected project on the visible face of the parallelepiped */ 427 | overflow: auto; 428 | -webkit-overflow-scrolling: touch; 429 | } 430 | .cd-3d-portfolio .projects.project-is-open .row > li.selected .project-image { 431 | /* projects on the visible face of the parallelepiped */ 432 | -webkit-transform: translateY(0); 433 | -ms-transform: translateY(0); 434 | transform: translateY(0); 435 | } 436 | .cd-3d-portfolio .projects.project-is-open .row > li.selected.open .project-image { 437 | cursor: auto; 438 | } 439 | .cd-3d-portfolio .projects.project-is-open .row > li.selected.open .project-title { 440 | -webkit-transform: translateY(70%); 441 | -ms-transform: translateY(70%); 442 | transform: translateY(70%); 443 | } 444 | .cd-3d-portfolio .projects.project-is-open .row > li.selected.open .project-content > div { 445 | opacity: 1; 446 | -webkit-transform: translateY(0); 447 | -ms-transform: translateY(0); 448 | transform: translateY(0); 449 | } 450 | .cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected.open.front-face { 451 | /* if the project selected is inside the first row */ 452 | -webkit-transform: translateZ(50vw) translateY(-100%); 453 | transform: translateZ(50vw) translateY(-100%); 454 | } 455 | .cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected.open.right-face { 456 | -webkit-transform: rotateY(90deg) translateZ(50vw) translateY(-100%); 457 | transform: rotateY(90deg) translateZ(50vw) translateY(-100%); 458 | } 459 | .cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected.open.left-face { 460 | -webkit-transform: rotateY(-90deg) translateZ(50vw) translateY(-100%); 461 | transform: rotateY(-90deg) translateZ(50vw) translateY(-100%); 462 | } 463 | .cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected.open.back-face { 464 | -webkit-transform: rotateY(180deg) translateZ(50vw) translateY(-100%); 465 | transform: rotateY(180deg) translateZ(50vw) translateY(-100%); 466 | } 467 | .cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected:not(.open).front-face { 468 | /* if the project selected is not inside the first row */ 469 | -webkit-transform: translateZ(50vw) translateY(300%); 470 | transform: translateZ(50vw) translateY(300%); 471 | } 472 | .cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected:not(.open).right-face { 473 | -webkit-transform: rotateY(90deg) translateZ(50vw) translateY(300%); 474 | transform: rotateY(90deg) translateZ(50vw) translateY(300%); 475 | } 476 | .cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected:not(.open).left-face { 477 | -webkit-transform: rotateY(-90deg) translateZ(50vw) translateY(300%); 478 | transform: rotateY(-90deg) translateZ(50vw) translateY(300%); 479 | } 480 | .cd-3d-portfolio .projects.project-is-open .row:first-of-type .selected:not(.open).back-face { 481 | -webkit-transform: rotateY(180deg) translateZ(50vw) translateY(300%); 482 | transform: rotateY(180deg) translateZ(50vw) translateY(300%); 483 | } 484 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected.open.front-face { 485 | /* if the project selected is inside the second row */ 486 | -webkit-transform: translateZ(50vw) translateY(-200%); 487 | transform: translateZ(50vw) translateY(-200%); 488 | } 489 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected.open.right-face { 490 | -webkit-transform: rotateY(90deg) translateZ(50vw) translateY(-200%); 491 | transform: rotateY(90deg) translateZ(50vw) translateY(-200%); 492 | } 493 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected.open.left-face { 494 | -webkit-transform: rotateY(-90deg) translateZ(50vw) translateY(-200%); 495 | transform: rotateY(-90deg) translateZ(50vw) translateY(-200%); 496 | } 497 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected.open.back-face { 498 | -webkit-transform: rotateY(180deg) translateZ(50vw) translateY(-200%); 499 | transform: rotateY(180deg) translateZ(50vw) translateY(-200%); 500 | } 501 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected:not(.open).front-face { 502 | /* if the project selected is not inside the second row */ 503 | -webkit-transform: translateZ(50vw) translateY(200%); 504 | transform: translateZ(50vw) translateY(200%); 505 | } 506 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected:not(.open).right-face { 507 | -webkit-transform: rotateY(90deg) translateZ(50vw) translateY(200%); 508 | transform: rotateY(90deg) translateZ(50vw) translateY(200%); 509 | } 510 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected:not(.open).left-face { 511 | -webkit-transform: rotateY(-90deg) translateZ(50vw) translateY(200%); 512 | transform: rotateY(-90deg) translateZ(50vw) translateY(200%); 513 | } 514 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(2) .selected:not(.open).back-face { 515 | -webkit-transform: rotateY(180deg) translateZ(50vw) translateY(200%); 516 | transform: rotateY(180deg) translateZ(50vw) translateY(200%); 517 | } 518 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected.open.front-face { 519 | /* if the project selected is inside the third row */ 520 | -webkit-transform: translateZ(50vw) translateY(-300%); 521 | transform: translateZ(50vw) translateY(-300%); 522 | } 523 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected.open.right-face { 524 | -webkit-transform: rotateY(90deg) translateZ(50vw) translateY(-300%); 525 | transform: rotateY(90deg) translateZ(50vw) translateY(-300%); 526 | } 527 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected.open.left-face { 528 | -webkit-transform: rotateY(-90deg) translateZ(50vw) translateY(-300%); 529 | transform: rotateY(-90deg) translateZ(50vw) translateY(-300%); 530 | } 531 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected.open.back-face { 532 | -webkit-transform: rotateY(180deg) translateZ(50vw) translateY(-300%); 533 | transform: rotateY(180deg) translateZ(50vw) translateY(-300%); 534 | } 535 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected:not(.open).front-face { 536 | /* if the project selected is not inside the third row */ 537 | -webkit-transform: translateZ(50vw) translateY(100%); 538 | transform: translateZ(50vw) translateY(100%); 539 | } 540 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected:not(.open).right-face { 541 | -webkit-transform: rotateY(90deg) translateZ(50vw) translateY(100%); 542 | transform: rotateY(90deg) translateZ(50vw) translateY(100%); 543 | } 544 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected:not(.open).left-face { 545 | -webkit-transform: rotateY(-90deg) translateZ(50vw) translateY(100%); 546 | transform: rotateY(-90deg) translateZ(50vw) translateY(100%); 547 | } 548 | .cd-3d-portfolio .projects.project-is-open .row:nth-of-type(3) .selected:not(.open).back-face { 549 | -webkit-transform: rotateY(180deg) translateZ(50vw) translateY(100%); 550 | transform: rotateY(180deg) translateZ(50vw) translateY(100%); 551 | } 552 | .no-preserve3d .cd-3d-portfolio .projects.project-is-open .row.row:first-of-type > li.selected { 553 | -webkit-transform: translateY(300%); 554 | -ms-transform: translateY(300%); 555 | transform: translateY(300%); 556 | } 557 | .no-preserve3d .cd-3d-portfolio .projects.project-is-open .row.row:first-of-type > li.selected.open { 558 | -webkit-transform: translateY(-100%); 559 | -ms-transform: translateY(-100%); 560 | transform: translateY(-100%); 561 | } 562 | .no-preserve3d .cd-3d-portfolio .projects.project-is-open .row.row:nth-of-type(2) > li.selected { 563 | -webkit-transform: translateY(200%); 564 | -ms-transform: translateY(200%); 565 | transform: translateY(200%); 566 | } 567 | .no-preserve3d .cd-3d-portfolio .projects.project-is-open .row.row:nth-of-type(2) > li.selected.open { 568 | -webkit-transform: translateY(-200%); 569 | -ms-transform: translateY(-200%); 570 | transform: translateY(-200%); 571 | } 572 | .no-preserve3d .cd-3d-portfolio .projects.project-is-open .row.row:nth-of-type(3) > li.selected { 573 | -webkit-transform: translateY(100%); 574 | -ms-transform: translateY(100%); 575 | transform: translateY(100%); 576 | } 577 | .no-preserve3d .cd-3d-portfolio .projects.project-is-open .row.row:nth-of-type(3) > li.selected.open { 578 | -webkit-transform: translateY(-300%); 579 | -ms-transform: translateY(-300%); 580 | transform: translateY(-300%); 581 | } 582 | @media only screen and (min-width: 768px) { 583 | .cd-3d-portfolio .projects h2 { 584 | font-size: 3.5rem; 585 | } 586 | .cd-3d-portfolio .projects p { 587 | font-size: 2rem; 588 | } 589 | } 590 | 591 | /* -------------------------------- 592 | 593 | Back to top 594 | 595 | -------------------------------- */ 596 | .cd-top { 597 | position: fixed; 598 | z-index: 3; 599 | bottom: 40px; 600 | right: 5%; 601 | display: inline-block; 602 | height: 48px; 603 | width: 48px; 604 | /* replace text with image */ 605 | overflow: hidden; 606 | text-indent: 100%; 607 | white-space: nowrap; 608 | background: rgba(0, 0, 0, 0.6) url(../img/cd-icon-arrow.svg) no-repeat center center; 609 | visibility: hidden; 610 | opacity: 0; 611 | -webkit-transition: opacity .3s, visibility .3s; 612 | transition: opacity .3s, visibility .3s; 613 | } 614 | .cd-top.is-visible { 615 | /* the button becomes visible */ 616 | visibility: visible; 617 | opacity: 1; 618 | } 619 | .cd-top:hover { 620 | background-color: black; 621 | opacity: 1; 622 | } 623 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 3D Portfolio Template | CodyHouse 12 | 13 | 14 |
15 | 26 | 27 |
28 |
    29 |
  • 30 |
    31 |
    32 |
    33 |

    Project 1

    34 |
    35 |
    36 | 37 |
    38 |
    39 |

    40 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 41 |

    42 | 43 |

    44 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit quod, molestiae voluptates commodi debitis saepe hic, aut magnam accusantium nostrum error ratione eum vero accusamus autem modi labore doloremque explicabo ut perspiciatis nulla molestias sequi eligendi tempore libero. Dolore iste vitae illum sequi neque quas, dolorem dolor officiis voluptatum quae voluptatibus tenetur molestias soluta blanditiis amet debitis incidunt eaque ratione facere repudiandae cupiditate aspernatur, velit ea itaque. Optio aut harum ad modi dolore doloribus tenetur laboriosam aspernatur minima itaque velit quia, illo sapiente unde, eum autem expedita facilis aliquam, dolorum dicta fuga totam sed pariatur iste! Inventore laudantium qui nostrum, perspiciatis quod! Molestias asperiores facilis explicabo necessitatibus dicta perferendis, esse, quisquam autem corporis ab doloremque nisi voluptas quidem, modi sequi aperiam, illum reiciendis delectus nostrum architecto eligendi sint deleniti voluptate! Magni quia harum eligendi laudantium fuga aspernatur veniam sunt impedit, vitae sit praesentium quam porro dolorem in eveniet iusto. Dicta tempora quo itaque minima expedita accusamus ex perferendis repellat totam! Fugit rerum nihil distinctio ducimus delectus, accusamus enim eos eum nulla fugiat aliquam blanditiis minus omnis maiores, quia numquam placeat. Molestias cupiditate deleniti porro praesentium, aliquam blanditiis maxime iste necessitatibus provident optio ipsum, beatae, libero nostrum, maiores! Temporibus, reiciendis, quibusdam. 45 |

    46 |
    47 |
    48 | 49 | Close 50 |
    51 |
  • 52 | 53 |
  • 54 |
    55 |
    56 |
    57 |

    Project 2

    58 |
    59 |
    60 | 61 |
    62 |
    63 |

    64 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 65 |

    66 | 67 |

    68 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 69 |

    70 | 71 |

    72 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 73 |

    74 | 75 |

    76 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 77 |

    78 | 79 |

    80 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 81 |

    82 | 83 |

    84 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 85 |

    86 |
    87 |
    88 | 89 | Close 90 |
    91 |
  • 92 | 93 |
  • 94 |
    95 |
    96 |
    97 |

    Project 3

    98 |
    99 |
    100 | 101 |
    102 |
    103 |

    104 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 105 |

    106 | 107 |

    108 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 109 |

    110 | 111 |

    112 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 113 |

    114 | 115 |

    116 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 117 |

    118 | 119 |

    120 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 121 |

    122 | 123 |

    124 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 125 |

    126 |
    127 |
    128 | 129 | Close 130 |
    131 |
  • 132 |
133 | 134 |
    135 |
  • 136 |
    137 |
    138 |
    139 |

    Project 1

    140 |
    141 |
    142 | 143 |
    144 |
    145 |

    146 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 147 |

    148 | 149 |

    150 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 151 |

    152 | 153 |

    154 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 155 |

    156 | 157 |

    158 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 159 |

    160 | 161 |

    162 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 163 |

    164 | 165 |

    166 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 167 |

    168 |
    169 |
    170 | 171 | Close 172 |
    173 |
  • 174 | 175 |
  • 176 |
    177 |
    178 |
    179 |

    Project 2

    180 |
    181 |
    182 | 183 |
    184 |
    185 |

    186 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 187 |

    188 | 189 |

    190 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 191 |

    192 | 193 |

    194 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 195 |

    196 | 197 |

    198 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 199 |

    200 | 201 |

    202 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 203 |

    204 | 205 |

    206 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 207 |

    208 |
    209 |
    210 | 211 | Close 212 |
    213 |
  • 214 | 215 |
  • 216 |
    217 |
    218 |
    219 |

    Project 3

    220 |
    221 |
    222 | 223 |
    224 |
    225 |

    226 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 227 |

    228 | 229 |

    230 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 231 |

    232 | 233 |

    234 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 235 |

    236 | 237 |

    238 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 239 |

    240 | 241 |

    242 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 243 |

    244 | 245 |

    246 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 247 |

    248 |
    249 |
    250 | 251 | Close 252 |
    253 |
  • 254 |
255 | 256 |
    257 |
  • 258 |
    259 |
    260 |
    261 |

    Project 1

    262 |
    263 |
    264 | 265 |
    266 |
    267 |

    268 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 269 |

    270 | 271 |

    272 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 273 |

    274 | 275 |

    276 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 277 |

    278 | 279 |

    280 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 281 |

    282 | 283 |

    284 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 285 |

    286 | 287 |

    288 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 289 |

    290 |
    291 |
    292 | 293 | Close 294 |
    295 |
  • 296 | 297 |
  • 298 |
    299 |
    300 |
    301 |

    Project 2

    302 |
    303 |
    304 | 305 |
    306 |
    307 |

    308 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 309 |

    310 | 311 |

    312 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 313 |

    314 | 315 |

    316 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 317 |

    318 | 319 |

    320 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 321 |

    322 | 323 |

    324 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 325 |

    326 | 327 |

    328 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 329 |

    330 |
    331 |
    332 | 333 | Close 334 |
    335 |
  • 336 | 337 |
  • 338 |
    339 |
    340 |
    341 |

    Project 3

    342 |
    343 |
    344 | 345 |
    346 |
    347 |

    348 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 349 |

    350 | 351 |

    352 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 353 |

    354 | 355 |

    356 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 357 |

    358 | 359 |

    360 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 361 |

    362 | 363 |

    364 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 365 |

    366 | 367 |

    368 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique eius ea sequi distinctio autem repellat, libero esse nam. Quam nesciunt nobis iure cupiditate neque hic magnam optio assumenda unde sequi. Rem cumque iure cum reprehenderit repellendus, autem voluptates maxime ipsa numquam libero nobis saepe laudantium amet praesentium voluptatibus, fuga eveniet. 369 |

    370 |
    371 |
    372 | 373 | Close 374 |
    375 |
  • 376 |
377 |
378 | 379 | Top 380 |
381 | 382 | 383 | 386 | 387 | 388 | -------------------------------------------------------------------------------- /js/jquery-3.0.0.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery v3.0.0 | (c) jQuery Foundation | jquery.org/license */ 2 | !function(a,b){"use strict";"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){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.0.0",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:f.call(this)},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.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()},push:h,sort:c.sort,splice:c.splice},r.extend=r.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||r.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return a&&"[object Object]"===k.call(a)?(b=e(a))?(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n):!0:!1},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;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,e,f=0,h=[];if(w(a))for(d=a.length;d>f;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;return"string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a)?(d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e):void 0},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"===c||r.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var x=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=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\x00-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=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)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,ca=function(a,b){return b?"\x00"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"label"in b&&b.disabled===a||"form"in b&&b.disabled===a||"form"in b&&b.disabled===!1&&(b.isDisabled===a||b.isDisabled!==!a&&("label"in b||!ea(b))!==a)}}function pa(a){return ia(function(b){return b=+b,ia(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 qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.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]:[]}},d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(_,aa);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"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.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===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(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,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!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 ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.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},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.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=ga.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=ga.selectors={cacheLength:50,createPseudo:ia,match:V,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(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===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]||ga.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]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.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(_,aa).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("(^|"+K+")"+a+"("+K+"|$)"))&&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=ga.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(O," ")+" ").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,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(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:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).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:oa(!1),disabled:oa(!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 X.test(a.nodeName)},input:function(a){return W.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:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[0>c?c+b:c]}),even:pa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e)}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}}}function ua(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 va(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function wa(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 xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(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?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(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=[ta(ua(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 xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,e>i&&ya(a.slice(i,e)),f>e&&ya(a=a.slice(e)),f>e&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.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(_,aa),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=V.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(_,aa),$.test(j[0].type)&&qa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&sa(j),!a)return G.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||$.test(a)&&qa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){if(r.isFunction(b))return r.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return r.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(C.test(b))return r.filter(b,a,c);b=r.filter(b,a)}return r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType})}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;d>b;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;d>b;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;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&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/\S+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(f>b)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(1>=b&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){ 3 | return j.call(r(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},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:X.test(c)?JSON.parse(c):c}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.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=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),Z(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=Z(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.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 V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthf;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ba(d)&&(e[f]=fa(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;g>f;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ga(this,!0)},hide:function(){return ga(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ba(this)?r(this).show():r(this).hide()})}});var ha=/^(?:checkbox|radio)$/i,ia=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ja=/^$|\/(?:java|ecma)script/i,ka={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ka.optgroup=ka.option,ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead,ka.th=ka.td;function la(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function ma(a,b){for(var c=0,d=a.length;d>c;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var na=/<|&#?\w+;/;function oa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;o>n;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(na.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ia.exec(f)||["",""])[1].toLowerCase(),i=ka[h]||ka._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=la(l.appendChild(f),"script"),j&&ma(g),c){k=0;while(f=g[k++])ja.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var pa=d.documentElement,qa=/^key/,ra=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,sa=/^([^.]*)(?:\.(.+)|)/;function ta(){return!0}function ua(){return!1}function va(){try{return d.activeElement}catch(a){}}function wa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)wa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ua;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(pa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;cc;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?r(e,this).index(i)>-1:r.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h\x20\t\r\n\f]*)[^>]*)\/>/gi,ya=/\s*$/g;function Ca(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Da(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ea(a){var b=Aa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ga(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ha.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ha(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&za.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(m&&(e=oa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(la(e,"script"),Da),i=h.length;m>l;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,la(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ea),l=0;i>l;l++)j=h[l],ja.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ba,""),k))}return a}function Ia(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(la(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&ma(la(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(xa,"<$1>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=la(h),f=la(a),d=0,e=f.length;e>d;d++)Ga(f[d],g[d]);if(b)if(c)for(f=f||la(a),g=g||la(h),d=0,e=f.length;e>d;d++)Fa(f[d],g[d]);else Fa(a,h);return g=la(h,"script"),g.length>0&&ma(g,!i&&la(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(la(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!ya.test(a)&&!ka[(ia.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(la(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(la(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;f>=g;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ja=/^margin/,Ka=new RegExp("^("+$+")(?!px)[a-z%]+$","i"),La=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",pa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,pa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Ma(a,b,c){var d,e,f,g,h=a.style;return c=c||La(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ka.test(g)&&Ja.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}function Na(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Oa=/^(none|table(?!-c[ea]).+)/,Pa={position:"absolute",visibility:"hidden",display:"block"},Qa={letterSpacing:"0",fontWeight:"400"},Ra=["Webkit","Moz","ms"],Sa=d.createElement("div").style;function Ta(a){if(a in Sa)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ra.length;while(c--)if(a=Ra[c]+b,a in Sa)return a}function Ua(a,b,c){var d=_.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Va(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+=r.css(a,c+aa[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+aa[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+aa[f]+"Width",!0,e))):(g+=r.css(a,"padding"+aa[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+aa[f]+"Width",!0,e)));return g}function Wa(a,b,c){var d,e=!0,f=La(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),0>=d||null==d){if(d=Ma(a,b,f),(0>d||null==d)&&(d=a.style[b]),Ka.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Va(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ma(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,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":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=_.exec(c))&&e[1]&&(c=da(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Ma(a,b,d)),"normal"===e&&b in Qa&&(e=Qa[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){return c?!Oa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Wa(a,b,d):ca(a,Pa,function(){return Wa(a,b,d)}):void 0},set:function(a,c,d){var e,f=d&&La(a),g=d&&Va(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=_.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ua(a,c,g)}}}),r.cssHooks.marginLeft=Na(o.reliableMarginLeft,function(a,b){return b?(parseFloat(Ma(a,"marginLeft"))||a.getBoundingClientRect().left-ca(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+aa[d]+b]=f[d]||f[d-2]||f[0];return e}},Ja.test(a)||(r.cssHooks[a+b].set=Ua)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=La(a),e=b.length;e>g;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Xa(a,b,c,d,e){return new Xa.prototype.init(a,b,c,d,e)}r.Tween=Xa,Xa.prototype={constructor:Xa,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Xa.propHooks[this.prop];return a&&a.get?a.get(this):Xa.propHooks._default.get(this)},run:function(a){var b,c=Xa.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=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):Xa.propHooks._default.set(this),this}},Xa.prototype.init.prototype=Xa.prototype,Xa.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Xa.propHooks.scrollTop=Xa.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Xa.prototype.init,r.fx.step={};var Ya,Za,$a=/^(?:toggle|show|hide)$/,_a=/queueHooks$/;function ab(){Za&&(a.requestAnimationFrame(ab),r.fx.tick())}function bb(){return a.setTimeout(function(){Ya=void 0}),Ya=r.now()}function cb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=aa[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function db(a,b,c){for(var d,e=(gb.tweeners[b]||[]).concat(gb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function eb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ba(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],$a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ga([a],!0),j=a.style.display||j,k=r.css(a,"display"),ga([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ga([a],!0),m.done(function(){p||ga([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=db(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function fb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.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 gb(a,b,c){var d,e,f=0,g=gb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Ya||bb(),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:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Ya||bb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.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.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(fb(k,j.opts.specialEasing);g>f;f++)if(d=gb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,db,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.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)}r.Animation=r.extend(gb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return da(c.elem,a,_.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;e>d;d++)c=a[d],gb.tweeners[c]=gb.tweeners[c]||[],gb.tweeners[c].unshift(b)},prefilters:[eb],prefilter:function(a,b){b?gb.prefilters.unshift(a):gb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:e.duration="number"==typeof e.duration?e.duration:e.duration in r.fx.speeds?r.fx.speeds[e.duration]:r.fx.speeds._default,null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ba).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=gb(this,r.extend({},a),f);(e||V.get(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=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&_a.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||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.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})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(cb(b,!0),a,d,e)}}),r.each({slideDown:cb("show"),slideUp:cb("hide"),slideToggle:cb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Ya=r.now();b1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?hb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c); 4 | }}),hb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ib[b]||r.find.attr;ib[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ib[g],ib[g]=e,e=null!=c(a,b,d)?g:null,ib[g]=f),e}});var jb=/^(?:input|select|textarea|button)$/i,kb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.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=r.find.attr(a,"tabindex");return b?parseInt(b,10):jb.test(a.nodeName)||kb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});var lb=/[\t\r\n\f]/g;function mb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,mb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,mb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,mb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=mb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(c)+" ").replace(lb," ").indexOf(b)>-1)return!0;return!1}});var nb=/\r/g,ob=/[\x20\t\r\n\f]+/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(nb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:r.trim(r.text(a)).replace(ob," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type,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)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){return r.isArray(b)?a.checked=r.inArray(r(a).val(),b)>-1:void 0}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?r.event.trigger(a,b,c,!0):void 0}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ha.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.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 Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Nb(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}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,""),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",0>b&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;return o.cors||Pb&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("