diff options
Diffstat (limited to 'js')
-rw-r--r-- | js/reveal.js | 411 | ||||
-rw-r--r-- | js/reveal.min.js | 4 |
2 files changed, 358 insertions, 57 deletions
diff --git a/js/reveal.js b/js/reveal.js index d3d6b23..3e9b160 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -44,7 +44,7 @@ var Reveal = (function(){ // Enable the slide overview mode overview: true, - // Vertical centring of slides + // Vertical centering of slides center: true, // Enables touch navigation on devices with touch input @@ -68,6 +68,9 @@ var Reveal = (function(){ // by using a data-autoslide attribute on your slides autoSlide: 0, + // Stop auto-sliding after user input + autoSlideStoppable: true, + // Enable slide navigation via mouse wheel mouseWheel: false, @@ -80,6 +83,9 @@ var Reveal = (function(){ // Opens links in an iframe preview overlay previewLinks: false, + // Focuses body when page changes visiblity to ensure keyboard shortcuts work + focusBodyOnPageVisiblityChange: true, + // Theme (see /css/theme) theme: null, @@ -108,9 +114,6 @@ var Reveal = (function(){ // Flags if reveal.js is loaded (has dispatched the 'ready' event) loaded = false, - // The current auto-slide duration - autoSlide = 0, - // The horizontal and vertical index of the currently active slide indexh, indexv, @@ -130,11 +133,8 @@ var Reveal = (function(){ // Cached references to DOM elements dom = {}, - // Client support for CSS 3D transforms, see #checkCapabilities() - supports3DTransforms, - - // Client support for CSS 2D transforms, see #checkCapabilities() - supports2DTransforms, + // Features supported by the browser, see #checkCapabilities() + features = {}, // Client is a mobile device, see #checkCapabilities() isMobileDevice, @@ -142,9 +142,6 @@ var Reveal = (function(){ // Throttles mouse wheel navigation lastMouseWheelStep = 0, - // An interval used to automatically move on to the next slide - autoSlideTimeout = 0, - // Delays updates to the URL due to a Chrome thumbnailer bug writeURLTimeout = 0, @@ -157,6 +154,15 @@ var Reveal = (function(){ // Flags if the interaction event listeners are bound eventsAreBound = false, + // The current auto-slide duration + autoSlide = 0, + + // Auto slide properties + autoSlidePlayer, + autoSlideTimeout = 0, + autoSlideStartTime = -1, + autoSlidePaused = false, + // Holds information about the currently ongoing touch input touch = { startX: 0, @@ -174,7 +180,7 @@ var Reveal = (function(){ checkCapabilities(); - if( !supports2DTransforms && !supports3DTransforms ) { + if( !features.transforms2d && !features.transforms3d ) { document.body.setAttribute( 'class', 'no-transforms' ); // If the browser doesn't support core features we won't be @@ -187,6 +193,7 @@ var Reveal = (function(){ // Copy options over to our config object extend( config, options ); + extend( config, Reveal.getQueryHash() ); // Hide the address bar in mobile browsers hideAddressBar(); @@ -202,18 +209,23 @@ var Reveal = (function(){ */ function checkCapabilities() { - supports3DTransforms = 'WebkitPerspective' in document.body.style || + features.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; - supports2DTransforms = 'WebkitTransform' in document.body.style || + features.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; + features.requestAnimationFrameMethod = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame; + features.requestAnimationFrame = typeof features.requestAnimationFrameMethod === 'function'; + + features.canvas = !!document.createElement( 'canvas' ).getContext; + isMobileDevice = navigator.userAgent.match( /(iphone|ipod|android)/gi ); } @@ -428,7 +440,7 @@ var Reveal = (function(){ if( data.background ) { // Auto-wrap image urls in url(...) - if( /^(http|file|\/\/)/gi.test( data.background ) || /\.(png|jpg|jpeg|gif|bmp)$/gi.test( data.background ) ) { + if( /^(http|file|\/\/)/gi.test( data.background ) || /\.(svg|png|jpg|jpeg|gif|bmp)$/gi.test( data.background ) ) { element.style.backgroundImage = 'url('+ data.background +')'; } else { @@ -506,6 +518,8 @@ var Reveal = (function(){ */ function configure( options ) { + var numberOfSlides = document.querySelectorAll( SLIDES_SELECTOR ).length; + dom.wrapper.classList.remove( config.transition ); // New config options may be passed when this method @@ -513,7 +527,7 @@ var Reveal = (function(){ if( typeof options === 'object' ) extend( config, options ); // Force linear transition based on browser capabilities - if( supports3DTransforms === false ) config.transition = 'linear'; + if( features.transforms3d === false ) config.transition = 'linear'; dom.wrapper.classList.add( config.transition ); @@ -563,6 +577,20 @@ var Reveal = (function(){ enablePreviewLinks( '[data-preview-link]' ); } + // Auto-slide playback controls + if( numberOfSlides > 1 && config.autoSlide && config.autoSlideStoppable && features.canvas && features.requestAnimationFrame ) { + autoSlidePlayer = new Playback( dom.wrapper, function() { + return Math.min( Math.max( ( Date.now() - autoSlideStartTime ) / autoSlide, 0 ), 1 ); + } ); + + autoSlidePlayer.on( 'click', onAutoSlidePlayerClick ); + autoSlidePaused = false; + } + else if( autoSlidePlayer ) { + autoSlidePlayer.destroy(); + autoSlidePlayer = null; + } + // Load the theme in the config, if it's not already loaded if( config.theme && dom.theme ) { var themeURL = dom.theme.getAttribute( 'href' ); @@ -606,10 +634,28 @@ var Reveal = (function(){ document.addEventListener( 'keydown', onDocumentKeyDown, false ); } - if ( config.progress && dom.progress ) { + if( config.progress && dom.progress ) { dom.progress.addEventListener( 'click', onProgressClicked, false ); } + if( config.focusBodyOnPageVisiblityChange ) { + var visibilityChange; + + if( 'hidden' in document ) { + visibilityChange = 'visibilitychange'; + } + else if( 'msHidden' in document ) { + visibilityChange = 'msvisibilitychange'; + } + else if( 'webkitHidden' in document ) { + visibilityChange = 'webkitvisibilitychange'; + } + + if( visibilityChange ) { + document.addEventListener( visibilityChange, onPageVisibilityChange, false ); + } + } + [ 'touchstart', 'click' ].forEach( function( eventName ) { dom.controlsLeft.forEach( function( el ) { el.addEventListener( eventName, onNavigateLeftClicked, false ); } ); dom.controlsRight.forEach( function( el ) { el.addEventListener( eventName, onNavigateRightClicked, false ); } ); @@ -812,16 +858,6 @@ var Reveal = (function(){ */ function removeAddressBar() { - // Portrait and not Chrome for iOS - if( window.orientation === 0 && !/crios/gi.test( navigator.userAgent ) ) { - document.documentElement.style.overflow = 'scroll'; - document.body.style.height = '120%'; - } - else { - document.documentElement.style.overflow = ''; - document.body.style.height = '100%'; - } - setTimeout( function() { window.scrollTo( 0, 1 ); }, 10 ); @@ -846,7 +882,7 @@ var Reveal = (function(){ */ function enableRollingLinks() { - if( supports3DTransforms && !( 'msPerspective' in document.body.style ) ) { + if( features.transforms3d && !( 'msPerspective' in document.body.style ) ) { var anchors = document.querySelectorAll( SLIDES_SELECTOR + ' a:not(.image)' ); for( var i = 0, len = anchors.length; i < len; i++ ) { @@ -1566,6 +1602,8 @@ var Reveal = (function(){ // Update the URL hash writeURL(); + cueAutoSlide(); + } /** @@ -1676,18 +1714,6 @@ var Reveal = (function(){ state = state.concat( slideState.split( ' ' ) ); } - // If this slide has a data-autoslide attribute associated use this as - // autoSlide value otherwise use the global configured time - var slideAutoSlide = slides[index].getAttribute( 'data-autoslide' ); - if( slideAutoSlide ) { - autoSlide = parseInt( slideAutoSlide, 10 ); - } - else { - autoSlide = config.autoSlide; - } - - cueAutoSlide(); - } else { // Since there are no slides we can't be anywhere beyond the @@ -2214,11 +2240,35 @@ var Reveal = (function(){ */ function cueAutoSlide() { - clearTimeout( autoSlideTimeout ); + cancelAutoSlide(); + + if( currentSlide ) { + + // If the current slide has a data-autoslide use that, + // otherwise use the config.autoSlide value + var slideAutoSlide = currentSlide.getAttribute( 'data-autoslide' ); + if( slideAutoSlide ) { + autoSlide = parseInt( slideAutoSlide, 10 ); + } + else { + autoSlide = config.autoSlide; + } + + // Cue the next auto-slide if: + // - There is an autoSlide value + // - Auto-sliding isn't paused by the user + // - The presentation isn't paused + // - The overview isn't active + // - The presentation isn't over + if( autoSlide && !autoSlidePaused && !isPaused() && !isOverview() && ( !Reveal.isLastSlide() || config.loop === true ) ) { + autoSlideTimeout = setTimeout( navigateNext, autoSlide ); + autoSlideStartTime = Date.now(); + } + + if( autoSlidePlayer ) { + autoSlidePlayer.setPlaying( autoSlideTimeout !== -1 ); + } - // Cue the next auto-slide if enabled - if( autoSlide && !isPaused() && !isOverview() ) { - autoSlideTimeout = setTimeout( navigateNext, autoSlide ); } } @@ -2229,6 +2279,25 @@ var Reveal = (function(){ function cancelAutoSlide() { clearTimeout( autoSlideTimeout ); + autoSlideTimeout = -1; + + } + + function pauseAutoSlide() { + + autoSlidePaused = true; + clearTimeout( autoSlideTimeout ); + + if( autoSlidePlayer ) { + autoSlidePlayer.setPlaying( false ); + } + + } + + function resumeAutoSlide() { + + autoSlidePaused = false; + cueAutoSlide(); } @@ -2328,14 +2397,25 @@ var Reveal = (function(){ // ----------------------------- EVENTS -------------------------------// // --------------------------------------------------------------------// + /** + * Called by all event handlers that are based on user + * input. + */ + function onUserInput( event ) { + + if( config.autoSlideStoppable ) { + pauseAutoSlide(); + } + + } /** * Handler for the document level 'keydown' event. - * - * @param {Object} event */ function onDocumentKeyDown( event ) { + onUserInput( event ); + // Check if there's a focused element that could be using // the keyboard var activeElement = document.activeElement; @@ -2422,8 +2502,13 @@ var Reveal = (function(){ event.preventDefault(); } // ESC or O key - else if ( ( event.keyCode === 27 || event.keyCode === 79 ) && supports3DTransforms ) { - toggleOverview(); + else if ( ( event.keyCode === 27 || event.keyCode === 79 ) && features.transforms3d ) { + if( dom.preview ) { + closePreview(); + } + else { + toggleOverview(); + } event.preventDefault(); } @@ -2465,6 +2550,8 @@ var Reveal = (function(){ // Each touch should only trigger one action if( !touch.captured ) { + onUserInput( event ); + var currentX = event.touches[0].clientX; var currentY = event.touches[0].clientY; @@ -2618,6 +2705,8 @@ var Reveal = (function(){ */ function onProgressClicked( event ) { + onUserInput( event ); + event.preventDefault(); var slidesTotal = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).length; @@ -2630,12 +2719,12 @@ var Reveal = (function(){ /** * Event handler for navigation control buttons. */ - function onNavigateLeftClicked( event ) { event.preventDefault(); navigateLeft(); } - function onNavigateRightClicked( event ) { event.preventDefault(); navigateRight(); } - function onNavigateUpClicked( event ) { event.preventDefault(); navigateUp(); } - function onNavigateDownClicked( event ) { event.preventDefault(); navigateDown(); } - function onNavigatePrevClicked( event ) { event.preventDefault(); navigatePrev(); } - function onNavigateNextClicked( event ) { event.preventDefault(); navigateNext(); } + function onNavigateLeftClicked( event ) { event.preventDefault(); onUserInput(); navigateLeft(); } + function onNavigateRightClicked( event ) { event.preventDefault(); onUserInput(); navigateRight(); } + function onNavigateUpClicked( event ) { event.preventDefault(); onUserInput(); navigateUp(); } + function onNavigateDownClicked( event ) { event.preventDefault(); onUserInput(); navigateDown(); } + function onNavigatePrevClicked( event ) { event.preventDefault(); onUserInput(); navigatePrev(); } + function onNavigateNextClicked( event ) { event.preventDefault(); onUserInput(); navigateNext(); } /** * Handler for the window level 'hashchange' event. @@ -2656,6 +2745,24 @@ var Reveal = (function(){ } /** + * Handle for the window level 'visibilitychange' event. + */ + function onPageVisibilityChange( event ) { + + var isHidden = document.webkitHidden || + document.msHidden || + document.hidden; + + // If, after clicking a link or similar and we're coming back, + // focus the document.body to ensure we can use keyboard shortcuts + if( isHidden === false && document.activeElement !== document.body ) { + document.activeElement.blur(); + document.body.focus(); + } + + } + + /** * Invoked when a slide is and we're in the overview. */ function onOverviewSlideClicked( event ) { @@ -2701,6 +2808,191 @@ var Reveal = (function(){ } + /** + * Handles click on the auto-sliding controls element. + */ + function onAutoSlidePlayerClick( event ) { + + // Replay + if( Reveal.isLastSlide() && config.loop === false ) { + slide( 0, 0 ); + resumeAutoSlide(); + } + // Resume + else if( autoSlidePaused ) { + resumeAutoSlide(); + } + // Pause + else { + pauseAutoSlide(); + } + + } + + + // --------------------------------------------------------------------// + // ------------------------ PLAYBACK COMPONENT ------------------------// + // --------------------------------------------------------------------// + + + /** + * Constructor for the playback component, which displays + * play/pause/progress controls. + * + * @param {HTMLElement} container The component will append + * itself to this + * @param {Function} progressCheck A method which will be + * called frequently to get the current progress on a range + * of 0-1 + */ + function Playback( container, progressCheck ) { + + // Cosmetics + this.diameter = 50; + this.thickness = 3; + + // Flags if we are currently playing + this.playing = false; + + // Current progress on a 0-1 range + this.progress = 0; + + // Used to loop the animation smoothly + this.progressOffset = 1; + + this.container = container; + this.progressCheck = progressCheck; + + this.canvas = document.createElement( 'canvas' ); + this.canvas.className = 'playback'; + this.canvas.width = this.diameter; + this.canvas.height = this.diameter; + this.context = this.canvas.getContext( '2d' ); + + this.container.appendChild( this.canvas ); + + this.render(); + + } + + Playback.prototype.setPlaying = function( value ) { + + var wasPlaying = this.playing; + + this.playing = value; + + // Start repainting if we weren't already + if( !wasPlaying && this.playing ) { + this.animate(); + } + else { + this.render(); + } + + }; + + Playback.prototype.animate = function() { + + var progressBefore = this.progress; + + this.progress = this.progressCheck(); + + // When we loop, offset the progress so that it eases + // smoothly rather than immediately resetting + if( progressBefore > 0.8 && this.progress < 0.2 ) { + this.progressOffset = this.progress; + } + + this.render(); + + if( this.playing ) { + features.requestAnimationFrameMethod.call( window, this.animate.bind( this ) ); + } + + }; + + /** + * Renders the current progress and playback state. + */ + Playback.prototype.render = function() { + + var progress = this.playing ? this.progress : 0, + radius = ( this.diameter / 2 ) - this.thickness, + x = this.diameter / 2, + y = this.diameter / 2, + iconSize = 14; + + // Ease towards 1 + this.progressOffset += ( 1 - this.progressOffset ) * 0.1; + + var endAngle = ( - Math.PI / 2 ) + ( progress * ( Math.PI * 2 ) ); + var startAngle = ( - Math.PI / 2 ) + ( this.progressOffset * ( Math.PI * 2 ) ); + + this.context.save(); + this.context.clearRect( 0, 0, this.diameter, this.diameter ); + + // Solid background color + this.context.beginPath(); + this.context.arc( x, y, radius + 2, 0, Math.PI * 2, false ); + this.context.fillStyle = 'rgba( 0, 0, 0, 0.4 )'; + this.context.fill(); + + // Draw progress track + this.context.beginPath(); + this.context.arc( x, y, radius, 0, Math.PI * 2, false ); + this.context.lineWidth = this.thickness; + this.context.strokeStyle = '#666'; + this.context.stroke(); + + if( this.playing ) { + // Draw progress on top of track + this.context.beginPath(); + this.context.arc( x, y, radius, startAngle, endAngle, false ); + this.context.lineWidth = this.thickness; + this.context.strokeStyle = '#fff'; + this.context.stroke(); + } + + this.context.translate( x - ( iconSize / 2 ), y - ( iconSize / 2 ) ); + + // Draw play/pause icons + if( this.playing ) { + this.context.fillStyle = '#fff'; + this.context.fillRect( 0, 0, iconSize / 2 - 2, iconSize ); + this.context.fillRect( iconSize / 2 + 2, 0, iconSize / 2 - 2, iconSize ); + } + else { + this.context.beginPath(); + this.context.translate( 2, 0 ); + this.context.moveTo( 0, 0 ); + this.context.lineTo( iconSize - 2, iconSize / 2 ); + this.context.lineTo( 0, iconSize ); + this.context.fillStyle = '#fff'; + this.context.fill(); + } + + this.context.restore(); + + }; + + Playback.prototype.on = function( type, listener ) { + this.canvas.addEventListener( type, listener, false ); + }; + + Playback.prototype.off = function( type, listener ) { + this.canvas.removeEventListener( type, listener, false ); + }; + + Playback.prototype.destroy = function() { + + this.playing = false; + + if( this.canvas.parentNode ) { + this.container.removeChild( this.canvas ); + } + + }; + // --------------------------------------------------------------------// // ------------------------------- API --------------------------------// @@ -2798,6 +3090,15 @@ var Reveal = (function(){ query[ a.split( '=' ).shift() ] = a.split( '=' ).pop(); } ); + // Basic deserialization + for( var i in query ) { + var value = query[ i ]; + if( value === 'null' ) query[ i ] = null; + else if( value === 'true' ) query[ i ] = true; + else if( value === 'false' ) query[ i ] = false; + else if( !isNaN( parseFloat( value ) ) ) query[ i ] = parseFloat( value ); + } + return query; }, diff --git a/js/reveal.min.js b/js/reveal.min.js index 73446a3..32cb41a 100644 --- a/js/reveal.min.js +++ b/js/reveal.min.js @@ -1,8 +1,8 @@ /*! - * reveal.js 2.6.0-dev (2013-09-19, 23:31) + * reveal.js 2.6.0-dev (2013-10-22, 08:39) * http://lab.hakim.se/reveal-js * MIT licensed * * Copyright (C) 2013 Hakim El Hattab, http://hakim.se */ -var Reveal=function(){"use strict";function a(a){return b(),Lb||Kb?(window.addEventListener("load",C,!1),l(Rb,a),s(),c(),void 0):(document.body.setAttribute("class","no-transforms"),void 0)}function b(){Kb="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,Lb="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,Mb=navigator.userAgent.match(/(iphone|ipod|android)/gi)}function c(){function a(){c.length&&head.js.apply(null,c),d()}for(var b=[],c=[],e=0,f=Rb.dependencies.length;f>e;e++){var g=Rb.dependencies[e];(!g.condition||g.condition())&&(g.async?c.push(g.src):b.push(g.src),"function"==typeof g.callback&&head.ready(g.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],g.callback))}b.length?(head.ready(a),head.js.apply(null,b)):a()}function d(){f(),e(),i(),ab(),setTimeout(function(){Wb.slides.classList.remove("no-transition"),Sb=!0,u("ready",{indexh:Gb,indexv:Hb,currentSlide:Jb})},1)}function e(){var a=m(document.querySelectorAll(Ob));a.forEach(function(a){var b=m(a.querySelectorAll("section"));b.forEach(function(a,b){b>0&&a.classList.add("future")})})}function f(){Wb.theme=document.querySelector("#theme"),Wb.wrapper=document.querySelector(".reveal"),Wb.slides=document.querySelector(".reveal .slides"),Wb.slides.classList.add("no-transition"),Wb.background=g(Wb.wrapper,"div","backgrounds",null),Wb.progress=g(Wb.wrapper,"div","progress","<span></span>"),Wb.progressbar=Wb.progress.querySelector("span"),g(Wb.wrapper,"aside","controls",'<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>'),g(Wb.wrapper,"div","state-background",null),g(Wb.wrapper,"div","pause-overlay",null),Wb.controls=document.querySelector(".reveal .controls"),Wb.controlsLeft=m(document.querySelectorAll(".navigate-left")),Wb.controlsRight=m(document.querySelectorAll(".navigate-right")),Wb.controlsUp=m(document.querySelectorAll(".navigate-up")),Wb.controlsDown=m(document.querySelectorAll(".navigate-down")),Wb.controlsPrev=m(document.querySelectorAll(".navigate-prev")),Wb.controlsNext=m(document.querySelectorAll(".navigate-next"))}function g(a,b,c,d){var e=a.querySelector("."+c);return e||(e=document.createElement(b),e.classList.add(c),null!==d&&(e.innerHTML=d),a.appendChild(e)),e}function h(){function a(a,b){var c={background:a.getAttribute("data-background"),backgroundSize:a.getAttribute("data-background-size"),backgroundImage:a.getAttribute("data-background-image"),backgroundColor:a.getAttribute("data-background-color"),backgroundRepeat:a.getAttribute("data-background-repeat"),backgroundPosition:a.getAttribute("data-background-position"),backgroundTransition:a.getAttribute("data-background-transition")},d=document.createElement("div");return d.className="slide-background",c.background&&(/^(http|file|\/\/)/gi.test(c.background)||/\.(png|jpg|jpeg|gif|bmp)$/gi.test(c.background)?d.style.backgroundImage="url("+c.background+")":d.style.background=c.background),c.backgroundSize&&(d.style.backgroundSize=c.backgroundSize),c.backgroundImage&&(d.style.backgroundImage='url("'+c.backgroundImage+'")'),c.backgroundColor&&(d.style.backgroundColor=c.backgroundColor),c.backgroundRepeat&&(d.style.backgroundRepeat=c.backgroundRepeat),c.backgroundPosition&&(d.style.backgroundPosition=c.backgroundPosition),c.backgroundTransition&&d.setAttribute("data-background-transition",c.backgroundTransition),b.appendChild(d),d}r()&&document.body.classList.add("print-pdf"),Wb.background.innerHTML="",Wb.background.classList.add("no-transition"),m(document.querySelectorAll(Ob)).forEach(function(b){var c;c=r()?a(b,b):a(b,Wb.background),m(b.querySelectorAll("section")).forEach(function(b){r()?a(b,b):a(b,c)})}),Rb.parallaxBackgroundImage?(Wb.background.style.backgroundImage='url("'+Rb.parallaxBackgroundImage+'")',Wb.background.style.backgroundSize=Rb.parallaxBackgroundSize,setTimeout(function(){Wb.wrapper.classList.add("has-parallax-background")},1)):(Wb.background.style.backgroundImage="",Wb.wrapper.classList.remove("has-parallax-background"))}function i(a){if(Wb.wrapper.classList.remove(Rb.transition),"object"==typeof a&&l(Rb,a),Kb===!1&&(Rb.transition="linear"),Wb.wrapper.classList.add(Rb.transition),Wb.wrapper.setAttribute("data-transition-speed",Rb.transitionSpeed),Wb.wrapper.setAttribute("data-background-transition",Rb.backgroundTransition),Wb.controls.style.display=Rb.controls?"block":"none",Wb.progress.style.display=Rb.progress?"block":"none",Rb.rtl?Wb.wrapper.classList.add("rtl"):Wb.wrapper.classList.remove("rtl"),Rb.center?Wb.wrapper.classList.add("center"):Wb.wrapper.classList.remove("center"),Rb.mouseWheel?(document.addEventListener("DOMMouseScroll",ub,!1),document.addEventListener("mousewheel",ub,!1)):(document.removeEventListener("DOMMouseScroll",ub,!1),document.removeEventListener("mousewheel",ub,!1)),Rb.rollingLinks?v():w(),Rb.previewLinks?x():(y(),x("[data-preview-link]")),Rb.theme&&Wb.theme){var b=Wb.theme.getAttribute("href"),c=/[^\/]*?(?=\.css)/,d=b.match(c)[0];Rb.theme!==d&&(b=b.replace(c,Rb.theme),Wb.theme.setAttribute("href",b))}R()}function j(){ac=!0,window.addEventListener("hashchange",Cb,!1),window.addEventListener("resize",Db,!1),Rb.touch&&(Wb.wrapper.addEventListener("touchstart",ob,!1),Wb.wrapper.addEventListener("touchmove",pb,!1),Wb.wrapper.addEventListener("touchend",qb,!1),window.navigator.msPointerEnabled&&(Wb.wrapper.addEventListener("MSPointerDown",rb,!1),Wb.wrapper.addEventListener("MSPointerMove",sb,!1),Wb.wrapper.addEventListener("MSPointerUp",tb,!1))),Rb.keyboard&&document.addEventListener("keydown",nb,!1),Rb.progress&&Wb.progress&&Wb.progress.addEventListener("click",vb,!1),["touchstart","click"].forEach(function(a){Wb.controlsLeft.forEach(function(b){b.addEventListener(a,wb,!1)}),Wb.controlsRight.forEach(function(b){b.addEventListener(a,xb,!1)}),Wb.controlsUp.forEach(function(b){b.addEventListener(a,yb,!1)}),Wb.controlsDown.forEach(function(b){b.addEventListener(a,zb,!1)}),Wb.controlsPrev.forEach(function(b){b.addEventListener(a,Ab,!1)}),Wb.controlsNext.forEach(function(b){b.addEventListener(a,Bb,!1)})})}function k(){ac=!1,document.removeEventListener("keydown",nb,!1),window.removeEventListener("hashchange",Cb,!1),window.removeEventListener("resize",Db,!1),Wb.wrapper.removeEventListener("touchstart",ob,!1),Wb.wrapper.removeEventListener("touchmove",pb,!1),Wb.wrapper.removeEventListener("touchend",qb,!1),window.navigator.msPointerEnabled&&(Wb.wrapper.removeEventListener("MSPointerDown",rb,!1),Wb.wrapper.removeEventListener("MSPointerMove",sb,!1),Wb.wrapper.removeEventListener("MSPointerUp",tb,!1)),Rb.progress&&Wb.progress&&Wb.progress.removeEventListener("click",vb,!1),["touchstart","click"].forEach(function(a){Wb.controlsLeft.forEach(function(b){b.removeEventListener(a,wb,!1)}),Wb.controlsRight.forEach(function(b){b.removeEventListener(a,xb,!1)}),Wb.controlsUp.forEach(function(b){b.removeEventListener(a,yb,!1)}),Wb.controlsDown.forEach(function(b){b.removeEventListener(a,zb,!1)}),Wb.controlsPrev.forEach(function(b){b.removeEventListener(a,Ab,!1)}),Wb.controlsNext.forEach(function(b){b.removeEventListener(a,Bb,!1)})})}function l(a,b){for(var c in b)a[c]=b[c]}function m(a){return Array.prototype.slice.call(a)}function n(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)}function o(a,b){a.style.WebkitTransform=b,a.style.MozTransform=b,a.style.msTransform=b,a.style.OTransform=b,a.style.transform=b}function p(a){var b=0;if(a){var c=0;m(a.childNodes).forEach(function(a){"number"==typeof a.offsetTop&&a.style&&("absolute"===a.style.position&&(c+=1),b=Math.max(b,a.offsetTop+a.offsetHeight))}),0===c&&(b=a.offsetHeight)}return b}function q(a,b){if(b=b||0,a){var c=a.parentNode,d=c.childNodes;m(d).forEach(function(c){if("number"==typeof c.offsetHeight&&c!==a){var d=window.getComputedStyle(c),e=parseInt(d.marginTop,10),f=parseInt(d.marginBottom,10);b-=c.offsetHeight+e+f}});var e=window.getComputedStyle(a);b-=parseInt(e.marginTop,10)+parseInt(e.marginBottom,10)}return b}function r(){return/print-pdf/gi.test(window.location.search)}function s(){Rb.hideAddressBar&&Mb&&(window.addEventListener("load",t,!1),window.addEventListener("orientationchange",t,!1))}function t(){0!==window.orientation||/crios/gi.test(navigator.userAgent)?(document.documentElement.style.overflow="",document.body.style.height="100%"):(document.documentElement.style.overflow="scroll",document.body.style.height="120%"),setTimeout(function(){window.scrollTo(0,1)},10)}function u(a,b){var c=document.createEvent("HTMLEvents",1,2);c.initEvent(a,!0,!0),l(c,b),Wb.wrapper.dispatchEvent(c)}function v(){if(Kb&&!("msPerspective"in document.body.style))for(var a=document.querySelectorAll(Nb+" a:not(.image)"),b=0,c=a.length;c>b;b++){var d=a[b];if(!(!d.textContent||d.querySelector("*")||d.className&&d.classList.contains(d,"roll"))){var e=document.createElement("span");e.setAttribute("data-title",d.text),e.innerHTML=d.innerHTML,d.classList.add("roll"),d.innerHTML="",d.appendChild(e)}}}function w(){for(var a=document.querySelectorAll(Nb+" a.roll"),b=0,c=a.length;c>b;b++){var d=a[b],e=d.querySelector("span");e&&(d.classList.remove("roll"),d.innerHTML=e.innerHTML)}}function x(a){var b=m(document.querySelectorAll(a?a:"a"));b.forEach(function(a){/^(http|www)/gi.test(a.getAttribute("href"))&&a.addEventListener("click",Fb,!1)})}function y(){var a=m(document.querySelectorAll("a"));a.forEach(function(a){/^(http|www)/gi.test(a.getAttribute("href"))&&a.removeEventListener("click",Fb,!1)})}function z(a){A(),Wb.preview=document.createElement("div"),Wb.preview.classList.add("preview-link-overlay"),Wb.wrapper.appendChild(Wb.preview),Wb.preview.innerHTML=["<header>",'<a class="close" href="#"><span class="icon"></span></a>','<a class="external" href="'+a+'" target="_blank"><span class="icon"></span></a>',"</header>",'<div class="spinner"></div>','<div class="viewport">','<iframe src="'+a+'"></iframe>',"</div>"].join(""),Wb.preview.querySelector("iframe").addEventListener("load",function(){Wb.preview.classList.add("loaded")},!1),Wb.preview.querySelector(".close").addEventListener("click",function(a){A(),a.preventDefault()},!1),Wb.preview.querySelector(".external").addEventListener("click",function(){A()},!1),setTimeout(function(){Wb.preview.classList.add("visible")},1)}function A(){Wb.preview&&(Wb.preview.setAttribute("src",""),Wb.preview.parentNode.removeChild(Wb.preview),Wb.preview=null)}function B(a){var b=m(a);return b.forEach(function(a,b){a.hasAttribute("data-fragment-index")||a.setAttribute("data-fragment-index",b)}),b.sort(function(a,b){return a.getAttribute("data-fragment-index")-b.getAttribute("data-fragment-index")}),b}function C(){if(Wb.wrapper&&!r()){var a=Wb.wrapper.offsetWidth,b=Wb.wrapper.offsetHeight;a-=b*Rb.margin,b-=b*Rb.margin;var c=Rb.width,d=Rb.height,e=20;D(Rb.width,Rb.height,e),"string"==typeof c&&/%$/.test(c)&&(c=parseInt(c,10)/100*a),"string"==typeof d&&/%$/.test(d)&&(d=parseInt(d,10)/100*b),Wb.slides.style.width=c+"px",Wb.slides.style.height=d+"px",Vb=Math.min(a/c,b/d),Vb=Math.max(Vb,Rb.minScale),Vb=Math.min(Vb,Rb.maxScale),"undefined"==typeof Wb.slides.style.zoom||navigator.userAgent.match(/(iphone|ipod|ipad|android)/gi)?o(Wb.slides,"translate(-50%, -50%) scale("+Vb+") translate(50%, 50%)"):Wb.slides.style.zoom=Vb;for(var f=m(document.querySelectorAll(Nb)),g=0,h=f.length;h>g;g++){var i=f[g];"none"!==i.style.display&&(i.style.top=Rb.center?i.classList.contains("stack")?0:Math.max(-(p(i)/2)-e,-d/2)+"px":"")}U(),X()}}function D(a,b,c){m(Wb.slides.querySelectorAll("section > .stretch")).forEach(function(d){var e=q(d,b-2*c);if(/(img|video)/gi.test(d.nodeName)){var f=d.naturalWidth||d.videoWidth,g=d.naturalHeight||d.videoHeight,h=Math.min(a/f,e/g);d.style.width=f*h+"px",d.style.height=g*h+"px"}else d.style.width=a+"px",d.style.height=e+"px"})}function E(a,b){"object"==typeof a&&"function"==typeof a.setAttribute&&a.setAttribute("data-previous-indexv",b||0)}function F(a){if("object"==typeof a&&"function"==typeof a.setAttribute&&a.classList.contains("stack")){var b=a.hasAttribute("data-start-indexv")?"data-start-indexv":"data-previous-indexv";return parseInt(a.getAttribute(b)||0,10)}return 0}function G(){if(Rb.overview){gb();var a=Wb.wrapper.classList.contains("overview"),b=window.innerWidth<400?1e3:2500;Wb.wrapper.classList.add("overview"),Wb.wrapper.classList.remove("overview-deactivating"),clearTimeout($b),clearTimeout(_b),$b=setTimeout(function(){for(var c=document.querySelectorAll(Ob),d=0,e=c.length;e>d;d++){var f=c[d],g=Rb.rtl?-105:105;if(f.setAttribute("data-index-h",d),o(f,"translateZ(-"+b+"px) translate("+(d-Gb)*g+"%, 0%)"),f.classList.contains("stack"))for(var h=f.querySelectorAll("section"),i=0,j=h.length;j>i;i++){var k=d===Gb?Hb:F(f),l=h[i];l.setAttribute("data-index-h",d),l.setAttribute("data-index-v",i),o(l,"translate(0%, "+105*(i-k)+"%)"),l.addEventListener("click",Eb,!0)}else f.addEventListener("click",Eb,!0)}T(),C(),a||u("overviewshown",{indexh:Gb,indexv:Hb,currentSlide:Jb})},10)}}function H(){Rb.overview&&(clearTimeout($b),clearTimeout(_b),Wb.wrapper.classList.remove("overview"),Wb.wrapper.classList.add("overview-deactivating"),_b=setTimeout(function(){Wb.wrapper.classList.remove("overview-deactivating")},1),m(document.querySelectorAll(Nb)).forEach(function(a){o(a,""),a.removeEventListener("click",Eb,!0)}),Q(Gb,Hb),fb(),u("overviewhidden",{indexh:Gb,indexv:Hb,currentSlide:Jb}))}function I(a){"boolean"==typeof a?a?G():H():J()?H():G()}function J(){return Wb.wrapper.classList.contains("overview")}function K(a){return a=a?a:Jb,a&&a.parentNode&&!!a.parentNode.nodeName.match(/section/i)}function L(){var a=document.body,b=a.requestFullScreen||a.webkitRequestFullscreen||a.webkitRequestFullScreen||a.mozRequestFullScreen||a.msRequestFullScreen;b&&b.apply(a)}function M(){var a=Wb.wrapper.classList.contains("paused");gb(),Wb.wrapper.classList.add("paused"),a===!1&&u("paused")}function N(){var a=Wb.wrapper.classList.contains("paused");Wb.wrapper.classList.remove("paused"),fb(),a&&u("resumed")}function O(){P()?N():M()}function P(){return Wb.wrapper.classList.contains("paused")}function Q(a,b,c,d){Ib=Jb;var e=document.querySelectorAll(Ob);void 0===b&&(b=F(e[a])),Ib&&Ib.parentNode&&Ib.parentNode.classList.contains("stack")&&E(Ib.parentNode,Hb);var f=Ub.concat();Ub.length=0;var g=Gb||0,h=Hb||0;Gb=S(Ob,void 0===a?Gb:a),Hb=S(Pb,void 0===b?Hb:b),T(),C();a:for(var i=0,j=Ub.length;j>i;i++){for(var k=0;k<f.length;k++)if(f[k]===Ub[i]){f.splice(k,1);continue a}document.documentElement.classList.add(Ub[i]),u(Ub[i])}for(;f.length;)document.documentElement.classList.remove(f.pop());J()&&G();var l=e[Gb],n=l.querySelectorAll("section");if(Jb=n[Hb]||l,"undefined"!=typeof c){var o=B(Jb.querySelectorAll(".fragment"));m(o).forEach(function(a,b){c>b?a.classList.add("visible"):a.classList.remove("visible")})}var p=Gb!==g||Hb!==h;p?u("slidechanged",{indexh:Gb,indexv:Hb,previousSlide:Ib,currentSlide:Jb,origin:d}):Ib=null,Ib&&(Ib.classList.remove("present"),document.querySelector(Qb).classList.contains("present")&&setTimeout(function(){var a,b=m(document.querySelectorAll(Ob+".stack"));for(a in b)b[a]&&E(b[a],0)},0)),p&&(_(Ib),$(Jb)),V(),U(),W(),X(),bb()}function R(){k(),j(),C(),Tb=Rb.autoSlide,fb(),h(),V(),U(),W()}function S(a,b){var c=m(document.querySelectorAll(a)),d=c.length;if(d){Rb.loop&&(b%=d,0>b&&(b=d+b)),b=Math.max(Math.min(b,d-1),0);for(var e=0;d>e;e++){var f=c[e],g=Rb.rtl&&!K(f);if(f.classList.remove("past"),f.classList.remove("present"),f.classList.remove("future"),f.setAttribute("hidden",""),b>e)f.classList.add(g?"future":"past");else if(e>b){f.classList.add(g?"past":"future");for(var h=m(f.querySelectorAll(".fragment.visible"));h.length;)h.pop().classList.remove("visible")}f.querySelector("section")&&f.classList.add("stack")}c[b].classList.add("present"),c[b].removeAttribute("hidden");var i=c[b].getAttribute("data-state");i&&(Ub=Ub.concat(i.split(" ")));var j=c[b].getAttribute("data-autoslide");Tb=j?parseInt(j,10):Rb.autoSlide,fb()}else b=0;return b}function T(){var a,b,c=m(document.querySelectorAll(Ob)),d=c.length;if(d){var e=J()?10:Rb.viewDistance;Mb&&(e=J()?6:1);for(var f=0;d>f;f++){var g=c[f],h=m(g.querySelectorAll("section")),i=h.length;if(a=Math.abs((Gb-f)%(d-e))||0,g.style.display=a>e?"none":"block",i)for(var j=F(g),k=0;i>k;k++){var l=h[k];b=f===Gb?Math.abs(Hb-k):Math.abs(k-j),l.style.display=a+b>e?"none":"block"}}}}function U(){if(Rb.progress&&Wb.progress){var a=m(document.querySelectorAll(Ob)),b=document.querySelectorAll(Nb+":not(.stack)").length,c=0;a:for(var d=0;d<a.length;d++){for(var e=a[d],f=m(e.querySelectorAll("section")),g=0;g<f.length;g++){if(f[g].classList.contains("present"))break a;c++}if(e.classList.contains("present"))break;e.classList.contains("stack")===!1&&c++}Wb.progressbar.style.width=c/(b-1)*window.innerWidth+"px"}}function V(){var a=Y(),b=Z();Wb.controlsLeft.concat(Wb.controlsRight).concat(Wb.controlsUp).concat(Wb.controlsDown).concat(Wb.controlsPrev).concat(Wb.controlsNext).forEach(function(a){a.classList.remove("enabled"),a.classList.remove("fragmented")}),a.left&&Wb.controlsLeft.forEach(function(a){a.classList.add("enabled")}),a.right&&Wb.controlsRight.forEach(function(a){a.classList.add("enabled")}),a.up&&Wb.controlsUp.forEach(function(a){a.classList.add("enabled")}),a.down&&Wb.controlsDown.forEach(function(a){a.classList.add("enabled")}),(a.left||a.up)&&Wb.controlsPrev.forEach(function(a){a.classList.add("enabled")}),(a.right||a.down)&&Wb.controlsNext.forEach(function(a){a.classList.add("enabled")}),Jb&&(b.prev&&Wb.controlsPrev.forEach(function(a){a.classList.add("fragmented","enabled")}),b.next&&Wb.controlsNext.forEach(function(a){a.classList.add("fragmented","enabled")}),K(Jb)?(b.prev&&Wb.controlsUp.forEach(function(a){a.classList.add("fragmented","enabled")}),b.next&&Wb.controlsDown.forEach(function(a){a.classList.add("fragmented","enabled")})):(b.prev&&Wb.controlsLeft.forEach(function(a){a.classList.add("fragmented","enabled")}),b.next&&Wb.controlsRight.forEach(function(a){a.classList.add("fragmented","enabled")})))}function W(){m(Wb.background.childNodes).forEach(function(a,b){var c=Rb.rtl?"future":"past",d=Rb.rtl?"past":"future";a.className="slide-background "+(Gb>b?c:b>Gb?d:"present"),m(a.childNodes).forEach(function(a,b){a.className="slide-background "+(Hb>b?"past":b>Hb?"future":"present")})}),setTimeout(function(){Wb.background.classList.remove("no-transition")},1)}function X(){if(Rb.parallaxBackgroundImage){var a,b,c=document.querySelectorAll(Ob),d=document.querySelectorAll(Pb),e=Wb.background.style.backgroundSize.split(" ");1===e.length?a=b=parseInt(e[0],10):(a=parseInt(e[0],10),b=parseInt(e[1],10));var f=Wb.background.offsetWidth,g=c.length,h=-(a-f)/(g-1)*Gb,i=Wb.background.offsetHeight,j=d.length,k=j>0?-(b-i)/(j-1)*Hb:0;Wb.background.style.backgroundPosition=h+"px "+k+"px"}}function Y(){var a=document.querySelectorAll(Ob),b=document.querySelectorAll(Pb),c={left:Gb>0||Rb.loop,right:Gb<a.length-1||Rb.loop,up:Hb>0,down:Hb<b.length-1};if(Rb.rtl){var d=c.left;c.left=c.right,c.right=d}return c}function Z(){if(Jb&&Rb.fragments){var a=Jb.querySelectorAll(".fragment"),b=Jb.querySelectorAll(".fragment:not(.visible)");return{prev:a.length-b.length>0,next:!!b.length}}return{prev:!1,next:!1}}function $(a){a&&(m(a.querySelectorAll("video, audio")).forEach(function(a){a.hasAttribute("data-autoplay")&&a.play()}),m(a.querySelectorAll('iframe[src*="youtube.com/embed/"]')).forEach(function(a){a.hasAttribute("data-autoplay")&&a.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}',"*")}))}function _(a){a&&(m(a.querySelectorAll("video, audio")).forEach(function(a){a.hasAttribute("data-ignore")||a.pause()}),m(a.querySelectorAll('iframe[src*="youtube.com/embed/"]')).forEach(function(a){a.hasAttribute("data-ignore")||"function"!=typeof a.contentWindow.postMessage||a.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*")}))}function ab(){var a=window.location.hash,b=a.slice(2).split("/"),c=a.replace(/#|\//gi,"");if(isNaN(parseInt(b[0],10))&&c.length){var d=document.querySelector("#"+c);if(d){var e=Reveal.getIndices(d);Q(e.h,e.v)}else Q(Gb||0,Hb||0)}else{var f=parseInt(b[0],10)||0,g=parseInt(b[1],10)||0;(f!==Gb||g!==Hb)&&Q(f,g)}}function bb(a){if(Rb.history)if(clearTimeout(Zb),"number"==typeof a)Zb=setTimeout(bb,a);else{var b="/";Jb&&"string"==typeof Jb.getAttribute("id")?b="/"+Jb.getAttribute("id"):((Gb>0||Hb>0)&&(b+=Gb),Hb>0&&(b+="/"+Hb)),window.location.hash=b}}function cb(a){var b,c=Gb,d=Hb;if(a){var e=K(a),f=e?a.parentNode:a,g=m(document.querySelectorAll(Ob));c=Math.max(g.indexOf(f),0),e&&(d=Math.max(m(a.parentNode.querySelectorAll("section")).indexOf(a),0))}if(!a&&Jb){var h=Jb.querySelectorAll(".fragment").length>0;if(h){var i=Jb.querySelectorAll(".fragment.visible");b=i.length}}return{h:c,v:d,f:b}}function db(){if(Jb&&Rb.fragments){var a=B(Jb.querySelectorAll(".fragment:not(.visible)"));if(a.length){var b=a[0].getAttribute("data-fragment-index");return a=Jb.querySelectorAll('.fragment[data-fragment-index="'+b+'"]'),m(a).forEach(function(a){a.classList.add("visible")}),u("fragmentshown",{fragment:a[0],fragments:a}),V(),!0}}return!1}function eb(){if(Jb&&Rb.fragments){var a=B(Jb.querySelectorAll(".fragment.visible"));if(a.length){var b=a[a.length-1].getAttribute("data-fragment-index");return a=Jb.querySelectorAll('.fragment[data-fragment-index="'+b+'"]'),m(a).forEach(function(a){a.classList.remove("visible")}),u("fragmenthidden",{fragment:a[0],fragments:a}),V(),!0}}return!1}function fb(){clearTimeout(Yb),!Tb||P()||J()||(Yb=setTimeout(mb,Tb))}function gb(){clearTimeout(Yb)}function hb(){Rb.rtl?(J()||db()===!1)&&Y().left&&Q(Gb+1):(J()||eb()===!1)&&Y().left&&Q(Gb-1)}function ib(){Rb.rtl?(J()||eb()===!1)&&Y().right&&Q(Gb-1):(J()||db()===!1)&&Y().right&&Q(Gb+1)}function jb(){(J()||eb()===!1)&&Y().up&&Q(Gb,Hb-1)}function kb(){(J()||db()===!1)&&Y().down&&Q(Gb,Hb+1)}function lb(){if(eb()===!1)if(Y().up)jb();else{var a=document.querySelector(Ob+".past:nth-child("+Gb+")");if(a){var b=a.querySelectorAll("section").length-1||void 0,c=Gb-1;Q(c,b)}}}function mb(){db()===!1&&(Y().down?kb():ib()),fb()}function nb(a){document.activeElement;var b=!(!document.activeElement||!document.activeElement.type&&!document.activeElement.href&&"inherit"===document.activeElement.contentEditable);if(!(b||a.shiftKey&&32!==a.keyCode||a.altKey||a.ctrlKey||a.metaKey)){if(P()&&-1===[66,190,191].indexOf(a.keyCode))return!1;var c=!1;if("object"==typeof Rb.keyboard)for(var d in Rb.keyboard)if(parseInt(d,10)===a.keyCode){var e=Rb.keyboard[d];"function"==typeof e?e.apply(null,[a]):"string"==typeof e&&"function"==typeof Reveal[e]&&Reveal[e].call(),c=!0}if(c===!1)switch(c=!0,a.keyCode){case 80:case 33:lb();break;case 78:case 34:mb();break;case 72:case 37:hb();break;case 76:case 39:ib();break;case 75:case 38:jb();break;case 74:case 40:kb();break;case 36:Q(0);break;case 35:Q(Number.MAX_VALUE);break;case 32:J()?H():a.shiftKey?lb():mb();break;case 13:J()?H():c=!1;break;case 66:case 190:case 191:O();break;case 70:L();break;default:c=!1}c?a.preventDefault():27!==a.keyCode&&79!==a.keyCode||!Kb||(I(),a.preventDefault()),fb()}}function ob(a){bc.startX=a.touches[0].clientX,bc.startY=a.touches[0].clientY,bc.startCount=a.touches.length,2===a.touches.length&&Rb.overview&&(bc.startSpan=n({x:a.touches[1].clientX,y:a.touches[1].clientY},{x:bc.startX,y:bc.startY}))}function pb(a){if(bc.captured)navigator.userAgent.match(/android/gi)&&a.preventDefault();else{var b=a.touches[0].clientX,c=a.touches[0].clientY;if(2===a.touches.length&&2===bc.startCount&&Rb.overview){var d=n({x:a.touches[1].clientX,y:a.touches[1].clientY},{x:bc.startX,y:bc.startY});Math.abs(bc.startSpan-d)>bc.threshold&&(bc.captured=!0,d<bc.startSpan?G():H()),a.preventDefault()}else if(1===a.touches.length&&2!==bc.startCount){var e=b-bc.startX,f=c-bc.startY;e>bc.threshold&&Math.abs(e)>Math.abs(f)?(bc.captured=!0,hb()):e<-bc.threshold&&Math.abs(e)>Math.abs(f)?(bc.captured=!0,ib()):f>bc.threshold?(bc.captured=!0,jb()):f<-bc.threshold&&(bc.captured=!0,kb()),Rb.embedded?(bc.captured||K(Jb))&&a.preventDefault():a.preventDefault()}}}function qb(){bc.captured=!1}function rb(a){a.pointerType===a.MSPOINTER_TYPE_TOUCH&&(a.touches=[{clientX:a.clientX,clientY:a.clientY}],ob(a))}function sb(a){a.pointerType===a.MSPOINTER_TYPE_TOUCH&&(a.touches=[{clientX:a.clientX,clientY:a.clientY}],pb(a))}function tb(a){a.pointerType===a.MSPOINTER_TYPE_TOUCH&&(a.touches=[{clientX:a.clientX,clientY:a.clientY}],qb(a))}function ub(a){if(Date.now()-Xb>600){Xb=Date.now();var b=a.detail||-a.wheelDelta;b>0?mb():lb()}}function vb(a){a.preventDefault();var b=m(document.querySelectorAll(Ob)).length,c=Math.floor(a.clientX/Wb.wrapper.offsetWidth*b);Q(c)}function wb(a){a.preventDefault(),hb()}function xb(a){a.preventDefault(),ib()}function yb(a){a.preventDefault(),jb()}function zb(a){a.preventDefault(),kb()}function Ab(a){a.preventDefault(),lb()}function Bb(a){a.preventDefault(),mb()}function Cb(){ab()}function Db(){C()}function Eb(a){if(ac&&J()){a.preventDefault();for(var b=a.target;b&&!b.nodeName.match(/section/gi);)b=b.parentNode;if(b&&!b.classList.contains("disabled")&&(H(),b.nodeName.match(/section/gi))){var c=parseInt(b.getAttribute("data-index-h"),10),d=parseInt(b.getAttribute("data-index-v"),10);Q(c,d)}}}function Fb(a){var b=a.target.getAttribute("href");b&&(z(b),a.preventDefault())}var Gb,Hb,Ib,Jb,Kb,Lb,Mb,Nb=".reveal .slides section",Ob=".reveal .slides>section",Pb=".reveal .slides>section.present>section",Qb=".reveal .slides>section:first-child",Rb={width:960,height:700,margin:.1,minScale:.2,maxScale:1,controls:!0,progress:!0,history:!1,keyboard:!0,overview:!0,center:!0,touch:!0,loop:!1,rtl:!1,fragments:!0,embedded:!1,autoSlide:0,mouseWheel:!1,rollingLinks:!1,hideAddressBar:!0,previewLinks:!1,theme:null,transition:"default",transitionSpeed:"default",backgroundTransition:"default",parallaxBackgroundImage:"",parallaxBackgroundSize:"",viewDistance:3,dependencies:[]},Sb=!1,Tb=0,Ub=[],Vb=1,Wb={},Xb=0,Yb=0,Zb=0,$b=0,_b=0,ac=!1,bc={startX:0,startY:0,startSpan:0,startCount:0,captured:!1,threshold:40};return{initialize:a,configure:i,sync:R,slide:Q,left:hb,right:ib,up:jb,down:kb,prev:lb,next:mb,prevFragment:eb,nextFragment:db,navigateTo:Q,navigateLeft:hb,navigateRight:ib,navigateUp:jb,navigateDown:kb,navigatePrev:lb,navigateNext:mb,layout:C,availableRoutes:Y,availableFragments:Z,toggleOverview:I,togglePause:O,isOverview:J,isPaused:P,addEventListeners:j,removeEventListeners:k,getIndices:cb,getSlide:function(a,b){var c=document.querySelectorAll(Ob)[a],d=c&&c.querySelectorAll("section");return"undefined"!=typeof b?d?d[b]:void 0:c},getPreviousSlide:function(){return Ib},getCurrentSlide:function(){return Jb},getScale:function(){return Vb},getConfig:function(){return Rb},getQueryHash:function(){var a={};return location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(b){a[b.split("=").shift()]=b.split("=").pop()}),a},isFirstSlide:function(){return null==document.querySelector(Nb+".past")?!0:!1},isLastSlide:function(){return Jb?Jb.nextElementSibling?!1:K(Jb)&&Jb.parentNode.nextElementSibling?!1:!0:!1},isReady:function(){return Sb},addEventListener:function(a,b,c){"addEventListener"in window&&(Wb.wrapper||document.querySelector(".reveal")).addEventListener(a,b,c)},removeEventListener:function(a,b,c){"addEventListener"in window&&(Wb.wrapper||document.querySelector(".reveal")).removeEventListener(a,b,c)}}}();
\ No newline at end of file +var Reveal=function(){"use strict";function a(a){return b(),_b.transforms2d||_b.transforms3d?(window.addEventListener("load",C,!1),l(Wb,a),l(Wb,Reveal.getQueryHash()),s(),c(),void 0):(document.body.setAttribute("class","no-transforms"),void 0)}function b(){_b.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,_b.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,_b.requestAnimationFrameMethod=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,_b.requestAnimationFrame="function"==typeof _b.requestAnimationFrameMethod,_b.canvas=!!document.createElement("canvas").getContext,Qb=navigator.userAgent.match(/(iphone|ipod|android)/gi)}function c(){function a(){c.length&&head.js.apply(null,c),d()}for(var b=[],c=[],e=0,f=Wb.dependencies.length;f>e;e++){var g=Wb.dependencies[e];(!g.condition||g.condition())&&(g.async?c.push(g.src):b.push(g.src),"function"==typeof g.callback&&head.ready(g.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],g.callback))}b.length?(head.ready(a),head.js.apply(null,b)):a()}function d(){f(),e(),i(),ab(),setTimeout(function(){$b.slides.classList.remove("no-transition"),Xb=!0,u("ready",{indexh:Mb,indexv:Nb,currentSlide:Pb})},1)}function e(){var a=m(document.querySelectorAll(Tb));a.forEach(function(a){var b=m(a.querySelectorAll("section"));b.forEach(function(a,b){b>0&&a.classList.add("future")})})}function f(){$b.theme=document.querySelector("#theme"),$b.wrapper=document.querySelector(".reveal"),$b.slides=document.querySelector(".reveal .slides"),$b.slides.classList.add("no-transition"),$b.background=g($b.wrapper,"div","backgrounds",null),$b.progress=g($b.wrapper,"div","progress","<span></span>"),$b.progressbar=$b.progress.querySelector("span"),g($b.wrapper,"aside","controls",'<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>'),g($b.wrapper,"div","state-background",null),g($b.wrapper,"div","pause-overlay",null),$b.controls=document.querySelector(".reveal .controls"),$b.controlsLeft=m(document.querySelectorAll(".navigate-left")),$b.controlsRight=m(document.querySelectorAll(".navigate-right")),$b.controlsUp=m(document.querySelectorAll(".navigate-up")),$b.controlsDown=m(document.querySelectorAll(".navigate-down")),$b.controlsPrev=m(document.querySelectorAll(".navigate-prev")),$b.controlsNext=m(document.querySelectorAll(".navigate-next"))}function g(a,b,c,d){var e=a.querySelector("."+c);return e||(e=document.createElement(b),e.classList.add(c),null!==d&&(e.innerHTML=d),a.appendChild(e)),e}function h(){function a(a,b){var c={background:a.getAttribute("data-background"),backgroundSize:a.getAttribute("data-background-size"),backgroundImage:a.getAttribute("data-background-image"),backgroundColor:a.getAttribute("data-background-color"),backgroundRepeat:a.getAttribute("data-background-repeat"),backgroundPosition:a.getAttribute("data-background-position"),backgroundTransition:a.getAttribute("data-background-transition")},d=document.createElement("div");return d.className="slide-background",c.background&&(/^(http|file|\/\/)/gi.test(c.background)||/\.(svg|png|jpg|jpeg|gif|bmp)$/gi.test(c.background)?d.style.backgroundImage="url("+c.background+")":d.style.background=c.background),c.backgroundSize&&(d.style.backgroundSize=c.backgroundSize),c.backgroundImage&&(d.style.backgroundImage='url("'+c.backgroundImage+'")'),c.backgroundColor&&(d.style.backgroundColor=c.backgroundColor),c.backgroundRepeat&&(d.style.backgroundRepeat=c.backgroundRepeat),c.backgroundPosition&&(d.style.backgroundPosition=c.backgroundPosition),c.backgroundTransition&&d.setAttribute("data-background-transition",c.backgroundTransition),b.appendChild(d),d}r()&&document.body.classList.add("print-pdf"),$b.background.innerHTML="",$b.background.classList.add("no-transition"),m(document.querySelectorAll(Tb)).forEach(function(b){var c;c=r()?a(b,b):a(b,$b.background),m(b.querySelectorAll("section")).forEach(function(b){r()?a(b,b):a(b,c)})}),Wb.parallaxBackgroundImage?($b.background.style.backgroundImage='url("'+Wb.parallaxBackgroundImage+'")',$b.background.style.backgroundSize=Wb.parallaxBackgroundSize,setTimeout(function(){$b.wrapper.classList.add("has-parallax-background")},1)):($b.background.style.backgroundImage="",$b.wrapper.classList.remove("has-parallax-background"))}function i(a){var b=document.querySelectorAll(Sb).length;if($b.wrapper.classList.remove(Wb.transition),"object"==typeof a&&l(Wb,a),_b.transforms3d===!1&&(Wb.transition="linear"),$b.wrapper.classList.add(Wb.transition),$b.wrapper.setAttribute("data-transition-speed",Wb.transitionSpeed),$b.wrapper.setAttribute("data-background-transition",Wb.backgroundTransition),$b.controls.style.display=Wb.controls?"block":"none",$b.progress.style.display=Wb.progress?"block":"none",Wb.rtl?$b.wrapper.classList.add("rtl"):$b.wrapper.classList.remove("rtl"),Wb.center?$b.wrapper.classList.add("center"):$b.wrapper.classList.remove("center"),Wb.mouseWheel?(document.addEventListener("DOMMouseScroll",xb,!1),document.addEventListener("mousewheel",xb,!1)):(document.removeEventListener("DOMMouseScroll",xb,!1),document.removeEventListener("mousewheel",xb,!1)),Wb.rollingLinks?v():w(),Wb.previewLinks?x():(y(),x("[data-preview-link]")),b>1&&Wb.autoSlide&&Wb.autoSlideStoppable&&_b.canvas&&_b.requestAnimationFrame?(Rb=new Lb($b.wrapper,function(){return Math.min(Math.max((Date.now()-hc)/fc,0),1)}),Rb.on("click",Kb),ic=!1):Rb&&(Rb.destroy(),Rb=null),Wb.theme&&$b.theme){var c=$b.theme.getAttribute("href"),d=/[^\/]*?(?=\.css)/,e=c.match(d)[0];Wb.theme!==e&&(c=c.replace(d,Wb.theme),$b.theme.setAttribute("href",c))}R()}function j(){if(ec=!0,window.addEventListener("hashchange",Fb,!1),window.addEventListener("resize",Gb,!1),Wb.touch&&($b.wrapper.addEventListener("touchstart",rb,!1),$b.wrapper.addEventListener("touchmove",sb,!1),$b.wrapper.addEventListener("touchend",tb,!1),window.navigator.msPointerEnabled&&($b.wrapper.addEventListener("MSPointerDown",ub,!1),$b.wrapper.addEventListener("MSPointerMove",vb,!1),$b.wrapper.addEventListener("MSPointerUp",wb,!1))),Wb.keyboard&&document.addEventListener("keydown",qb,!1),Wb.progress&&$b.progress&&$b.progress.addEventListener("click",yb,!1),Wb.focusBodyOnPageVisiblityChange){var a;"hidden"in document?a="visibilitychange":"msHidden"in document?a="msvisibilitychange":"webkitHidden"in document&&(a="webkitvisibilitychange"),a&&document.addEventListener(a,Hb,!1)}["touchstart","click"].forEach(function(a){$b.controlsLeft.forEach(function(b){b.addEventListener(a,zb,!1)}),$b.controlsRight.forEach(function(b){b.addEventListener(a,Ab,!1)}),$b.controlsUp.forEach(function(b){b.addEventListener(a,Bb,!1)}),$b.controlsDown.forEach(function(b){b.addEventListener(a,Cb,!1)}),$b.controlsPrev.forEach(function(b){b.addEventListener(a,Db,!1)}),$b.controlsNext.forEach(function(b){b.addEventListener(a,Eb,!1)})})}function k(){ec=!1,document.removeEventListener("keydown",qb,!1),window.removeEventListener("hashchange",Fb,!1),window.removeEventListener("resize",Gb,!1),$b.wrapper.removeEventListener("touchstart",rb,!1),$b.wrapper.removeEventListener("touchmove",sb,!1),$b.wrapper.removeEventListener("touchend",tb,!1),window.navigator.msPointerEnabled&&($b.wrapper.removeEventListener("MSPointerDown",ub,!1),$b.wrapper.removeEventListener("MSPointerMove",vb,!1),$b.wrapper.removeEventListener("MSPointerUp",wb,!1)),Wb.progress&&$b.progress&&$b.progress.removeEventListener("click",yb,!1),["touchstart","click"].forEach(function(a){$b.controlsLeft.forEach(function(b){b.removeEventListener(a,zb,!1)}),$b.controlsRight.forEach(function(b){b.removeEventListener(a,Ab,!1)}),$b.controlsUp.forEach(function(b){b.removeEventListener(a,Bb,!1)}),$b.controlsDown.forEach(function(b){b.removeEventListener(a,Cb,!1)}),$b.controlsPrev.forEach(function(b){b.removeEventListener(a,Db,!1)}),$b.controlsNext.forEach(function(b){b.removeEventListener(a,Eb,!1)})})}function l(a,b){for(var c in b)a[c]=b[c]}function m(a){return Array.prototype.slice.call(a)}function n(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)}function o(a,b){a.style.WebkitTransform=b,a.style.MozTransform=b,a.style.msTransform=b,a.style.OTransform=b,a.style.transform=b}function p(a){var b=0;if(a){var c=0;m(a.childNodes).forEach(function(a){"number"==typeof a.offsetTop&&a.style&&("absolute"===a.style.position&&(c+=1),b=Math.max(b,a.offsetTop+a.offsetHeight))}),0===c&&(b=a.offsetHeight)}return b}function q(a,b){if(b=b||0,a){var c=a.parentNode,d=c.childNodes;m(d).forEach(function(c){if("number"==typeof c.offsetHeight&&c!==a){var d=window.getComputedStyle(c),e=parseInt(d.marginTop,10),f=parseInt(d.marginBottom,10);b-=c.offsetHeight+e+f}});var e=window.getComputedStyle(a);b-=parseInt(e.marginTop,10)+parseInt(e.marginBottom,10)}return b}function r(){return/print-pdf/gi.test(window.location.search)}function s(){Wb.hideAddressBar&&Qb&&(window.addEventListener("load",t,!1),window.addEventListener("orientationchange",t,!1))}function t(){setTimeout(function(){window.scrollTo(0,1)},10)}function u(a,b){var c=document.createEvent("HTMLEvents",1,2);c.initEvent(a,!0,!0),l(c,b),$b.wrapper.dispatchEvent(c)}function v(){if(_b.transforms3d&&!("msPerspective"in document.body.style))for(var a=document.querySelectorAll(Sb+" a:not(.image)"),b=0,c=a.length;c>b;b++){var d=a[b];if(!(!d.textContent||d.querySelector("*")||d.className&&d.classList.contains(d,"roll"))){var e=document.createElement("span");e.setAttribute("data-title",d.text),e.innerHTML=d.innerHTML,d.classList.add("roll"),d.innerHTML="",d.appendChild(e)}}}function w(){for(var a=document.querySelectorAll(Sb+" a.roll"),b=0,c=a.length;c>b;b++){var d=a[b],e=d.querySelector("span");e&&(d.classList.remove("roll"),d.innerHTML=e.innerHTML)}}function x(a){var b=m(document.querySelectorAll(a?a:"a"));b.forEach(function(a){/^(http|www)/gi.test(a.getAttribute("href"))&&a.addEventListener("click",Jb,!1)})}function y(){var a=m(document.querySelectorAll("a"));a.forEach(function(a){/^(http|www)/gi.test(a.getAttribute("href"))&&a.removeEventListener("click",Jb,!1)})}function z(a){A(),$b.preview=document.createElement("div"),$b.preview.classList.add("preview-link-overlay"),$b.wrapper.appendChild($b.preview),$b.preview.innerHTML=["<header>",'<a class="close" href="#"><span class="icon"></span></a>','<a class="external" href="'+a+'" target="_blank"><span class="icon"></span></a>',"</header>",'<div class="spinner"></div>','<div class="viewport">','<iframe src="'+a+'"></iframe>',"</div>"].join(""),$b.preview.querySelector("iframe").addEventListener("load",function(){$b.preview.classList.add("loaded")},!1),$b.preview.querySelector(".close").addEventListener("click",function(a){A(),a.preventDefault()},!1),$b.preview.querySelector(".external").addEventListener("click",function(){A()},!1),setTimeout(function(){$b.preview.classList.add("visible")},1)}function A(){$b.preview&&($b.preview.setAttribute("src",""),$b.preview.parentNode.removeChild($b.preview),$b.preview=null)}function B(a){var b=m(a);return b.forEach(function(a,b){a.hasAttribute("data-fragment-index")||a.setAttribute("data-fragment-index",b)}),b.sort(function(a,b){return a.getAttribute("data-fragment-index")-b.getAttribute("data-fragment-index")}),b}function C(){if($b.wrapper&&!r()){var a=$b.wrapper.offsetWidth,b=$b.wrapper.offsetHeight;a-=b*Wb.margin,b-=b*Wb.margin;var c=Wb.width,d=Wb.height,e=20;D(Wb.width,Wb.height,e),"string"==typeof c&&/%$/.test(c)&&(c=parseInt(c,10)/100*a),"string"==typeof d&&/%$/.test(d)&&(d=parseInt(d,10)/100*b),$b.slides.style.width=c+"px",$b.slides.style.height=d+"px",Zb=Math.min(a/c,b/d),Zb=Math.max(Zb,Wb.minScale),Zb=Math.min(Zb,Wb.maxScale),"undefined"==typeof $b.slides.style.zoom||navigator.userAgent.match(/(iphone|ipod|ipad|android)/gi)?o($b.slides,"translate(-50%, -50%) scale("+Zb+") translate(50%, 50%)"):$b.slides.style.zoom=Zb;for(var f=m(document.querySelectorAll(Sb)),g=0,h=f.length;h>g;g++){var i=f[g];"none"!==i.style.display&&(i.style.top=Wb.center?i.classList.contains("stack")?0:Math.max(-(p(i)/2)-e,-d/2)+"px":"")}U(),X()}}function D(a,b,c){m($b.slides.querySelectorAll("section > .stretch")).forEach(function(d){var e=q(d,b-2*c);if(/(img|video)/gi.test(d.nodeName)){var f=d.naturalWidth||d.videoWidth,g=d.naturalHeight||d.videoHeight,h=Math.min(a/f,e/g);d.style.width=f*h+"px",d.style.height=g*h+"px"}else d.style.width=a+"px",d.style.height=e+"px"})}function E(a,b){"object"==typeof a&&"function"==typeof a.setAttribute&&a.setAttribute("data-previous-indexv",b||0)}function F(a){if("object"==typeof a&&"function"==typeof a.setAttribute&&a.classList.contains("stack")){var b=a.hasAttribute("data-start-indexv")?"data-start-indexv":"data-previous-indexv";return parseInt(a.getAttribute(b)||0,10)}return 0}function G(){if(Wb.overview){gb();var a=$b.wrapper.classList.contains("overview"),b=window.innerWidth<400?1e3:2500;$b.wrapper.classList.add("overview"),$b.wrapper.classList.remove("overview-deactivating"),clearTimeout(cc),clearTimeout(dc),cc=setTimeout(function(){for(var c=document.querySelectorAll(Tb),d=0,e=c.length;e>d;d++){var f=c[d],g=Wb.rtl?-105:105;if(f.setAttribute("data-index-h",d),o(f,"translateZ(-"+b+"px) translate("+(d-Mb)*g+"%, 0%)"),f.classList.contains("stack"))for(var h=f.querySelectorAll("section"),i=0,j=h.length;j>i;i++){var k=d===Mb?Nb:F(f),l=h[i];l.setAttribute("data-index-h",d),l.setAttribute("data-index-v",i),o(l,"translate(0%, "+105*(i-k)+"%)"),l.addEventListener("click",Ib,!0)}else f.addEventListener("click",Ib,!0)}T(),C(),a||u("overviewshown",{indexh:Mb,indexv:Nb,currentSlide:Pb})},10)}}function H(){Wb.overview&&(clearTimeout(cc),clearTimeout(dc),$b.wrapper.classList.remove("overview"),$b.wrapper.classList.add("overview-deactivating"),dc=setTimeout(function(){$b.wrapper.classList.remove("overview-deactivating")},1),m(document.querySelectorAll(Sb)).forEach(function(a){o(a,""),a.removeEventListener("click",Ib,!0)}),Q(Mb,Nb),fb(),u("overviewhidden",{indexh:Mb,indexv:Nb,currentSlide:Pb}))}function I(a){"boolean"==typeof a?a?G():H():J()?H():G()}function J(){return $b.wrapper.classList.contains("overview")}function K(a){return a=a?a:Pb,a&&a.parentNode&&!!a.parentNode.nodeName.match(/section/i)}function L(){var a=document.body,b=a.requestFullScreen||a.webkitRequestFullscreen||a.webkitRequestFullScreen||a.mozRequestFullScreen||a.msRequestFullScreen;b&&b.apply(a)}function M(){var a=$b.wrapper.classList.contains("paused");gb(),$b.wrapper.classList.add("paused"),a===!1&&u("paused")}function N(){var a=$b.wrapper.classList.contains("paused");$b.wrapper.classList.remove("paused"),fb(),a&&u("resumed")}function O(){P()?N():M()}function P(){return $b.wrapper.classList.contains("paused")}function Q(a,b,c,d){Ob=Pb;var e=document.querySelectorAll(Tb);void 0===b&&(b=F(e[a])),Ob&&Ob.parentNode&&Ob.parentNode.classList.contains("stack")&&E(Ob.parentNode,Nb);var f=Yb.concat();Yb.length=0;var g=Mb||0,h=Nb||0;Mb=S(Tb,void 0===a?Mb:a),Nb=S(Ub,void 0===b?Nb:b),T(),C();a:for(var i=0,j=Yb.length;j>i;i++){for(var k=0;k<f.length;k++)if(f[k]===Yb[i]){f.splice(k,1);continue a}document.documentElement.classList.add(Yb[i]),u(Yb[i])}for(;f.length;)document.documentElement.classList.remove(f.pop());J()&&G();var l=e[Mb],n=l.querySelectorAll("section");if(Pb=n[Nb]||l,"undefined"!=typeof c){var o=B(Pb.querySelectorAll(".fragment"));m(o).forEach(function(a,b){c>b?a.classList.add("visible"):a.classList.remove("visible")})}var p=Mb!==g||Nb!==h;p?u("slidechanged",{indexh:Mb,indexv:Nb,previousSlide:Ob,currentSlide:Pb,origin:d}):Ob=null,Ob&&(Ob.classList.remove("present"),document.querySelector(Vb).classList.contains("present")&&setTimeout(function(){var a,b=m(document.querySelectorAll(Tb+".stack"));for(a in b)b[a]&&E(b[a],0)},0)),p&&(_(Ob),$(Pb)),V(),U(),W(),X(),bb(),fb()}function R(){k(),j(),C(),fc=Wb.autoSlide,fb(),h(),V(),U(),W()}function S(a,b){var c=m(document.querySelectorAll(a)),d=c.length;if(d){Wb.loop&&(b%=d,0>b&&(b=d+b)),b=Math.max(Math.min(b,d-1),0);for(var e=0;d>e;e++){var f=c[e],g=Wb.rtl&&!K(f);if(f.classList.remove("past"),f.classList.remove("present"),f.classList.remove("future"),f.setAttribute("hidden",""),b>e)f.classList.add(g?"future":"past");else if(e>b){f.classList.add(g?"past":"future");for(var h=m(f.querySelectorAll(".fragment.visible"));h.length;)h.pop().classList.remove("visible")}f.querySelector("section")&&f.classList.add("stack")}c[b].classList.add("present"),c[b].removeAttribute("hidden");var i=c[b].getAttribute("data-state");i&&(Yb=Yb.concat(i.split(" ")))}else b=0;return b}function T(){var a,b,c=m(document.querySelectorAll(Tb)),d=c.length;if(d){var e=J()?10:Wb.viewDistance;Qb&&(e=J()?6:1);for(var f=0;d>f;f++){var g=c[f],h=m(g.querySelectorAll("section")),i=h.length;if(a=Math.abs((Mb-f)%(d-e))||0,g.style.display=a>e?"none":"block",i)for(var j=F(g),k=0;i>k;k++){var l=h[k];b=f===Mb?Math.abs(Nb-k):Math.abs(k-j),l.style.display=a+b>e?"none":"block"}}}}function U(){if(Wb.progress&&$b.progress){var a=m(document.querySelectorAll(Tb)),b=document.querySelectorAll(Sb+":not(.stack)").length,c=0;a:for(var d=0;d<a.length;d++){for(var e=a[d],f=m(e.querySelectorAll("section")),g=0;g<f.length;g++){if(f[g].classList.contains("present"))break a;c++}if(e.classList.contains("present"))break;e.classList.contains("stack")===!1&&c++}$b.progressbar.style.width=c/(b-1)*window.innerWidth+"px"}}function V(){var a=Y(),b=Z();$b.controlsLeft.concat($b.controlsRight).concat($b.controlsUp).concat($b.controlsDown).concat($b.controlsPrev).concat($b.controlsNext).forEach(function(a){a.classList.remove("enabled"),a.classList.remove("fragmented")}),a.left&&$b.controlsLeft.forEach(function(a){a.classList.add("enabled")}),a.right&&$b.controlsRight.forEach(function(a){a.classList.add("enabled")}),a.up&&$b.controlsUp.forEach(function(a){a.classList.add("enabled")}),a.down&&$b.controlsDown.forEach(function(a){a.classList.add("enabled")}),(a.left||a.up)&&$b.controlsPrev.forEach(function(a){a.classList.add("enabled")}),(a.right||a.down)&&$b.controlsNext.forEach(function(a){a.classList.add("enabled")}),Pb&&(b.prev&&$b.controlsPrev.forEach(function(a){a.classList.add("fragmented","enabled")}),b.next&&$b.controlsNext.forEach(function(a){a.classList.add("fragmented","enabled")}),K(Pb)?(b.prev&&$b.controlsUp.forEach(function(a){a.classList.add("fragmented","enabled")}),b.next&&$b.controlsDown.forEach(function(a){a.classList.add("fragmented","enabled")})):(b.prev&&$b.controlsLeft.forEach(function(a){a.classList.add("fragmented","enabled")}),b.next&&$b.controlsRight.forEach(function(a){a.classList.add("fragmented","enabled")})))}function W(){m($b.background.childNodes).forEach(function(a,b){var c=Wb.rtl?"future":"past",d=Wb.rtl?"past":"future";a.className="slide-background "+(Mb>b?c:b>Mb?d:"present"),m(a.childNodes).forEach(function(a,b){a.className="slide-background "+(Nb>b?"past":b>Nb?"future":"present")})}),setTimeout(function(){$b.background.classList.remove("no-transition")},1)}function X(){if(Wb.parallaxBackgroundImage){var a,b,c=document.querySelectorAll(Tb),d=document.querySelectorAll(Ub),e=$b.background.style.backgroundSize.split(" ");1===e.length?a=b=parseInt(e[0],10):(a=parseInt(e[0],10),b=parseInt(e[1],10));var f=$b.background.offsetWidth,g=c.length,h=-(a-f)/(g-1)*Mb,i=$b.background.offsetHeight,j=d.length,k=j>0?-(b-i)/(j-1)*Nb:0;$b.background.style.backgroundPosition=h+"px "+k+"px"}}function Y(){var a=document.querySelectorAll(Tb),b=document.querySelectorAll(Ub),c={left:Mb>0||Wb.loop,right:Mb<a.length-1||Wb.loop,up:Nb>0,down:Nb<b.length-1};if(Wb.rtl){var d=c.left;c.left=c.right,c.right=d}return c}function Z(){if(Pb&&Wb.fragments){var a=Pb.querySelectorAll(".fragment"),b=Pb.querySelectorAll(".fragment:not(.visible)");return{prev:a.length-b.length>0,next:!!b.length}}return{prev:!1,next:!1}}function $(a){a&&(m(a.querySelectorAll("video, audio")).forEach(function(a){a.hasAttribute("data-autoplay")&&a.play()}),m(a.querySelectorAll('iframe[src*="youtube.com/embed/"]')).forEach(function(a){a.hasAttribute("data-autoplay")&&a.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}',"*")}))}function _(a){a&&(m(a.querySelectorAll("video, audio")).forEach(function(a){a.hasAttribute("data-ignore")||a.pause()}),m(a.querySelectorAll('iframe[src*="youtube.com/embed/"]')).forEach(function(a){a.hasAttribute("data-ignore")||"function"!=typeof a.contentWindow.postMessage||a.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*")}))}function ab(){var a=window.location.hash,b=a.slice(2).split("/"),c=a.replace(/#|\//gi,"");if(isNaN(parseInt(b[0],10))&&c.length){var d=document.querySelector("#"+c);if(d){var e=Reveal.getIndices(d);Q(e.h,e.v)}else Q(Mb||0,Nb||0)}else{var f=parseInt(b[0],10)||0,g=parseInt(b[1],10)||0;(f!==Mb||g!==Nb)&&Q(f,g)}}function bb(a){if(Wb.history)if(clearTimeout(bc),"number"==typeof a)bc=setTimeout(bb,a);else{var b="/";Pb&&"string"==typeof Pb.getAttribute("id")?b="/"+Pb.getAttribute("id"):((Mb>0||Nb>0)&&(b+=Mb),Nb>0&&(b+="/"+Nb)),window.location.hash=b}}function cb(a){var b,c=Mb,d=Nb;if(a){var e=K(a),f=e?a.parentNode:a,g=m(document.querySelectorAll(Tb));c=Math.max(g.indexOf(f),0),e&&(d=Math.max(m(a.parentNode.querySelectorAll("section")).indexOf(a),0))}if(!a&&Pb){var h=Pb.querySelectorAll(".fragment").length>0;if(h){var i=Pb.querySelectorAll(".fragment.visible");b=i.length}}return{h:c,v:d,f:b}}function db(){if(Pb&&Wb.fragments){var a=B(Pb.querySelectorAll(".fragment:not(.visible)"));if(a.length){var b=a[0].getAttribute("data-fragment-index");return a=Pb.querySelectorAll('.fragment[data-fragment-index="'+b+'"]'),m(a).forEach(function(a){a.classList.add("visible")}),u("fragmentshown",{fragment:a[0],fragments:a}),V(),!0}}return!1}function eb(){if(Pb&&Wb.fragments){var a=B(Pb.querySelectorAll(".fragment.visible"));if(a.length){var b=a[a.length-1].getAttribute("data-fragment-index");return a=Pb.querySelectorAll('.fragment[data-fragment-index="'+b+'"]'),m(a).forEach(function(a){a.classList.remove("visible")}),u("fragmenthidden",{fragment:a[0],fragments:a}),V(),!0}}return!1}function fb(){if(gb(),Pb){var a=Pb.getAttribute("data-autoslide");fc=a?parseInt(a,10):Wb.autoSlide,!fc||ic||P()||J()||Reveal.isLastSlide()&&Wb.loop!==!0||(gc=setTimeout(ob,fc),hc=Date.now()),Rb&&Rb.setPlaying(-1!==gc)}}function gb(){clearTimeout(gc),gc=-1}function hb(){ic=!0,clearTimeout(gc),Rb&&Rb.setPlaying(!1)}function ib(){ic=!1,fb()}function jb(){Wb.rtl?(J()||db()===!1)&&Y().left&&Q(Mb+1):(J()||eb()===!1)&&Y().left&&Q(Mb-1)}function kb(){Wb.rtl?(J()||eb()===!1)&&Y().right&&Q(Mb-1):(J()||db()===!1)&&Y().right&&Q(Mb+1)}function lb(){(J()||eb()===!1)&&Y().up&&Q(Mb,Nb-1)}function mb(){(J()||db()===!1)&&Y().down&&Q(Mb,Nb+1)}function nb(){if(eb()===!1)if(Y().up)lb();else{var a=document.querySelector(Tb+".past:nth-child("+Mb+")");if(a){var b=a.querySelectorAll("section").length-1||void 0,c=Mb-1;Q(c,b)}}}function ob(){db()===!1&&(Y().down?mb():kb()),fb()}function pb(){Wb.autoSlideStoppable&&hb()}function qb(a){pb(a),document.activeElement;var b=!(!document.activeElement||!document.activeElement.type&&!document.activeElement.href&&"inherit"===document.activeElement.contentEditable);if(!(b||a.shiftKey&&32!==a.keyCode||a.altKey||a.ctrlKey||a.metaKey)){if(P()&&-1===[66,190,191].indexOf(a.keyCode))return!1;var c=!1;if("object"==typeof Wb.keyboard)for(var d in Wb.keyboard)if(parseInt(d,10)===a.keyCode){var e=Wb.keyboard[d];"function"==typeof e?e.apply(null,[a]):"string"==typeof e&&"function"==typeof Reveal[e]&&Reveal[e].call(),c=!0}if(c===!1)switch(c=!0,a.keyCode){case 80:case 33:nb();break;case 78:case 34:ob();break;case 72:case 37:jb();break;case 76:case 39:kb();break;case 75:case 38:lb();break;case 74:case 40:mb();break;case 36:Q(0);break;case 35:Q(Number.MAX_VALUE);break;case 32:J()?H():a.shiftKey?nb():ob();break;case 13:J()?H():c=!1;break;case 66:case 190:case 191:O();break;case 70:L();break;default:c=!1}c?a.preventDefault():27!==a.keyCode&&79!==a.keyCode||!_b.transforms3d||($b.preview?A():I(),a.preventDefault()),fb()}}function rb(a){jc.startX=a.touches[0].clientX,jc.startY=a.touches[0].clientY,jc.startCount=a.touches.length,2===a.touches.length&&Wb.overview&&(jc.startSpan=n({x:a.touches[1].clientX,y:a.touches[1].clientY},{x:jc.startX,y:jc.startY}))}function sb(a){if(jc.captured)navigator.userAgent.match(/android/gi)&&a.preventDefault();else{pb(a);var b=a.touches[0].clientX,c=a.touches[0].clientY;if(2===a.touches.length&&2===jc.startCount&&Wb.overview){var d=n({x:a.touches[1].clientX,y:a.touches[1].clientY},{x:jc.startX,y:jc.startY});Math.abs(jc.startSpan-d)>jc.threshold&&(jc.captured=!0,d<jc.startSpan?G():H()),a.preventDefault()}else if(1===a.touches.length&&2!==jc.startCount){var e=b-jc.startX,f=c-jc.startY;e>jc.threshold&&Math.abs(e)>Math.abs(f)?(jc.captured=!0,jb()):e<-jc.threshold&&Math.abs(e)>Math.abs(f)?(jc.captured=!0,kb()):f>jc.threshold?(jc.captured=!0,lb()):f<-jc.threshold&&(jc.captured=!0,mb()),Wb.embedded?(jc.captured||K(Pb))&&a.preventDefault():a.preventDefault()}}}function tb(){jc.captured=!1}function ub(a){a.pointerType===a.MSPOINTER_TYPE_TOUCH&&(a.touches=[{clientX:a.clientX,clientY:a.clientY}],rb(a))}function vb(a){a.pointerType===a.MSPOINTER_TYPE_TOUCH&&(a.touches=[{clientX:a.clientX,clientY:a.clientY}],sb(a))}function wb(a){a.pointerType===a.MSPOINTER_TYPE_TOUCH&&(a.touches=[{clientX:a.clientX,clientY:a.clientY}],tb(a))}function xb(a){if(Date.now()-ac>600){ac=Date.now();var b=a.detail||-a.wheelDelta;b>0?ob():nb()}}function yb(a){pb(a),a.preventDefault();var b=m(document.querySelectorAll(Tb)).length,c=Math.floor(a.clientX/$b.wrapper.offsetWidth*b);Q(c)}function zb(a){a.preventDefault(),pb(),jb()}function Ab(a){a.preventDefault(),pb(),kb()}function Bb(a){a.preventDefault(),pb(),lb()}function Cb(a){a.preventDefault(),pb(),mb()}function Db(a){a.preventDefault(),pb(),nb()}function Eb(a){a.preventDefault(),pb(),ob()}function Fb(){ab()}function Gb(){C()}function Hb(){var a=document.webkitHidden||document.msHidden||document.hidden;a===!1&&document.activeElement!==document.body&&(document.activeElement.blur(),document.body.focus())}function Ib(a){if(ec&&J()){a.preventDefault();for(var b=a.target;b&&!b.nodeName.match(/section/gi);)b=b.parentNode;if(b&&!b.classList.contains("disabled")&&(H(),b.nodeName.match(/section/gi))){var c=parseInt(b.getAttribute("data-index-h"),10),d=parseInt(b.getAttribute("data-index-v"),10);Q(c,d)}}}function Jb(a){var b=a.target.getAttribute("href");b&&(z(b),a.preventDefault())}function Kb(){Reveal.isLastSlide()&&Wb.loop===!1?(Q(0,0),ib()):ic?ib():hb()}function Lb(a,b){this.diameter=50,this.thickness=3,this.playing=!1,this.progress=0,this.progressOffset=1,this.container=a,this.progressCheck=b,this.canvas=document.createElement("canvas"),this.canvas.className="playback",this.canvas.width=this.diameter,this.canvas.height=this.diameter,this.context=this.canvas.getContext("2d"),this.container.appendChild(this.canvas),this.render()}var Mb,Nb,Ob,Pb,Qb,Rb,Sb=".reveal .slides section",Tb=".reveal .slides>section",Ub=".reveal .slides>section.present>section",Vb=".reveal .slides>section:first-child",Wb={width:960,height:700,margin:.1,minScale:.2,maxScale:1,controls:!0,progress:!0,history:!1,keyboard:!0,overview:!0,center:!0,touch:!0,loop:!1,rtl:!1,fragments:!0,embedded:!1,autoSlide:0,autoSlideStoppable:!0,mouseWheel:!1,rollingLinks:!1,hideAddressBar:!0,previewLinks:!1,focusBodyOnPageVisiblityChange:!0,theme:null,transition:"default",transitionSpeed:"default",backgroundTransition:"default",parallaxBackgroundImage:"",parallaxBackgroundSize:"",viewDistance:3,dependencies:[]},Xb=!1,Yb=[],Zb=1,$b={},_b={},ac=0,bc=0,cc=0,dc=0,ec=!1,fc=0,gc=0,hc=-1,ic=!1,jc={startX:0,startY:0,startSpan:0,startCount:0,captured:!1,threshold:40};return Lb.prototype.setPlaying=function(a){var b=this.playing;this.playing=a,!b&&this.playing?this.animate():this.render()},Lb.prototype.animate=function(){var a=this.progress;this.progress=this.progressCheck(),a>.8&&this.progress<.2&&(this.progressOffset=this.progress),this.render(),this.playing&&_b.requestAnimationFrameMethod.call(window,this.animate.bind(this))},Lb.prototype.render=function(){var a=this.playing?this.progress:0,b=this.diameter/2-this.thickness,c=this.diameter/2,d=this.diameter/2,e=14;this.progressOffset+=.1*(1-this.progressOffset);var f=-Math.PI/2+a*2*Math.PI,g=-Math.PI/2+this.progressOffset*2*Math.PI;this.context.save(),this.context.clearRect(0,0,this.diameter,this.diameter),this.context.beginPath(),this.context.arc(c,d,b+2,0,2*Math.PI,!1),this.context.fillStyle="rgba( 0, 0, 0, 0.4 )",this.context.fill(),this.context.beginPath(),this.context.arc(c,d,b,0,2*Math.PI,!1),this.context.lineWidth=this.thickness,this.context.strokeStyle="#666",this.context.stroke(),this.playing&&(this.context.beginPath(),this.context.arc(c,d,b,g,f,!1),this.context.lineWidth=this.thickness,this.context.strokeStyle="#fff",this.context.stroke()),this.context.translate(c-e/2,d-e/2),this.playing?(this.context.fillStyle="#fff",this.context.fillRect(0,0,e/2-2,e),this.context.fillRect(e/2+2,0,e/2-2,e)):(this.context.beginPath(),this.context.translate(2,0),this.context.moveTo(0,0),this.context.lineTo(e-2,e/2),this.context.lineTo(0,e),this.context.fillStyle="#fff",this.context.fill()),this.context.restore()},Lb.prototype.on=function(a,b){this.canvas.addEventListener(a,b,!1)},Lb.prototype.off=function(a,b){this.canvas.removeEventListener(a,b,!1)},Lb.prototype.destroy=function(){this.playing=!1,this.canvas.parentNode&&this.container.removeChild(this.canvas)},{initialize:a,configure:i,sync:R,slide:Q,left:jb,right:kb,up:lb,down:mb,prev:nb,next:ob,prevFragment:eb,nextFragment:db,navigateTo:Q,navigateLeft:jb,navigateRight:kb,navigateUp:lb,navigateDown:mb,navigatePrev:nb,navigateNext:ob,layout:C,availableRoutes:Y,availableFragments:Z,toggleOverview:I,togglePause:O,isOverview:J,isPaused:P,addEventListeners:j,removeEventListeners:k,getIndices:cb,getSlide:function(a,b){var c=document.querySelectorAll(Tb)[a],d=c&&c.querySelectorAll("section");return"undefined"!=typeof b?d?d[b]:void 0:c},getPreviousSlide:function(){return Ob},getCurrentSlide:function(){return Pb},getScale:function(){return Zb},getConfig:function(){return Wb},getQueryHash:function(){var a={};location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(b){a[b.split("=").shift()]=b.split("=").pop()});for(var b in a){var c=a[b];"null"===c?a[b]=null:"true"===c?a[b]=!0:"false"===c?a[b]=!1:isNaN(parseFloat(c))||(a[b]=parseFloat(c))}return a},isFirstSlide:function(){return null==document.querySelector(Sb+".past")?!0:!1},isLastSlide:function(){return Pb?Pb.nextElementSibling?!1:K(Pb)&&Pb.parentNode.nextElementSibling?!1:!0:!1},isReady:function(){return Xb},addEventListener:function(a,b,c){"addEventListener"in window&&($b.wrapper||document.querySelector(".reveal")).addEventListener(a,b,c)},removeEventListener:function(a,b,c){"addEventListener"in window&&($b.wrapper||document.querySelector(".reveal")).removeEventListener(a,b,c)}}}();
\ No newline at end of file |