Skip to content

Instantly share code, notes, and snippets.

@squirly

squirly/1Factory.js

Last active Aug 29, 2015
Embed
What would you like to do?
Van AngularJs April Presentation Demos
"use strict";
angular.module('myModule', []).
factory('User', [function () {
function User (data) {
angular.extend(this, data);
}
User.prototype.getFullName = function () {
return this.name.first + ' ' + this.name.last;
};
User.prototype.sayHello = function () {
return 'Hello ' + this.name.title + '. ' + this.getFullName();
};
return User;
}]).
run(['User', function (User) {
var user = new User({
name: {title: 'mr', first: 'tyler', last: 'jones'}
});
console.log(user.sayHello());
}]);
"use strict";
angular.module('myModule', []).
factory('User', [function () {
function User (data) {
angular.extend(this, data);
}
User.prototype.getFullName = function () {
return this.name.first + ' ' + this.name.last;
};
User.prototype.sayHello = function () {
return 'Hello ' + this.name.title + '. ' + this.getFullName();
};
return User;
}]).
run(['User', function (User) {
var user = new User({
name: {title: 'mr', first: 'tyler', last: 'jones'}
});
console.log(user.sayHello());
}]).
service('userManager', ['$http', 'User', function ($http, User) {
return {
loadUser: function () {
var user_promise = $http.get('http://api.randomuser.me/').
then(function (response) {
if (response.status === 200) {
return new User(response.data.results[0].user);
}
});
return user_promise;
}
};
}]).
run(['userManager', function (userManager) {
userManager.loadUser().
then(function (user) {
console.log('1: ', user.sayHello());
});
userManager.loadUser().
then(function (user) {
console.log('2: ', user.sayHello());
});
}]);
"use strict";
angular.module('myModule', []).
factory('User', [function () {
function User (data) {
angular.extend(this, data);
}
User.prototype.getFullName = function () {
return this.name.first + ' ' + this.name.last;
};
User.prototype.sayHello = function () {
return 'Hello ' + this.name.title + '. ' + this.getFullName();
};
return User;
}]).
run(['User', function (User) {
var user = new User({
name: {title: 'mr', first: 'tyler', last: 'jones'}
});
console.log(user.sayHello());
}]).
service('userManager', ['$http', 'User', function ($http, User) {
return {
var user_promise;
loadUser: function () {
if (!user_promise) {
user_promise = $http.get('http://api.randomuser.me/').
then(function (response) {
if (response.status === 200) {
return new User(response.data.results[0].user);
}
});
}
return user_promise;
}
};
}]).
run(['userManager', function (userManager) {
userManager.loadUser().
then(function (user) {
console.log('1: ', user.sayHello());
});
userManager.loadUser().
then(function (user) {
console.log('2: ', user.sayHello());
});
}]);
"use strict";
angular.module('myModule', []).
provider('string', [function () {
var data;
return {
set: function (value) {
data = value;
},
$get: [function () {
return data;
}]
};
}]).
config(['stringProvider', function (stringProvider) {
stringProvider.set('Hello world!');
}]).
run(['string', function (string) {
console.log(string);
}]);
"use strict";
angular.module('myModule', []).
factory('User', [function () {
function User(data) {
angular.extend(this, data);
}
User.prototype.getFullName = function () {
return this.name.first + ' ' + this.name.last;
};
User.prototype.sayHello = function () {
return 'Hello ' + (this.name.title) + '. ' + this.getFullName();
};
return User;
}]).
run(['User', function (User) {
var user = new User({
name: {title: 'mr', first: 'tyler', last: 'jones'}
});
console.log(user.sayHello());
}]).
service('userManager', ['$http', '$q', 'User', function ($http, $q, User) {
var user_promise;
return {
loadUser: function () {
if (!user_promise) {
user_promise = $http.get('http://api.randomuser.me/').
then(function (response) {
return new User(response.data.results[0].user);
});
}
return user_promise;
}
};
}]).
run(['userManager', function (userManager) {
userManager.loadUser().
then(function (user) {
console.log(user.sayHello());
});
userManager.loadUser().
then(function (user) {
console.log(user.sayHello());
});
}]).
provider('userManager', [function () {
var injected_user_data;
return {
injectUserData: function (user_data) {
injected_user_data = user_data;
return this;
},
$get: ['$http', '$q', 'User', function ($http, $q, User) {
var user_promise;
if (injected_user_data) {
user_promise = $q(function (resolve) {
resolve(new User(injected_user_data));
});
}
return {
loadUser: function () {
if (!user_promise) {
user_promise = $http.get('http://api.randomuser.me/').
then(function (response) {
return new User(response.data.results[0].user);
});
}
return user_promise;
}
};
}]
};
}]).
config(['userManagerProvider', function (userManagerProvider) {
userManagerProvider.injectUserData({
name: {title: 'mr', first: 'tyler', last: 'jones'}
});
}]);
<!DOCTYPE html>
<html class="sl-root decks export loaded ua-phantomjs reveal-viewport theme-font-montserrat theme-color-white-blue">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Decoupling Components in AngularJs Using Modules: Slides</title>
<meta name="description" content="Slides">
<style>@import url("https://s3.amazonaws.com/static.slid.es/fonts/montserrat/montserrat.css");@import url("https://s3.amazonaws.com/static.slid.es/fonts/opensans/opensans.css");@import url("https://s3.amazonaws.com/static.slid.es/fonts/lato/lato.css");@import url("https://s3.amazonaws.com/static.slid.es/fonts/asul/asul.css");@import url("https://s3.amazonaws.com/static.slid.es/fonts/josefinsans/josefinsans.css");@import url("https://s3.amazonaws.com/static.slid.es/fonts/league/league_gothic.css");@import url("https://s3.amazonaws.com/static.slid.es/fonts/merriweathersans/merriweathersans.css");@import url("https://s3.amazonaws.com/static.slid.es/fonts/overpass/overpass.css");@import url("https://s3.amazonaws.com/static.slid.es/fonts/quicksand/quicksand.css");@import url("https://s3.amazonaws.com/static.slid.es/fonts/cabinsketch/cabinsketch.css");@import url("https://s3.amazonaws.com/static.slid.es/fonts/newscycle/newscycle.css");@import url("https://s3.amazonaws.com/static.slid.es/fonts/oxygen/oxygen.css");.theme-font-asul .themed,.theme-font-asul .reveal{font-family:"Asul", sans-serif;font-size:30px}.theme-font-asul .themed section,.theme-font-asul .reveal section{line-height:1.3}.theme-font-asul .themed h1,.theme-font-asul .themed h2,.theme-font-asul .themed h3,.theme-font-asul .themed h4,.theme-font-asul .themed h5,.theme-font-asul .themed h6,.theme-font-asul .reveal h1,.theme-font-asul .reveal h2,.theme-font-asul .reveal h3,.theme-font-asul .reveal h4,.theme-font-asul .reveal h5,.theme-font-asul .reveal h6{font-family:"Asul", sans-serif;text-transform:none;line-height:1.3;font-weight:normal}.theme-font-helvetica .themed,.theme-font-helvetica .reveal{font-family:Helvetica, Arial, sans-serif;font-size:30px}.theme-font-helvetica .themed section,.theme-font-helvetica .reveal section{line-height:1.3}.theme-font-helvetica .themed h1,.theme-font-helvetica .themed h2,.theme-font-helvetica .themed h3,.theme-font-helvetica .themed h4,.theme-font-helvetica .themed h5,.theme-font-helvetica .themed h6,.theme-font-helvetica .reveal h1,.theme-font-helvetica .reveal h2,.theme-font-helvetica .reveal h3,.theme-font-helvetica .reveal h4,.theme-font-helvetica .reveal h5,.theme-font-helvetica .reveal h6{font-family:Helvetica, Arial, sans-serif;text-transform:none;line-height:1.3;font-weight:normal}.theme-font-josefine .themed,.theme-font-josefine .reveal{font-family:"Lato", sans-serif;font-size:30px}.theme-font-josefine .themed section,.theme-font-josefine .reveal section{line-height:1.3}.theme-font-josefine .themed h1,.theme-font-josefine .themed h2,.theme-font-josefine .themed h3,.theme-font-josefine .themed h4,.theme-font-josefine .themed h5,.theme-font-josefine .themed h6,.theme-font-josefine .reveal h1,.theme-font-josefine .reveal h2,.theme-font-josefine .reveal h3,.theme-font-josefine .reveal h4,.theme-font-josefine .reveal h5,.theme-font-josefine .reveal h6{font-family:"Josefin Sans", sans-serif;text-transform:none;line-height:1.3;font-weight:normal}.theme-font-league .themed,.theme-font-league .reveal{font-family:"Lato", Helvetica, sans-serif;font-size:30px}.theme-font-league .themed section,.theme-font-league .reveal section{line-height:1.3}.theme-font-league .themed h1,.theme-font-league .themed h2,.theme-font-league .themed h3,.theme-font-league .themed h4,.theme-font-league .themed h5,.theme-font-league .themed h6,.theme-font-league .reveal h1,.theme-font-league .reveal h2,.theme-font-league .reveal h3,.theme-font-league .reveal h4,.theme-font-league .reveal h5,.theme-font-league .reveal h6{font-family:"League Gothic", Impact, sans-serif;text-transform:uppercase;line-height:1.3;font-weight:normal}.theme-font-merriweather .themed,.theme-font-merriweather .reveal{font-family:"Oxygen", sans-serif;font-size:30px}.theme-font-merriweather .themed section,.theme-font-merriweather .reveal section{line-height:1.3}.theme-font-merriweather .themed h1,.theme-font-merriweather .themed h2,.theme-font-merriweather .themed h3,.theme-font-merriweather .themed h4,.theme-font-merriweather .themed h5,.theme-font-merriweather .themed h6,.theme-font-merriweather .reveal h1,.theme-font-merriweather .reveal h2,.theme-font-merriweather .reveal h3,.theme-font-merriweather .reveal h4,.theme-font-merriweather .reveal h5,.theme-font-merriweather .reveal h6{font-family:"Merriweather Sans", sans-serif;text-transform:none;line-height:1.3;font-weight:normal}.theme-font-montserrat .themed,.theme-font-montserrat .reveal{font-family:"Open Sans", sans-serif;font-size:30px}.theme-font-montserrat .themed section,.theme-font-montserrat .reveal section{line-height:1.3}.theme-font-montserrat .themed h1,.theme-font-montserrat .themed h2,.theme-font-montserrat .themed h3,.theme-font-montserrat .themed h4,.theme-font-montserrat .themed h5,.theme-font-montserrat .themed h6,.theme-font-montserrat .reveal h1,.theme-font-montserrat .reveal h2,.theme-font-montserrat .reveal h3,.theme-font-montserrat .reveal h4,.theme-font-montserrat .reveal h5,.theme-font-montserrat .reveal h6{font-family:"Montserrat", Helvetica, sans-serif;text-transform:none;line-height:1.3;font-weight:normal}.theme-font-news .themed,.theme-font-news .reveal{font-family:"Lato", sans-serif;font-size:30px}.theme-font-news .themed section,.theme-font-news .reveal section{line-height:1.3}.theme-font-news .themed h1,.theme-font-news .themed h2,.theme-font-news .themed h3,.theme-font-news .themed h4,.theme-font-news .themed h5,.theme-font-news .themed h6,.theme-font-news .reveal h1,.theme-font-news .reveal h2,.theme-font-news .reveal h3,.theme-font-news .reveal h4,.theme-font-news .reveal h5,.theme-font-news .reveal h6{font-family:"News Cycle", Impact, sans-serif;text-transform:none;line-height:1.3;font-weight:normal}.theme-font-opensans .themed,.theme-font-opensans .reveal{font-family:"Open Sans", Helvetica, sans-serif;font-size:30px}.theme-font-opensans .themed section,.theme-font-opensans .reveal section{line-height:1.3}.theme-font-opensans .themed h1,.theme-font-opensans .themed h2,.theme-font-opensans .themed h3,.theme-font-opensans .themed h4,.theme-font-opensans .themed h5,.theme-font-opensans .themed h6,.theme-font-opensans .reveal h1,.theme-font-opensans .reveal h2,.theme-font-opensans .reveal h3,.theme-font-opensans .reveal h4,.theme-font-opensans .reveal h5,.theme-font-opensans .reveal h6{font-family:"Open Sans", Helvetica, sans-serif;text-transform:none;line-height:1.3;font-weight:bold}.theme-font-palatino .themed,.theme-font-palatino .reveal{font-family:"Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;font-size:30px}.theme-font-palatino .themed section,.theme-font-palatino .reveal section{line-height:1.3}.theme-font-palatino .themed h1,.theme-font-palatino .themed h2,.theme-font-palatino .themed h3,.theme-font-palatino .themed h4,.theme-font-palatino .themed h5,.theme-font-palatino .themed h6,.theme-font-palatino .reveal h1,.theme-font-palatino .reveal h2,.theme-font-palatino .reveal h3,.theme-font-palatino .reveal h4,.theme-font-palatino .reveal h5,.theme-font-palatino .reveal h6{font-family:"Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;text-transform:none;line-height:1.3;font-weight:normal}.theme-font-quicksand .themed,.theme-font-quicksand .reveal{font-family:"Open Sans", Helvetica, sans-serif;font-size:30px}.theme-font-quicksand .themed section,.theme-font-quicksand .reveal section{line-height:1.3}.theme-font-quicksand .themed h1,.theme-font-quicksand .themed h2,.theme-font-quicksand .themed h3,.theme-font-quicksand .themed h4,.theme-font-quicksand .themed h5,.theme-font-quicksand .themed h6,.theme-font-quicksand .reveal h1,.theme-font-quicksand .reveal h2,.theme-font-quicksand .reveal h3,.theme-font-quicksand .reveal h4,.theme-font-quicksand .reveal h5,.theme-font-quicksand .reveal h6{font-family:"Quicksand", Helvetica, sans-serif;text-transform:uppercase;line-height:1.3;font-weight:normal}.theme-font-sketch .themed,.theme-font-sketch .reveal{font-family:"Oxygen", sans-serif;font-size:30px}.theme-font-sketch .themed section,.theme-font-sketch .reveal section{line-height:1.3}.theme-font-sketch .themed h1,.theme-font-sketch .themed h2,.theme-font-sketch .themed h3,.theme-font-sketch .themed h4,.theme-font-sketch .themed h5,.theme-font-sketch .themed h6,.theme-font-sketch .reveal h1,.theme-font-sketch .reveal h2,.theme-font-sketch .reveal h3,.theme-font-sketch .reveal h4,.theme-font-sketch .reveal h5,.theme-font-sketch .reveal h6{font-family:"Cabin Sketch", sans-serif;text-transform:none;line-height:1.3;font-weight:normal}.theme-font-overpass .themed,.theme-font-overpass .reveal{font-family:"Overpass", sans-serif;font-size:28px}.theme-font-overpass .themed section,.theme-font-overpass .reveal section{line-height:1.3}.theme-font-overpass .themed h1,.theme-font-overpass .themed h2,.theme-font-overpass .themed h3,.theme-font-overpass .themed h4,.theme-font-overpass .themed h5,.theme-font-overpass .themed h6,.theme-font-overpass .reveal h1,.theme-font-overpass .reveal h2,.theme-font-overpass .reveal h3,.theme-font-overpass .reveal h4,.theme-font-overpass .reveal h5,.theme-font-overpass .reveal h6{font-family:"Overpass", sans-serif;text-transform:uppercase;line-height:1.3;font-weight:bold}.theme-font-overpass .themed h1,.theme-font-overpass.themed h1,.theme-font-overpass .reveal h1,.theme-font-overpass.reveal h1{font-size:1.75em;margin-bottom:.25em;letter-spacing:.015em}.theme-font-overpass .themed h2,.theme-font-overpass.themed h2,.theme-font-overpass .reveal h2,.theme-font-overpass.reveal h2{font-size:1.15em;margin-bottom:.5em;letter-spacing:.036661em}.theme-font-overpass .themed h3,.theme-font-overpass.themed h3,.theme-font-overpass .reveal h3,.theme-font-overpass.reveal h3{font-size:1.00em;margin-bottom:.5em;letter-spacing:.041em}.theme-font-overpass .themed h4,.theme-font-overpass.themed h4,.theme-font-overpass .reveal h4,.theme-font-overpass.reveal h4{font-size:1.00em}.theme-font-overpass .themed h5,.theme-font-overpass.themed h5,.theme-font-overpass .reveal h5,.theme-font-overpass.reveal h5{font-size:1.00em}.theme-font-overpass .themed h6,.theme-font-overpass.themed h6,.theme-font-overpass .reveal h6,.theme-font-overpass.reveal h6{font-size:1.00em}.theme-font-no-font .themed,.theme-font-no-font.themed,.theme-font-no-font .reveal,.theme-font-no-font.reveal{font-family:sans-serif;font-size:30px}.theme-font-no-font .themed section font,.theme-font-no-font.themed section font,.theme-font-no-font .reveal section font,.theme-font-no-font.reveal section font{line-height:1}.katex{font:normal 1.21em KaTeX_Main;line-height:1.2;white-space:nowrap}.katex .katex-inner{display:inline-block}.katex .base{display:inline-block}.katex .strut{display:inline-block}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .amsrm{font-family:KaTeX_AMS}.katex .textstyle>.mord+.mop{margin-left:0.16667em}.katex .textstyle>.mord+.mbin{margin-left:0.22222em}.katex .textstyle>.mord+.mrel{margin-left:0.27778em}.katex .textstyle>.mord+.minner{margin-left:0.16667em}.katex .textstyle>.mop+.mord{margin-left:0.16667em}.katex .textstyle>.mop+.mop{margin-left:0.16667em}.katex .textstyle>.mop+.mrel{margin-left:0.27778em}.katex .textstyle>.mop+.minner{margin-left:0.16667em}.katex .textstyle>.mbin+.mord{margin-left:0.22222em}.katex .textstyle>.mbin+.mop{margin-left:0.22222em}.katex .textstyle>.mbin+.mopen{margin-left:0.22222em}.katex .textstyle>.mbin+.minner{margin-left:0.22222em}.katex .textstyle>.mrel+.mord{margin-left:0.27778em}.katex .textstyle>.mrel+.mop{margin-left:0.27778em}.katex .textstyle>.mrel+.mopen{margin-left:0.27778em}.katex .textstyle>.mrel+.minner{margin-left:0.27778em}.katex .textstyle>.mclose+.mop{margin-left:0.16667em}.katex .textstyle>.mclose+.mbin{margin-left:0.22222em}.katex .textstyle>.mclose+.mrel{margin-left:0.27778em}.katex .textstyle>.mclose+.minner{margin-left:0.16667em}.katex .textstyle>.mpunct+.mord{margin-left:0.16667em}.katex .textstyle>.mpunct+.mop{margin-left:0.16667em}.katex .textstyle>.mpunct+.mrel{margin-left:0.16667em}.katex .textstyle>.mpunct+.mopen{margin-left:0.16667em}.katex .textstyle>.mpunct+.mclose{margin-left:0.16667em}.katex .textstyle>.mpunct+.mpunct{margin-left:0.16667em}.katex .textstyle>.mpunct+.minner{margin-left:0.16667em}.katex .textstyle>.minner+.mord{margin-left:0.16667em}.katex .textstyle>.minner+.mop{margin-left:0.16667em}.katex .textstyle>.minner+.mbin{margin-left:0.22222em}.katex .textstyle>.minner+.mrel{margin-left:0.27778em}.katex .textstyle>.minner+.mopen{margin-left:0.16667em}.katex .textstyle>.minner+.mpunct{margin-left:0.16667em}.katex .textstyle>.minner+.minner{margin-left:0.16667em}.katex .mord+.mop{margin-left:0.16667em}.katex .mop+.mord{margin-left:0.16667em}.katex .mop+.mop{margin-left:0.16667em}.katex .mclose+.mop{margin-left:0.16667em}.katex .minner+.mop{margin-left:0.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:0.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:0.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:0.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:0.04em;content:"";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-0.16667em}.katex .mspace.thinspace{width:0.16667em}.katex .mspace.mediumspace{width:0.22222em}.katex .mspace.thickspace{width:0.27778em}.katex .mspace.enspace{width:0.5em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:0.75em;margin-left:-0.32em;position:relative;top:-0.2em}.katex .katex-logo .t{margin-left:-0.23em}.katex .katex-logo .e{margin-left:-0.1667em;position:relative;top:0.2155em}.katex .katex-logo .x{margin-left:-0.125em}.katex .rule{display:inline-block;border-style:solid}.katex .overline .overline-line{width:100%}.katex .overline .overline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .overline .overline-line:after{border-bottom-style:solid;border-bottom-width:0.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:0.04em;content:"";display:block;margin-top:-1px}.katex .sizing,.katex .fontsize-ensurer{display:inline-block}.katex .sizing.reset-size1.size1,.katex .fontsize-ensurer.reset-size1.size1{font-size:1em}.katex .sizing.reset-size1.size2,.katex .fontsize-ensurer.reset-size1.size2{font-size:1.4em}.katex .sizing.reset-size1.size3,.katex .fontsize-ensurer.reset-size1.size3{font-size:1.6em}.katex .sizing.reset-size1.size4,.katex .fontsize-ensurer.reset-size1.size4{font-size:1.8em}.katex .sizing.reset-size1.size5,.katex .fontsize-ensurer.reset-size1.size5{font-size:2em}.katex .sizing.reset-size1.size6,.katex .fontsize-ensurer.reset-size1.size6{font-size:2.4em}.katex .sizing.reset-size1.size7,.katex .fontsize-ensurer.reset-size1.size7{font-size:2.88em}.katex .sizing.reset-size1.size8,.katex .fontsize-ensurer.reset-size1.size8{font-size:3.46em}.katex .sizing.reset-size1.size9,.katex .fontsize-ensurer.reset-size1.size9{font-size:4.14em}.katex .sizing.reset-size1.size10,.katex .fontsize-ensurer.reset-size1.size10{font-size:4.98em}.katex .sizing.reset-size2.size1,.katex .fontsize-ensurer.reset-size2.size1{font-size:0.7142857142857143em}.katex .sizing.reset-size2.size2,.katex .fontsize-ensurer.reset-size2.size2{font-size:1em}.katex .sizing.reset-size2.size3,.katex .fontsize-ensurer.reset-size2.size3{font-size:1.142857142857143em}.katex .sizing.reset-size2.size4,.katex .fontsize-ensurer.reset-size2.size4{font-size:1.2857142857142858em}.katex .sizing.reset-size2.size5,.katex .fontsize-ensurer.reset-size2.size5{font-size:1.4285714285714286em}.katex .sizing.reset-size2.size6,.katex .fontsize-ensurer.reset-size2.size6{font-size:1.7142857142857144em}.katex .sizing.reset-size2.size7,.katex .fontsize-ensurer.reset-size2.size7{font-size:2.0571428571428574em}.katex .sizing.reset-size2.size8,.katex .fontsize-ensurer.reset-size2.size8{font-size:2.4714285714285715em}.katex .sizing.reset-size2.size9,.katex .fontsize-ensurer.reset-size2.size9{font-size:2.9571428571428573em}.katex .sizing.reset-size2.size10,.katex .fontsize-ensurer.reset-size2.size10{font-size:3.557142857142858em}.katex .sizing.reset-size3.size1,.katex .fontsize-ensurer.reset-size3.size1{font-size:0.625em}.katex .sizing.reset-size3.size2,.katex .fontsize-ensurer.reset-size3.size2{font-size:0.8749999999999999em}.katex .sizing.reset-size3.size3,.katex .fontsize-ensurer.reset-size3.size3{font-size:1em}.katex .sizing.reset-size3.size4,.katex .fontsize-ensurer.reset-size3.size4{font-size:1.125em}.katex .sizing.reset-size3.size5,.katex .fontsize-ensurer.reset-size3.size5{font-size:1.25em}.katex .sizing.reset-size3.size6,.katex .fontsize-ensurer.reset-size3.size6{font-size:1.4999999999999998em}.katex .sizing.reset-size3.size7,.katex .fontsize-ensurer.reset-size3.size7{font-size:1.7999999999999998em}.katex .sizing.reset-size3.size8,.katex .fontsize-ensurer.reset-size3.size8{font-size:2.1624999999999996em}.katex .sizing.reset-size3.size9,.katex .fontsize-ensurer.reset-size3.size9{font-size:2.5874999999999995em}.katex .sizing.reset-size3.size10,.katex .fontsize-ensurer.reset-size3.size10{font-size:3.1125000000000003em}.katex .sizing.reset-size4.size1,.katex .fontsize-ensurer.reset-size4.size1{font-size:0.5555555555555556em}.katex .sizing.reset-size4.size2,.katex .fontsize-ensurer.reset-size4.size2{font-size:0.7777777777777777em}.katex .sizing.reset-size4.size3,.katex .fontsize-ensurer.reset-size4.size3{font-size:0.888888888888889em}.katex .sizing.reset-size4.size4,.katex .fontsize-ensurer.reset-size4.size4{font-size:1em}.katex .sizing.reset-size4.size5,.katex .fontsize-ensurer.reset-size4.size5{font-size:1.1111111111111112em}.katex .sizing.reset-size4.size6,.katex .fontsize-ensurer.reset-size4.size6{font-size:1.3333333333333333em}.katex .sizing.reset-size4.size7,.katex .fontsize-ensurer.reset-size4.size7{font-size:1.5999999999999999em}.katex .sizing.reset-size4.size8,.katex .fontsize-ensurer.reset-size4.size8{font-size:1.922222222222222em}.katex .sizing.reset-size4.size9,.katex .fontsize-ensurer.reset-size4.size9{font-size:2.3em}.katex .sizing.reset-size4.size10,.katex .fontsize-ensurer.reset-size4.size10{font-size:2.766666666666667em}.katex .sizing.reset-size5.size1,.katex .fontsize-ensurer.reset-size5.size1{font-size:0.5em}.katex .sizing.reset-size5.size2,.katex .fontsize-ensurer.reset-size5.size2{font-size:0.7em}.katex .sizing.reset-size5.size3,.katex .fontsize-ensurer.reset-size5.size3{font-size:0.8em}.katex .sizing.reset-size5.size4,.katex .fontsize-ensurer.reset-size5.size4{font-size:0.9em}.katex .sizing.reset-size5.size5,.katex .fontsize-ensurer.reset-size5.size5{font-size:1em}.katex .sizing.reset-size5.size6,.katex .fontsize-ensurer.reset-size5.size6{font-size:1.2em}.katex .sizing.reset-size5.size7,.katex .fontsize-ensurer.reset-size5.size7{font-size:1.44em}.katex .sizing.reset-size5.size8,.katex .fontsize-ensurer.reset-size5.size8{font-size:1.73em}.katex .sizing.reset-size5.size9,.katex .fontsize-ensurer.reset-size5.size9{font-size:2.07em}.katex .sizing.reset-size5.size10,.katex .fontsize-ensurer.reset-size5.size10{font-size:2.49em}.katex .sizing.reset-size6.size1,.katex .fontsize-ensurer.reset-size6.size1{font-size:0.4166666666666667em}.katex .sizing.reset-size6.size2,.katex .fontsize-ensurer.reset-size6.size2{font-size:0.5833333333333334em}.katex .sizing.reset-size6.size3,.katex .fontsize-ensurer.reset-size6.size3{font-size:0.6666666666666667em}.katex .sizing.reset-size6.size4,.katex .fontsize-ensurer.reset-size6.size4{font-size:0.75em}.katex .sizing.reset-size6.size5,.katex .fontsize-ensurer.reset-size6.size5{font-size:0.8333333333333334em}.katex .sizing.reset-size6.size6,.katex .fontsize-ensurer.reset-size6.size6{font-size:1em}.katex .sizing.reset-size6.size7,.katex .fontsize-ensurer.reset-size6.size7{font-size:1.2em}.katex .sizing.reset-size6.size8,.katex .fontsize-ensurer.reset-size6.size8{font-size:1.4416666666666667em}.katex .sizing.reset-size6.size9,.katex .fontsize-ensurer.reset-size6.size9{font-size:1.7249999999999999em}.katex .sizing.reset-size6.size10,.katex .fontsize-ensurer.reset-size6.size10{font-size:2.075em}.katex .sizing.reset-size7.size1,.katex .fontsize-ensurer.reset-size7.size1{font-size:0.3472222222222222em}.katex .sizing.reset-size7.size2,.katex .fontsize-ensurer.reset-size7.size2{font-size:0.4861111111111111em}.katex .sizing.reset-size7.size3,.katex .fontsize-ensurer.reset-size7.size3{font-size:0.5555555555555556em}.katex .sizing.reset-size7.size4,.katex .fontsize-ensurer.reset-size7.size4{font-size:0.625em}.katex .sizing.reset-size7.size5,.katex .fontsize-ensurer.reset-size7.size5{font-size:0.6944444444444444em}.katex .sizing.reset-size7.size6,.katex .fontsize-ensurer.reset-size7.size6{font-size:0.8333333333333334em}.katex .sizing.reset-size7.size7,.katex .fontsize-ensurer.reset-size7.size7{font-size:1em}.katex .sizing.reset-size7.size8,.katex .fontsize-ensurer.reset-size7.size8{font-size:1.2013888888888888em}.katex .sizing.reset-size7.size9,.katex .fontsize-ensurer.reset-size7.size9{font-size:1.4375em}.katex .sizing.reset-size7.size10,.katex .fontsize-ensurer.reset-size7.size10{font-size:1.729166666666667em}.katex .sizing.reset-size8.size1,.katex .fontsize-ensurer.reset-size8.size1{font-size:0.28901734104046245em}.katex .sizing.reset-size8.size2,.katex .fontsize-ensurer.reset-size8.size2{font-size:0.40462427745664736em}.katex .sizing.reset-size8.size3,.katex .fontsize-ensurer.reset-size8.size3{font-size:0.46242774566473993em}.katex .sizing.reset-size8.size4,.katex .fontsize-ensurer.reset-size8.size4{font-size:0.5202312138728324em}.katex .sizing.reset-size8.size5,.katex .fontsize-ensurer.reset-size8.size5{font-size:0.5780346820809249em}.katex .sizing.reset-size8.size6,.katex .fontsize-ensurer.reset-size8.size6{font-size:0.6936416184971098em}.katex .sizing.reset-size8.size7,.katex .fontsize-ensurer.reset-size8.size7{font-size:0.8323699421965318em}.katex .sizing.reset-size8.size8,.katex .fontsize-ensurer.reset-size8.size8{font-size:1em}.katex .sizing.reset-size8.size9,.katex .fontsize-ensurer.reset-size8.size9{font-size:1.1965317919075145em}.katex .sizing.reset-size8.size10,.katex .fontsize-ensurer.reset-size8.size10{font-size:1.4393063583815031em}.katex .sizing.reset-size9.size1,.katex .fontsize-ensurer.reset-size9.size1{font-size:0.24154589371980678em}.katex .sizing.reset-size9.size2,.katex .fontsize-ensurer.reset-size9.size2{font-size:0.33816425120772947em}.katex .sizing.reset-size9.size3,.katex .fontsize-ensurer.reset-size9.size3{font-size:0.38647342995169087em}.katex .sizing.reset-size9.size4,.katex .fontsize-ensurer.reset-size9.size4{font-size:0.4347826086956522em}.katex .sizing.reset-size9.size5,.katex .fontsize-ensurer.reset-size9.size5{font-size:0.48309178743961356em}.katex .sizing.reset-size9.size6,.katex .fontsize-ensurer.reset-size9.size6{font-size:0.5797101449275363em}.katex .sizing.reset-size9.size7,.katex .fontsize-ensurer.reset-size9.size7{font-size:0.6956521739130435em}.katex .sizing.reset-size9.size8,.katex .fontsize-ensurer.reset-size9.size8{font-size:0.8357487922705314em}.katex .sizing.reset-size9.size9,.katex .fontsize-ensurer.reset-size9.size9{font-size:1em}.katex .sizing.reset-size9.size10,.katex .fontsize-ensurer.reset-size9.size10{font-size:1.202898550724638em}.katex .sizing.reset-size10.size1,.katex .fontsize-ensurer.reset-size10.size1{font-size:0.2008032128514056em}.katex .sizing.reset-size10.size2,.katex .fontsize-ensurer.reset-size10.size2{font-size:0.2811244979919678em}.katex .sizing.reset-size10.size3,.katex .fontsize-ensurer.reset-size10.size3{font-size:0.321285140562249em}.katex .sizing.reset-size10.size4,.katex .fontsize-ensurer.reset-size10.size4{font-size:0.3614457831325301em}.katex .sizing.reset-size10.size5,.katex .fontsize-ensurer.reset-size10.size5{font-size:0.4016064257028112em}.katex .sizing.reset-size10.size6,.katex .fontsize-ensurer.reset-size10.size6{font-size:0.48192771084337344em}.katex .sizing.reset-size10.size7,.katex .fontsize-ensurer.reset-size10.size7{font-size:0.5783132530120482em}.katex .sizing.reset-size10.size8,.katex .fontsize-ensurer.reset-size10.size8{font-size:0.6947791164658634em}.katex .sizing.reset-size10.size9,.katex .fontsize-ensurer.reset-size10.size9{font-size:0.8313253012048192em}.katex .sizing.reset-size10.size10,.katex .fontsize-ensurer.reset-size10.size10{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:0.12em}.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist>span{text-align:center}.katex .accent>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:0.326em}@font-face{font-family:'KaTeX_AMS';src:url(//assets.slid.es/assets/katex/KaTeX_AMS-Regular-9ab125929ba7ac338bb73b175be86285.woff) format("woff"),url(//assets.slid.es/assets/katex/KaTeX_AMS-Regular-38d8bef7124791dc71e34c638bcabf44.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Caligraphic';src:url(//assets.slid.es/fonts/katex/KaTeX_Caligraphic-Bold.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:'KaTeX_Caligraphic';src:url(//assets.slid.es/fonts/katex/KaTeX_Caligraphic-Regular.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Fraktur';src:url(//assets.slid.es/fonts/katex/KaTeX_Fraktur-Bold.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:'KaTeX_Fraktur';src:url(//assets.slid.es/fonts/katex/KaTeX_Fraktur-Regular.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Greek';src:url(//assets.slid.es/fonts/katex/KaTeX_Greek-Bold.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_Greek-Bold.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:'KaTeX_Greek';src:url(//assets.slid.es/fonts/katex/KaTeX_Greek-BoldItalic.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_Greek-BoldItalic.ttf) format("truetype");font-weight:bold;font-style:italic}@font-face{font-family:'KaTeX_Greek';src:url(//assets.slid.es/fonts/katex/KaTeX_Greek-Italic.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_Greek-Italic.ttf) format("truetype");font-weight:normal;font-style:italic}@font-face{font-family:'KaTeX_Greek';src:url(//assets.slid.es/fonts/katex/KaTeX_Greek-Regular.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_Greek-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Main';src:url(//assets.slid.es/assets/katex/KaTeX_Main-Bold-351d5cd3ed158c7613eb4e243b5657c0.woff) format("woff"),url(//assets.slid.es/assets/katex/KaTeX_Main-Bold-27342364aa74ed96972fb0fa518bcd9d.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:'KaTeX_Main';src:url(//assets.slid.es/assets/katex/KaTeX_Main-Italic-a8ba6c46caf2b6ddd673e9de5dfa9ecd.woff) format("woff"),url(//assets.slid.es/assets/katex/KaTeX_Main-Italic-b604b2b94a4b677780a849533fa3bfd0.ttf) format("truetype");font-weight:normal;font-style:italic}@font-face{font-family:'KaTeX_Main';src:url(//assets.slid.es/assets/katex/KaTeX_Main-Regular-c32da73889425fc362d8f5d391c5e767.woff) format("woff"),url(//assets.slid.es/assets/katex/KaTeX_Main-Regular-a1ed9f35417e5fcba3bc7506bcfbc3f5.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Math';src:url(//assets.slid.es/assets/katex/KaTeX_Math-BoldItalic-1a04cf7eb80fc573c623791d3a80eb1f.woff) format("woff"),url(//assets.slid.es/assets/katex/KaTeX_Math-BoldItalic-ff96f4f80c988d28eebb9964cb113f49.ttf) format("truetype");font-weight:bold;font-style:italic}@font-face{font-family:'KaTeX_Math';src:url(//assets.slid.es/assets/katex/KaTeX_Math-Italic-72b515fcea3225641433bff8574fb1e4.woff) format("woff"),url(//assets.slid.es/assets/katex/KaTeX_Math-Italic-542cba140d6df0718dfbd25e81ed2b8e.ttf) format("truetype");font-weight:normal;font-style:italic}@font-face{font-family:'KaTeX_Math';src:url(//assets.slid.es/assets/katex/KaTeX_Math-Regular-d37f87e4622737479a144e63d5ab8c38.woff) format("woff"),url(//assets.slid.es/assets/katex/KaTeX_Math-Regular-1c5469721a547e05f68230936f4acb7f.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_SansSerif';src:url(//assets.slid.es/fonts/katex/KaTeX_SansSerif-Bold.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:bold;font-style:normal}@font-face{font-family:'KaTeX_SansSerif';src:url(//assets.slid.es/fonts/katex/KaTeX_SansSerif-Italic.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:normal;font-style:italic}@font-face{font-family:'KaTeX_SansSerif';src:url(//assets.slid.es/fonts/katex/KaTeX_SansSerif-Regular.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Script';src:url(//assets.slid.es/fonts/katex/KaTeX_Script-Regular.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_Script-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Size1';src:url(//assets.slid.es/assets/katex/KaTeX_Size1-Regular-15694918bb9442261d5a6e983dd6f485.woff) format("woff"),url(//assets.slid.es/assets/katex/KaTeX_Size1-Regular-94cf493b6b0761ccfe41da0e7d58607e.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Size2';src:url(//assets.slid.es/assets/katex/KaTeX_Size2-Regular-7100b63844dd6343bbb9ccc31fc22dc2.woff) format("woff"),url(//assets.slid.es/assets/katex/KaTeX_Size2-Regular-cac99d0a7babea0af33cf481ce1c8f1e.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Size3';src:url(//assets.slid.es/assets/katex/KaTeX_Size3-Regular-132a73975fe042718f596df3b9bd8c1d.woff) format("woff"),url(//assets.slid.es/assets/katex/KaTeX_Size3-Regular-d327bee27d9e08f14563c57f7a4f312c.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Size4';src:url(//assets.slid.es/assets/katex/KaTeX_Size4-Regular-1e5a2db5a0ab874d9ebca14c51b2b4fa.woff) format("woff"),url(//assets.slid.es/assets/katex/KaTeX_Size4-Regular-f06eecc01b5b7432f44270a76fd38b79.ttf) format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:'KaTeX_Typewriter';src:url(//assets.slid.es/fonts/katex/KaTeX_Typewriter-Regular.woff) format("woff"),url(//assets.slid.es/fonts/katex/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:normal;font-style:normal}.hljs{display:block;padding:0.5em;background:#3F3F3F;color:#DCDCDC}.hljs-keyword,.hljs-tag,.css .hljs-class,.css .hljs-id,.lisp .hljs-title,.nginx .hljs-title,.hljs-request,.hljs-status,.clojure .hljs-attribute{color:#E3CEAB}.django .hljs-template_tag,.django .hljs-variable,.django .hljs-filter .hljs-argument{color:#DCDCDC}.hljs-number,.hljs-date{color:#8CD0D3}.dos .hljs-envvar,.dos .hljs-stream,.hljs-variable,.apache .hljs-sqbracket{color:#EFDCBC}.dos .hljs-flow,.diff .hljs-change,.python .exception,.python .hljs-built_in,.hljs-literal,.tex .hljs-special{color:#EFEFAF}.diff .hljs-chunk,.hljs-subst{color:#8F8F8F}.dos .hljs-keyword,.python .hljs-decorator,.hljs-title,.haskell .hljs-type,.diff .hljs-header,.ruby .hljs-class .hljs-parent,.apache .hljs-tag,.nginx .hljs-built_in,.tex .hljs-command,.hljs-prompt{color:#efef8f}.dos .hljs-winutils,.ruby .hljs-symbol,.ruby .hljs-symbol .hljs-string,.ruby .hljs-string{color:#DCA3A3}.diff .hljs-deletion,.hljs-string,.hljs-tag .hljs-value,.hljs-preprocessor,.hljs-pragma,.hljs-built_in,.sql .hljs-aggregate,.hljs-javadoc,.smalltalk .hljs-class,.smalltalk .hljs-localvars,.smalltalk .hljs-array,.css .hljs-rules .hljs-value,.hljs-attr_selector,.hljs-pseudo,.apache .hljs-cbracket,.tex .hljs-formula,.coffeescript .hljs-attribute{color:#CC9393}.hljs-shebang,.diff .hljs-addition,.hljs-comment,.java .hljs-annotation,.hljs-template_comment,.hljs-pi,.hljs-doctype{color:#7F9F7F}.coffeescript .javascript,.javascript .xml,.tex .hljs-formula,.xml .javascript,.xml .vbscript,.xml .css,.xml .hljs-cdata{opacity:0.5}/*!
* Main styles for Slides
*
* @author Hakim El Hattab
*/*{-moz-box-sizing:border-box;box-sizing:border-box}html,body{padding:0;margin:0;color:#252525;font-family:"Open Sans", Helvetica, sans-serif;font-size:16px}html:before,body:before{content:'' !important}html{-webkit-font-smoothing:subpixel-antialiased !important}html.sl-root:not(.loaded) *{-webkit-transition:none !important;transition:none !important}body{overflow-y:scroll}body>*:not(.reveal){font-family:"Open Sans", Helvetica, sans-serif}html,#container{background-color:#eee}#container{position:relative;z-index:1}.icon{display:inline-block;line-height:1}.spinner{display:block;width:32px;height:32px;margin-top:16px;margin-left:16px}.spinner.centered{position:absolute;top:50%;left:50%;margin-top:-16px;margin-left:-16px}.spinner.centered-horizontally{margin-left:auto;margin-right:auto}.spinner-bitmap{display:block;width:32px;height:32px;background-image:url(data:image/png;base64,R0lGODlhIAAgAPMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA==);background-repeat:no-repeat}.clear{clear:both}.vcenter:before{content:'';display:inline-block;height:100%;vertical-align:middle}.vcenter-target{display:inline-block;vertical-align:middle}.no-transition,.no-transition *{-webkit-transition:none !important;transition:none !important}.grow-in-on-load{opacity:0;-webkit-transform:scale(0.96);-ms-transform:scale(0.96);transform:scale(0.96);-webkit-transition:all 0.3s ease;transition:all 0.3s ease}html.loaded .grow-in-on-load{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}h1,h2,h3,h4,h5,h6{font-family:"Open Sans", Helvetica, sans-serif;line-height:1.3em;font-weight:normal}h1,h2,h3,h4,h5,h6,ul,li{margin:0;padding:0}h1{font-size:35.2px}h2{font-size:27.2px}h3{font-size:20.8px}h4{font-size:16px;font-weight:600}h5{font-size:16px;font-weight:600}h6{font-size:16px;font-weight:600}p{margin:1em 0}a{color:#255c7c;text-decoration:none;outline:0;-webkit-transition:color 0.1s ease;transition:color 0.1s ease}a:hover{color:#4195c6}a:focus{outline:1px solid #1baee1}p a{border-bottom:1px solid #8fc1de}b{font-weight:600}small{font-size:0.8em}button{border:0;background:transparent;cursor:pointer}.text-semi-bold{font-weight:600}.main{line-height:1.5}.reveal-viewport{width:100%;height:100%}.container .column{width:100%;max-width:1140px;margin:0 auto;padding:0 20px}@media screen and (max-width: 380px){.container .column{padding:0 10px}}.container .column>section,.container .column>div>section{position:relative;width:100%;margin:40px auto;padding:40px;background:white;border-radius:2px}.container .column>section h2,.container .column>div>section h2{margin-bottom:20px}.container .column>section .header-with-description h2,.container .column>div>section .header-with-description h2{margin-bottom:10px}.container .column>section .header-with-description p,.container .column>div>section .header-with-description p{margin-top:0;margin-bottom:20px;color:#999;font-size:0.9em}.container .column>section.critical-error,.container .column>div>section.critical-error{border-color:#f00;background:#eb5555;color:#fff}@media screen and (max-width: 380px){.container .column>section,.container .column>div>section{padding:20px}.container .column>section:first-child,.container .column>div>section:first-child{margin-top:10px}}.container .column .page-navigation+section{margin-top:20px}.container .column .page-navigation{display:block;max-width:900px;margin:40px auto 20px auto;text-align:right}.container .column .page-navigation .title{float:left;margin-top:5px;font-weight:bold;color:#bbb}.container .column .page-navigation ul{list-style:none}.container .column .page-navigation ul li{display:inline-block;position:relative;margin-left:5px;margin-bottom:7px}.container .column .page-navigation ul li .button{padding-top:8px;padding-bottom:8px;font-size:0.9em;color:#777;border-color:#aaa}.container .column .page-navigation ul li .button:hover{color:#222;border-color:#444}.container .column .page-navigation ul li .button.selected{color:#222;border-color:#444;opacity:1}.container .column .page-navigation ul li .button.selected:before{content:'';position:absolute;height:0px;width:0px;left:50%;right:initial;top:100%;bottom:initial;border-style:solid;border-width:4px;border-color:transparent;-webkit-transform:rotate(360deg);margin-left:-4px;border-bottom-width:0;border-top-color:#444444}.flash-notification{position:absolute;width:100%;top:0;left:0;text-align:center;z-index:100;display:none}.flash-notification p{display:inline-block;margin:13px;padding:10px 20px;background:#111;color:white;border:1px solid #333;border-radius:4px}.page-loader{position:fixed;width:100%;height:100%;left:0;top:0;z-index:2000;background:#111;color:#fff;opacity:1;visibility:hidden;opacity:0;-webkit-transition:all 0.5s ease;transition:all 0.5s ease}.page-loader .page-loader-inner{position:absolute;display:block;top:40%;width:100%;text-align:center}.page-loader .page-loader-inner .page-loader-spinner{display:block;position:relative;width:50px;height:50px;margin:0 auto 20px auto;-webkit-animation:spin-rectangle-to-circle 2.5s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;animation:spin-rectangle-to-circle 2.5s cubic-bezier(0.75, 0, 0.5, 1) infinite normal;background-color:#E4637C;border-radius:1px}.page-loader .page-loader-inner .page-loader-message{display:block;margin:0;vertical-align:top;line-height:32px;font-size:14px;color:#bbb;font-family:Helvetica, sans-serif}.page-loader.visible{visibility:visible;opacity:1}.page-loader.frozen .page-loader-spinner{-webkit-animation:none;animation:none}.pro-badge{display:inline-block;position:relative;padding:3px 6px 2px 6px;font-size:12px;font-weight:normal;line-height:14px;letter-spacing:1px;border-radius:2px;border:1px solid #2d739c;background:#3990c3;color:#fff;vertical-align:middle}.pro-badge:after{display:inline-block;position:relative;top:-1px;margin-left:2px;color:#fff;content:"\e094";font-family:'slides';font-weight:normal;-webkit-font-smoothing:antialiased}.pro-badge:hover{color:#fff;border-color:#3381af;background:#5fa6d0}.touch .user-view li .controls{opacity:1 !important}.touch .deck-view .options{opacity:1}.reveal .sl-block{display:block;position:absolute;z-index:auto}.reveal .sl-block .sl-block-content{display:block;position:relative;width:100%;height:100%;max-width:none;max-height:none;margin:0;outline:0;word-wrap:break-word}.reveal .sl-block .sl-block-content .sl-block-content-preview{position:absolute;width:100%;height:100%;left:0;top:0}.reveal .sl-block .sl-block-content>:first-child{margin-top:0}.reveal .sl-block .sl-block-content>:last-child{margin-bottom:0}html.decks.edit.is-editing .reveal .sl-block{cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-transition:none;transition:none}html.decks.edit.is-editing .reveal .sl-block .sl-block-content{cursor:pointer}html.decks.edit.is-editing .reveal .sl-block .sl-block-content:before{position:absolute;width:100%;height:100%;left:0;top:0;content:'';z-index:1;opacity:0;background-color:rgba(0,0,0,0)}html.decks.edit.is-editing .reveal .sl-block .sl-block-overlay{position:absolute;width:100%;height:100%;left:0;top:0}html.decks.edit.is-editing .reveal .sl-block .sl-block-overlay-message,html.decks.edit.is-editing .reveal .sl-block .sl-block-overlay-warning{padding:10px;font-size:14px;text-align:center;background-color:#222;color:#fff;opacity:0.9}html.decks.edit.is-editing .reveal .sl-block .sl-block-overlay-message .vcenter-target,html.decks.edit.is-editing .reveal .sl-block .sl-block-overlay-warning .vcenter-target{vertical-align:middle}html.decks.edit.is-editing .reveal .sl-block .sl-block-overlay-message.below-content,html.decks.edit.is-editing .reveal .sl-block .sl-block-overlay-warning.below-content{z-index:0 !important}html.decks.edit.is-editing .reveal .sl-block .sl-block-overlay-warning{color:#ffa660}html.decks.edit.is-editing .reveal .sl-block .sl-block-overlay-warning .icon{display:block;margin:0 auto 10px auto;width:2em;height:2em;line-height:2em;border-radius:1em;text-align:center;font-size:12px;color:#fff;background-color:#e06200}html.decks.edit.is-editing .reveal .sl-block .sl-block-placeholder{background-image:url(//assets.slid.es/assets/editor/block-placeholder-white-transparent-500x500-7823f1840b07555f52c57c14e21dd605.png);background-size:contain;background-color:#222;background-repeat:no-repeat;background-position:50% 50%;opacity:0.9}html.decks.edit.is-editing .reveal .sl-block.is-editing,html.decks.edit.is-editing .reveal .sl-block.is-editing .sl-block-content{cursor:auto}html.decks.edit.is-editing .reveal .sl-block.is-editing .sl-block-content{outline:1px solid rgba(27,174,225,0.4)}html.decks.edit.is-editing .reveal .sl-block.is-editing .sl-block-content:before{display:none}html.decks.edit.is-editing .reveal .sl-block.intro-start{opacity:0;z-index:255;-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}html.decks.edit.is-editing .reveal .sl-block.intro-end{z-index:255;-webkit-transition:all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275),opacity 0.2s ease;transition:all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275),opacity 0.2s ease}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform{position:absolute;width:100%;height:100%;left:0;top:0;visibility:hidden;z-index:255;pointer-events:none;border:1px solid #1baee1;font-size:12px}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform .anchor{position:absolute;width:1em;height:1em;border-radius:50%;background:#fff;border:1px solid #1baee1;cursor:pointer;pointer-events:all;visibility:hidden}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform .anchor[data-direction=n]{left:50%;bottom:100%;margin-left:-0.5em;margin-bottom:-0.4em;cursor:row-resize}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform .anchor[data-direction=e]{left:100%;top:50%;margin-top:-0.5em;margin-left:-0.4em;cursor:col-resize}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform .anchor[data-direction=s]{left:50%;top:100%;margin-left:-0.5em;margin-top:-0.4em;cursor:row-resize}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform .anchor[data-direction=w]{right:100%;top:50%;margin-top:-0.5em;margin-right:-0.4em;cursor:col-resize}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform .anchor[data-direction=nw]{right:100%;bottom:100%;margin-right:-0.4em;margin-bottom:-0.4em;cursor:nw-resize}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform .anchor[data-direction=ne]{left:100%;bottom:100%;margin-left:-0.4em;margin-bottom:-0.4em;cursor:ne-resize}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform .anchor[data-direction=se]{left:100%;top:100%;margin-left:-0.4em;margin-top:-0.4em;cursor:se-resize}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform .anchor[data-direction=sw]{right:100%;top:100%;margin-right:-0.4em;margin-top:-0.4em;cursor:sw-resize}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform[data-horizontal="false"] .anchor[data-direction=e],html.decks.edit.is-editing .reveal .sl-block .sl-block-transform[data-horizontal="false"] .anchor[data-direction=w],html.decks.edit.is-editing .reveal .sl-block .sl-block-transform[data-horizontal="false"] .anchor[data-direction=nw],html.decks.edit.is-editing .reveal .sl-block .sl-block-transform[data-horizontal="false"] .anchor[data-direction=ne],html.decks.edit.is-editing .reveal .sl-block .sl-block-transform[data-horizontal="false"] .anchor[data-direction=se],html.decks.edit.is-editing .reveal .sl-block .sl-block-transform[data-horizontal="false"] .anchor[data-direction=sw]{display:none}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform[data-vertical="false"] .anchor[data-direction=n],html.decks.edit.is-editing .reveal .sl-block .sl-block-transform[data-vertical="false"] .anchor[data-direction=s],html.decks.edit.is-editing .reveal .sl-block .sl-block-transform[data-vertical="false"] .anchor[data-direction=nw],html.decks.edit.is-editing .reveal .sl-block .sl-block-transform[data-vertical="false"] .anchor[data-direction=ne],html.decks.edit.is-editing .reveal .sl-block .sl-block-transform[data-vertical="false"] .anchor[data-direction=se],html.decks.edit.is-editing .reveal .sl-block .sl-block-transform[data-vertical="false"] .anchor[data-direction=sw]{display:none}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform.visible{visibility:visible}html.decks.edit.is-editing .reveal .sl-block .sl-block-transform.visible .anchor{visibility:visible}html.decks.edit.is-editing .reveal .sl-block.is-editing .sl-block-transform{visibility:hidden}html.decks.edit.is-editing.touch-editor .reveal .sl-block .sl-block-transform{font-size:20px}html.decks.edit.is-editing.touch-editor .reveal .sl-block .sl-block-transform .anchor:before{content:'';position:absolute;left:-0.5em;top:-0.5em;width:2em;height:2em}html.decks.edit.is-editing.touch-editor-small .reveal .sl-block .sl-block-transform{font-size:30px}.reveal .sl-block[data-block-type="image"] .sl-block-placeholder{background-image:url(//assets.slid.es/assets/editor/image-placeholder-white-transparent-500x500-fbb1e941d141a5bfabfcb4d560f04198.png) !important}.reveal .sl-block[data-block-type="image"] .image-progress{background-color:rgba(0,0,0,0.7);font-size:14px;color:#fff;text-align:center}.reveal .sl-block[data-block-type="image"] .sl-block-content{overflow:hidden}.reveal .sl-block[data-block-type="image"] .sl-block-content img{width:100%;height:100%;margin:0;padding:0;border:0;vertical-align:top}.reveal .sl-block[data-block-type="image"] .sl-block-content svg{position:absolute;width:100%;height:100%;top:0;left:0}.reveal .sl-block[data-block-type="iframe"] .sl-block-content{overflow:hidden;-webkit-overflow-scrolling:touch}.reveal .sl-block[data-block-type="iframe"] .sl-block-content iframe{width:100%;height:100%}.reveal .sl-block[data-block-type="shape"] .sl-block-content{line-height:0}.reveal .sl-block[data-block-type="code"] .sl-block-placeholder{background-image:url(//assets.slid.es/assets/editor/code-placeholder-white-transparent-500x500-5650daa954cfd516de8fee1bfecff32b.png) !important}.reveal .sl-block[data-block-type="code"] .sl-block-content pre,.reveal .sl-block[data-block-type="code"] .sl-block-content code{width:100%;height:100%;margin:0}.reveal .sl-block[data-block-type="code"] .sl-block-content pre{font-size:0.55em}.reveal .sl-block[data-block-type="code"] .sl-block-content code{white-space:pre;word-wrap:normal}.reveal .sl-block[data-block-type="math"]{font-size:50px}.reveal .sl-block[data-block-type="math"] .sl-block-content{font-style:normal;font-family:KaTeX_Main;line-height:1.4}.reveal .sl-block[data-block-type="math"] .sl-block-placeholder{background-image:url(//assets.slid.es/assets/editor/math-placeholder-white-transparent-500x500-153b8878a96cd2ca45b9a620b3b721be.png) !important}.reveal .sl-block[data-block-type="math"] .math-input{display:none}.reveal .sl-block[data-block-type="math"].is-empty .sl-block-content{width:300px;height:200px}/*!
* reveal.js
* http://lab.hakim.se/reveal-js
* MIT licensed
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
*/html,body,.reveal div,.reveal span,.reveal applet,.reveal object,.reveal iframe,.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6,.reveal p,.reveal blockquote,.reveal pre,.reveal a,.reveal abbr,.reveal acronym,.reveal address,.reveal big,.reveal cite,.reveal code,.reveal del,.reveal dfn,.reveal em,.reveal img,.reveal ins,.reveal kbd,.reveal q,.reveal s,.reveal samp,.reveal small,.reveal strike,.reveal strong,.reveal sub,.reveal sup,.reveal tt,.reveal var,.reveal b,.reveal u,.reveal center,.reveal dl,.reveal dt,.reveal dd,.reveal ol,.reveal ul,.reveal li,.reveal fieldset,.reveal form,.reveal label,.reveal legend,.reveal table,.reveal caption,.reveal tbody,.reveal tfoot,.reveal thead,.reveal tr,.reveal th,.reveal td,.reveal article,.reveal aside,.reveal canvas,.reveal details,.reveal embed,.reveal figure,.reveal figcaption,.reveal footer,.reveal header,.reveal hgroup,.reveal menu,.reveal nav,.reveal output,.reveal ruby,.reveal section,.reveal summary,.reveal time,.reveal mark,.reveal audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}.reveal article,.reveal aside,.reveal details,.reveal figcaption,.reveal figure,.reveal footer,.reveal header,.reveal hgroup,.reveal menu,.reveal nav,.reveal section{display:block}html,body{width:100%;height:100%;overflow:hidden}body{position:relative;line-height:1;background-color:#fff;color:#000}.reveal .slides section .fragment{opacity:0;visibility:hidden;-webkit-transition:all .2s ease;transition:all .2s ease}.reveal .slides section .fragment.visible{opacity:1;visibility:visible}.reveal .slides section .fragment.grow{opacity:1;visibility:visible}.reveal .slides section .fragment.grow.visible{-webkit-transform:scale(1.3);-ms-transform:scale(1.3);transform:scale(1.3)}.reveal .slides section .fragment.shrink{opacity:1;visibility:visible}.reveal .slides section .fragment.shrink.visible{-webkit-transform:scale(0.7);-ms-transform:scale(0.7);transform:scale(0.7)}.reveal .slides section .fragment.zoom-in{-webkit-transform:scale(0.1);-ms-transform:scale(0.1);transform:scale(0.1)}.reveal .slides section .fragment.zoom-in.visible{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.reveal .slides section .fragment.roll-in{-webkit-transform:rotateX(90deg);transform:rotateX(90deg)}.reveal .slides section .fragment.roll-in.visible{-webkit-transform:rotateX(0);transform:rotateX(0)}.reveal .slides section .fragment.fade-out{opacity:1;visibility:visible}.reveal .slides section .fragment.fade-out.visible{opacity:0;visibility:hidden}.reveal .slides section .fragment.semi-fade-out{opacity:1;visibility:visible}.reveal .slides section .fragment.semi-fade-out.visible{opacity:0.5;visibility:visible}.reveal .slides section .fragment.strike{opacity:1}.reveal .slides section .fragment.strike.visible{text-decoration:line-through}.reveal .slides section .fragment.current-visible{opacity:0;visibility:hidden}.reveal .slides section .fragment.current-visible.current-fragment{opacity:1;visibility:visible}.reveal .slides section .fragment.highlight-red,.reveal .slides section .fragment.highlight-current-red,.reveal .slides section .fragment.highlight-green,.reveal .slides section .fragment.highlight-current-green,.reveal .slides section .fragment.highlight-blue,.reveal .slides section .fragment.highlight-current-blue{opacity:1;visibility:visible}.reveal .slides section .fragment.highlight-red.visible{color:#ff2c2d}.reveal .slides section .fragment.highlight-green.visible{color:#17ff2e}.reveal .slides section .fragment.highlight-blue.visible{color:#1b91ff}.reveal .slides section .fragment.highlight-current-red.current-fragment{color:#ff2c2d}.reveal .slides section .fragment.highlight-current-green.current-fragment{color:#17ff2e}.reveal .slides section .fragment.highlight-current-blue.current-fragment{color:#1b91ff}.reveal:after{content:'';font-style:italic}.reveal iframe{z-index:1}.reveal a{position:relative}.reveal .stretch{max-width:none;max-height:none}.reveal pre.stretch code{height:100%;max-height:100%;-moz-box-sizing:border-box;box-sizing:border-box}.reveal .controls{display:none;position:fixed;width:110px;height:110px;z-index:30;right:10px;bottom:10px;-webkit-user-select:none}.reveal .controls div{position:absolute;opacity:0.05;width:0;height:0;border:12px solid transparent;-webkit-transform:scale(0.9999);-ms-transform:scale(0.9999);transform:scale(0.9999);-webkit-transition:all 0.2s ease;transition:all 0.2s ease;-webkit-tap-highlight-color:rgba(0,0,0,0)}.reveal .controls div.enabled{opacity:0.7;cursor:pointer}.reveal .controls div.enabled:active{margin-top:1px}.reveal .controls div.navigate-left{top:42px;border-right-width:22px;border-right-color:#000}.reveal .controls div.navigate-left.fragmented{opacity:0.3}.reveal .controls div.navigate-right{left:74px;top:42px;border-left-width:22px;border-left-color:#000}.reveal .controls div.navigate-right.fragmented{opacity:0.3}.reveal .controls div.navigate-up{left:42px;border-bottom-width:22px;border-bottom-color:#000}.reveal .controls div.navigate-up.fragmented{opacity:0.3}.reveal .controls div.navigate-down{left:42px;top:74px;border-top-width:22px;border-top-color:#000}.reveal .controls div.navigate-down.fragmented{opacity:0.3}.reveal .progress{position:fixed;display:none;height:3px;width:100%;bottom:0;left:0;z-index:10;background-color:rgba(0,0,0,0.2)}.reveal .progress:after{content:'';display:block;position:absolute;height:20px;width:100%;top:-20px}.reveal .progress span{display:block;height:100%;width:0px;background-color:#000;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.reveal .slide-number{position:fixed;display:block;right:15px;bottom:15px;opacity:0.5;z-index:31;font-size:12px}.reveal{position:relative;width:100%;height:100%;overflow:hidden;-ms-touch-action:none;touch-action:none}.reveal .slides{position:absolute;width:100%;height:100%;top:0;right:0;bottom:0;left:0;margin:auto;overflow:visible;z-index:1;text-align:center;-webkit-perspective:600px;perspective:600px;-webkit-perspective-origin:50% 40%;perspective-origin:50% 40%}.reveal .slides>section{-ms-perspective:600px}.reveal .slides>section,.reveal .slides>section>section{display:none;position:absolute;width:100%;padding:20px 0px;z-index:10;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition:-webkit-transform-origin 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985),-webkit-transform 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985),visibility 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985),opacity 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:-ms-transform-origin 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985),transform 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985),visibility 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985),opacity 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:transform-origin 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985),transform 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985),visibility 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985),opacity 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.reveal[data-transition-speed="fast"] .slides section{-webkit-transition-duration:400ms;transition-duration:400ms}.reveal[data-transition-speed="slow"] .slides section{-webkit-transition-duration:1200ms;transition-duration:1200ms}.reveal .slides section[data-transition-speed="fast"]{-webkit-transition-duration:400ms;transition-duration:400ms}.reveal .slides section[data-transition-speed="slow"]{-webkit-transition-duration:1200ms;transition-duration:1200ms}.reveal .slides>section.stack{padding-top:0;padding-bottom:0}.reveal .slides>section.present,.reveal .slides>section>section.present{display:block;z-index:11;opacity:1}.reveal.center,.reveal.center .slides,.reveal.center .slides section{min-height:0 !important}.reveal .slides>section.future,.reveal .slides>section>section.future,.reveal .slides>section.past,.reveal .slides>section>section.past{pointer-events:none}.reveal.overview .slides>section,.reveal.overview .slides>section>section{pointer-events:auto}.reveal .slides>section.past,.reveal .slides>section.future,.reveal .slides>section>section.past,.reveal .slides>section>section.future{opacity:0}.reveal.slide section,.reveal.linear section{-webkit-backface-visibility:hidden;backface-visibility:hidden}.reveal .slides>section[data-transition=slide].past,.reveal.slide .slides>section:not([data-transition]).past,.reveal .slides>section[data-transition=linear].past,.reveal.linear .slides>section:not([data-transition]).past{-webkit-transform:translate(-150%, 0);-ms-transform:translate(-150%, 0);transform:translate(-150%, 0)}.reveal .slides>section[data-transition=slide].future,.reveal.slide .slides>section:not([data-transition]).future,.reveal .slides>section[data-transition=linear].future,.reveal.linear .slides>section:not([data-transition]).future{-webkit-transform:translate(150%, 0);-ms-transform:translate(150%, 0);transform:translate(150%, 0)}.reveal .slides>section>section[data-transition=slide].past,.reveal.slide .slides>section>section:not([data-transition]).past,.reveal .slides>section>section[data-transition=linear].past,.reveal.linear .slides>section>section:not([data-transition]).past{-webkit-transform:translate(0, -150%);-ms-transform:translate(0, -150%);transform:translate(0, -150%)}.reveal .slides>section>section[data-transition=slide].future,.reveal.slide .slides>section>section:not([data-transition]).future,.reveal .slides>section>section[data-transition=linear].future,.reveal.linear .slides>section>section:not([data-transition]).future{-webkit-transform:translate(0, 150%);-ms-transform:translate(0, 150%);transform:translate(0, 150%)}.reveal .slides>section[data-transition=default].past,.reveal.default .slides>section:not([data-transition]).past,.reveal .slides>section[data-transition=convex].past,.reveal.convex .slides>section:not([data-transition]).past{-webkit-transform:translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0)}.reveal .slides>section[data-transition=default].future,.reveal.default .slides>section:not([data-transition]).future,.reveal .slides>section[data-transition=convex].future,.reveal.convex .slides>section:not([data-transition]).future{-webkit-transform:translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0)}.reveal .slides>section>section[data-transition=default].past,.reveal.default .slides>section>section:not([data-transition]).past,.reveal .slides>section>section[data-transition=convex].past,.reveal.convex .slides>section>section:not([data-transition]).past{-webkit-transform:translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0);transform:translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0)}.reveal .slides>section>section[data-transition=default].future,.reveal.default .slides>section>section:not([data-transition]).future,.reveal .slides>section>section[data-transition=convex].future,.reveal.convex .slides>section>section:not([data-transition]).future{-webkit-transform:translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0);transform:translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0)}.reveal .slides>section[data-transition=concave].past,.reveal.concave .slides>section:not([data-transition]).past{-webkit-transform:translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0)}.reveal .slides>section[data-transition=concave].future,.reveal.concave .slides>section:not([data-transition]).future{-webkit-transform:translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0)}.reveal .slides>section>section[data-transition=concave].past,.reveal.concave .slides>section>section:not([data-transition]).past{-webkit-transform:translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0);transform:translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0)}.reveal .slides>section>section[data-transition=concave].future,.reveal.concave .slides>section>section:not([data-transition]).future{-webkit-transform:translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0);transform:translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0)}.reveal .slides>section[data-transition=zoom],.reveal.zoom .slides>section:not([data-transition]){-webkit-transition-timing-function:ease;transition-timing-function:ease}.reveal .slides>section[data-transition=zoom].past,.reveal.zoom .slides>section:not([data-transition]).past{visibility:hidden;-webkit-transform:scale(16);-ms-transform:scale(16);transform:scale(16)}.reveal .slides>section[data-transition=zoom].future,.reveal.zoom .slides>section:not([data-transition]).future{visibility:hidden;-webkit-transform:scale(0.2);-ms-transform:scale(0.2);transform:scale(0.2)}.reveal .slides>section>section[data-transition=zoom].past,.reveal.zoom .slides>section>section:not([data-transition]).past{-webkit-transform:translate(0, -150%);-ms-transform:translate(0, -150%);transform:translate(0, -150%)}.reveal .slides>section>section[data-transition=zoom].future,.reveal.zoom .slides>section>section:not([data-transition]).future{-webkit-transform:translate(0, 150%);-ms-transform:translate(0, 150%);transform:translate(0, 150%)}.reveal.cube .slides{-webkit-perspective:1300px;perspective:1300px}.reveal.cube .slides section{padding:30px;min-height:700px;-webkit-backface-visibility:hidden;backface-visibility:hidden;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.center.cube .slides section{min-height:0}.reveal.cube .slides section:not(.stack):before{content:'';position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:rgba(0,0,0,0.1);border-radius:4px;-webkit-transform:translateZ(-20px);transform:translateZ(-20px)}.reveal.cube .slides section:not(.stack):after{content:'';position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:none;z-index:1;border-radius:4px;box-shadow:0px 95px 25px rgba(0,0,0,0.2);-webkit-transform:translateZ(-90px) rotateX(65deg);transform:translateZ(-90px) rotateX(65deg)}.reveal.cube .slides>section.stack{padding:0;background:none}.reveal.cube .slides>section.past{-webkit-transform-origin:100% 0%;-ms-transform-origin:100% 0%;transform-origin:100% 0%;-webkit-transform:translate3d(-100%, 0, 0) rotateY(-90deg);transform:translate3d(-100%, 0, 0) rotateY(-90deg)}.reveal.cube .slides>section.future{-webkit-transform-origin:0% 0%;-ms-transform-origin:0% 0%;transform-origin:0% 0%;-webkit-transform:translate3d(100%, 0, 0) rotateY(90deg);transform:translate3d(100%, 0, 0) rotateY(90deg)}.reveal.cube .slides>section>section.past{-webkit-transform-origin:0% 100%;-ms-transform-origin:0% 100%;transform-origin:0% 100%;-webkit-transform:translate3d(0, -100%, 0) rotateX(90deg);transform:translate3d(0, -100%, 0) rotateX(90deg)}.reveal.cube .slides>section>section.future{-webkit-transform-origin:0% 0%;-ms-transform-origin:0% 0%;transform-origin:0% 0%;-webkit-transform:translate3d(0, 100%, 0) rotateX(-90deg);transform:translate3d(0, 100%, 0) rotateX(-90deg)}.reveal.page .slides{-webkit-perspective-origin:0% 50%;perspective-origin:0% 50%;-webkit-perspective:3000px;perspective:3000px}.reveal.page .slides section{padding:30px;min-height:700px;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.page .slides section.past{z-index:12}.reveal.page .slides section:not(.stack):before{content:'';position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:rgba(0,0,0,0.1);-webkit-transform:translateZ(-20px);transform:translateZ(-20px)}.reveal.page .slides section:not(.stack):after{content:'';position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:none;z-index:1;border-radius:4px;box-shadow:0px 95px 25px rgba(0,0,0,0.2);-webkit-transform:translateZ(-90px) rotateX(65deg)}.reveal.page .slides>section.stack{padding:0;background:none}.reveal.page .slides>section.past{-webkit-transform-origin:0% 0%;-ms-transform-origin:0% 0%;transform-origin:0% 0%;-webkit-transform:translate3d(-40%, 0, 0) rotateY(-80deg);transform:translate3d(-40%, 0, 0) rotateY(-80deg)}.reveal.page .slides>section.future{-webkit-transform-origin:100% 0%;-ms-transform-origin:100% 0%;transform-origin:100% 0%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.reveal.page .slides>section>section.past{-webkit-transform-origin:0% 0%;-ms-transform-origin:0% 0%;transform-origin:0% 0%;-webkit-transform:translate3d(0, -40%, 0) rotateX(80deg);transform:translate3d(0, -40%, 0) rotateX(80deg)}.reveal.page .slides>section>section.future{-webkit-transform-origin:0% 100%;-ms-transform-origin:0% 100%;transform-origin:0% 100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.reveal .slides section[data-transition=fade],.reveal.fade .slides section:not([data-transition]),.reveal.fade .slides>section>section:not([data-transition]){-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:opacity 0.5s;transition:opacity 0.5s}.reveal.fade.overview .slides section,.reveal.fade.overview .slides>section>section{-webkit-transition:none;transition:none}.reveal .slides section[data-transition=none],.reveal.none .slides section:not([data-transition]){-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none}.reveal .pause-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:black;visibility:hidden;opacity:0;z-index:100;-webkit-transition:all 1s ease;transition:all 1s ease}.reveal.paused .pause-overlay{visibility:visible;opacity:1}.no-transforms{overflow-y:auto}.no-transforms .reveal .slides{position:relative;width:80%;height:auto !important;top:0;left:50%;margin:0;text-align:center}.no-transforms .reveal .controls,.no-transforms .reveal .progress{display:none !important}.no-transforms .reveal .slides section{display:block !important;opacity:1 !important;position:relative !important;height:auto;min-height:0;top:0;left:-50%;margin:70px 0;-webkit-transform:none;-ms-transform:none;transform:none}.no-transforms .reveal .slides section section{left:0}.reveal .no-transition,.reveal .no-transition *{-webkit-transition:none !important;transition:none !important}.reveal .backgrounds{position:absolute;width:100%;height:100%;top:0;left:0;-webkit-perspective:600px;perspective:600px}.reveal .slide-background{display:none;position:absolute;width:100%;height:100%;opacity:0;visibility:hidden;background-color:rgba(0,0,0,0);background-position:50% 50%;background-repeat:no-repeat;background-size:cover;-webkit-transition:all 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:all 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.reveal .slide-background.stack{display:block}.reveal .slide-background.present{opacity:1;visibility:visible}.print-pdf .reveal .slide-background{opacity:1 !important;visibility:visible !important}.reveal .slide-background video{position:absolute;width:100%;height:100%;max-width:none;max-height:none;top:0;left:0}.reveal[data-background-transition=none]>.backgrounds .slide-background,.reveal>.backgrounds .slide-background[data-background-transition=none]{-webkit-transition:none;transition:none}.reveal[data-background-transition=slide]>.backgrounds .slide-background,.reveal>.backgrounds .slide-background[data-background-transition=slide]{opacity:1;-webkit-backface-visibility:hidden;backface-visibility:hidden}.reveal[data-background-transition=slide]>.backgrounds .slide-background.past,.reveal>.backgrounds .slide-background.past[data-background-transition=slide]{-webkit-transform:translate(-100%, 0);-ms-transform:translate(-100%, 0);transform:translate(-100%, 0)}.reveal[data-background-transition=slide]>.backgrounds .slide-background.future,.reveal>.backgrounds .slide-background.future[data-background-transition=slide]{-webkit-transform:translate(100%, 0);-ms-transform:translate(100%, 0);transform:translate(100%, 0)}.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past,.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide]{-webkit-transform:translate(0, -100%);-ms-transform:translate(0, -100%);transform:translate(0, -100%)}.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future,.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide]{-webkit-transform:translate(0, 100%);-ms-transform:translate(0, 100%);transform:translate(0, 100%)}.reveal[data-background-transition=convex]>.backgrounds .slide-background.past,.reveal>.backgrounds .slide-background.past[data-background-transition=convex]{opacity:0;-webkit-transform:translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0)}.reveal[data-background-transition=convex]>.backgrounds .slide-background.future,.reveal>.backgrounds .slide-background.future[data-background-transition=convex]{opacity:0;-webkit-transform:translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0)}.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past,.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex]{opacity:0;-webkit-transform:translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0)}.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future,.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex]{opacity:0;-webkit-transform:translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background.past,.reveal>.backgrounds .slide-background.past[data-background-transition=concave]{opacity:0;-webkit-transform:translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background.future,.reveal>.backgrounds .slide-background.future[data-background-transition=concave]{opacity:0;-webkit-transform:translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past,.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave]{opacity:0;-webkit-transform:translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future,.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave]{opacity:0;-webkit-transform:translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background,.reveal>.backgrounds .slide-background[data-background-transition=zoom]{-webkit-transition-timing-function:ease;transition-timing-function:ease}.reveal[data-background-transition=zoom]>.backgrounds .slide-background.past,.reveal>.backgrounds .slide-background.past[data-background-transition=zoom]{opacity:0;visibility:hidden;-webkit-transform:scale(16);-ms-transform:scale(16);transform:scale(16)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background.future,.reveal>.backgrounds .slide-background.future[data-background-transition=zoom]{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-ms-transform:scale(0.2);transform:scale(0.2)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past,.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom]{opacity:0;visibility:hidden;-webkit-transform:scale(16);-ms-transform:scale(16);transform:scale(16)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future,.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom]{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-ms-transform:scale(0.2);transform:scale(0.2)}.reveal[data-transition-speed="fast"]>.backgrounds .slide-background{-webkit-transition-duration:400ms;transition-duration:400ms}.reveal[data-transition-speed="slow"]>.backgrounds .slide-background{-webkit-transition-duration:1200ms;transition-duration:1200ms}.reveal.overview{-webkit-perspective-origin:50% 50%;perspective-origin:50% 50%;-webkit-perspective:700px;perspective:700px}.reveal.overview .slides section{height:700px;opacity:1 !important;overflow:hidden;visibility:visible !important;cursor:pointer;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.overview .slides section:hover,.reveal.overview .slides section.present{outline:10px solid rgba(150,150,150,0.4);outline-offset:10px}.reveal.overview .slides section .fragment{opacity:1;-webkit-transition:none;transition:none}.reveal.overview .slides section:after,.reveal.overview .slides section:before{display:none !important}.reveal.overview .slides>section.stack{padding:0;top:0 !important;background:none;outline:none;overflow:visible}.reveal.overview .backgrounds{-webkit-perspective:inherit;perspective:inherit}.reveal.overview .backgrounds .slide-background{opacity:1;visibility:visible;outline:10px solid rgba(150,150,150,0.1);outline-offset:10px}.reveal.overview .slides section,.reveal.overview-deactivating .slides section{-webkit-transition:none;transition:none}.reveal.overview .backgrounds .slide-background,.reveal.overview-deactivating .backgrounds .slide-background{-webkit-transition:none;transition:none}.reveal.overview-animated .slides{-webkit-transition:-webkit-transform 0.4s ease;transition:transform 0.4s ease}.reveal.rtl .slides,.reveal.rtl .slides h1,.reveal.rtl .slides h2,.reveal.rtl .slides h3,.reveal.rtl .slides h4,.reveal.rtl .slides h5,.reveal.rtl .slides h6{direction:rtl;font-family:sans-serif}.reveal.rtl pre,.reveal.rtl code{direction:ltr}.reveal.rtl ol,.reveal.rtl ul{text-align:right}.reveal.rtl .progress span{float:right}.reveal.has-parallax-background .backgrounds{-webkit-transition:all 0.8s ease;transition:all 0.8s ease}.reveal.has-parallax-background[data-transition-speed="fast"] .backgrounds{-webkit-transition-duration:400ms;transition-duration:400ms}.reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds{-webkit-transition-duration:1200ms;transition-duration:1200ms}.reveal .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1000;background:rgba(0,0,0,0.9);opacity:0;visibility:hidden;-webkit-transition:all 0.3s ease;transition:all 0.3s ease}.reveal .overlay.visible{opacity:1;visibility:visible}.reveal .overlay .spinner{position:absolute;display:block;top:50%;left:50%;width:32px;height:32px;margin:-16px 0 0 -16px;z-index:10;background-image:url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D);visibility:visible;opacity:0.6;-webkit-transition:all 0.3s ease;transition:all 0.3s ease}.reveal .overlay header{position:absolute;left:0;top:0;width:100%;height:40px;z-index:2;border-bottom:1px solid #222}.reveal .overlay header a{display:inline-block;width:40px;height:40px;padding:0 10px;float:right;opacity:0.6;-moz-box-sizing:border-box;box-sizing:border-box}.reveal .overlay header a:hover{opacity:1}.reveal .overlay header a .icon{display:inline-block;width:20px;height:20px;background-position:50% 50%;background-size:100%;background-repeat:no-repeat}.reveal .overlay header a.close .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC)}.reveal .overlay header a.external .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==)}.reveal .overlay .viewport{position:absolute;top:40px;right:0;bottom:0;left:0}.reveal .overlay.overlay-preview .viewport iframe{width:100%;height:100%;max-width:100%;max-height:100%;border:0;opacity:0;visibility:hidden;-webkit-transition:all 0.3s ease;transition:all 0.3s ease}.reveal .overlay.overlay-preview.loaded .viewport iframe{opacity:1;visibility:visible}.reveal .overlay.overlay-preview.loaded .spinner{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-ms-transform:scale(0.2);transform:scale(0.2)}.reveal .overlay.overlay-help .viewport{overflow:auto;color:#fff}.reveal .overlay.overlay-help .viewport .viewport-inner{width:600px;margin:0 auto;padding:60px;text-align:center;letter-spacing:normal}.reveal .overlay.overlay-help .viewport .viewport-inner .title{font-size:20px}.reveal .overlay.overlay-help .viewport .viewport-inner table{border:1px solid #fff;border-collapse:collapse;font-size:14px}.reveal .overlay.overlay-help .viewport .viewport-inner table th,.reveal .overlay.overlay-help .viewport .viewport-inner table td{width:200px;padding:10px;border:1px solid #fff;vertical-align:middle}.reveal .overlay.overlay-help .viewport .viewport-inner table th{padding-top:20px;padding-bottom:20px}.reveal .playback{position:fixed;left:15px;bottom:15px;z-index:30;cursor:pointer;-webkit-transition:all 400ms ease;transition:all 400ms ease}.reveal.overview .playback{opacity:0;visibility:hidden}.reveal .roll{display:inline-block;line-height:1.2;overflow:hidden;vertical-align:top;-webkit-perspective:400px;perspective:400px;-webkit-perspective-origin:50% 50%;perspective-origin:50% 50%}.reveal .roll:hover{background:none;text-shadow:none}.reveal .roll span{display:block;position:relative;padding:0 2px;pointer-events:none;-webkit-transition:all 400ms ease;transition:all 400ms ease;-webkit-transform-origin:50% 0%;-ms-transform-origin:50% 0%;transform-origin:50% 0%;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden}.reveal .roll:hover span{background:rgba(0,0,0,0.5);-webkit-transform:translate3d(0px, 0px, -45px) rotateX(90deg);transform:translate3d(0px, 0px, -45px) rotateX(90deg)}.reveal .roll span:after{content:attr(data-title);display:block;position:absolute;left:0;top:0;padding:0 2px;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:50% 0%;-ms-transform-origin:50% 0%;transform-origin:50% 0%;-webkit-transform:translate3d(0px, 110%, 0px) rotateX(-90deg);transform:translate3d(0px, 110%, 0px) rotateX(-90deg)}.reveal aside.notes{display:none}.zoomed .reveal *,.zoomed .reveal *:before,.zoomed .reveal *:after{-webkit-backface-visibility:visible !important;backface-visibility:visible !important}.zoomed .reveal .progress,.zoomed .reveal .controls{opacity:0}.zoomed .reveal .roll span{background:none}.zoomed .reveal .roll span:after{visibility:hidden}.reveal .slides>section,.reveal .slides>section>section{height:700px;font-weight:inherit;padding:0}.reveal h1{font-size:2.50em;margin-bottom:0.15em}.reveal h2{font-size:1.90em;margin-bottom:0.20em}.reveal h3{font-size:1.30em;margin-bottom:0.25em}.reveal h4{font-size:1.00em;margin-bottom:0.25em}.reveal h5{font-size:1.00em;margin-bottom:0.25em}.reveal h6{font-size:1.00em;margin-bottom:0.25em}.reveal p{margin-bottom:0.25em}.reveal a{text-decoration:none}.reveal b,.reveal strong{font-weight:bold}.reveal em{font-style:italic}.reveal sup{vertical-align:super}.reveal sub{vertical-align:sub}.reveal small{font-size:0.6em}.reveal ol,.reveal dl,.reveal ul{display:inline-block;margin:0.25em 0 0.25em 1.5em;text-align:left}.reveal ol{list-style-type:decimal}.reveal ul{list-style-type:disc}.reveal ul ul{list-style-type:square}.reveal ul ul ul{list-style-type:circle}.reveal ul ul,.reveal ul ol,.reveal ol ol,.reveal ol ul{display:block;margin-left:1.5em}.reveal dt{font-weight:bold}.reveal dd{margin-left:1.5em}.reveal q{quotes:none;font-style:italic}.reveal blockquote{display:block;margin:0.25em auto;font-style:italic}.reveal blockquote:before{content:"\201C";display:inline-block;padding:0 0.15em;font-size:2em;line-height:1em;height:1px;vertical-align:top}.reveal blockquote>:first-child{margin-top:0;display:inline}.reveal blockquote>:last-child{margin-bottom:0}.reveal pre{display:block;position:relative;margin:0.25em auto;text-align:left;font-family:monospace;line-height:1.2;word-wrap:break-word}.reveal code{font-family:monospace}.reveal pre code{display:block;padding:5px;overflow:auto;word-wrap:normal;background:#3F3F3F;color:#DCDCDC}.reveal table{margin:auto;border-collapse:collapse;border-spacing:0}.reveal table th{font-weight:bold}.reveal table th,.reveal table td{text-align:left;padding:0.2em 0.5em 0.2em 0.5em;border-bottom:1px solid}.reveal table tr:last-child td{border-bottom:none}.theme-color-asphalt-orange{background-color:#2c3e50;background-image:-webkit-radial-gradient(center, circle farthest-corner, #415b77 0%, #2c3e50 100%);background-image:radial-gradient(circle farthest-corner at center, #415b77 0%, #2c3e50 100%)}.theme-color-asphalt-orange body{background:transparent}.theme-color-asphalt-orange .theme-body-color-block{background:white}.theme-color-asphalt-orange .theme-link-color-block{background:#ffc200}.theme-color-asphalt-orange .themed,.theme-color-asphalt-orange .reveal{color:white}.theme-color-asphalt-orange .themed a,.theme-color-asphalt-orange .reveal a{color:#ffc200}.theme-color-asphalt-orange .themed a:hover,.theme-color-asphalt-orange .reveal a:hover{color:#ffda66}.theme-color-asphalt-orange .themed .controls div.navigate-left,.theme-color-asphalt-orange .themed .controls div.navigate-left.enabled,.theme-color-asphalt-orange .reveal .controls div.navigate-left,.theme-color-asphalt-orange .reveal .controls div.navigate-left.enabled{border-right-color:#ffc200}.theme-color-asphalt-orange .themed .controls div.navigate-right,.theme-color-asphalt-orange .themed .controls div.navigate-right.enabled,.theme-color-asphalt-orange .reveal .controls div.navigate-right,.theme-color-asphalt-orange .reveal .controls div.navigate-right.enabled{border-left-color:#ffc200}.theme-color-asphalt-orange .themed .controls div.navigate-up,.theme-color-asphalt-orange .themed .controls div.navigate-up.enabled,.theme-color-asphalt-orange .reveal .controls div.navigate-up,.theme-color-asphalt-orange .reveal .controls div.navigate-up.enabled{border-bottom-color:#ffc200}.theme-color-asphalt-orange .themed .controls div.navigate-down,.theme-color-asphalt-orange .themed .controls div.navigate-down.enabled,.theme-color-asphalt-orange .reveal .controls div.navigate-down,.theme-color-asphalt-orange .reveal .controls div.navigate-down.enabled{border-top-color:#ffc200}.theme-color-asphalt-orange .themed .controls div.navigate-left.enabled:hover,.theme-color-asphalt-orange .reveal .controls div.navigate-left.enabled:hover{border-right-color:#ffda66}.theme-color-asphalt-orange .themed .controls div.navigate-right.enabled:hover,.theme-color-asphalt-orange .reveal .controls div.navigate-right.enabled:hover{border-left-color:#ffda66}.theme-color-asphalt-orange .themed .controls div.navigate-up.enabled:hover,.theme-color-asphalt-orange .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#ffda66}.theme-color-asphalt-orange .themed .controls div.navigate-down.enabled:hover,.theme-color-asphalt-orange .reveal .controls div.navigate-down.enabled:hover{border-top-color:#ffda66}.theme-color-asphalt-orange .themed .progress,.theme-color-asphalt-orange .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-asphalt-orange .themed .progress span,.theme-color-asphalt-orange .reveal .progress span{background:#ffc200;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-beige-brown{background-color:#f7f3de;background-image:-webkit-radial-gradient(center, circle farthest-corner, #fff 0%, #f7f2d3 100%);background-image:radial-gradient(circle farthest-corner at center, #fff 0%, #f7f2d3 100%)}.theme-color-beige-brown body{background:transparent}.theme-color-beige-brown .theme-body-color-block{background:#333333}.theme-color-beige-brown .theme-link-color-block{background:#8b743d}.theme-color-beige-brown .themed,.theme-color-beige-brown .reveal{color:#333333}.theme-color-beige-brown .themed a,.theme-color-beige-brown .reveal a{color:#8b743d}.theme-color-beige-brown .themed a:hover,.theme-color-beige-brown .reveal a:hover{color:#c0a86e}.theme-color-beige-brown .themed .controls div.navigate-left,.theme-color-beige-brown .themed .controls div.navigate-left.enabled,.theme-color-beige-brown .reveal .controls div.navigate-left,.theme-color-beige-brown .reveal .controls div.navigate-left.enabled{border-right-color:#8b743d}.theme-color-beige-brown .themed .controls div.navigate-right,.theme-color-beige-brown .themed .controls div.navigate-right.enabled,.theme-color-beige-brown .reveal .controls div.navigate-right,.theme-color-beige-brown .reveal .controls div.navigate-right.enabled{border-left-color:#8b743d}.theme-color-beige-brown .themed .controls div.navigate-up,.theme-color-beige-brown .themed .controls div.navigate-up.enabled,.theme-color-beige-brown .reveal .controls div.navigate-up,.theme-color-beige-brown .reveal .controls div.navigate-up.enabled{border-bottom-color:#8b743d}.theme-color-beige-brown .themed .controls div.navigate-down,.theme-color-beige-brown .themed .controls div.navigate-down.enabled,.theme-color-beige-brown .reveal .controls div.navigate-down,.theme-color-beige-brown .reveal .controls div.navigate-down.enabled{border-top-color:#8b743d}.theme-color-beige-brown .themed .controls div.navigate-left.enabled:hover,.theme-color-beige-brown .reveal .controls div.navigate-left.enabled:hover{border-right-color:#c0a86e}.theme-color-beige-brown .themed .controls div.navigate-right.enabled:hover,.theme-color-beige-brown .reveal .controls div.navigate-right.enabled:hover{border-left-color:#c0a86e}.theme-color-beige-brown .themed .controls div.navigate-up.enabled:hover,.theme-color-beige-brown .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#c0a86e}.theme-color-beige-brown .themed .controls div.navigate-down.enabled:hover,.theme-color-beige-brown .reveal .controls div.navigate-down.enabled:hover{border-top-color:#c0a86e}.theme-color-beige-brown .themed .progress,.theme-color-beige-brown .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-beige-brown .themed .progress span,.theme-color-beige-brown .reveal .progress span{background:#8b743d;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-black-blue{background:#111111}.theme-color-black-blue body{background:transparent}.theme-color-black-blue .theme-body-color-block{background:white}.theme-color-black-blue .theme-link-color-block{background:#2f90f8}.theme-color-black-blue .themed,.theme-color-black-blue .reveal{color:white}.theme-color-black-blue .themed a,.theme-color-black-blue .reveal a{color:#2f90f8}.theme-color-black-blue .themed a:hover,.theme-color-black-blue .reveal a:hover{color:#79b7fa}.theme-color-black-blue .themed .controls div.navigate-left,.theme-color-black-blue .themed .controls div.navigate-left.enabled,.theme-color-black-blue .reveal .controls div.navigate-left,.theme-color-black-blue .reveal .controls div.navigate-left.enabled{border-right-color:#2f90f8}.theme-color-black-blue .themed .controls div.navigate-right,.theme-color-black-blue .themed .controls div.navigate-right.enabled,.theme-color-black-blue .reveal .controls div.navigate-right,.theme-color-black-blue .reveal .controls div.navigate-right.enabled{border-left-color:#2f90f8}.theme-color-black-blue .themed .controls div.navigate-up,.theme-color-black-blue .themed .controls div.navigate-up.enabled,.theme-color-black-blue .reveal .controls div.navigate-up,.theme-color-black-blue .reveal .controls div.navigate-up.enabled{border-bottom-color:#2f90f8}.theme-color-black-blue .themed .controls div.navigate-down,.theme-color-black-blue .themed .controls div.navigate-down.enabled,.theme-color-black-blue .reveal .controls div.navigate-down,.theme-color-black-blue .reveal .controls div.navigate-down.enabled{border-top-color:#2f90f8}.theme-color-black-blue .themed .controls div.navigate-left.enabled:hover,.theme-color-black-blue .reveal .controls div.navigate-left.enabled:hover{border-right-color:#79b7fa}.theme-color-black-blue .themed .controls div.navigate-right.enabled:hover,.theme-color-black-blue .reveal .controls div.navigate-right.enabled:hover{border-left-color:#79b7fa}.theme-color-black-blue .themed .controls div.navigate-up.enabled:hover,.theme-color-black-blue .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#79b7fa}.theme-color-black-blue .themed .controls div.navigate-down.enabled:hover,.theme-color-black-blue .reveal .controls div.navigate-down.enabled:hover{border-top-color:#79b7fa}.theme-color-black-blue .themed .progress,.theme-color-black-blue .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-black-blue .themed .progress span,.theme-color-black-blue .reveal .progress span{background:#2f90f8;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-black-mint{background:#111111}.theme-color-black-mint body{background:transparent}.theme-color-black-mint .theme-body-color-block{background:white}.theme-color-black-mint .theme-link-color-block{background:#8dd792}.theme-color-black-mint .themed,.theme-color-black-mint .reveal{color:white}.theme-color-black-mint .themed a,.theme-color-black-mint .reveal a{color:#8dd792}.theme-color-black-mint .themed a:hover,.theme-color-black-mint .reveal a:hover{color:#c6ebc8}.theme-color-black-mint .themed .controls div.navigate-left,.theme-color-black-mint .themed .controls div.navigate-left.enabled,.theme-color-black-mint .reveal .controls div.navigate-left,.theme-color-black-mint .reveal .controls div.navigate-left.enabled{border-right-color:#8dd792}.theme-color-black-mint .themed .controls div.navigate-right,.theme-color-black-mint .themed .controls div.navigate-right.enabled,.theme-color-black-mint .reveal .controls div.navigate-right,.theme-color-black-mint .reveal .controls div.navigate-right.enabled{border-left-color:#8dd792}.theme-color-black-mint .themed .controls div.navigate-up,.theme-color-black-mint .themed .controls div.navigate-up.enabled,.theme-color-black-mint .reveal .controls div.navigate-up,.theme-color-black-mint .reveal .controls div.navigate-up.enabled{border-bottom-color:#8dd792}.theme-color-black-mint .themed .controls div.navigate-down,.theme-color-black-mint .themed .controls div.navigate-down.enabled,.theme-color-black-mint .reveal .controls div.navigate-down,.theme-color-black-mint .reveal .controls div.navigate-down.enabled{border-top-color:#8dd792}.theme-color-black-mint .themed .controls div.navigate-left.enabled:hover,.theme-color-black-mint .reveal .controls div.navigate-left.enabled:hover{border-right-color:#c6ebc8}.theme-color-black-mint .themed .controls div.navigate-right.enabled:hover,.theme-color-black-mint .reveal .controls div.navigate-right.enabled:hover{border-left-color:#c6ebc8}.theme-color-black-mint .themed .controls div.navigate-up.enabled:hover,.theme-color-black-mint .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#c6ebc8}.theme-color-black-mint .themed .controls div.navigate-down.enabled:hover,.theme-color-black-mint .reveal .controls div.navigate-down.enabled:hover{border-top-color:#c6ebc8}.theme-color-black-mint .themed .progress,.theme-color-black-mint .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-black-mint .themed .progress span,.theme-color-black-mint .reveal .progress span{background:#8dd792;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-black-orange{background:#222222}.theme-color-black-orange body{background:transparent}.theme-color-black-orange .theme-body-color-block{background:white}.theme-color-black-orange .theme-link-color-block{background:#e7ad52}.theme-color-black-orange .themed,.theme-color-black-orange .reveal{color:white}.theme-color-black-orange .themed a,.theme-color-black-orange .reveal a{color:#e7ad52}.theme-color-black-orange .themed a:hover,.theme-color-black-orange .reveal a:hover{color:#f3d7ac}.theme-color-black-orange .themed .controls div.navigate-left,.theme-color-black-orange .themed .controls div.navigate-left.enabled,.theme-color-black-orange .reveal .controls div.navigate-left,.theme-color-black-orange .reveal .controls div.navigate-left.enabled{border-right-color:#e7ad52}.theme-color-black-orange .themed .controls div.navigate-right,.theme-color-black-orange .themed .controls div.navigate-right.enabled,.theme-color-black-orange .reveal .controls div.navigate-right,.theme-color-black-orange .reveal .controls div.navigate-right.enabled{border-left-color:#e7ad52}.theme-color-black-orange .themed .controls div.navigate-up,.theme-color-black-orange .themed .controls div.navigate-up.enabled,.theme-color-black-orange .reveal .controls div.navigate-up,.theme-color-black-orange .reveal .controls div.navigate-up.enabled{border-bottom-color:#e7ad52}.theme-color-black-orange .themed .controls div.navigate-down,.theme-color-black-orange .themed .controls div.navigate-down.enabled,.theme-color-black-orange .reveal .controls div.navigate-down,.theme-color-black-orange .reveal .controls div.navigate-down.enabled{border-top-color:#e7ad52}.theme-color-black-orange .themed .controls div.navigate-left.enabled:hover,.theme-color-black-orange .reveal .controls div.navigate-left.enabled:hover{border-right-color:#f3d7ac}.theme-color-black-orange .themed .controls div.navigate-right.enabled:hover,.theme-color-black-orange .reveal .controls div.navigate-right.enabled:hover{border-left-color:#f3d7ac}.theme-color-black-orange .themed .controls div.navigate-up.enabled:hover,.theme-color-black-orange .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#f3d7ac}.theme-color-black-orange .themed .controls div.navigate-down.enabled:hover,.theme-color-black-orange .reveal .controls div.navigate-down.enabled:hover{border-top-color:#f3d7ac}.theme-color-black-orange .themed .progress,.theme-color-black-orange .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-black-orange .themed .progress span,.theme-color-black-orange .reveal .progress span{background:#e7ad52;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-blue-yellow{background:#44a0dd}.theme-color-blue-yellow body{background:transparent}.theme-color-blue-yellow .theme-body-color-block{background:white}.theme-color-blue-yellow .theme-link-color-block{background:#ecec6a}.theme-color-blue-yellow .themed,.theme-color-blue-yellow .reveal{color:white}.theme-color-blue-yellow .themed a,.theme-color-blue-yellow .reveal a{color:#ecec6a}.theme-color-blue-yellow .themed a:hover,.theme-color-blue-yellow .reveal a:hover{color:#f8f8c4}.theme-color-blue-yellow .themed .controls div.navigate-left,.theme-color-blue-yellow .themed .controls div.navigate-left.enabled,.theme-color-blue-yellow .reveal .controls div.navigate-left,.theme-color-blue-yellow .reveal .controls div.navigate-left.enabled{border-right-color:#ecec6a}.theme-color-blue-yellow .themed .controls div.navigate-right,.theme-color-blue-yellow .themed .controls div.navigate-right.enabled,.theme-color-blue-yellow .reveal .controls div.navigate-right,.theme-color-blue-yellow .reveal .controls div.navigate-right.enabled{border-left-color:#ecec6a}.theme-color-blue-yellow .themed .controls div.navigate-up,.theme-color-blue-yellow .themed .controls div.navigate-up.enabled,.theme-color-blue-yellow .reveal .controls div.navigate-up,.theme-color-blue-yellow .reveal .controls div.navigate-up.enabled{border-bottom-color:#ecec6a}.theme-color-blue-yellow .themed .controls div.navigate-down,.theme-color-blue-yellow .themed .controls div.navigate-down.enabled,.theme-color-blue-yellow .reveal .controls div.navigate-down,.theme-color-blue-yellow .reveal .controls div.navigate-down.enabled{border-top-color:#ecec6a}.theme-color-blue-yellow .themed .controls div.navigate-left.enabled:hover,.theme-color-blue-yellow .reveal .controls div.navigate-left.enabled:hover{border-right-color:#f8f8c4}.theme-color-blue-yellow .themed .controls div.navigate-right.enabled:hover,.theme-color-blue-yellow .reveal .controls div.navigate-right.enabled:hover{border-left-color:#f8f8c4}.theme-color-blue-yellow .themed .controls div.navigate-up.enabled:hover,.theme-color-blue-yellow .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#f8f8c4}.theme-color-blue-yellow .themed .controls div.navigate-down.enabled:hover,.theme-color-blue-yellow .reveal .controls div.navigate-down.enabled:hover{border-top-color:#f8f8c4}.theme-color-blue-yellow .themed .progress,.theme-color-blue-yellow .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-blue-yellow .themed .progress span,.theme-color-blue-yellow .reveal .progress span{background:#ecec6a;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-cobalt-orange{background-color:#13335a;background-image:-webkit-radial-gradient(center, circle farthest-corner, #1a4984 0%, #13335a 100%);background-image:radial-gradient(circle farthest-corner at center, #1a4984 0%, #13335a 100%)}.theme-color-cobalt-orange body{background:transparent}.theme-color-cobalt-orange .theme-body-color-block{background:white}.theme-color-cobalt-orange .theme-link-color-block{background:#e08c14}.theme-color-cobalt-orange .themed,.theme-color-cobalt-orange .reveal{color:white}.theme-color-cobalt-orange .themed a,.theme-color-cobalt-orange .reveal a{color:#e08c14}.theme-color-cobalt-orange .themed a:hover,.theme-color-cobalt-orange .reveal a:hover{color:#f2b968}.theme-color-cobalt-orange .themed .controls div.navigate-left,.theme-color-cobalt-orange .themed .controls div.navigate-left.enabled,.theme-color-cobalt-orange .reveal .controls div.navigate-left,.theme-color-cobalt-orange .reveal .controls div.navigate-left.enabled{border-right-color:#e08c14}.theme-color-cobalt-orange .themed .controls div.navigate-right,.theme-color-cobalt-orange .themed .controls div.navigate-right.enabled,.theme-color-cobalt-orange .reveal .controls div.navigate-right,.theme-color-cobalt-orange .reveal .controls div.navigate-right.enabled{border-left-color:#e08c14}.theme-color-cobalt-orange .themed .controls div.navigate-up,.theme-color-cobalt-orange .themed .controls div.navigate-up.enabled,.theme-color-cobalt-orange .reveal .controls div.navigate-up,.theme-color-cobalt-orange .reveal .controls div.navigate-up.enabled{border-bottom-color:#e08c14}.theme-color-cobalt-orange .themed .controls div.navigate-down,.theme-color-cobalt-orange .themed .controls div.navigate-down.enabled,.theme-color-cobalt-orange .reveal .controls div.navigate-down,.theme-color-cobalt-orange .reveal .controls div.navigate-down.enabled{border-top-color:#e08c14}.theme-color-cobalt-orange .themed .controls div.navigate-left.enabled:hover,.theme-color-cobalt-orange .reveal .controls div.navigate-left.enabled:hover{border-right-color:#f2b968}.theme-color-cobalt-orange .themed .controls div.navigate-right.enabled:hover,.theme-color-cobalt-orange .reveal .controls div.navigate-right.enabled:hover{border-left-color:#f2b968}.theme-color-cobalt-orange .themed .controls div.navigate-up.enabled:hover,.theme-color-cobalt-orange .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#f2b968}.theme-color-cobalt-orange .themed .controls div.navigate-down.enabled:hover,.theme-color-cobalt-orange .reveal .controls div.navigate-down.enabled:hover{border-top-color:#f2b968}.theme-color-cobalt-orange .themed .progress,.theme-color-cobalt-orange .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-cobalt-orange .themed .progress span,.theme-color-cobalt-orange .reveal .progress span{background:#e08c14;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-coral-blue{background-color:#c97150;background-image:-webkit-radial-gradient(center, circle farthest-corner, #d59177 0%, #c97150 100%);background-image:radial-gradient(circle farthest-corner at center, #d59177 0%, #c97150 100%)}.theme-color-coral-blue body{background:transparent}.theme-color-coral-blue .theme-body-color-block{background:white}.theme-color-coral-blue .theme-link-color-block{background:#3a65c0}.theme-color-coral-blue .themed,.theme-color-coral-blue .reveal{color:white}.theme-color-coral-blue .themed a,.theme-color-coral-blue .reveal a{color:#3a65c0}.theme-color-coral-blue .themed a:hover,.theme-color-coral-blue .reveal a:hover{color:#86a1da}.theme-color-coral-blue .themed .controls div.navigate-left,.theme-color-coral-blue .themed .controls div.navigate-left.enabled,.theme-color-coral-blue .reveal .controls div.navigate-left,.theme-color-coral-blue .reveal .controls div.navigate-left.enabled{border-right-color:#3a65c0}.theme-color-coral-blue .themed .controls div.navigate-right,.theme-color-coral-blue .themed .controls div.navigate-right.enabled,.theme-color-coral-blue .reveal .controls div.navigate-right,.theme-color-coral-blue .reveal .controls div.navigate-right.enabled{border-left-color:#3a65c0}.theme-color-coral-blue .themed .controls div.navigate-up,.theme-color-coral-blue .themed .controls div.navigate-up.enabled,.theme-color-coral-blue .reveal .controls div.navigate-up,.theme-color-coral-blue .reveal .controls div.navigate-up.enabled{border-bottom-color:#3a65c0}.theme-color-coral-blue .themed .controls div.navigate-down,.theme-color-coral-blue .themed .controls div.navigate-down.enabled,.theme-color-coral-blue .reveal .controls div.navigate-down,.theme-color-coral-blue .reveal .controls div.navigate-down.enabled{border-top-color:#3a65c0}.theme-color-coral-blue .themed .controls div.navigate-left.enabled:hover,.theme-color-coral-blue .reveal .controls div.navigate-left.enabled:hover{border-right-color:#86a1da}.theme-color-coral-blue .themed .controls div.navigate-right.enabled:hover,.theme-color-coral-blue .reveal .controls div.navigate-right.enabled:hover{border-left-color:#86a1da}.theme-color-coral-blue .themed .controls div.navigate-up.enabled:hover,.theme-color-coral-blue .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#86a1da}.theme-color-coral-blue .themed .controls div.navigate-down.enabled:hover,.theme-color-coral-blue .reveal .controls div.navigate-down.enabled:hover{border-top-color:#86a1da}.theme-color-coral-blue .themed .progress,.theme-color-coral-blue .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-coral-blue .themed .progress span,.theme-color-coral-blue .reveal .progress span{background:#3a65c0;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-forest-yellow{background:#2ba056}.theme-color-forest-yellow body{background:transparent}.theme-color-forest-yellow .theme-body-color-block{background:white}.theme-color-forest-yellow .theme-link-color-block{background:#ecec6a}.theme-color-forest-yellow .themed,.theme-color-forest-yellow .reveal{color:white}.theme-color-forest-yellow .themed a,.theme-color-forest-yellow .reveal a{color:#ecec6a}.theme-color-forest-yellow .themed a:hover,.theme-color-forest-yellow .reveal a:hover{color:#f8f8c4}.theme-color-forest-yellow .themed .controls div.navigate-left,.theme-color-forest-yellow .themed .controls div.navigate-left.enabled,.theme-color-forest-yellow .reveal .controls div.navigate-left,.theme-color-forest-yellow .reveal .controls div.navigate-left.enabled{border-right-color:#ecec6a}.theme-color-forest-yellow .themed .controls div.navigate-right,.theme-color-forest-yellow .themed .controls div.navigate-right.enabled,.theme-color-forest-yellow .reveal .controls div.navigate-right,.theme-color-forest-yellow .reveal .controls div.navigate-right.enabled{border-left-color:#ecec6a}.theme-color-forest-yellow .themed .controls div.navigate-up,.theme-color-forest-yellow .themed .controls div.navigate-up.enabled,.theme-color-forest-yellow .reveal .controls div.navigate-up,.theme-color-forest-yellow .reveal .controls div.navigate-up.enabled{border-bottom-color:#ecec6a}.theme-color-forest-yellow .themed .controls div.navigate-down,.theme-color-forest-yellow .themed .controls div.navigate-down.enabled,.theme-color-forest-yellow .reveal .controls div.navigate-down,.theme-color-forest-yellow .reveal .controls div.navigate-down.enabled{border-top-color:#ecec6a}.theme-color-forest-yellow .themed .controls div.navigate-left.enabled:hover,.theme-color-forest-yellow .reveal .controls div.navigate-left.enabled:hover{border-right-color:#f8f8c4}.theme-color-forest-yellow .themed .controls div.navigate-right.enabled:hover,.theme-color-forest-yellow .reveal .controls div.navigate-right.enabled:hover{border-left-color:#f8f8c4}.theme-color-forest-yellow .themed .controls div.navigate-up.enabled:hover,.theme-color-forest-yellow .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#f8f8c4}.theme-color-forest-yellow .themed .controls div.navigate-down.enabled:hover,.theme-color-forest-yellow .reveal .controls div.navigate-down.enabled:hover{border-top-color:#f8f8c4}.theme-color-forest-yellow .themed .progress,.theme-color-forest-yellow .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-forest-yellow .themed .progress span,.theme-color-forest-yellow .reveal .progress span{background:#ecec6a;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-grey-blue{background-color:#313538;background-image:-webkit-radial-gradient(center, circle farthest-corner, #555a5f 0%, #1c1e20 100%);background-image:radial-gradient(circle farthest-corner at center, #555a5f 0%, #1c1e20 100%)}.theme-color-grey-blue body{background:transparent}.theme-color-grey-blue .theme-body-color-block{background:white}.theme-color-grey-blue .theme-link-color-block{background:#13daec}.theme-color-grey-blue .themed,.theme-color-grey-blue .reveal{color:white}.theme-color-grey-blue .themed a,.theme-color-grey-blue .reveal a{color:#13daec}.theme-color-grey-blue .themed a:hover,.theme-color-grey-blue .reveal a:hover{color:#71e9f4}.theme-color-grey-blue .themed .controls div.navigate-left,.theme-color-grey-blue .themed .controls div.navigate-left.enabled,.theme-color-grey-blue .reveal .controls div.navigate-left,.theme-color-grey-blue .reveal .controls div.navigate-left.enabled{border-right-color:#13daec}.theme-color-grey-blue .themed .controls div.navigate-right,.theme-color-grey-blue .themed .controls div.navigate-right.enabled,.theme-color-grey-blue .reveal .controls div.navigate-right,.theme-color-grey-blue .reveal .controls div.navigate-right.enabled{border-left-color:#13daec}.theme-color-grey-blue .themed .controls div.navigate-up,.theme-color-grey-blue .themed .controls div.navigate-up.enabled,.theme-color-grey-blue .reveal .controls div.navigate-up,.theme-color-grey-blue .reveal .controls div.navigate-up.enabled{border-bottom-color:#13daec}.theme-color-grey-blue .themed .controls div.navigate-down,.theme-color-grey-blue .themed .controls div.navigate-down.enabled,.theme-color-grey-blue .reveal .controls div.navigate-down,.theme-color-grey-blue .reveal .controls div.navigate-down.enabled{border-top-color:#13daec}.theme-color-grey-blue .themed .controls div.navigate-left.enabled:hover,.theme-color-grey-blue .reveal .controls div.navigate-left.enabled:hover{border-right-color:#71e9f4}.theme-color-grey-blue .themed .controls div.navigate-right.enabled:hover,.theme-color-grey-blue .reveal .controls div.navigate-right.enabled:hover{border-left-color:#71e9f4}.theme-color-grey-blue .themed .controls div.navigate-up.enabled:hover,.theme-color-grey-blue .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#71e9f4}.theme-color-grey-blue .themed .controls div.navigate-down.enabled:hover,.theme-color-grey-blue .reveal .controls div.navigate-down.enabled:hover{border-top-color:#71e9f4}.theme-color-grey-blue .themed .progress,.theme-color-grey-blue .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-grey-blue .themed .progress span,.theme-color-grey-blue .reveal .progress span{background:#13daec;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-mint-beige{background-color:#207c5f;background-image:-webkit-radial-gradient(center, circle farthest-corner, #2aa57e 0%, #207c5f 100%);background-image:radial-gradient(circle farthest-corner at center, #2aa57e 0%, #207c5f 100%)}.theme-color-mint-beige body{background:transparent}.theme-color-mint-beige .theme-body-color-block{background:white}.theme-color-mint-beige .theme-link-color-block{background:#ecec6a}.theme-color-mint-beige .themed,.theme-color-mint-beige .reveal{color:white}.theme-color-mint-beige .themed a,.theme-color-mint-beige .reveal a{color:#ecec6a}.theme-color-mint-beige .themed a:hover,.theme-color-mint-beige .reveal a:hover{color:#f8f8c4}.theme-color-mint-beige .themed .controls div.navigate-left,.theme-color-mint-beige .themed .controls div.navigate-left.enabled,.theme-color-mint-beige .reveal .controls div.navigate-left,.theme-color-mint-beige .reveal .controls div.navigate-left.enabled{border-right-color:#ecec6a}.theme-color-mint-beige .themed .controls div.navigate-right,.theme-color-mint-beige .themed .controls div.navigate-right.enabled,.theme-color-mint-beige .reveal .controls div.navigate-right,.theme-color-mint-beige .reveal .controls div.navigate-right.enabled{border-left-color:#ecec6a}.theme-color-mint-beige .themed .controls div.navigate-up,.theme-color-mint-beige .themed .controls div.navigate-up.enabled,.theme-color-mint-beige .reveal .controls div.navigate-up,.theme-color-mint-beige .reveal .controls div.navigate-up.enabled{border-bottom-color:#ecec6a}.theme-color-mint-beige .themed .controls div.navigate-down,.theme-color-mint-beige .themed .controls div.navigate-down.enabled,.theme-color-mint-beige .reveal .controls div.navigate-down,.theme-color-mint-beige .reveal .controls div.navigate-down.enabled{border-top-color:#ecec6a}.theme-color-mint-beige .themed .controls div.navigate-left.enabled:hover,.theme-color-mint-beige .reveal .controls div.navigate-left.enabled:hover{border-right-color:#f8f8c4}.theme-color-mint-beige .themed .controls div.navigate-right.enabled:hover,.theme-color-mint-beige .reveal .controls div.navigate-right.enabled:hover{border-left-color:#f8f8c4}.theme-color-mint-beige .themed .controls div.navigate-up.enabled:hover,.theme-color-mint-beige .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#f8f8c4}.theme-color-mint-beige .themed .controls div.navigate-down.enabled:hover,.theme-color-mint-beige .reveal .controls div.navigate-down.enabled:hover{border-top-color:#f8f8c4}.theme-color-mint-beige .themed .progress,.theme-color-mint-beige .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-mint-beige .themed .progress span,.theme-color-mint-beige .reveal .progress span{background:#ecec6a;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-no-color{background-color:white}.theme-color-no-color .theme-body-color-block,.theme-color-no-color .theme-link-color-block{background:black}.theme-color-no-color .themed,.theme-color-no-color.themed,.theme-color-no-color .reveal,.theme-color-no-color.reveal{color:black}.theme-color-sand-blue{background:#f0f1eb}.theme-color-sand-blue body{background:transparent}.theme-color-sand-blue .theme-body-color-block{background:#111111}.theme-color-sand-blue .theme-link-color-block{background:#2f90f8}.theme-color-sand-blue .themed,.theme-color-sand-blue .reveal{color:#111111}.theme-color-sand-blue .themed a,.theme-color-sand-blue .reveal a{color:#2f90f8}.theme-color-sand-blue .themed a:hover,.theme-color-sand-blue .reveal a:hover{color:#92c5fb}.theme-color-sand-blue .themed .controls div.navigate-left,.theme-color-sand-blue .themed .controls div.navigate-left.enabled,.theme-color-sand-blue .reveal .controls div.navigate-left,.theme-color-sand-blue .reveal .controls div.navigate-left.enabled{border-right-color:#2f90f8}.theme-color-sand-blue .themed .controls div.navigate-right,.theme-color-sand-blue .themed .controls div.navigate-right.enabled,.theme-color-sand-blue .reveal .controls div.navigate-right,.theme-color-sand-blue .reveal .controls div.navigate-right.enabled{border-left-color:#2f90f8}.theme-color-sand-blue .themed .controls div.navigate-up,.theme-color-sand-blue .themed .controls div.navigate-up.enabled,.theme-color-sand-blue .reveal .controls div.navigate-up,.theme-color-sand-blue .reveal .controls div.navigate-up.enabled{border-bottom-color:#2f90f8}.theme-color-sand-blue .themed .controls div.navigate-down,.theme-color-sand-blue .themed .controls div.navigate-down.enabled,.theme-color-sand-blue .reveal .controls div.navigate-down,.theme-color-sand-blue .reveal .controls div.navigate-down.enabled{border-top-color:#2f90f8}.theme-color-sand-blue .themed .controls div.navigate-left.enabled:hover,.theme-color-sand-blue .reveal .controls div.navigate-left.enabled:hover{border-right-color:#92c5fb}.theme-color-sand-blue .themed .controls div.navigate-right.enabled:hover,.theme-color-sand-blue .reveal .controls div.navigate-right.enabled:hover{border-left-color:#92c5fb}.theme-color-sand-blue .themed .controls div.navigate-up.enabled:hover,.theme-color-sand-blue .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#92c5fb}.theme-color-sand-blue .themed .controls div.navigate-down.enabled:hover,.theme-color-sand-blue .reveal .controls div.navigate-down.enabled:hover{border-top-color:#92c5fb}.theme-color-sand-blue .themed .progress,.theme-color-sand-blue .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-sand-blue .themed .progress span,.theme-color-sand-blue .reveal .progress span{background:#2f90f8;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-sea-yellow{background-color:#297477;background-image:-webkit-linear-gradient(top, #6cc9cd 0%, #297477 100%);background-image:linear-gradient(to bottom, #6cc9cd 0%, #297477 100%)}.theme-color-sea-yellow body{background:transparent}.theme-color-sea-yellow .theme-body-color-block{background:white}.theme-color-sea-yellow .theme-link-color-block{background:#ffc200}.theme-color-sea-yellow .themed,.theme-color-sea-yellow .reveal{color:white}.theme-color-sea-yellow .themed a,.theme-color-sea-yellow .reveal a{color:#ffc200}.theme-color-sea-yellow .themed a:hover,.theme-color-sea-yellow .reveal a:hover{color:#ffda66}.theme-color-sea-yellow .themed .controls div.navigate-left,.theme-color-sea-yellow .themed .controls div.navigate-left.enabled,.theme-color-sea-yellow .reveal .controls div.navigate-left,.theme-color-sea-yellow .reveal .controls div.navigate-left.enabled{border-right-color:#ffc200}.theme-color-sea-yellow .themed .controls div.navigate-right,.theme-color-sea-yellow .themed .controls div.navigate-right.enabled,.theme-color-sea-yellow .reveal .controls div.navigate-right,.theme-color-sea-yellow .reveal .controls div.navigate-right.enabled{border-left-color:#ffc200}.theme-color-sea-yellow .themed .controls div.navigate-up,.theme-color-sea-yellow .themed .controls div.navigate-up.enabled,.theme-color-sea-yellow .reveal .controls div.navigate-up,.theme-color-sea-yellow .reveal .controls div.navigate-up.enabled{border-bottom-color:#ffc200}.theme-color-sea-yellow .themed .controls div.navigate-down,.theme-color-sea-yellow .themed .controls div.navigate-down.enabled,.theme-color-sea-yellow .reveal .controls div.navigate-down,.theme-color-sea-yellow .reveal .controls div.navigate-down.enabled{border-top-color:#ffc200}.theme-color-sea-yellow .themed .controls div.navigate-left.enabled:hover,.theme-color-sea-yellow .reveal .controls div.navigate-left.enabled:hover{border-right-color:#ffda66}.theme-color-sea-yellow .themed .controls div.navigate-right.enabled:hover,.theme-color-sea-yellow .reveal .controls div.navigate-right.enabled:hover{border-left-color:#ffda66}.theme-color-sea-yellow .themed .controls div.navigate-up.enabled:hover,.theme-color-sea-yellow .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#ffda66}.theme-color-sea-yellow .themed .controls div.navigate-down.enabled:hover,.theme-color-sea-yellow .reveal .controls div.navigate-down.enabled:hover{border-top-color:#ffda66}.theme-color-sea-yellow .themed .progress,.theme-color-sea-yellow .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-sea-yellow .themed .progress span,.theme-color-sea-yellow .reveal .progress span{background:#ffc200;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-silver-blue{background-color:#dddddd;background-image:-webkit-radial-gradient(center, circle farthest-corner, #fff 0%, #ddd 100%);background-image:radial-gradient(circle farthest-corner at center, #fff 0%, #ddd 100%)}.theme-color-silver-blue body{background:transparent}.theme-color-silver-blue .theme-body-color-block{background:#111111}.theme-color-silver-blue .theme-link-color-block{background:#106bcc}.theme-color-silver-blue .themed,.theme-color-silver-blue .reveal{color:#111111}.theme-color-silver-blue .themed a,.theme-color-silver-blue .reveal a{color:#106bcc}.theme-color-silver-blue .themed a:hover,.theme-color-silver-blue .reveal a:hover{color:#2184ee}.theme-color-silver-blue .themed .controls div.navigate-left,.theme-color-silver-blue .themed .controls div.navigate-left.enabled,.theme-color-silver-blue .reveal .controls div.navigate-left,.theme-color-silver-blue .reveal .controls div.navigate-left.enabled{border-right-color:#106bcc}.theme-color-silver-blue .themed .controls div.navigate-right,.theme-color-silver-blue .themed .controls div.navigate-right.enabled,.theme-color-silver-blue .reveal .controls div.navigate-right,.theme-color-silver-blue .reveal .controls div.navigate-right.enabled{border-left-color:#106bcc}.theme-color-silver-blue .themed .controls div.navigate-up,.theme-color-silver-blue .themed .controls div.navigate-up.enabled,.theme-color-silver-blue .reveal .controls div.navigate-up,.theme-color-silver-blue .reveal .controls div.navigate-up.enabled{border-bottom-color:#106bcc}.theme-color-silver-blue .themed .controls div.navigate-down,.theme-color-silver-blue .themed .controls div.navigate-down.enabled,.theme-color-silver-blue .reveal .controls div.navigate-down,.theme-color-silver-blue .reveal .controls div.navigate-down.enabled{border-top-color:#106bcc}.theme-color-silver-blue .themed .controls div.navigate-left.enabled:hover,.theme-color-silver-blue .reveal .controls div.navigate-left.enabled:hover{border-right-color:#2184ee}.theme-color-silver-blue .themed .controls div.navigate-right.enabled:hover,.theme-color-silver-blue .reveal .controls div.navigate-right.enabled:hover{border-left-color:#2184ee}.theme-color-silver-blue .themed .controls div.navigate-up.enabled:hover,.theme-color-silver-blue .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#2184ee}.theme-color-silver-blue .themed .controls div.navigate-down.enabled:hover,.theme-color-silver-blue .reveal .controls div.navigate-down.enabled:hover{border-top-color:#2184ee}.theme-color-silver-blue .themed .progress,.theme-color-silver-blue .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-silver-blue .themed .progress span,.theme-color-silver-blue .reveal .progress span{background:#106bcc;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-silver-green{background-color:#dddddd;background-image:-webkit-radial-gradient(center, circle farthest-corner, #fff 0%, #ddd 100%);background-image:radial-gradient(circle farthest-corner at center, #fff 0%, #ddd 100%)}.theme-color-silver-green body{background:transparent}.theme-color-silver-green .theme-body-color-block{background:#111111}.theme-color-silver-green .theme-link-color-block{background:#039426}.theme-color-silver-green .themed,.theme-color-silver-green .reveal{color:#111111}.theme-color-silver-green .themed a,.theme-color-silver-green .reveal a{color:#039426}.theme-color-silver-green .themed a:hover,.theme-color-silver-green .reveal a:hover{color:#04c633}.theme-color-silver-green .themed .controls div.navigate-left,.theme-color-silver-green .themed .controls div.navigate-left.enabled,.theme-color-silver-green .reveal .controls div.navigate-left,.theme-color-silver-green .reveal .controls div.navigate-left.enabled{border-right-color:#039426}.theme-color-silver-green .themed .controls div.navigate-right,.theme-color-silver-green .themed .controls div.navigate-right.enabled,.theme-color-silver-green .reveal .controls div.navigate-right,.theme-color-silver-green .reveal .controls div.navigate-right.enabled{border-left-color:#039426}.theme-color-silver-green .themed .controls div.navigate-up,.theme-color-silver-green .themed .controls div.navigate-up.enabled,.theme-color-silver-green .reveal .controls div.navigate-up,.theme-color-silver-green .reveal .controls div.navigate-up.enabled{border-bottom-color:#039426}.theme-color-silver-green .themed .controls div.navigate-down,.theme-color-silver-green .themed .controls div.navigate-down.enabled,.theme-color-silver-green .reveal .controls div.navigate-down,.theme-color-silver-green .reveal .controls div.navigate-down.enabled{border-top-color:#039426}.theme-color-silver-green .themed .controls div.navigate-left.enabled:hover,.theme-color-silver-green .reveal .controls div.navigate-left.enabled:hover{border-right-color:#04c633}.theme-color-silver-green .themed .controls div.navigate-right.enabled:hover,.theme-color-silver-green .reveal .controls div.navigate-right.enabled:hover{border-left-color:#04c633}.theme-color-silver-green .themed .controls div.navigate-up.enabled:hover,.theme-color-silver-green .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#04c633}.theme-color-silver-green .themed .controls div.navigate-down.enabled:hover,.theme-color-silver-green .reveal .controls div.navigate-down.enabled:hover{border-top-color:#04c633}.theme-color-silver-green .themed .progress,.theme-color-silver-green .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-silver-green .themed .progress span,.theme-color-silver-green .reveal .progress span{background:#039426;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-sky-blue{background-color:#dcedf1;background-image:-webkit-radial-gradient(center, circle farthest-corner, #f7fbfc 0%, #add9e4 100%);background-image:radial-gradient(circle farthest-corner at center, #f7fbfc 0%, #add9e4 100%)}.theme-color-sky-blue body{background:transparent}.theme-color-sky-blue .theme-body-color-block{background:#333333}.theme-color-sky-blue .theme-link-color-block{background:#3b759e}.theme-color-sky-blue .themed,.theme-color-sky-blue .reveal{color:#333333}.theme-color-sky-blue .themed a,.theme-color-sky-blue .reveal a{color:#3b759e}.theme-color-sky-blue .themed a:hover,.theme-color-sky-blue .reveal a:hover{color:#74a7cb}.theme-color-sky-blue .themed .controls div.navigate-left,.theme-color-sky-blue .themed .controls div.navigate-left.enabled,.theme-color-sky-blue .reveal .controls div.navigate-left,.theme-color-sky-blue .reveal .controls div.navigate-left.enabled{border-right-color:#3b759e}.theme-color-sky-blue .themed .controls div.navigate-right,.theme-color-sky-blue .themed .controls div.navigate-right.enabled,.theme-color-sky-blue .reveal .controls div.navigate-right,.theme-color-sky-blue .reveal .controls div.navigate-right.enabled{border-left-color:#3b759e}.theme-color-sky-blue .themed .controls div.navigate-up,.theme-color-sky-blue .themed .controls div.navigate-up.enabled,.theme-color-sky-blue .reveal .controls div.navigate-up,.theme-color-sky-blue .reveal .controls div.navigate-up.enabled{border-bottom-color:#3b759e}.theme-color-sky-blue .themed .controls div.navigate-down,.theme-color-sky-blue .themed .controls div.navigate-down.enabled,.theme-color-sky-blue .reveal .controls div.navigate-down,.theme-color-sky-blue .reveal .controls div.navigate-down.enabled{border-top-color:#3b759e}.theme-color-sky-blue .themed .controls div.navigate-left.enabled:hover,.theme-color-sky-blue .reveal .controls div.navigate-left.enabled:hover{border-right-color:#74a7cb}.theme-color-sky-blue .themed .controls div.navigate-right.enabled:hover,.theme-color-sky-blue .reveal .controls div.navigate-right.enabled:hover{border-left-color:#74a7cb}.theme-color-sky-blue .themed .controls div.navigate-up.enabled:hover,.theme-color-sky-blue .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#74a7cb}.theme-color-sky-blue .themed .controls div.navigate-down.enabled:hover,.theme-color-sky-blue .reveal .controls div.navigate-down.enabled:hover{border-top-color:#74a7cb}.theme-color-sky-blue .themed .progress,.theme-color-sky-blue .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-sky-blue .themed .progress span,.theme-color-sky-blue .reveal .progress span{background:#3b759e;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-white-blue{background:white}.theme-color-white-blue body{background:transparent}.theme-color-white-blue .theme-body-color-block{background:black}.theme-color-white-blue .theme-link-color-block{background:#106bcc}.theme-color-white-blue .themed,.theme-color-white-blue .reveal{color:black}.theme-color-white-blue .themed a,.theme-color-white-blue .reveal a{color:#106bcc}.theme-color-white-blue .themed a:hover,.theme-color-white-blue .reveal a:hover{color:#3991ef}.theme-color-white-blue .themed .controls div.navigate-left,.theme-color-white-blue .themed .controls div.navigate-left.enabled,.theme-color-white-blue .reveal .controls div.navigate-left,.theme-color-white-blue .reveal .controls div.navigate-left.enabled{border-right-color:#106bcc}.theme-color-white-blue .themed .controls div.navigate-right,.theme-color-white-blue .themed .controls div.navigate-right.enabled,.theme-color-white-blue .reveal .controls div.navigate-right,.theme-color-white-blue .reveal .controls div.navigate-right.enabled{border-left-color:#106bcc}.theme-color-white-blue .themed .controls div.navigate-up,.theme-color-white-blue .themed .controls div.navigate-up.enabled,.theme-color-white-blue .reveal .controls div.navigate-up,.theme-color-white-blue .reveal .controls div.navigate-up.enabled{border-bottom-color:#106bcc}.theme-color-white-blue .themed .controls div.navigate-down,.theme-color-white-blue .themed .controls div.navigate-down.enabled,.theme-color-white-blue .reveal .controls div.navigate-down,.theme-color-white-blue .reveal .controls div.navigate-down.enabled{border-top-color:#106bcc}.theme-color-white-blue .themed .controls div.navigate-left.enabled:hover,.theme-color-white-blue .reveal .controls div.navigate-left.enabled:hover{border-right-color:#3991ef}.theme-color-white-blue .themed .controls div.navigate-right.enabled:hover,.theme-color-white-blue .reveal .controls div.navigate-right.enabled:hover{border-left-color:#3991ef}.theme-color-white-blue .themed .controls div.navigate-up.enabled:hover,.theme-color-white-blue .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#3991ef}.theme-color-white-blue .themed .controls div.navigate-down.enabled:hover,.theme-color-white-blue .reveal .controls div.navigate-down.enabled:hover{border-top-color:#3991ef}.theme-color-white-blue .themed .progress,.theme-color-white-blue .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-white-blue .themed .progress span,.theme-color-white-blue .reveal .progress span{background:#106bcc;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}.theme-color-yellow-black{background:#fff000}.theme-color-yellow-black body{background:transparent}.theme-color-yellow-black .theme-body-color-block{background:black}.theme-color-yellow-black .theme-link-color-block{background:#4654ec}.theme-color-yellow-black .themed,.theme-color-yellow-black .reveal{color:black}.theme-color-yellow-black .themed a,.theme-color-yellow-black .reveal a{color:#4654ec}.theme-color-yellow-black .themed a:hover,.theme-color-yellow-black .reveal a:hover{color:#a3aaf6}.theme-color-yellow-black .themed .controls div.navigate-left,.theme-color-yellow-black .themed .controls div.navigate-left.enabled,.theme-color-yellow-black .reveal .controls div.navigate-left,.theme-color-yellow-black .reveal .controls div.navigate-left.enabled{border-right-color:#4654ec}.theme-color-yellow-black .themed .controls div.navigate-right,.theme-color-yellow-black .themed .controls div.navigate-right.enabled,.theme-color-yellow-black .reveal .controls div.navigate-right,.theme-color-yellow-black .reveal .controls div.navigate-right.enabled{border-left-color:#4654ec}.theme-color-yellow-black .themed .controls div.navigate-up,.theme-color-yellow-black .themed .controls div.navigate-up.enabled,.theme-color-yellow-black .reveal .controls div.navigate-up,.theme-color-yellow-black .reveal .controls div.navigate-up.enabled{border-bottom-color:#4654ec}.theme-color-yellow-black .themed .controls div.navigate-down,.theme-color-yellow-black .themed .controls div.navigate-down.enabled,.theme-color-yellow-black .reveal .controls div.navigate-down,.theme-color-yellow-black .reveal .controls div.navigate-down.enabled{border-top-color:#4654ec}.theme-color-yellow-black .themed .controls div.navigate-left.enabled:hover,.theme-color-yellow-black .reveal .controls div.navigate-left.enabled:hover{border-right-color:#a3aaf6}.theme-color-yellow-black .themed .controls div.navigate-right.enabled:hover,.theme-color-yellow-black .reveal .controls div.navigate-right.enabled:hover{border-left-color:#a3aaf6}.theme-color-yellow-black .themed .controls div.navigate-up.enabled:hover,.theme-color-yellow-black .reveal .controls div.navigate-up.enabled:hover{border-bottom-color:#a3aaf6}.theme-color-yellow-black .themed .controls div.navigate-down.enabled:hover,.theme-color-yellow-black .reveal .controls div.navigate-down.enabled:hover{border-top-color:#a3aaf6}.theme-color-yellow-black .themed .progress,.theme-color-yellow-black .reveal .progress{background:rgba(0,0,0,0.2)}.theme-color-yellow-black .themed .progress span,.theme-color-yellow-black .reveal .progress span{background:#4654ec;-webkit-transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);transition:width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985)}
</style>
<meta content="authenticity_token" name="csrf-param" />
<meta content="aBEoSDM+3KlZFavJb08yca0Ixn5W7inb6b2GBGGR+4U=" name="csrf-token" />
<style id="user-css-output" type="text/css"></style>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-id="c696aff599b67304e8b2692683423553"><div class="sl-block" data-block-type="text" style="width: 960px; left: 0px; top: 254px; height: auto;" data-block-id="d27511b366c094f3e5a7f9cb9a7aec1d"><div class="sl-block-content" data-placeholder-tag="h1" data-placeholder-text="Title Text" dir="ui" style="z-index: 11;">
<h1>
<span><span>Decoupling </span></span><span><span>AngularJs Using Providers</span></span>
</h1>
</div></div>
<div class="sl-block" data-block-type="text" data-block-id="9e989e97f9b8a32f155f9055502f0520" style="height: auto; min-width: 30px; min-height: 30px; width: 800px; left: 80px; top: 544px;"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p>Code samples at:</p>
<p><a href="https://gist.github.com/squirly/630f891941bef45bb0f1" target="_blank"><span>https://gist.github.com/squirly/630f891941bef45bb0f1</span></a></p>
</div></div></section><section data-id="fab289abf05b7577452c49022ec9d41a"><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 33px; height: auto;" data-block-id="fd2189b2f60800f27bad5183201c6e32">
<div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text" style="z-index: 12;">
<h2>About Tyler Jones</h2>
</div>
</div>
<div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 137px; height: auto;" data-block-id="9e25d86fd452cbe439a40d99bed83810">
<div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 15;">
<p style="text-align:left">
<span style="font-size:48px">Software Engineer at</span>
</p>
</div>
</div>
<div class="sl-block" data-block-type="image" data-block-id="1a64ca9411bad001d404d93cf6bd171c" style="min-width: 30px; min-height: 30px; width: 616px; height: 308px; left: 173px; top: 94px;">
<div class="sl-block-content" style="z-index: 13; border-width: 1px;" href="">
<img data-natural-width="300" data-natural-height="150" style="visibility: visible;" data-src="http://spacelist.ca/assets/v2/icon-wordmark-0388b358b2257e20ab4e94f32841389d.svg">
</div>
</div>
<div class="sl-block" data-block-type="text" data-block-id="bab60ce6099a99aa502215bb30f5f66d" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 260px; top: 317px;">
<div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 14;">
<p>
<span style="font-size:48px">building applications with</span>
</p>
</div>
</div>
<div class="sl-block" data-block-type="image" data-block-id="91cf136494ece0305c8cceb994dbb9a8" style="min-width: 30px; min-height: 30px; width: 132.86328125px; height: 172px; left: 36px; top: 491px;">
<div class="sl-block-content" style="z-index: 16;">
<img data-natural-width="791" data-natural-height="1024" style="visibility: visible;" data-src="http://upload.wikimedia.org/wikipedia/en/thumb/e/e9/Ruby_on_Rails.svg/791px-Ruby_on_Rails.svg.png">
</div>
</div>
<div class="sl-block" data-block-type="image" data-block-id="7d421f5ccc10a80cebc438ab361f21f3" style="min-width: 30px; min-height: 30px; width: 187.04845814978px; height: 193px; left: 180px; top: 394px;">
<div class="sl-block-content" style="z-index: 17;">
<img data-natural-width="220" data-natural-height="227" style="visibility: visible;" data-src="http://tapoueh.org/images/220px-Postgresql_elephant.svg.png">
</div>
</div>
<div class="sl-block" data-block-type="image" data-block-id="4d8bc9e620c833d5310c2c926401aa69" style="min-width: 30px; min-height: 30px; width: 206.588161209068px; height: 219px; left: 377px; top: 467px;">
<div class="sl-block-content" style="z-index: 18;">
<img data-natural-width="749" data-natural-height="794" style="visibility: visible;" data-src="https://lh6.googleusercontent.com/-TlY7amsfzPs/T9ZgLXXK1cI/AAAAAAABK-c/Ki-inmeYNKk/w749-h794/AngularJS-Shield-large.png">
</div>
</div>
<div class="sl-block" data-block-type="image" data-block-id="99a7bc3e7572e2a0e18921813aa029d8" style="min-width: 30px; min-height: 30px; width: 182.643333333333px; height: 157px; left: 656px; top: 394px;">
<div class="sl-block-content" style="z-index: 20;">
<img data-natural-width="349" data-natural-height="300" style="visibility: visible;" data-src="http://sametmax.com/wp-content/uploads/2012/07/banner_redis-300dpi-0315a8013afee137cce47b474541d7f1.png">
</div>
</div>
<div class="sl-block" data-block-type="image" data-block-id="f3b50e65e545ee28903a66fbcdcd9a04" style="min-width: 30px; min-height: 30px; width: 143.023622047244px; height: 152px; left: 585px; top: 534px;">
<div class="sl-block-content" style="z-index: 19;">
<img style="visibility: visible;" data-natural-width="239" data-natural-height="254" data-src="https://s3.amazonaws.com/media-p.slid.es/uploads/tylerjones/images/1269502/elastic.png">
</div>
</div>
<div class="sl-block" data-block-type="image" data-block-id="3efb72220c9f5d0181653b20fc8a163f" style="min-width: 30px; min-height: 30px; width: 204px; height: 204px; left: 737px; top: 508px;">
<div class="sl-block-content" style="z-index: 11;">
<img data-natural-width="400" data-natural-height="400" style="visibility: visible;" data-src="https://pbs.twimg.com/profile_images/378800000124779041/fbbb494a7eef5f9278c6967b6072ca3e_400x400.png">
</div>
</div>
<div class="sl-block" data-block-type="text" data-block-id="c4cd91525fcc55eed508fa16a1b83a3b" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 430px; top: 268px;">
<div class="sl-block-content fragment" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 21; color: rgb(204, 0, 0); background-color: rgba(0, 0, 0, 0);" data-has-custom-html="" data-fragment-index="0">
<p>
<span style="font-size:56px;text-shadow: 0px 0px 2px red; transform: rotateX(-20deg);">
<strong>We're Hiring</strong>
</span>
</p>
</div>
</div></section><section class="stack"><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 99px; height: auto;" data-block-id="35c1d84e8e890dbe0478226dac0f2513"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text" style="z-index: 10;">
<h2><span style="font-size:64px">$injector</span></h2>
</div></div>
<div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 210px; height: auto;" data-block-id="20770848df559cd855acc2626994fd69"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<p style="text-align:left"><span style="font-size:48px"><strong>invoke(fn)</strong></span></p>
<p style="text-align:left"><span style="color:rgb(51, 51, 51); text-align:left"><strong>Invoke the method</strong> and supply the method arguments from the </span><span style="color:rgb(51, 51, 51)">$injector</span><span style="color:rgb(51, 51, 51); text-align:left">.</span></p>
<p style="text-align:left"><span style="font-size:48px"><strong>instantiate(Type)</strong></span></p>
<p style="text-align:left"><span style="color:rgb(51, 51, 51); text-align:left">Create a new instance of JS type. The method takes a constructor function, <strong>invokes the new operator</strong>, and supplies all of the arguments to the constructor function as specified by the constructor annotation.</span></p>
</div></div>
<div class="sl-block" data-block-type="text" data-block-id="09e82aac7decec471bb20fbbc78921d1" style="height: auto; min-width: 30px; min-height: 30px; width: 960px; left: 0px; top: 645px;"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 13;">
<p>Source: <a href="https://docs.angularjs.org/api/auto/service/%24injector" target="_blank">https://docs.angularjs.org/api/auto/service/$injector</a></p>
</div></div></section><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 190px; height: auto;" data-block-id="825481fc5ce9ced7c740c8cb871ffe2c"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text" style="z-index: 10;">
<h2>Factory</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 264px; height: auto;" data-block-id="318d9980e86bc5bbcb11a24ac5abb16d"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;" dir="ui">
<ul>
<li>A component</li>
<li>Defined by a function</li>
<li>
<strong>Invoked</strong> by the <strong>$injector service</strong>
</li>
<li>
<span style="text-align:left">Return v</span>alue of invoke becomes the component</li>
</ul>
</div></div></section><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 270px; height: auto;" data-block-id="56b8245a10d146fa8c5462245636f939"><div class="sl-block-content" data-placeholder-tag="h1" data-placeholder-text="Title Text" style="z-index: 10;">
<h1>Demo</h1>
</div></div>
<div class="sl-block" data-block-type="text" data-block-id="504b831bfb5975bd97657773ccff8d2f" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 180px; top: 381px;"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p>Write a factory</p>
</div></div></section><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 190px; height: auto;" data-block-id="a8c2a409adbbfc39ece05012cdd963b9"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text" style="z-index: 10;">
<h2>Service</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 264px; height: auto;" data-block-id="1a9ee48c05093512c9ab1fb36ad41dc9"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<ul>
<li>A component</li>
<li>Defined by a function</li>
<li>
<strong>Instantiated</strong> by the <strong>$injector service</strong>
</li>
<li>Return value of i<span style="text-align:left">nstantiate</span> becomes the component</li>
</ul>
</div></div></section><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 70px; height: auto;" data-block-id="e714b689e12c0d195999bb6b37953aa2"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text" style="z-index: 11;">
<h2>Factory vs. Service</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 144px; height: auto;" data-block-id="a7e0658c98e54bab53a58139c2a54a50"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;" dir="ui">
<ul>
<li>Both components</li>
<li>Both defined by a function</li>
<li>Both injected with the <strong>$injector service</strong>
</li>
<li>One is invoked other is instantiated, <strong>service is called with new<strong></strong></strong>
</li>
<li>Return value become the component</li>
</ul>
<p><br></p>
<p style="text-align:left">Use a <strong>Factory</strong> to define a type that will be called with <strong>new</strong></p>
<p style="text-align:left">Use a <strong>Service</strong> to create an object that will be shared across all modules and components (<strong>singleton</strong>)</p>
</div></div></section><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 270px; height: auto;" data-block-id="a368c01358ddd2372bfa76d66b8d5b35"><div class="sl-block-content" data-placeholder-tag="h1" data-placeholder-text="Title Text" style="z-index: 10;">
<h1>Demo</h1>
</div></div>
<div class="sl-block" data-block-type="text" data-block-id="124ddc835930dcfb778b3fadfb4307e6" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 180px; top: 381px;"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p>Write a service</p>
</div></div></section></section><section class="stack"><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 190px; height: auto;" data-block-id="02381b2e09745e0b3ef76e86f25f5d38"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text">
<h2>Provider</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 265px; height: auto;" data-block-id="b31c5792a75d00d22715ebb98dc2a9df"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text">
<ul>
<li>A component</li>
<li>Defined by a function</li>
<li>Invoked with the <strong>$provider</strong>
</li>
<li>
<strong>Required</strong> to have a <strong>$get</strong> property</li>
<li>$get is invoked with the <strong>$injector service</strong>
</li>
</ul>
</div></div></section><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 270px; height: auto;" data-block-id="825509dc21b1af868b7a328a40cbb082"><div class="sl-block-content" data-placeholder-tag="h1" data-placeholder-text="Title Text" style="z-index: 10;">
<h1>Demo</h1>
</div></div>
<div class="sl-block" data-block-type="text" data-block-id="0acc714d0cd012e96e2f7a18e7a5dcaa" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 180px; top: 401px;"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p>Write a provider</p>
</div></div></section><section><div class="sl-block" data-block-type="code" data-block-id="d7d7b3bcce90bcc314519bcd7aaaa74f" style="min-width: 30px; min-height: 30px; width: 624px; height: 58px; left: 60px; top: 239px;"><div class="sl-block-content" style="z-index: 11; font-size: 257%;"><pre class="javascript"><code>"use the source" + luke;</code></pre></div></div>
<div class="sl-block" data-block-type="text" data-block-id="28980dd83eb5770c197ce3c7598971f8" style="height: auto; min-width: 30px; min-height: 30px; width: 803px; left: 30px; top: 140px;"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p><span style="font-size:56px">What is really going on here?</span></p>
</div></div>
<div class="sl-block" data-block-type="image" data-block-id="2bd8b428905138b888dba27340b297b9" style="min-width: 30px; min-height: 30px; width: 283.333333333333px; height: 425px; left: 560px; top: 246px;"><div class="sl-block-content" style="z-index: 0;"><img data-natural-width="200" data-natural-height="300" style="visibility: visible;" data-src="https://s-media-cache-ak0.pinimg.com/236x/51/1e/8e/511e8e864e3aba02646dce0e1cc58577.jpg"></div></div></section><section><div class="sl-block" data-block-type="code" data-block-id="759fb038e86d4cef0a842df07ae7c914" style="min-width: 30px; min-height: 30px; width: 934px; height: 279px; left: 13px; top: 71px;"><div class="sl-block-content" style="z-index: 11; font-size: 120%;"><pre class="javascript"><code>var providerCache = {};
function provider(name, provider_) {
if (isFunction(provider_) || isArray(provider_)) {
provider_ = providerInjector.instantiate(provider_);
}
if (!provider_.$get) {
throw "Provider '" + name + "' must define $get factory method.", name);
}
return providerCache[name + providerSuffix] = provider_;
}</code></pre></div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 960px; left: 0px; top: 647px;" data-block-id="0df41066604041679035e0960eb2b9f4"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p><span style="font-size:24px">See: <a href="http://iffycan.blogspot.ca/2013/05/angular-service-or-factory.html" target="_blank">http://iffycan.blogspot.ca/2013/05/angular-service-or-factory.html</a></span></p>
</div></div>
<div class="sl-block" data-block-type="code" data-block-id="474ee5f037cc787663bcf9622e6e6790" style="min-width: 30px; min-height: 30px; width: 934px; height: 130px; left: 13px; top: 360px;"><div class="sl-block-content fragment" style="z-index: 13; font-size: 120%;" data-fragment-index="0"><pre class="javascript"><code>function factory(name, factoryFn) {
return provider(name, {
$get: factoryFn
});
}</code></pre></div></div>
<div class="sl-block" data-block-type="code" data-block-id="d11d47fe568e5edbf538d4584032fa4d" style="min-width: 30px; min-height: 30px; width: 934px; height: 129px; left: 13px; top: 501px;"><div class="sl-block-content fragment" style="z-index: 14; border-width: 1px; font-size: 120%;" data-fragment-index="1"><pre class="java"><code>function service(name, constructor) {
return factory(name, ['$injector', function($injector) {
return $injector.instantiate(constructor);
}]);
}</code></pre></div></div>
<div class="sl-block" data-block-type="text" data-block-id="621b5b770201d0b3fcaf0bde1ba1ce24" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 180px; top: 8px;"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 15;">
<p><span style="font-size:48px">Latest Angular Source</span></p>
</div></div></section></section><section class="stack"><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 189px; height: auto;" data-block-id="91eb0797d2ebe246de71067061b9428e"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text">
<h2>How this works</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="width: 952px; left: 4px; top: 283px; height: auto;" data-block-id="6f8bf342c49fbaa88d22f3cecba1a33a"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text">
<ol>
<li><span style="font-size:24px"><strong>$provider</strong> created with component "$provider", which is itself</span></li>
<li><span style="font-size:24px"><strong>$injector</strong> created with component "$injector", which is itself</span></li>
<li><span style="font-size:24px">All components registered with <strong>module.provider</strong> are added to <strong>$provider</strong></span></li>
<li><span style="font-size:24px">Angular runs all blocks registered with <strong>module.config</strong></span></li>
<li><span style="font-size:24px"><span style="text-align:left"><strong>$get</strong> property of c</span>omponents in the <strong>$provider</strong> are added to the <strong>$injector</strong></span></li>
<li><span style="font-size:24px">Angular runs all blocks registered with <strong>module.run</strong></span></li>
</ol>
</div></div></section><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 190px; height: auto;" data-block-id="dbdd0600a27d45b687c62dfde73fc3a1"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text" style="z-index: 10;">
<h2>Why do we want $get and providers?</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 338px; height: auto;" data-block-id="26d90856baaa66201f55f5bd53da874d"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<ul>
<li>To be able to configure our services at run time</li>
<li>Inject settings and configuration between modules</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="code" data-block-id="3445ab019d5352c682091bf808944ef4" style="min-width: 30px; min-height: 30px; width: 139px; height: 74px; left: 599px; top: 190px;"><div class="sl-block-content" style="z-index: 13; font-size: 322%;"><pre><code>$get</code></pre></div></div></section><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 270px; height: auto;" data-block-id="0a0cec7e0279c17018abda889f45de18"><div class="sl-block-content" data-placeholder-tag="h1" data-placeholder-text="Title Text" style="z-index: 10;">
<h1>Demo</h1>
</div></div>
<div class="sl-block" data-block-type="text" data-block-id="60cc92b08c1bc2e74eac8583f3ed1a31" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 180px; top: 401px;"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p>Write a <em>useful</em> provider</p>
</div></div></section><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 268px; height: auto;" data-block-id="97662edd21e4c535f617af05a66ca166"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text" style="z-index: 11;">
<h2>Angular Router</h2>
</div></div>
<div class="sl-block" data-block-type="code" data-block-id="2f1b132c31f7cb49eb13428a16e6d464" style="min-width: 30px; min-height: 30px; width: 800px; height: 368px; left: 80px; top: 330px;"><div class="sl-block-content fragment" style="z-index: 12; font-size: 150%;" data-fragment-index="0"><pre class="javascript"><code>angular.module('ngRoute', []).
provider('$route', [function () {
var routeCache = {};
return {
when: function (url_template, options) {
routeCache[url_template] = options;
},
$get: ['...', function (...) { ... }
};
}]);
</code></pre></div></div>
<div class="sl-block" data-block-type="code" data-block-id="5a18add3d92db210ff066609880f6aea" style="min-width: 30px; min-height: 30px; width: 800px; height: 271px; left: 80px; top: 6px;"><div class="sl-block-content" style="z-index: 13; font-size: 120%;"><pre class="javascript"><code>angular.module('myModule', ['ngRoute']).
config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/my-route/:some_param', {
controller: 'myController as my_controller',
templateUrl: 'my_template.html',
resolve: {
dependency: ['$route', function ($route) {...}]
}
});
}]);</code></pre></div></div></section></section><section class="stack"><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 79px; top: 103px; height: auto;" data-block-id="f001647f36c6cb1170e72f92a40b216e"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text">
<h2>Key and Data Injection</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="width: 826px; left: 67px; top: 303.5px; height: auto;" data-block-id="4d77fa44be179dcfe84c122ef3aa5e9e"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" dir="ui">
<p style="text-align:left"><strong>Problem:</strong></p>
<ul>
<li>Setting API keys in each environment while keeping the application generic</li>
<li>Adding data to the page on initial request the server</li>
</ul>
<p style="text-align:left"><strong>Requirements:</strong></p>
<ul>
<li>Keeping JS builds generic, by l<span style="text-align:left">oading keys based on environment </span>
</li>
<li>Reducing number of requests, to improve preformance</li>
</ul>
</div></div></section><section><div class="sl-block" data-block-type="code" data-block-id="119f64d83554c1cc2993b5a4e2821454" style="min-width: 30px; min-height: 30px; width: 944px; height: 442px; left: 8px; top: 129px;"><div class="sl-block-content" style="z-index: 11; font-size: 130%;"><pre><code>angular.module('spacelist').
config(['webServiceKeysProvider', function (webServiceKeysProvider) {
webServiceKeysProvider.
setGoogleAnalyticsKey('&lt;%= GA_KEY =&gt;').
setKissmetricsId('&lt;%= KM_ID =&gt;').
setGoogleMapsKey('&lt;%= GMAPS_KEY =&gt;').
setStripePublicKey('&lt;%= STRIPE_PUB_KEY =&gt;');
}]).
config(['userManagerProvider', function (userManagerProvider) {
userManagerProvider.inject_current_user(&lt;%= current_user.as_json() =&gt;);
}]).
config(['appManagerProvider', function (appManagerProvider) {
appManagerProvider.inject_app_data(&lt;%= app_data.to_json() %&gt;);
}]);
</code></pre></div></div></section><section><div class="sl-block" data-block-type="code" style="width: 944px; height: 568px; left: 8px; top: 66px;" data-block-id="4b398ed5404117e2978e5f4b7271ce4d"><div class="sl-block-content" style="z-index: 11; font-size: 130%;"><pre><code>angular.module('webServices')
.service('googleMapsLoader', [
'$window', 'ScriptInjector', 'webServiceKeys', function
($window, ScriptInjector, webServiceKeys) {
var maps_callback_name = 'google_maps_ready';
this.load = function (callback) {
if (typeof $window.google === 'object') {
callback($window.google);
} else {
$window[maps_callback_name] = function () {
callback($window.google);
}
new ScriptInjector(
'//maps.googleapis.com/maps/api/js?v=3.18' +
'&amp;key=' + webServiceKeys.getGoogleMapsKey() +
'&amp;callback=' + maps_callback_name).
inject();
}
};
}]);</code></pre></div></div></section></section><section class="stack"><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 81px; top: 103px; height: auto;" data-block-id="6ed3f4c55dea3b0ba415181bb3169ba4"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text">
<h2>Modals</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="width: 822px; left: 69px; top: 284.5px; height: auto;" data-block-id="5764078cdc79096857a3c77c7bc7e649"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text">
<p style="text-align:left"><strong>Problem:</strong></p>
<ul>
<li>Need to show modal content to user depending on various user actions and events</li>
</ul>
<p style="text-align:left"><strong>Requirements:</strong></p>
<ul>
<li>Reusable across the entire site</li>
<li>Have a consistent UI, without code duplication</li>
<li>Data can be passed to modals to modify the behaviour</li>
</ul>
</div></div></section><section><div class="sl-block" data-block-type="code" data-block-id="18ae612c5d783742b81a2c369b20ee5e" style="min-width: 30px; min-height: 30px; width: 910px; height: 354px; left: 25px; top: 33px;"><div class="sl-block-content" style="z-index: 11; font-size: 154%;"><pre><code>modalProvider.add('loginSignup', {
controller: 'LoginSignupController as login_signup_ctrl',
templateUrl: 'angular-app/auth/login_signup.html',
});
...
modalProvider.add('purchaseBCA', {
controller: 'BCAPurchaseController as bca_purchase_ctrl',
templateUrl: 'angular-app/bca/modals/bca_purchase.html',
});</code></pre></div></div>
<div class="sl-block" data-block-type="code" data-block-id="615571ff65cb576f7c1182ef95743dc5" style="min-width: 30px; min-height: 30px; width: 910px; height: 171px; left: 25px; top: 435px;"><div class="sl-block-content" style="z-index: 12; font-size: 156%;"><pre><code>modal.show('loginSignup', next: '/privileged_url/');
...
modal.show('purchaseBCA', {property: property, bca: bca});</code></pre></div></div></section><section><div class="sl-block" data-block-type="code" data-block-id="39e7e69c65f1b146bb6ab6505f7d7a84" style="min-width: 30px; min-height: 30px; width: 937px; height: 635px; left: 12px; top: 33px;"><div class="sl-block-content" style="z-index: 11; font-size: 160%;"><pre><code>"use strict";
angular.module('spacelist.core').
provider('modal', [function () {
var modalProvider = {},
modals = {};
modalProvider.add = function (name, options) {
modals[name] = _.extend({
preventClose: false,
locals: {},
}, options);
return this;
};
modalProvider.$get = [...];
return modalProvider;
}]);
</code></pre></div></div></section><section><div class="sl-block" data-block-type="code" style="width: 937px; height: 681px; left: 16px; top: 12px;" data-block-id="73f8177649a518cec3c71b6587902ec6"><div class="sl-block-content" style="z-index: 11; font-size: 115%;"><pre><code>[..., function ($rootScope, $controller, $compile, $window, loadTemplate) {
return {
show: function (name, locals) {
var modal_options = modals[name],
modal_element = angular.element(
'&lt;div class="modal modal-show"&gt;' +
'&lt;div class="modal-wrapper"&gt;&lt;div class="modal-content"&gt;&lt;/div&gt;&lt;/div&gt;' +
'&lt;div class="modal-cover"&gt;&lt;/div&gt;&lt;/div&gt;'),
content_element = modal_element.find('.modal-content'),
modalController = {
show: function () { angular.element('body').append(modal_element); },
close: function () { modal_element.remove(); }
},
controller_locals = angular.extend({}, modal_options.locals, locals, {
$scope: $rootScope.$new(true),
modalController: modalController
});
$controller(modal_options.controller, controller_locals);
content_element.html(loadTemplate(modal_options.templateUrl));
var link = $compile(content_element.contents());
link(controller_locals.$scope);
modalController.show();
return modalController;
}};
}}];
</code></pre></div></div></section><section><div class="sl-block" data-block-type="code" data-block-id="6be88531c12214a4242567ba29559570" style="min-width: 30px; min-height: 30px; width: 850px; height: 400px; left: 55px; top: 247px;"><div class="sl-block-content" style="z-index: 11; font-size: 150%;"><pre><code>var cover_element = modal_element.find('.modal-cover')
if (!modal_options.preventClose) {
cover_element.on('click', modalController.close);
$window.addEventListener('keydown', escHandler);
}
function escHandler(event) {
if (event.keyCode === 27) {
modalController.close();
$window.removeEventListener('keydown', escHandler);
}
}</code></pre></div></div>
<div class="sl-block" data-block-type="text" style="width: 800px; left: 81px; top: 103px; height: auto;" data-block-id="2008ec24018188a364cc4ab3a9df581f"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text" style="z-index: 12;">
<h2>Modals that can be closed</h2>
</div></div></section></section><section class="stack"><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 79px; top: 104px; height: auto;" data-block-id="576b4aa1a6c064b787ec6933fb7850ef"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text">
<h2>Polymorphic UI Element Injection</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 303px; height: auto;" data-block-id="41202c579bc7eb488846953b88f63806"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text">
<p style="text-align:left"><strong>Problem:</strong></p>
<ul>
<li>Different UI component to be shown based on object</li>
</ul>
<p style="text-align:left"><strong>Requirements</strong></p>
<ul>
<li>Module should not contain all the components for each UI element</li>
<li>Reuse components from angular routes, specifically controllers and services</li>
</ul>
</div></div></section><section><div class="sl-block" data-block-type="code" style="width: 947px; height: 688px; left: 7px; top: 5px;" data-block-id="c38eb79ecd5f55e7a41cfc8f8498b19d"><div class="sl-block-content" style="z-index: 11; font-size: 143%; border-style: solid; border-width: 1px;"><pre><code>angular.module('spacelist.profile', ['spacelist.conversations'])
.config([
'conversableTypeProvider', function
(conversableTypeProvider) {
conversableTypeProvider.register('Profile', {
controller: 'profileController as profile_ctrl',
templateUrl: 'angular-app/profile/profile_conversable.html',
resolve: {
user: ['params', 'User', function (params, User) {
return User.query({profile_id: params.conversable_id}).
$promise.then(function (users) {
if (users.length === 0) {
throw "Unknown user";
}
return users[0];
});
}]
},
});
}]);</code></pre></div></div></section><section><div class="sl-block" data-block-type="text" style="width: 924px; left: 18px; top: 227px; height: auto;" data-block-id="288c121e3595681b2eb86e8f5ecc472a"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text" style="z-index: 10;" dir="ui">
<h2>Adding Element to a Page</h2>
</div></div>
<div class="sl-block" data-block-type="code" data-block-id="d8195258fac006ba43b85aa757fba1d8" style="min-width: 30px; min-height: 30px; width: 800px; height: 140px; left: 80px; top: 313px;"><div class="sl-block-content" style="z-index: 13; font-size: 150%;"><pre><code>&lt;conversable
conversable-type="conversable.type"
conversable-id="conversable.id"&gt;
&lt;/conversable&gt;</code></pre></div></div></section><section><div class="sl-block" data-block-type="code" data-block-id="b7cd08b7681131298fac1ac696e8bd3b" style="min-width: 30px; min-height: 30px; width: 947px; height: 688px; left: 7px; top: 6px;"><div class="sl-block-content" style="z-index: 11; font-size: 143%;"><pre><code>angular.module('spacelist.conversations').
directive('conversable', [
'$compile', '$controller', 'conversableType', function
($compile, $controller, conversableType) {
return {
scope: {
type: '=conversableType',
id: '=conversableId'
},
link: function (scope, element) {
scope.$watch('type + id', function () {
if (scope.type &amp;&amp; scope.id) {
build_element();
} else {
element.empty();
}
});
}
function build_element() { ... }
};
}]);
</code></pre></div></div></section><section><div class="sl-block" data-block-type="code" style="width: 947px; height: 688px; left: 6px; top: 5px;" data-block-id="d15d08169a67cac89885b51c2503642c"><div class="sl-block-content" style="z-index: 11; font-size: 143%; border-style: solid; border-width: 1px;"><pre><code>function build_element() {
var conversable_component =
conversableType.getComponent(scope.type),
child_scope = scope.$new(true);
element.addClass('loading');
element.empty();
conversable_component.resolveLocalsFor(scope.id).
then(function (locals) {
var controller = conversable_component.getController();
element.html(locals.template);
var link = $compile(element.contents());
locals.$scope = child_scope;
$controller(controller, locals);
link(child_scope);
}).
catch(show_error).
finally(element.removeClass.bind(element, 'loading'));
}</code></pre></div></div></section></section><section><div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 190px; height: auto;" data-block-id="9cadde2eb181f07092348fc9775b7b86"><div class="sl-block-content" data-placeholder-tag="h2" data-placeholder-text="Title Text" style="z-index: 10;">
<h2>Questions?</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="width: 800px; left: 80px; top: 264px; height: auto;" data-block-id="6076f27a6ab5e2b2c369bd83328a79ee"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" dir="ui" style="z-index: 14;">
<p> </p>
<p>Tyler Jones &lt;tyler@squirly.ca&gt;</p>
<p>GitHub: @squirly</p>
</div></div>
<div class="sl-block" data-block-type="image" style="min-width: 30px; min-height: 30px; width: 616px; height: 308px; left: 172px; top: 350px;" data-block-id="c11c6aa38461a8388aec1f85124d449e"><div class="sl-block-content fragment" style="z-index: 11; border-width: 1px;" href="" data-fragment-index="0"><img data-natural-width="300" data-natural-height="150" style="visibility: visible;" data-src="http://spacelist.ca/assets/v2/icon-wordmark-0388b358b2257e20ab4e94f32841389d.svg"></div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 324px; left: 558px; top: 525px;" data-block-id="7f960a2ab5450ac7ee2e09a1c5fce153"><div class="sl-block-content fragment" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12; color: rgb(204, 0, 0); background-color: rgba(0, 0, 0, 0);" data-has-custom-html="" data-fragment-index="0">
<p><span style="font-size:56px;text-shadow: 0px 0px 2px red; "><strong>Is Hiring!</strong></span></p>
</div></div></section>
</div>
</div>
<script>
var SLConfig = {"current_user":{"id":308356,"username":"tylerjones","name":"Tyler Jones","description":null,"thumbnail_url":"https://lh4.googleusercontent.com/-qopoXAR21vk/AAAAAAAAAAI/AAAAAAAABqs/UzJxPqCIZBM/photo.jpg?sz=50","pro":false,"enterprise":false,"enterprise_manager":false,"registered":true,"email":"tylerjones64@gmail.com","notify_on_receipt":true,"billing_address":null,"editor_tutorial_completed":true,"settings":{"id":136929,"present_controls":true,"present_upsizing":true,"editor_grid":true,"editor_snap":true,"developer_mode":true}},"deck":{"id":388440,"slug":"decoupling-components-in-angularjs-using-modules","title":"Decoupling Components in AngularJs Using Modules","description":"","visibility":"all","published_at":"2015-04-14T08:26:42.252Z","sanitize_messages":null,"thumbnail_url":"https://s3.amazonaws.com/media-p.slid.es/thumbnails/secure/99a7f6/decks.jpg","view_count":1,"user":{"id":308356,"username":"tylerjones","name":"Tyler Jones","description":null,"thumbnail_url":"https://lh4.googleusercontent.com/-qopoXAR21vk/AAAAAAAAAAI/AAAAAAAABqs/UzJxPqCIZBM/photo.jpg?sz=50","pro":false,"enterprise":false,"enterprise_manager":false,"registered":true},"background_transition":"slide","transition":"slide","theme_id":null,"theme_font":"montserrat","theme_color":"white-blue","auto_slide_interval":0,"comments_enabled":true,"forking_enabled":true,"rolling_links":false,"center":false,"should_loop":false,"rtl":false,"version":2,"access_token":"y7MxwpEApfHhxQgFqgWgNpHKLjxr","notes":{"fab289abf05b7577452c49022ec9d41a":"Software Engineer at SpaceList\n\nBuild applications with this family"}}};
</script>
<script>
!function(e,t){"function"==typeof define&&define.amd?define(function(){return e.Reveal=t(),e.Reveal}):"object"==typeof exports?module.exports=t():e.Reveal=t()}(this,function(){"use strict";function e(e){if(t(),Pr.transforms2d||Pr.transforms3d){Cr.wrapper=document.querySelector(".reveal"),Cr.slides=document.querySelector(".reveal .slides"),window.addEventListener("load",W,!1);var n=vr.getQueryHash();"undefined"!=typeof n.dependencies&&delete n.dependencies,h(xr,e),h(xr,n),q(),r()}else{document.body.setAttribute("class","no-transforms");for(var a=document.getElementsByTagName("img"),i=0,o=a.length;o>i;i++){var s=a[i];s.getAttribute("data-src")&&(s.setAttribute("src",s.getAttribute("data-src")),s.removeAttribute("data-src"))}}}function t(){Pr.transforms3d="WebkitPerspective"in document.body.style||"MozPerspective"in document.body.style||"msPerspective"in document.body.style||"OPerspective"in document.body.style||"perspective"in document.body.style,Pr.transforms2d="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style,Pr.requestAnimationFrameMethod=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,Pr.requestAnimationFrame="function"==typeof Pr.requestAnimationFrameMethod,Pr.canvas=!!document.createElement("canvas").getContext,Pr.touch=!!("ontouchstart"in window),Pr.overviewTransitions=!/Version\/[\d\.]+.*Safari/.test(navigator.userAgent),wr=/(iphone|ipod|ipad|android)/gi.test(navigator.userAgent)}function r(){function e(){a.length&&head.js.apply(null,a),n()}function t(t){head.ready(t.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],function(){"function"==typeof t.callback&&t.callback.apply(this),0===--i&&e()})}for(var r=[],a=[],i=0,o=0,s=xr.dependencies.length;s>o;o++){var c=xr.dependencies[o];(!c.condition||c.condition())&&(c.async?a.push(c.src):r.push(c.src),t(c))}r.length?(i=r.length,head.js.apply(null,r)):e()}function n(){a(),u(),s(),at(),p(),kt(),ut(!0),setTimeout(function(){Cr.slides.classList.remove("no-transition"),qr=!0,T("ready",{indexh:hr,indexv:gr,currentSlide:yr})},1),x()&&(v(),"complete"===document.readyState?o():window.addEventListener("load",o))}function a(){Cr.slides.classList.add("no-transition"),Cr.background=c(Cr.wrapper,"div","backgrounds",null),Cr.progress=c(Cr.wrapper,"div","progress","<span></span>"),Cr.progressbar=Cr.progress.querySelector("span"),c(Cr.wrapper,"aside","controls",'<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>'),Cr.slideNumber=c(Cr.wrapper,"div","slide-number",""),c(Cr.wrapper,"div","pause-overlay",null),Cr.controls=document.querySelector(".reveal .controls"),Cr.theme=document.querySelector("#theme"),Cr.wrapper.setAttribute("role","application"),Cr.controlsLeft=g(document.querySelectorAll(".navigate-left")),Cr.controlsRight=g(document.querySelectorAll(".navigate-right")),Cr.controlsUp=g(document.querySelectorAll(".navigate-up")),Cr.controlsDown=g(document.querySelectorAll(".navigate-down")),Cr.controlsPrev=g(document.querySelectorAll(".navigate-prev")),Cr.controlsNext=g(document.querySelectorAll(".navigate-next")),Cr.statusDiv=i()}function i(){var e=document.getElementById("aria-status-div");return e||(e=document.createElement("div"),e.style.position="absolute",e.style.height="1px",e.style.width="1px",e.style.overflow="hidden",e.style.clip="rect( 1px, 1px, 1px, 1px )",e.setAttribute("id","aria-status-div"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),Cr.wrapper.appendChild(e)),e}function o(){var e=z(window.innerWidth,window.innerHeight),t=Math.floor(e.width*(1+xr.margin)),r=Math.floor(e.height*(1+xr.margin)),n=e.width,a=e.height;L("@page{size:"+t+"px "+r+"px; margin: 0;}"),L(".reveal section>img, .reveal section>video, .reveal section>iframe{max-width: "+n+"px; max-height:"+a+"px}"),document.body.classList.add("print-pdf"),document.body.style.width=t+"px",document.body.style.height=r+"px",g(Cr.wrapper.querySelectorAll(kr)).forEach(function(e){if(e.classList.contains("stack")===!1){var i=(t-n)/2,o=(r-a)/2,s=E(e),c=Math.max(Math.ceil(s/r),1);(1===c&&xr.center||e.classList.contains("center"))&&(o=Math.max((r-s)/2,0)),e.style.left=i+"px",e.style.top=o+"px",e.style.width=n+"px";var l=e.querySelector(".slide-background");l&&(l.style.width=t+"px",l.style.height=r*c+"px",l.style.top=-o+"px",l.style.left=-i+"px")}}),g(Cr.wrapper.querySelectorAll(kr+" .fragment")).forEach(function(e){e.classList.add("visible")})}function s(){Cr.slides.querySelector("iframe")&&setInterval(function(){(0!==Cr.wrapper.scrollTop||0!==Cr.wrapper.scrollLeft)&&(Cr.wrapper.scrollTop=0,Cr.wrapper.scrollLeft=0)},500)}function c(e,t,r,n){for(var a=e.querySelectorAll("."+r),i=0;i<a.length;i++){var o=a[i];if(o.parentNode===e)return o}var s=document.createElement(t);return s.classList.add(r),"string"==typeof n&&(s.innerHTML=n),e.appendChild(s),s}function l(){var e=x();Cr.background.innerHTML="",Cr.background.classList.add("no-transition"),g(Cr.wrapper.querySelectorAll(Ar)).forEach(function(t){var r;r=e?d(t,t):d(t,Cr.background),g(t.querySelectorAll("section")).forEach(function(t){e?d(t,t):d(t,r),r.classList.add("stack")})}),xr.parallaxBackgroundImage?(Cr.background.style.backgroundImage='url("'+xr.parallaxBackgroundImage+'")',Cr.background.style.backgroundSize=xr.parallaxBackgroundSize,setTimeout(function(){Cr.wrapper.classList.add("has-parallax-background")},1)):(Cr.background.style.backgroundImage="",Cr.wrapper.classList.remove("has-parallax-background"))}function d(e,t){var r={background:e.getAttribute("data-background"),backgroundSize:e.getAttribute("data-background-size"),backgroundImage:e.getAttribute("data-background-image"),backgroundVideo:e.getAttribute("data-background-video"),backgroundIframe:e.getAttribute("data-background-iframe"),backgroundColor:e.getAttribute("data-background-color"),backgroundRepeat:e.getAttribute("data-background-repeat"),backgroundPosition:e.getAttribute("data-background-position"),backgroundTransition:e.getAttribute("data-background-transition")},n=document.createElement("div");n.className="slide-background "+e.className.replace(/present|past|future/,""),r.background&&(/^(http|file|\/\/)/gi.test(r.background)||/\.(svg|png|jpg|jpeg|gif|bmp)$/gi.test(r.background)?e.setAttribute("data-background-image",r.background):n.style.background=r.background),(r.background||r.backgroundColor||r.backgroundImage||r.backgroundVideo||r.backgroundIframe)&&n.setAttribute("data-background-hash",r.background+r.backgroundSize+r.backgroundImage+r.backgroundVideo+r.backgroundIframe+r.backgroundColor+r.backgroundRepeat+r.backgroundPosition+r.backgroundTransition),r.backgroundSize&&(n.style.backgroundSize=r.backgroundSize),r.backgroundColor&&(n.style.backgroundColor=r.backgroundColor),r.backgroundRepeat&&(n.style.backgroundRepeat=r.backgroundRepeat),r.backgroundPosition&&(n.style.backgroundPosition=r.backgroundPosition),r.backgroundTransition&&n.setAttribute("data-background-transition",r.backgroundTransition),t.appendChild(n),e.classList.remove("has-dark-background"),e.classList.remove("has-light-background");var a=window.getComputedStyle(n).backgroundColor;if(a){var i=k(a);i&&0!==i.a&&e.classList.add(A(a)<128?"has-dark-background":"has-light-background")}return n}function u(){xr.postMessage&&window.addEventListener("message",function(e){var t=e.data;"{"===t.charAt(0)&&"}"===t.charAt(t.length-1)&&(t=JSON.parse(t),t.method&&"function"==typeof vr[t.method]&&vr[t.method].apply(vr,t.args))},!1)}function p(e){var t=Cr.wrapper.querySelectorAll(kr).length;Cr.wrapper.classList.remove(xr.transition),"object"==typeof e&&h(xr,e),Pr.transforms3d===!1&&(xr.transition="linear"),Cr.wrapper.classList.add(xr.transition),Cr.wrapper.setAttribute("data-transition-speed",xr.transitionSpeed),Cr.wrapper.setAttribute("data-background-transition",xr.backgroundTransition),Cr.controls.style.display=xr.controls?"block":"none",Cr.progress.style.display=xr.progress?"block":"none",xr.rtl?Cr.wrapper.classList.add("rtl"):Cr.wrapper.classList.remove("rtl"),xr.center?Cr.wrapper.classList.add("center"):Cr.wrapper.classList.remove("center"),xr.pause===!1&&J(),xr.mouseWheel?(document.addEventListener("DOMMouseScroll",Gt,!1),document.addEventListener("mousewheel",Gt,!1)):(document.removeEventListener("DOMMouseScroll",Gt,!1),document.removeEventListener("mousewheel",Gt,!1)),xr.rollingLinks?N():I(),xr.previewLinks?C():(P(),C("[data-preview-link]")),Lr&&(Lr.destroy(),Lr=null),t>1&&xr.autoSlide&&xr.autoSlideStoppable&&Pr.canvas&&Pr.requestAnimationFrame&&(Lr=new fr(Cr.wrapper,function(){return Math.min(Math.max((Date.now()-zr)/Wr,0),1)}),Lr.on("click",pr),Fr=!1),xr.fragments===!1&&g(Cr.slides.querySelectorAll(".fragment")).forEach(function(e){e.classList.add("visible"),e.classList.remove("current-fragment")}),nt()}function f(){if(Rr=!0,window.addEventListener("hashchange",sr,!1),window.addEventListener("resize",cr,!1),xr.touch&&(Cr.wrapper.addEventListener("touchstart",_t,!1),Cr.wrapper.addEventListener("touchmove",Kt,!1),Cr.wrapper.addEventListener("touchend",Vt,!1),window.navigator.pointerEnabled?(Cr.wrapper.addEventListener("pointerdown",Zt,!1),Cr.wrapper.addEventListener("pointermove",Jt,!1),Cr.wrapper.addEventListener("pointerup",Qt,!1)):window.navigator.msPointerEnabled&&(Cr.wrapper.addEventListener("MSPointerDown",Zt,!1),Cr.wrapper.addEventListener("MSPointerMove",Jt,!1),Cr.wrapper.addEventListener("MSPointerUp",Qt,!1))),xr.keyboard&&(document.addEventListener("keydown",$t,!1),document.addEventListener("keypress",Ut,!1)),xr.progress&&Cr.progress&&Cr.progress.addEventListener("click",er,!1),xr.focusBodyOnPageVisibilityChange){var e;"hidden"in document?e="visibilitychange":"msHidden"in document?e="msvisibilitychange":"webkitHidden"in document&&(e="webkitvisibilitychange"),e&&document.addEventListener(e,lr,!1)}var t=["touchstart","click"];navigator.userAgent.match(/android/gi)&&(t=["touchstart"]),t.forEach(function(e){Cr.controlsLeft.forEach(function(t){t.addEventListener(e,tr,!1)}),Cr.controlsRight.forEach(function(t){t.addEventListener(e,rr,!1)}),Cr.controlsUp.forEach(function(t){t.addEventListener(e,nr,!1)}),Cr.controlsDown.forEach(function(t){t.addEventListener(e,ar,!1)}),Cr.controlsPrev.forEach(function(t){t.addEventListener(e,ir,!1)}),Cr.controlsNext.forEach(function(t)