From 309c92d3488aa0ac1a7c77a477a67f5963308968 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Wo=C5=BAniak?= Date: Wed, 9 Oct 2024 13:33:51 +1100 Subject: [PATCH] v1 --- 2024-10-be24-bsvars.Rproj | 13 + bsvars.png | Bin 0 -> 67485 bytes cran.png | Bin 0 -> 341757 bytes index-speaker.html | 1693 +++++++++++++++++ index.html | 1693 +++++++++++++++++ index.qmd | 1325 +++++++++++++ index_files/libs/clipboard/clipboard.min.js | 7 + index_files/libs/quarto-html/light-border.css | 1 + index_files/libs/quarto-html/popper.min.js | 6 + .../libs/quarto-html/quarto-html.min.css | 1 + .../quarto-syntax-highlighting.css | 203 ++ index_files/libs/quarto-html/tabby.min.js | 418 ++++ index_files/libs/quarto-html/tippy.css | 1 + index_files/libs/quarto-html/tippy.umd.min.js | 2 + index_files/libs/revealjs/dist/reset.css | 30 + index_files/libs/revealjs/dist/reveal.css | 8 + index_files/libs/revealjs/dist/reveal.esm.js | 9 + .../libs/revealjs/dist/reveal.esm.js.map | 1 + index_files/libs/revealjs/dist/reveal.js | 9 + index_files/libs/revealjs/dist/reveal.js.map | 1 + .../dist/theme/fonts/league-gothic/LICENSE | 2 + .../fonts/league-gothic/league-gothic.css | 10 + .../fonts/league-gothic/league-gothic.eot | Bin 0 -> 25696 bytes .../fonts/league-gothic/league-gothic.ttf | Bin 0 -> 64256 bytes .../fonts/league-gothic/league-gothic.woff | Bin 0 -> 30764 bytes .../dist/theme/fonts/source-sans-pro/LICENSE | 45 + .../source-sans-pro-italic.eot | Bin 0 -> 75720 bytes .../source-sans-pro-italic.ttf | Bin 0 -> 238084 bytes .../source-sans-pro-italic.woff | Bin 0 -> 98556 bytes .../source-sans-pro-regular.eot | Bin 0 -> 88070 bytes .../source-sans-pro-regular.ttf | Bin 0 -> 288008 bytes .../source-sans-pro-regular.woff | Bin 0 -> 114324 bytes .../source-sans-pro-semibold.eot | Bin 0 -> 89897 bytes .../source-sans-pro-semibold.ttf | Bin 0 -> 284640 bytes .../source-sans-pro-semibold.woff | Bin 0 -> 115648 bytes .../source-sans-pro-semibolditalic.eot | Bin 0 -> 75706 bytes .../source-sans-pro-semibolditalic.ttf | Bin 0 -> 240944 bytes .../source-sans-pro-semibolditalic.woff | Bin 0 -> 98816 bytes .../fonts/source-sans-pro/source-sans-pro.css | 39 + .../libs/revealjs/dist/theme/quarto.css | 5 + .../plugin/highlight/highlight.esm.js | 5 + .../revealjs/plugin/highlight/highlight.js | 5 + .../revealjs/plugin/highlight/monokai.css | 71 + .../libs/revealjs/plugin/highlight/plugin.js | 439 +++++ .../revealjs/plugin/highlight/zenburn.css | 80 + .../revealjs/plugin/markdown/markdown.esm.js | 1 + .../libs/revealjs/plugin/markdown/markdown.js | 1 + .../libs/revealjs/plugin/markdown/plugin.js | 475 +++++ .../libs/revealjs/plugin/math/katex.js | 96 + .../libs/revealjs/plugin/math/math.esm.js | 1 + index_files/libs/revealjs/plugin/math/math.js | 1 + .../libs/revealjs/plugin/math/mathjax2.js | 89 + .../libs/revealjs/plugin/math/mathjax3.js | 77 + .../libs/revealjs/plugin/math/plugin.js | 15 + .../revealjs/plugin/multiplex/multiplex.js | 57 + .../libs/revealjs/plugin/multiplex/plugin.yml | 8 + .../revealjs/plugin/multiplex/socket.io.js | 9 + .../libs/revealjs/plugin/notes/notes.esm.js | 1 + .../libs/revealjs/plugin/notes/notes.js | 1 + .../libs/revealjs/plugin/notes/plugin.js | 236 +++ .../revealjs/plugin/notes/speaker-view.html | 884 +++++++++ .../revealjs/plugin/pdf-export/pdfexport.js | 111 ++ .../revealjs/plugin/pdf-export/plugin.yml | 2 + .../quarto-line-highlight/line-highlight.css | 31 + .../quarto-line-highlight/line-highlight.js | 351 ++++ .../plugin/quarto-line-highlight/plugin.yml | 4 + .../revealjs/plugin/quarto-support/footer.css | 110 ++ .../revealjs/plugin/quarto-support/plugin.yml | 5 + .../revealjs/plugin/quarto-support/support.js | 290 +++ .../libs/revealjs/plugin/reveal-menu/menu.css | 346 ++++ .../libs/revealjs/plugin/reveal-menu/menu.js | 1 + .../revealjs/plugin/reveal-menu/plugin.yml | 9 + .../plugin/reveal-menu/quarto-menu.css | 68 + .../plugin/reveal-menu/quarto-menu.js | 43 + .../libs/revealjs/plugin/search/plugin.js | 243 +++ .../libs/revealjs/plugin/search/search.esm.js | 7 + .../libs/revealjs/plugin/search/search.js | 7 + .../libs/revealjs/plugin/zoom/plugin.js | 264 +++ .../libs/revealjs/plugin/zoom/zoom.esm.js | 4 + index_files/libs/revealjs/plugin/zoom/zoom.js | 4 + progress.png | Bin 0 -> 83141 bytes theme.scss | 3 + 82 files changed, 9977 insertions(+) create mode 100644 2024-10-be24-bsvars.Rproj create mode 100644 bsvars.png create mode 100644 cran.png create mode 100644 index-speaker.html create mode 100644 index.html create mode 100644 index.qmd create mode 100644 index_files/libs/clipboard/clipboard.min.js create mode 100644 index_files/libs/quarto-html/light-border.css create mode 100644 index_files/libs/quarto-html/popper.min.js create mode 100644 index_files/libs/quarto-html/quarto-html.min.css create mode 100644 index_files/libs/quarto-html/quarto-syntax-highlighting.css create mode 100644 index_files/libs/quarto-html/tabby.min.js create mode 100644 index_files/libs/quarto-html/tippy.css create mode 100644 index_files/libs/quarto-html/tippy.umd.min.js create mode 100644 index_files/libs/revealjs/dist/reset.css create mode 100644 index_files/libs/revealjs/dist/reveal.css create mode 100644 index_files/libs/revealjs/dist/reveal.esm.js create mode 100644 index_files/libs/revealjs/dist/reveal.esm.js.map create mode 100644 index_files/libs/revealjs/dist/reveal.js create mode 100644 index_files/libs/revealjs/dist/reveal.js.map create mode 100644 index_files/libs/revealjs/dist/theme/fonts/league-gothic/LICENSE create mode 100644 index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.css create mode 100644 index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot create mode 100644 index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf create mode 100644 index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff create mode 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/LICENSE create mode 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot create mode 100755 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf create mode 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff create mode 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot create mode 100755 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf create mode 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff create mode 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot create mode 100755 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf create mode 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff create mode 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot create mode 100755 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf create mode 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff create mode 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro.css create mode 100644 index_files/libs/revealjs/dist/theme/quarto.css create mode 100644 index_files/libs/revealjs/plugin/highlight/highlight.esm.js create mode 100644 index_files/libs/revealjs/plugin/highlight/highlight.js create mode 100644 index_files/libs/revealjs/plugin/highlight/monokai.css create mode 100644 index_files/libs/revealjs/plugin/highlight/plugin.js create mode 100644 index_files/libs/revealjs/plugin/highlight/zenburn.css create mode 100644 index_files/libs/revealjs/plugin/markdown/markdown.esm.js create mode 100644 index_files/libs/revealjs/plugin/markdown/markdown.js create mode 100644 index_files/libs/revealjs/plugin/markdown/plugin.js create mode 100644 index_files/libs/revealjs/plugin/math/katex.js create mode 100644 index_files/libs/revealjs/plugin/math/math.esm.js create mode 100644 index_files/libs/revealjs/plugin/math/math.js create mode 100644 index_files/libs/revealjs/plugin/math/mathjax2.js create mode 100644 index_files/libs/revealjs/plugin/math/mathjax3.js create mode 100644 index_files/libs/revealjs/plugin/math/plugin.js create mode 100644 index_files/libs/revealjs/plugin/multiplex/multiplex.js create mode 100644 index_files/libs/revealjs/plugin/multiplex/plugin.yml create mode 100644 index_files/libs/revealjs/plugin/multiplex/socket.io.js create mode 100644 index_files/libs/revealjs/plugin/notes/notes.esm.js create mode 100644 index_files/libs/revealjs/plugin/notes/notes.js create mode 100644 index_files/libs/revealjs/plugin/notes/plugin.js create mode 100644 index_files/libs/revealjs/plugin/notes/speaker-view.html create mode 100644 index_files/libs/revealjs/plugin/pdf-export/pdfexport.js create mode 100644 index_files/libs/revealjs/plugin/pdf-export/plugin.yml create mode 100644 index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css create mode 100644 index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js create mode 100644 index_files/libs/revealjs/plugin/quarto-line-highlight/plugin.yml create mode 100644 index_files/libs/revealjs/plugin/quarto-support/footer.css create mode 100644 index_files/libs/revealjs/plugin/quarto-support/plugin.yml create mode 100644 index_files/libs/revealjs/plugin/quarto-support/support.js create mode 100644 index_files/libs/revealjs/plugin/reveal-menu/menu.css create mode 100644 index_files/libs/revealjs/plugin/reveal-menu/menu.js create mode 100644 index_files/libs/revealjs/plugin/reveal-menu/plugin.yml create mode 100644 index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css create mode 100644 index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js create mode 100644 index_files/libs/revealjs/plugin/search/plugin.js create mode 100644 index_files/libs/revealjs/plugin/search/search.esm.js create mode 100644 index_files/libs/revealjs/plugin/search/search.js create mode 100644 index_files/libs/revealjs/plugin/zoom/plugin.js create mode 100644 index_files/libs/revealjs/plugin/zoom/zoom.esm.js create mode 100644 index_files/libs/revealjs/plugin/zoom/zoom.js create mode 100644 progress.png create mode 100644 theme.scss diff --git a/2024-10-be24-bsvars.Rproj b/2024-10-be24-bsvars.Rproj new file mode 100644 index 0000000..d063e8b --- /dev/null +++ b/2024-10-be24-bsvars.Rproj @@ -0,0 +1,13 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: knitr +LaTeX: pdfLaTeX diff --git a/bsvars.png b/bsvars.png new file mode 100644 index 0000000000000000000000000000000000000000..f80b3627db7ce66bd8ac39f19e382c90a0882cd8 GIT binary patch literal 67485 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

ew;*@=`h)Xvr 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 OgtN4_xM${h>Hh)vRrOT> literal 0 HcmV?d00001 diff --git a/cran.png b/cran.png new file mode 100644 index 0000000000000000000000000000000000000000..85a2f21b273f3e4ec288463f49f1b57bdd26970d GIT binary patch literal 341757 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%0AL9;wWkiNr0a|RZ4x4^D+(*_VLkIh-( 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 literal 0 HcmV?d00001 diff --git a/index-speaker.html b/index-speaker.html new file mode 100644 index 0000000..418b4bb --- /dev/null +++ b/index-speaker.html @@ -0,0 +1,1693 @@ + + + + + + + + + + + + + + Bayesian Structural Vector Autoregressions + + + + + + + + + + + + + + + +

+
+ +
+

Bayesian Structural Vector Autoregressions

+ +
+
+
+by Tomasz Woźniak +
+
+
+ +
+
+

+

\[ \]

+

Structural Vector Autoregressions

+

Identification of Structural VARs

+

Dynamic Causal Effects

+

Bayesian Estimation

+

Monetary Policy Analysis Using the bsvars Package

+
+
+

+

+
+
+

Materials

+

\[ \]

+

Lecture Slides as a Website

+

Quarto document template for your own Australian monetary policy analysis

+

GitHub repo to reproduce the slides and results

+

Tasks

+
+
+

Structural Vector Autoregressions

+
+
+

Structural Vector Autoregressions

+
    +
  • go-to models for the analysis of policy effects
  • +
+
+
    +
  • facilitate the analysis of dynamic causal effects of a well-isolated cause
  • +
  • extensively used for: monetary and fiscal policy, financial markets, …
  • +
  • relatively simple to work with data and provide empirical evidence on the propagation of shocks through economies and markets
  • +
  • provide data-driven stylised facts to be incorporated in theoretical model
  • +
  • require identification of the cause of the dynamic effects
  • +
  • extendible: featuring many variations in specification +
      +
    • non-normality
    • +
    • heteroskedasticity
    • +
    • time-varying parameters
    • +
    • Bayesian
    • +
  • +
  • Proposed by Sims (1980)
  • +
+
+ +
+
+

Structural Vector Autoregressions

+ +

The model.

+

\[\begin{align} +\text{VAR equation: }&& y_t &= \mathbf{A}_1 y_{t-1} + \dots + \mathbf{A}_p y_{t-p} + \boldsymbol\mu_0 + \epsilon_t\\[1ex] +\text{structural equation: }&& \mathbf{B}\epsilon_t &= u_t\\[1ex] +\text{structural shocks: }&& u_t |Y_{t-1} &\sim N_N\left(\mathbf{0}_N,\mathbf{I}_N\right) +\end{align}\]

+
+ +

Notation.

+
    +
  • \(\mathbf{B}\) - \(N\times N\) structural matrix of contemporaneous relationships

  • +
  • \(u_t\) - \(N\)-vector of structural shocks at time \(t\)

    +

    Isolating these shocks allows us to identify dynamic effects of uncorrelated shocks on variables \(y_t\)

  • +
  • \(\epsilon_t\) - \(N\)-vector with VAR errors at time \(t\)

  • +
  • the rest as in Lecture 7: Bayesian VARs

  • +
+
+
+
+

Structural Vector Autoregressions

+ +

The VAR errors.

+

\[\begin{align} +&&&\\ +\text{structural equation: }&& \epsilon_t &= \mathbf{B}^{-1}u_t\\[1ex] +\text{structural shocks: }&& \epsilon_t |Y_{t-1} &\sim N_N\left(\mathbf{0}_N,\Sigma\right)\\[1ex] +\text{covariance: }&& \mathbf\Sigma &= \mathbf{B}^{-1}\mathbf{B}^{-1\prime} = \Theta_0\Theta_0' +\end{align}\]

+

Notation.

+
    +
  • \(\mathbf\Sigma\) - \(N\times N\) covariance matrix of VAR errors
  • +
  • \(\Theta_0 = \mathbf{B}^{-1}\) - \(N\times N\) matrix of contemporaneous effects
  • +
+
+
+

Structural Vector Autoregressions

+ +

Plug the VAR equation into the structural equation to obtain:

+

\[\begin{align} +\mathbf{B}y_t &= \mathbf{B}\mathbf{A}_1 y_{t-1} + \dots + \mathbf{B}\mathbf{A}_p y_{t-p} + \mathbf{B}\boldsymbol\mu_0 + u_t\\[1ex] +&\\ +\end{align}\]

+

Contemporaneous relationships.

+

Let \(N=2\)

+

\[\begin{align} +\mathbf{B}y_t &= \begin{bmatrix}B_{11}&B_{12}\\B_{21}&B_{22}\end{bmatrix}\begin{bmatrix}y_{1t}\\y_{2t}\end{bmatrix} +\end{align}\]

+
+
+

Structural Vector Autoregressions

+ +

Plug the structural equation for \(\epsilon_t\) into the VAR equation to obtain:

+

\[\begin{align} +y_t &= \mathbf{A}_1 y_{t-1} + \dots + \mathbf{A}_p y_{t-p} + \boldsymbol\mu_0 + \mathbf{B}^{-1}u_t\\[1ex] +y_t &= \mathbf{A}_1 y_{t-1} + \dots + \mathbf{A}_p y_{t-p} + \boldsymbol\mu_0 + \mathbf{\Theta}_0 u_t +\end{align}\]

+

Contemporaneous effects.

+

Let \(N=2\)

+

\[\begin{align} +\begin{bmatrix}y_{1t}\\y_{2t}\end{bmatrix} &= \dots + +\begin{bmatrix}\Theta_{11}&\Theta_{12}\\\Theta_{21}&\Theta_{22}\end{bmatrix}\begin{bmatrix}u_{1t}\\ u_{2t}\end{bmatrix} +\end{align}\]

+

Task.

+

What is the contemporaneous effect of the first shock on the second variable?

+
+
+

Identification of Structural VARs

+
+
+

Identification of SVARs (Simplified)

+ +

Covariance and structural relationships.

+

\[\begin{align} +&\\ +\mathbf\Sigma &= \mathbf{B}^{-1}\mathbf{B}^{-1\prime}\\[1ex] +\end{align}\]

+
    +
  • \(\mathbf\Sigma\) can be estimated using data easily
  • +
+
+
    +
  • The relationship presents a system of equations to be solved for \(\mathbf{B}\)
  • +
  • \(\mathbf\Sigma\) is a symmetric \(N\times N\) matrix
  • +
  • \(\mathbf\Sigma\) has \(N(N+1)/2\) unique elements given equations
  • +
  • \(\mathbf{B}\) is an \(N\times N\) matrix with \(N^2\) unique elements to estimate
  • +
  • We cannot estimate all elements of \(\mathbf{B}\) using \(N(N+1)/2\) equations
  • +
  • \(\mathbf{B}\) is not identified
  • +
+
+
+
+

Identification of SVARs (Simplified)

+ +

Covariance and structural relationships.

+

\[\begin{align} +&\\ +\mathbf\Sigma &= \mathbf{B}^{-1}\mathbf{B}^{-1\prime}\\[1ex] +\end{align}\]

+

Identification.

+
    +
  • Only \(N(N+1)/2\) elements in \(\mathbf{B}\) can be estimated
  • +
  • Impose \(N(N-1)/2\) restrictions on \(\mathbf{B}\) to solve the equation
  • +
  • This identifies the rows of \(\mathbf{B}\) (and the columns of \(\mathbf\Theta_0\)) up to a sign
  • +
  • Change the sign of any number of \(\mathbf{B}\) rows and \(\mathbf\Sigma\) will not change
  • +
  • Often \(\mathbf{B}\) is made lower-triangular
  • +
+
+
+

Identification of SVARs (Simplified)

+ +

Covariance and structural relationships.

+

Let \(N=2\)

+

\[\begin{align} +\begin{bmatrix}\sigma_1^2&\sigma_{12}\\ \sigma_{12}&\sigma_2^2\end{bmatrix} &\qquad +\begin{bmatrix}B_{11}&B_{12}\\ B_{21}&B_{22}\end{bmatrix}\\[1ex] +\end{align}\]

+
    +
  • 3 unique elements in \(\mathbf\Sigma\) - 3 equations in the system
  • +
  • 4 elements in \(\mathbf{B}\) cannot be estimated
  • +
+

Identification.

+

\[\begin{align} +\begin{bmatrix}\sigma_1^2&\sigma_{12}\\ \sigma_{12}&\sigma_2^2\end{bmatrix} &\qquad +\begin{bmatrix}B_{11}& 0\\ B_{21}&B_{22}\end{bmatrix}\\[1ex] +\end{align}\]

+
    +
  • 3 equations identify 3 elements in \(\mathbf{B}\)
  • +
+
+
+

Identification of Monetary Policy Shock

+ +

Consider a system of four variables:

+

\[\begin{align} +y_t = \begin{bmatrix} \Delta rgdp_t & \pi_t & cr_t & \Delta rtwi_t \end{bmatrix}' +\end{align}\]

+
    +
  • \(\Delta rgdp_t\) - real Gross Domestic Product growth
  • +
  • \(\pi_t\) - Consumer Price Index inflation
  • +
  • \(cr_t\) - Cash Rate Target - Australian nominal interest rate
  • +
  • \(\Delta rtwi_t\) - real Trade-Weighted Index rate of return (exchange rate)
  • +
+

Identified system.

+

A lower-triangular matrix identifies:

+
    +
  • contemporaneous relationships \(\mathbf{B}\)
  • +
  • contemporaneous effects \(\mathbf\Theta_0\)
  • +
  • structural shocks \(u_t\)
  • +
+
+
+

Identification of Monetary Policy Shock

+ +

Identified system.

+

\[\begin{align} +\begin{bmatrix} +B_{11}&0&0&0\\ +B_{21}&B_{22}&0&0\\ +B_{31}&B_{32}&B_{33}&0\\ +B_{41}&B_{42}&B_{43}&B_{44} +\end{bmatrix} +\begin{bmatrix} \Delta rgdp_t \\ \pi_t \\ cr_t \\ \Delta rtwi_t \end{bmatrix} &= \dots + +\begin{bmatrix} u_t^{ad} \\ u_t^{as} \\ u_t^{mps} \\ u_t^{ex} \end{bmatrix} +\end{align}\]

+

Identified shocks.

+

\(u_t^{ad}\) - aggregate demand shock is exogenous to the rest of the system

+

\(u_t^{as}\) - aggregate supply shock

+

\(u_t^{mps}\) - monetary policy shock identified via Taylor’s Rule

+

\(u_t^{ex}\) - currency shock

+
+
+

Identification of Monetary Policy Shock

+ +

Identified system.

+

\[\begin{align} +\begin{bmatrix} +B_{11}&0&0&0\\ +B_{21}&B_{22}&0&0\\ +B_{31}&B_{32}&B_{33}&0\\ +B_{41}&B_{42}&B_{43}&B_{44} +\end{bmatrix} +\begin{bmatrix} \Delta rgdp_t \\ \pi_t \\ cr_t \\ \Delta rtwi_t \end{bmatrix} &= \dots + +\begin{bmatrix} u_t^{ad} \\ u_t^{as} \\ u_t^{mps} \\ u_t^{ex} \end{bmatrix} +\end{align}\]

+

Tasks.

+
    +
  • Write out the third equation for the cash rate.
  • +
  • Let \(B_{33}>0\). What values of \(B_{31}\) and \(B_{32}\) does theory imply?
  • +
+
+
+

Identification of Monetary Policy Shock

+ +

Identified system.

+

\[\begin{align} +\begin{bmatrix} +B_{11}&0&0&0\\ +B_{21}&B_{22}&0&0\\ +B_{31}&B_{32}&B_{33}&0\\ +B_{41}&B_{42}&B_{43}&B_{44} +\end{bmatrix} +\begin{bmatrix} \Delta rgdp_t \\ \pi_t \\ cr_t \\ \Delta rtwi_t \end{bmatrix} &= \dots + +\begin{bmatrix} u_t^{ad} \\ u_t^{as} \\ u_t^{mps} \\ u_t^{ex} \end{bmatrix} +\end{align}\]

+

Monetary policy shock.

+
    +
  • is uncorrelated with any other shock
  • +
  • consists of the unanticipated (unpredictable) part of the monetary policy instrument, interest rate
  • +
  • In this model, the systematic part of the monetary policy consists of: +
      +
    • contemporaneous relationships with GDP and inflation
    • +
    • lagged relationships with all variables
    • +
  • +
+
+
+

Identification via Heteroskedasticity

+ +

Suppose that:

+
    +
  • there are two covariances, \(\mathbf\Sigma_1\) and \(\mathbf\Sigma_2\), associated with the sample
  • +
  • matrix \(\mathbf{B}\) does not change over time
  • +
  • structural shocks are heteroskedastic with covariances \(\text{diag}\left(\boldsymbol\sigma_1^2\right)\) and \(\text{diag}\left(\boldsymbol\sigma_2^2\right)\)
  • +
+

\[\begin{align} +\mathbf\Sigma_1 &= \mathbf{B}^{-1}\text{diag}\left(\boldsymbol\sigma_1^2\right)\mathbf{B}^{-1\prime}\\[1ex] +\mathbf\Sigma_2 &= \mathbf{B}^{-1}\text{diag}\left(\boldsymbol\sigma_2^2\right)\mathbf{B}^{-1\prime} +\end{align}\]

+

Identification.

+
    +
  • \(\mathbf\Sigma_1\) and \(\mathbf\Sigma_2\) contain \(N^2+N\) unique elements
  • +
  • All \(N^2\) elements of \(\mathbf{B}\) can be estimated
  • +
  • Both \(N\)-vectors \(\boldsymbol\sigma_1^2\) and \(\boldsymbol\sigma_2^2\) can be estimated due to additional restriction: \(E\left[\text{diag}\left(\boldsymbol\sigma_i^2\right)\right] = \mathbf{I}_N\)
  • +
+
+
+

Identification via Heteroskedasticity

+ +

The setup can be generalised to conditional heteroskedasticity of structural shocks

+

\[\begin{align} +u_t |Y_{t-1} &\sim N_N\left(\mathbf{0}_N, \text{diag}\left(\boldsymbol\sigma_t^2\right)\right)\\[1ex] +\mathbf\Sigma_t &= \mathbf{B}^{-1}\text{diag}\left(\boldsymbol\sigma_t^2\right)\mathbf{B}^{-1\prime}\\[1ex] +E\left[\text{diag}\left(\boldsymbol\sigma_t^2\right)\right] &= \mathbf{I}_N +\end{align}\]

+

Identification.

+
    +
  • Matrix \(\mathbf{B}\) is identified up to its rows’ sign change and equations’ reordering
  • +
  • Structural shocks’ conditional variances \(\boldsymbol\sigma_t^2\) can be estimated
  • +
+

Heteroskedasticity Modeling.

+

Choose any (conditional) variance model for \(\boldsymbol\sigma_t^2\) that fits the data well.

+
+
+

Dynamic Causal Effects

+
+
+

Impulse response functions

+ +

Definition.

+

Impulse response functions to orthogonal shocks computed for an empirically relevant SVAR model are considered the dynamic causal effects of the underlying shocks \(u_t\) on economic measurements \(y_{t+i}\) \(i\) periods ahead.

+

\[\begin{align*} +\frac{\partial y_{n.t+i}}{\partial u_{j.t}}&=\theta_{nj.i} +\end{align*}\]

+
    +
  • \(\theta_{nj.i}\) - response of \(n\)th variable to \(j\)th shock \(i\) periods after shock’s occurrence

    +

    for \(i=0,1,\dots,h\) and \(n,j=1,\dots,N\)

  • +
+
+
+

Impulse response functions

+ +

Definition.

+

Impulse response functions to orthogonal shocks computed for an empirically relevant SVAR model are considered the dynamic causal effects of the underlying shocks \(u_t\) on economic measurements \(y_{t+i}\) \(i\) periods ahead.

+

\[\begin{align*} +\frac{\partial y_{t+i}}{\partial u_t}&=\underset{N\times N}{\mathbf\Theta_i} +\end{align*}\]

+
    +
  • \(\mathbf\Theta_i\) - responses of all of the variables to all of the shocks \(i\) periods after shocks’ occurrence

    +

    for \(i=0,1,\dots,h\) and \(n,j=1,\dots,N\)

  • +
+
+
+

Impulse response functions

+ +

At finite horizon.

+

Define matrices

+

\[ +\underset{(pN\times pN)}{\mathbb{A}} = \begin{bmatrix}\mathbf{A}_1 & \mathbf{A}_2 &\dots& \mathbf{A}_p\\ &\mathbf{I}_{N(p-1)}&&\mathbf{0}_{N(p-1)\times N} \end{bmatrix}\quad\text{and}\quad +\underset{(N\times pN)}{\mathbf{J}} = \begin{bmatrix} \mathbf{I}_{N} & \mathbf{0}_{N\times N(p-1)} \end{bmatrix} +\] Impulse response at horizon \(i=0,1,\dots,h\) are equal to:

+

\[\begin{align} +\mathbf\Theta_i &= \mathbf{J}\mathbb{A}^i\mathbf{J}'\mathbf{B}^{-1} +\end{align}\] where \(\mathbb{A}^0=\mathbf{I}_N\), \(\mathbb{A}^1=\mathbb{A}\), \(\mathbb{A}^2=\mathbb{A}\mathbb{A}\), …

+

At infinite horizon.

+

Inform about the value of the effect in the long run.

+

\[\begin{align} +\mathbf\Theta_{\infty} &= \left( \mathbf{I}_N - \mathbf{A}_1 - \dots - \mathbf{A}_p \right)^{-1}\mathbf{B}^{-1} +\end{align}\]

+
+
+

Impulse response functions

+ +

Bayesian Estimation.

+

Step 1. Estimate the model

+

Obtain a sample from the posterior distribution \[\left\{ \mathbf{A}^{(s)},\mathbf{B}^{(s)} \right\}_{s=1}^{S}\]

+

Step 2. Compute impulse responses

+

For each of the \(S\) draws, compute \(\mathbf\Theta_i^{(s)}\) as a function of \(\mathbf{A}^{(s)}\) and \(\mathbf{B}^{(s)}\) and return \[\left\{\mathbf\Theta_i^{(s)}\right\}_{s=1}^{S}\] as a sample drew from the posterior distribution of \(\Theta_i\) given data.

+
+
+

Bayesian Estimation

+
+
+

Bayesian Estimation

+ +

\(\left.\right.\)

+

Gibbs sampler by Waggoner & Zha (2003)

+

facilitates estimation of Bayesian SVARs for

+
    +
  • lower-triangular and non-recursive identification patterns of exclusion restrictions
  • +
  • over-identifying (more than \(N(N − 1)/2)\) exclusion restrictions
  • +
  • models identified via heteroskedasticity
  • +
+

\(\left.\right.\)

+

Further extensions include SVARs

+
    +
  • identified through non-normal residuals
  • +
  • identified by zero and sign restrictions
  • +
  • identified using instrumental variables (Proxy SVARs)
  • +
+
+
+

Bayesian Estimation

+ +

Exclusion restrictions on the rows of \(\mathbf{B}\)

+

\[ +\underset{(1\times N)}{\mathbf{B}_{[n\cdot]}} = \underset{(1\times r_n)}{\mathbf{b}_n} \underset{(r_n\times N)}{V_n} \qquad\text{such that}\qquad +\mathbf{B} = \begin{bmatrix} \mathbf{b}_1V_1\\ \vdots \\ \mathbf{b}_NV_N \end{bmatrix} +\]

+
    +
  • \(\mathbf{b}_n\) - a \(1\times r_n\) vector of unrestricted elements of \(n\) row of \(\mathbf{B}\)
  • +
  • \(V_n\) - an \(r_n\times N\) fixed matrix of ones and zeros
  • +
+

Example.

+

\[\mathbf{b}_n = \begin{bmatrix} b_1 & b_2\end{bmatrix}\quad V_n = \begin{bmatrix} 1&0&0\\0&0&1\end{bmatrix} \quad\rightarrow\quad \mathbf{B}_{[n\cdot]} = \begin{bmatrix} b_1&0 & b_2\end{bmatrix} +\]

+
+
+

Bayesian Estimation

+ +

The \(n\)th Structural Equation.

+

\[\begin{align*} +\mathbf{b}_nV_n\epsilon_t &= u_{n.t}\\ +u_{n.t} &\sim N(0,1) +\end{align*}\]

+

Matrix Notation.

+

\[\begin{align*} +E V_n' \mathbf{b}_n' &= U_n\\ +U_n &\sim N_T\left(\mathbf{0}_T,I_T\right)\\[2ex] +\underset{(T\times1)}{U_n} &= \begin{bmatrix} u_{n.1} & \dots & u_{n.T} \end{bmatrix}'\\ +\underset{(T\times N)}{E} &\text{ - defined as before} +\end{align*}\]

+
+
+

Bayesian Estimation

+ +

Likelihood function.

+

\[\begin{align*} +L(\mathbf{A},\mathbf{B}|Y,X) &\propto +|\text{det}\left( \mathbf{B} \right)|^{T}\exp\left\{ -\frac{1}{2}\sum_{n=1}^N \mathbf{b}_nV_nE'EV_n'\mathbf{b}_n' \right\}\\[1ex] +E &= Y - X\mathbf{A} +\end{align*}\]

+

Hierarchical prior for \(\mathbf{B}\)

+

\[\begin{align*} +\mathbf{b}_n | \gamma_B &\sim N_{r_n}\left(\mathbf{0}_{r_n}, \gamma_B V_n\underline{S}^{-1}V_n'\right)\\[1ex] +\gamma_B &\sim IG2(\underline{s},\underline{\nu}) +\end{align*}\]

+
    +
  • \(\underline{S}\) - \(N\times N\) prior scale matrix
  • +
  • \(\underline{s}\) and \(\underline{\nu}\) positive scalars of scale and shape
  • +
+
+
+

Bayesian Estimation

+ +

Kernel of the full conditional posterior for \(\mathbf{B}\)

+

\[\begin{align*} +p(\mathbf{B}|Y,X,\mathbf{A}, \gamma_B)&\propto +|\text{det}\left( \mathbf{B} \right)|^{T}\exp\left\{ -\frac{1}{2}\sum_{n=1}^N \mathbf{b}_n \overline{S}_n^{-1}\mathbf{b}_n' \right\}\\[1ex] +\overline{S}_n^{-1} &= V_n\left[ \gamma_B^{-1}\underline{S}^{-1} + (Y-X\mathbf{A})'(Y-X\mathbf{A}) \right]V_n'\\[2ex] +\end{align*}\]

+
    +
  • This is a kernel of a Generalised-Normal distribution
  • +
  • A feasible Gibbs sampler was proposed by by Waggoner & Zha (2003)
  • +
  • The Gibbs sampler draws from the full conditional posterior for \(n = 1,\dots,N\): \[ p(\mathbf{b}_n | \mathbf{b}_1,\dots, \mathbf{b}_{n-1},\mathbf{b}_{n+1}, \mathbf{b}_N, \mathbf{A}, \gamma_B, Y, X) \]
  • +
+
+
+

Monetary Policy Analysis Using R Package bsvars

+
+
+

bsvars an R Package

+ + +
+
+

bsvars an R Package: Features

+ +
    +
  • Bayesian estimation of Structural VARs
  • +
  • identification via: +
      +
    • exclusion restrictions
    • +
    • heteroskedasticity
    • +
    • non-normality
    • +
  • +
  • six heteroskedastic processes
  • +
  • efficient and fast Gibbs sampler
  • +
  • excellent computational speed
  • +
  • frontier econometric techniques
  • +
  • compiled code using cpp via Rcpp and RcppArmadillo
  • +
  • data analysis in R
  • +
+
+
+

bsvars an R Package: Features

+ + +
+
+

bsvars an R Package: Features

+ +
    +
  • simple model setup using specify_*()
  • +
  • flexibility in setting priors, restrictions, etc.
  • +
  • one function for estimation estimate()
  • +
  • posterior processing utility functions
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

bsvars: Bayesian Estimation of Structural Vector Autoregressive Models

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..bbb0a1e --- /dev/null +++ b/index.html @@ -0,0 +1,1693 @@ + + + + + + + + + + + + + + Bayesian Structural Vector Autoregressions + + + + + + + + + + + + + + + +
+
+ +
+

Bayesian Structural Vector Autoregressions

+ +
+
+
+by Tomasz Woźniak +
+
+
+ +
+
+

+

\[ \]

+

Structural Vector Autoregressions

+

Identification of Structural VARs

+

Dynamic Causal Effects

+

Bayesian Estimation

+

Monetary Policy Analysis Using the bsvars Package

+
+
+

+

+
+
+

Materials

+

\[ \]

+

Lecture Slides as a Website

+

Quarto document template for your own Australian monetary policy analysis

+

GitHub repo to reproduce the slides and results

+

Tasks

+
+
+

Structural Vector Autoregressions

+
+
+

Structural Vector Autoregressions

+
    +
  • go-to models for the analysis of policy effects
  • +
+
+
    +
  • facilitate the analysis of dynamic causal effects of a well-isolated cause
  • +
  • extensively used for: monetary and fiscal policy, financial markets, …
  • +
  • relatively simple to work with data and provide empirical evidence on the propagation of shocks through economies and markets
  • +
  • provide data-driven stylised facts to be incorporated in theoretical model
  • +
  • require identification of the cause of the dynamic effects
  • +
  • extendible: featuring many variations in specification +
      +
    • non-normality
    • +
    • heteroskedasticity
    • +
    • time-varying parameters
    • +
    • Bayesian
    • +
  • +
  • Proposed by Sims (1980)
  • +
+
+ +
+
+

Structural Vector Autoregressions

+ +

The model.

+

\[\begin{align} +\text{VAR equation: }&& y_t &= \mathbf{A}_1 y_{t-1} + \dots + \mathbf{A}_p y_{t-p} + \boldsymbol\mu_0 + \epsilon_t\\[1ex] +\text{structural equation: }&& \mathbf{B}\epsilon_t &= u_t\\[1ex] +\text{structural shocks: }&& u_t |Y_{t-1} &\sim N_N\left(\mathbf{0}_N,\mathbf{I}_N\right) +\end{align}\]

+
+ +

Notation.

+
    +
  • \(\mathbf{B}\) - \(N\times N\) structural matrix of contemporaneous relationships

  • +
  • \(u_t\) - \(N\)-vector of structural shocks at time \(t\)

    +

    Isolating these shocks allows us to identify dynamic effects of uncorrelated shocks on variables \(y_t\)

  • +
  • \(\epsilon_t\) - \(N\)-vector with VAR errors at time \(t\)

  • +
  • the rest as in Lecture 7: Bayesian VARs

  • +
+
+
+
+

Structural Vector Autoregressions

+ +

The VAR errors.

+

\[\begin{align} +&&&\\ +\text{structural equation: }&& \epsilon_t &= \mathbf{B}^{-1}u_t\\[1ex] +\text{structural shocks: }&& \epsilon_t |Y_{t-1} &\sim N_N\left(\mathbf{0}_N,\Sigma\right)\\[1ex] +\text{covariance: }&& \mathbf\Sigma &= \mathbf{B}^{-1}\mathbf{B}^{-1\prime} = \Theta_0\Theta_0' +\end{align}\]

+

Notation.

+
    +
  • \(\mathbf\Sigma\) - \(N\times N\) covariance matrix of VAR errors
  • +
  • \(\Theta_0 = \mathbf{B}^{-1}\) - \(N\times N\) matrix of contemporaneous effects
  • +
+
+
+

Structural Vector Autoregressions

+ +

Plug the VAR equation into the structural equation to obtain:

+

\[\begin{align} +\mathbf{B}y_t &= \mathbf{B}\mathbf{A}_1 y_{t-1} + \dots + \mathbf{B}\mathbf{A}_p y_{t-p} + \mathbf{B}\boldsymbol\mu_0 + u_t\\[1ex] +&\\ +\end{align}\]

+

Contemporaneous relationships.

+

Let \(N=2\)

+

\[\begin{align} +\mathbf{B}y_t &= \begin{bmatrix}B_{11}&B_{12}\\B_{21}&B_{22}\end{bmatrix}\begin{bmatrix}y_{1t}\\y_{2t}\end{bmatrix} +\end{align}\]

+
+
+

Structural Vector Autoregressions

+ +

Plug the structural equation for \(\epsilon_t\) into the VAR equation to obtain:

+

\[\begin{align} +y_t &= \mathbf{A}_1 y_{t-1} + \dots + \mathbf{A}_p y_{t-p} + \boldsymbol\mu_0 + \mathbf{B}^{-1}u_t\\[1ex] +y_t &= \mathbf{A}_1 y_{t-1} + \dots + \mathbf{A}_p y_{t-p} + \boldsymbol\mu_0 + \mathbf{\Theta}_0 u_t +\end{align}\]

+

Contemporaneous effects.

+

Let \(N=2\)

+

\[\begin{align} +\begin{bmatrix}y_{1t}\\y_{2t}\end{bmatrix} &= \dots + +\begin{bmatrix}\Theta_{11}&\Theta_{12}\\\Theta_{21}&\Theta_{22}\end{bmatrix}\begin{bmatrix}u_{1t}\\ u_{2t}\end{bmatrix} +\end{align}\]

+

Task.

+

What is the contemporaneous effect of the first shock on the second variable?

+
+
+

Identification of Structural VARs

+
+
+

Identification of SVARs (Simplified)

+ +

Covariance and structural relationships.

+

\[\begin{align} +&\\ +\mathbf\Sigma &= \mathbf{B}^{-1}\mathbf{B}^{-1\prime}\\[1ex] +\end{align}\]

+
    +
  • \(\mathbf\Sigma\) can be estimated using data easily
  • +
+
+
    +
  • The relationship presents a system of equations to be solved for \(\mathbf{B}\)
  • +
  • \(\mathbf\Sigma\) is a symmetric \(N\times N\) matrix
  • +
  • \(\mathbf\Sigma\) has \(N(N+1)/2\) unique elements given equations
  • +
  • \(\mathbf{B}\) is an \(N\times N\) matrix with \(N^2\) unique elements to estimate
  • +
  • We cannot estimate all elements of \(\mathbf{B}\) using \(N(N+1)/2\) equations
  • +
  • \(\mathbf{B}\) is not identified
  • +
+
+
+
+

Identification of SVARs (Simplified)

+ +

Covariance and structural relationships.

+

\[\begin{align} +&\\ +\mathbf\Sigma &= \mathbf{B}^{-1}\mathbf{B}^{-1\prime}\\[1ex] +\end{align}\]

+

Identification.

+
    +
  • Only \(N(N+1)/2\) elements in \(\mathbf{B}\) can be estimated
  • +
  • Impose \(N(N-1)/2\) restrictions on \(\mathbf{B}\) to solve the equation
  • +
  • This identifies the rows of \(\mathbf{B}\) (and the columns of \(\mathbf\Theta_0\)) up to a sign
  • +
  • Change the sign of any number of \(\mathbf{B}\) rows and \(\mathbf\Sigma\) will not change
  • +
  • Often \(\mathbf{B}\) is made lower-triangular
  • +
+
+
+

Identification of SVARs (Simplified)

+ +

Covariance and structural relationships.

+

Let \(N=2\)

+

\[\begin{align} +\begin{bmatrix}\sigma_1^2&\sigma_{12}\\ \sigma_{12}&\sigma_2^2\end{bmatrix} &\qquad +\begin{bmatrix}B_{11}&B_{12}\\ B_{21}&B_{22}\end{bmatrix}\\[1ex] +\end{align}\]

+
    +
  • 3 unique elements in \(\mathbf\Sigma\) - 3 equations in the system
  • +
  • 4 elements in \(\mathbf{B}\) cannot be estimated
  • +
+

Identification.

+

\[\begin{align} +\begin{bmatrix}\sigma_1^2&\sigma_{12}\\ \sigma_{12}&\sigma_2^2\end{bmatrix} &\qquad +\begin{bmatrix}B_{11}& 0\\ B_{21}&B_{22}\end{bmatrix}\\[1ex] +\end{align}\]

+
    +
  • 3 equations identify 3 elements in \(\mathbf{B}\)
  • +
+
+
+

Identification of Monetary Policy Shock

+ +

Consider a system of four variables:

+

\[\begin{align} +y_t = \begin{bmatrix} \Delta rgdp_t & \pi_t & cr_t & \Delta rtwi_t \end{bmatrix}' +\end{align}\]

+
    +
  • \(\Delta rgdp_t\) - real Gross Domestic Product growth
  • +
  • \(\pi_t\) - Consumer Price Index inflation
  • +
  • \(cr_t\) - Cash Rate Target - Australian nominal interest rate
  • +
  • \(\Delta rtwi_t\) - real Trade-Weighted Index rate of return (exchange rate)
  • +
+

Identified system.

+

A lower-triangular matrix identifies:

+
    +
  • contemporaneous relationships \(\mathbf{B}\)
  • +
  • contemporaneous effects \(\mathbf\Theta_0\)
  • +
  • structural shocks \(u_t\)
  • +
+
+
+

Identification of Monetary Policy Shock

+ +

Identified system.

+

\[\begin{align} +\begin{bmatrix} +B_{11}&0&0&0\\ +B_{21}&B_{22}&0&0\\ +B_{31}&B_{32}&B_{33}&0\\ +B_{41}&B_{42}&B_{43}&B_{44} +\end{bmatrix} +\begin{bmatrix} \Delta rgdp_t \\ \pi_t \\ cr_t \\ \Delta rtwi_t \end{bmatrix} &= \dots + +\begin{bmatrix} u_t^{ad} \\ u_t^{as} \\ u_t^{mps} \\ u_t^{ex} \end{bmatrix} +\end{align}\]

+

Identified shocks.

+

\(u_t^{ad}\) - aggregate demand shock is exogenous to the rest of the system

+

\(u_t^{as}\) - aggregate supply shock

+

\(u_t^{mps}\) - monetary policy shock identified via Taylor’s Rule

+

\(u_t^{ex}\) - currency shock

+
+
+

Identification of Monetary Policy Shock

+ +

Identified system.

+

\[\begin{align} +\begin{bmatrix} +B_{11}&0&0&0\\ +B_{21}&B_{22}&0&0\\ +B_{31}&B_{32}&B_{33}&0\\ +B_{41}&B_{42}&B_{43}&B_{44} +\end{bmatrix} +\begin{bmatrix} \Delta rgdp_t \\ \pi_t \\ cr_t \\ \Delta rtwi_t \end{bmatrix} &= \dots + +\begin{bmatrix} u_t^{ad} \\ u_t^{as} \\ u_t^{mps} \\ u_t^{ex} \end{bmatrix} +\end{align}\]

+

Tasks.

+
    +
  • Write out the third equation for the cash rate.
  • +
  • Let \(B_{33}>0\). What values of \(B_{31}\) and \(B_{32}\) does theory imply?
  • +
+
+
+

Identification of Monetary Policy Shock

+ +

Identified system.

+

\[\begin{align} +\begin{bmatrix} +B_{11}&0&0&0\\ +B_{21}&B_{22}&0&0\\ +B_{31}&B_{32}&B_{33}&0\\ +B_{41}&B_{42}&B_{43}&B_{44} +\end{bmatrix} +\begin{bmatrix} \Delta rgdp_t \\ \pi_t \\ cr_t \\ \Delta rtwi_t \end{bmatrix} &= \dots + +\begin{bmatrix} u_t^{ad} \\ u_t^{as} \\ u_t^{mps} \\ u_t^{ex} \end{bmatrix} +\end{align}\]

+

Monetary policy shock.

+
    +
  • is uncorrelated with any other shock
  • +
  • consists of the unanticipated (unpredictable) part of the monetary policy instrument, interest rate
  • +
  • In this model, the systematic part of the monetary policy consists of: +
      +
    • contemporaneous relationships with GDP and inflation
    • +
    • lagged relationships with all variables
    • +
  • +
+
+
+

Identification via Heteroskedasticity

+ +

Suppose that:

+
    +
  • there are two covariances, \(\mathbf\Sigma_1\) and \(\mathbf\Sigma_2\), associated with the sample
  • +
  • matrix \(\mathbf{B}\) does not change over time
  • +
  • structural shocks are heteroskedastic with covariances \(\text{diag}\left(\boldsymbol\sigma_1^2\right)\) and \(\text{diag}\left(\boldsymbol\sigma_2^2\right)\)
  • +
+

\[\begin{align} +\mathbf\Sigma_1 &= \mathbf{B}^{-1}\text{diag}\left(\boldsymbol\sigma_1^2\right)\mathbf{B}^{-1\prime}\\[1ex] +\mathbf\Sigma_2 &= \mathbf{B}^{-1}\text{diag}\left(\boldsymbol\sigma_2^2\right)\mathbf{B}^{-1\prime} +\end{align}\]

+

Identification.

+
    +
  • \(\mathbf\Sigma_1\) and \(\mathbf\Sigma_2\) contain \(N^2+N\) unique elements
  • +
  • All \(N^2\) elements of \(\mathbf{B}\) can be estimated
  • +
  • Both \(N\)-vectors \(\boldsymbol\sigma_1^2\) and \(\boldsymbol\sigma_2^2\) can be estimated due to additional restriction: \(E\left[\text{diag}\left(\boldsymbol\sigma_i^2\right)\right] = \mathbf{I}_N\)
  • +
+
+
+

Identification via Heteroskedasticity

+ +

The setup can be generalised to conditional heteroskedasticity of structural shocks

+

\[\begin{align} +u_t |Y_{t-1} &\sim N_N\left(\mathbf{0}_N, \text{diag}\left(\boldsymbol\sigma_t^2\right)\right)\\[1ex] +\mathbf\Sigma_t &= \mathbf{B}^{-1}\text{diag}\left(\boldsymbol\sigma_t^2\right)\mathbf{B}^{-1\prime}\\[1ex] +E\left[\text{diag}\left(\boldsymbol\sigma_t^2\right)\right] &= \mathbf{I}_N +\end{align}\]

+

Identification.

+
    +
  • Matrix \(\mathbf{B}\) is identified up to its rows’ sign change and equations’ reordering
  • +
  • Structural shocks’ conditional variances \(\boldsymbol\sigma_t^2\) can be estimated
  • +
+

Heteroskedasticity Modeling.

+

Choose any (conditional) variance model for \(\boldsymbol\sigma_t^2\) that fits the data well.

+
+
+

Dynamic Causal Effects

+
+
+

Impulse response functions

+ +

Definition.

+

Impulse response functions to orthogonal shocks computed for an empirically relevant SVAR model are considered the dynamic causal effects of the underlying shocks \(u_t\) on economic measurements \(y_{t+i}\) \(i\) periods ahead.

+

\[\begin{align*} +\frac{\partial y_{n.t+i}}{\partial u_{j.t}}&=\theta_{nj.i} +\end{align*}\]

+
    +
  • \(\theta_{nj.i}\) - response of \(n\)th variable to \(j\)th shock \(i\) periods after shock’s occurrence

    +

    for \(i=0,1,\dots,h\) and \(n,j=1,\dots,N\)

  • +
+
+
+

Impulse response functions

+ +

Definition.

+

Impulse response functions to orthogonal shocks computed for an empirically relevant SVAR model are considered the dynamic causal effects of the underlying shocks \(u_t\) on economic measurements \(y_{t+i}\) \(i\) periods ahead.

+

\[\begin{align*} +\frac{\partial y_{t+i}}{\partial u_t}&=\underset{N\times N}{\mathbf\Theta_i} +\end{align*}\]

+
    +
  • \(\mathbf\Theta_i\) - responses of all of the variables to all of the shocks \(i\) periods after shocks’ occurrence

    +

    for \(i=0,1,\dots,h\) and \(n,j=1,\dots,N\)

  • +
+
+
+

Impulse response functions

+ +

At finite horizon.

+

Define matrices

+

\[ +\underset{(pN\times pN)}{\mathbb{A}} = \begin{bmatrix}\mathbf{A}_1 & \mathbf{A}_2 &\dots& \mathbf{A}_p\\ &\mathbf{I}_{N(p-1)}&&\mathbf{0}_{N(p-1)\times N} \end{bmatrix}\quad\text{and}\quad +\underset{(N\times pN)}{\mathbf{J}} = \begin{bmatrix} \mathbf{I}_{N} & \mathbf{0}_{N\times N(p-1)} \end{bmatrix} +\] Impulse response at horizon \(i=0,1,\dots,h\) are equal to:

+

\[\begin{align} +\mathbf\Theta_i &= \mathbf{J}\mathbb{A}^i\mathbf{J}'\mathbf{B}^{-1} +\end{align}\] where \(\mathbb{A}^0=\mathbf{I}_N\), \(\mathbb{A}^1=\mathbb{A}\), \(\mathbb{A}^2=\mathbb{A}\mathbb{A}\), …

+

At infinite horizon.

+

Inform about the value of the effect in the long run.

+

\[\begin{align} +\mathbf\Theta_{\infty} &= \left( \mathbf{I}_N - \mathbf{A}_1 - \dots - \mathbf{A}_p \right)^{-1}\mathbf{B}^{-1} +\end{align}\]

+
+
+

Impulse response functions

+ +

Bayesian Estimation.

+

Step 1. Estimate the model

+

Obtain a sample from the posterior distribution \[\left\{ \mathbf{A}^{(s)},\mathbf{B}^{(s)} \right\}_{s=1}^{S}\]

+

Step 2. Compute impulse responses

+

For each of the \(S\) draws, compute \(\mathbf\Theta_i^{(s)}\) as a function of \(\mathbf{A}^{(s)}\) and \(\mathbf{B}^{(s)}\) and return \[\left\{\mathbf\Theta_i^{(s)}\right\}_{s=1}^{S}\] as a sample drew from the posterior distribution of \(\Theta_i\) given data.

+
+
+

Bayesian Estimation

+
+
+

Bayesian Estimation

+ +

\(\left.\right.\)

+

Gibbs sampler by Waggoner & Zha (2003)

+

facilitates estimation of Bayesian SVARs for

+
    +
  • lower-triangular and non-recursive identification patterns of exclusion restrictions
  • +
  • over-identifying (more than \(N(N − 1)/2)\) exclusion restrictions
  • +
  • models identified via heteroskedasticity
  • +
+

\(\left.\right.\)

+

Further extensions include SVARs

+
    +
  • identified through non-normal residuals
  • +
  • identified by zero and sign restrictions
  • +
  • identified using instrumental variables (Proxy SVARs)
  • +
+
+
+

Bayesian Estimation

+ +

Exclusion restrictions on the rows of \(\mathbf{B}\)

+

\[ +\underset{(1\times N)}{\mathbf{B}_{[n\cdot]}} = \underset{(1\times r_n)}{\mathbf{b}_n} \underset{(r_n\times N)}{V_n} \qquad\text{such that}\qquad +\mathbf{B} = \begin{bmatrix} \mathbf{b}_1V_1\\ \vdots \\ \mathbf{b}_NV_N \end{bmatrix} +\]

+
    +
  • \(\mathbf{b}_n\) - a \(1\times r_n\) vector of unrestricted elements of \(n\) row of \(\mathbf{B}\)
  • +
  • \(V_n\) - an \(r_n\times N\) fixed matrix of ones and zeros
  • +
+

Example.

+

\[\mathbf{b}_n = \begin{bmatrix} b_1 & b_2\end{bmatrix}\quad V_n = \begin{bmatrix} 1&0&0\\0&0&1\end{bmatrix} \quad\rightarrow\quad \mathbf{B}_{[n\cdot]} = \begin{bmatrix} b_1&0 & b_2\end{bmatrix} +\]

+
+
+

Bayesian Estimation

+ +

The \(n\)th Structural Equation.

+

\[\begin{align*} +\mathbf{b}_nV_n\epsilon_t &= u_{n.t}\\ +u_{n.t} &\sim N(0,1) +\end{align*}\]

+

Matrix Notation.

+

\[\begin{align*} +E V_n' \mathbf{b}_n' &= U_n\\ +U_n &\sim N_T\left(\mathbf{0}_T,I_T\right)\\[2ex] +\underset{(T\times1)}{U_n} &= \begin{bmatrix} u_{n.1} & \dots & u_{n.T} \end{bmatrix}'\\ +\underset{(T\times N)}{E} &\text{ - defined as before} +\end{align*}\]

+
+
+

Bayesian Estimation

+ +

Likelihood function.

+

\[\begin{align*} +L(\mathbf{A},\mathbf{B}|Y,X) &\propto +|\text{det}\left( \mathbf{B} \right)|^{T}\exp\left\{ -\frac{1}{2}\sum_{n=1}^N \mathbf{b}_nV_nE'EV_n'\mathbf{b}_n' \right\}\\[1ex] +E &= Y - X\mathbf{A} +\end{align*}\]

+

Hierarchical prior for \(\mathbf{B}\)

+

\[\begin{align*} +\mathbf{b}_n | \gamma_B &\sim N_{r_n}\left(\mathbf{0}_{r_n}, \gamma_B V_n\underline{S}^{-1}V_n'\right)\\[1ex] +\gamma_B &\sim IG2(\underline{s},\underline{\nu}) +\end{align*}\]

+
    +
  • \(\underline{S}\) - \(N\times N\) prior scale matrix
  • +
  • \(\underline{s}\) and \(\underline{\nu}\) positive scalars of scale and shape
  • +
+
+
+

Bayesian Estimation

+ +

Kernel of the full conditional posterior for \(\mathbf{B}\)

+

\[\begin{align*} +p(\mathbf{B}|Y,X,\mathbf{A}, \gamma_B)&\propto +|\text{det}\left( \mathbf{B} \right)|^{T}\exp\left\{ -\frac{1}{2}\sum_{n=1}^N \mathbf{b}_n \overline{S}_n^{-1}\mathbf{b}_n' \right\}\\[1ex] +\overline{S}_n^{-1} &= V_n\left[ \gamma_B^{-1}\underline{S}^{-1} + (Y-X\mathbf{A})'(Y-X\mathbf{A}) \right]V_n'\\[2ex] +\end{align*}\]

+
    +
  • This is a kernel of a Generalised-Normal distribution
  • +
  • A feasible Gibbs sampler was proposed by by Waggoner & Zha (2003)
  • +
  • The Gibbs sampler draws from the full conditional posterior for \(n = 1,\dots,N\): \[ p(\mathbf{b}_n | \mathbf{b}_1,\dots, \mathbf{b}_{n-1},\mathbf{b}_{n+1}, \mathbf{b}_N, \mathbf{A}, \gamma_B, Y, X) \]
  • +
+
+
+

Monetary Policy Analysis Using R Package bsvars

+
+
+

bsvars an R Package

+ + +
+
+

bsvars an R Package: Features

+ +
    +
  • Bayesian estimation of Structural VARs
  • +
  • identification via: +
      +
    • exclusion restrictions
    • +
    • heteroskedasticity
    • +
    • non-normality
    • +
  • +
  • six heteroskedastic processes
  • +
  • efficient and fast Gibbs sampler
  • +
  • excellent computational speed
  • +
  • frontier econometric techniques
  • +
  • compiled code using cpp via Rcpp and RcppArmadillo
  • +
  • data analysis in R
  • +
+
+
+

bsvars an R Package: Features

+ + +
+
+

bsvars an R Package: Features

+ +
    +
  • simple model setup using specify_*()
  • +
  • flexibility in setting priors, restrictions, etc.
  • +
  • one function for estimation estimate()
  • +
  • posterior processing utility functions
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

bsvars: Bayesian Estimation of Structural Vector Autoregressive Models

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index.qmd b/index.qmd new file mode 100644 index 0000000..12b4ef5 --- /dev/null +++ b/index.qmd @@ -0,0 +1,1325 @@ +--- +title: "Bayesian Structural Vector Autoregressions" +author: "by Tomasz Woźniak" +email: "tomasz.wozniak@unimelb.edu.au" +title-slide-attributes: + data-background-color: "#ff69b4" +number-sections: false +format: + revealjs: + theme: [simple, theme.scss] + slide-number: c + transition: concave + smaller: true + multiplex: true +execute: + echo: true +--- + +## {background-color="#ff69b4"} + +$$ $$ + +### Structural Vector Autoregressions {style="color:#ffd700;"} + +### Identification of Structural VARs {style="color:#ffd700;"} + +### Dynamic Causal Effects {style="color:#ffd700;"} + +### Bayesian Estimation {style="color:#ffd700;"} + +### Monetary Policy Analysis Using the [bsvars](https://cran.r-project.org/package=bsvars) Package {style="color:#ffd700;"} + + + + + +## {background-color="#ff69b4"} + +![](bsvars.png){.absolute top=30 right=275 width="500"} + + + +## Materials {background-color="#ff69b4"} + +$$ $$ + +### Lecture Slides [as a Website](https://bayesian-econometrics-2023.github.io/be23-lecture8/) {style="color:#ffd700;"} + +### Quarto [document template](https://github.com/Bayesian-Econometrics-2023/be23-lecture8/blob/main/be23-lecture8.qmd) for your own Australian monetary policy analysis{style="color:#ffd700;"} + +### GitHub [repo](https://github.com/Bayesian-Econometrics-2023/be23-lecture8) to reproduce the slides and results{style="color:#ffd700;"} + +### Tasks{style="color:#ffd700;"} + + +## Structural Vector Autoregressions {background-color="#ff69b4"} + +## Structural Vector Autoregressions + +- go-to models for the analysis of policy effects + +::: incremental +- facilitate the analysis of **dynamic causal effects** of a well-isolated cause +- extensively used for: *monetary* and *fiscal* policy, *financial* markets, ... +- relatively simple to work with data and provide *empirical evidence on the propagation of shocks* through economies and markets +- provide data-driven stylised facts to be incorporated in theoretical model +- require identification of the cause of the dynamic effects +- extendible: *featuring many variations in specification* + - non-normality + - heteroskedasticity + - time-varying parameters + - Bayesian +- Proposed by [Sims (1980)](https://doi.org/10.2307/1912017) +::: + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + + + +## Structural Vector Autoregressions + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### The model. +\begin{align} +\text{VAR equation: }&& y_t &= \mathbf{A}_1 y_{t-1} + \dots + \mathbf{A}_p y_{t-p} + \boldsymbol\mu_0 + \epsilon_t\\[1ex] +\text{structural equation: }&& \mathbf{B}\epsilon_t &= u_t\\[1ex] +\text{structural shocks: }&& u_t |Y_{t-1} &\sim N_N\left(\mathbf{0}_N,\mathbf{I}_N\right) +\end{align} + +::: {.fragment} +### Notation. +- $\mathbf{B}$ - $N\times N$ structural matrix of contemporaneous relationships +- $u_t$ - $N$-vector of structural shocks at time $t$ + + Isolating these shocks allows us to *identify dynamic effects of +uncorrelated shocks* on variables $y_t$ + +- $\epsilon_t$ - $N$-vector with VAR errors at time $t$ +- the rest as in [Lecture 7: Bayesian VARs](https://bayesian-econometrics-2023.github.io/be23-lecture7/#/varp-model) +::: + + + +## Structural Vector Autoregressions + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### The VAR errors. +\begin{align} +&&&\\ +\text{structural equation: }&& \epsilon_t &= \mathbf{B}^{-1}u_t\\[1ex] +\text{structural shocks: }&& \epsilon_t |Y_{t-1} &\sim N_N\left(\mathbf{0}_N,\Sigma\right)\\[1ex] +\text{covariance: }&& \mathbf\Sigma &= \mathbf{B}^{-1}\mathbf{B}^{-1\prime} = \Theta_0\Theta_0' +\end{align} + +### Notation. +- $\mathbf\Sigma$ - $N\times N$ covariance matrix of VAR errors +- $\Theta_0 = \mathbf{B}^{-1}$ - $N\times N$ matrix of **contemporaneous effects** + + +## Structural Vector Autoregressions + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +Plug the *VAR equation* into the *structural equation* to obtain: + +\begin{align} +\mathbf{B}y_t &= \mathbf{B}\mathbf{A}_1 y_{t-1} + \dots + \mathbf{B}\mathbf{A}_p y_{t-p} + \mathbf{B}\boldsymbol\mu_0 + u_t\\[1ex] +&\\ +\end{align} + +### Contemporaneous relationships. + +Let $N=2$ + +\begin{align} +\mathbf{B}y_t &= \begin{bmatrix}B_{11}&B_{12}\\B_{21}&B_{22}\end{bmatrix}\begin{bmatrix}y_{1t}\\y_{2t}\end{bmatrix} +\end{align} + + + + + +## Structural Vector Autoregressions + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +Plug the *structural equation* for $\epsilon_t$ into the *VAR equation* to obtain: + +\begin{align} +y_t &= \mathbf{A}_1 y_{t-1} + \dots + \mathbf{A}_p y_{t-p} + \boldsymbol\mu_0 + \mathbf{B}^{-1}u_t\\[1ex] +y_t &= \mathbf{A}_1 y_{t-1} + \dots + \mathbf{A}_p y_{t-p} + \boldsymbol\mu_0 + \mathbf{\Theta}_0 u_t +\end{align} + +### Contemporaneous effects. + +Let $N=2$ + +\begin{align} +\begin{bmatrix}y_{1t}\\y_{2t}\end{bmatrix} &= \dots + +\begin{bmatrix}\Theta_{11}&\Theta_{12}\\\Theta_{21}&\Theta_{22}\end{bmatrix}\begin{bmatrix}u_{1t}\\ u_{2t}\end{bmatrix} +\end{align} + +### Task. + +What is the contemporaneous effect of the first shock on the second variable? + + + + + +## Identification of Structural VARs {background-color="#ff69b4"} + +## Identification of SVARs (Simplified) + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### Covariance and structural relationships. + +\begin{align} +&\\ +\mathbf\Sigma &= \mathbf{B}^{-1}\mathbf{B}^{-1\prime}\\[1ex] +\end{align} + +- $\mathbf\Sigma$ can be estimated using data easily + +::: incremental +- The relationship presents a system of equations to be solved for $\mathbf{B}$ +- $\mathbf\Sigma$ is a *symmetric* $N\times N$ matrix +- $\mathbf\Sigma$ has $N(N+1)/2$ unique elements given equations +- $\mathbf{B}$ is an $N\times N$ matrix with $N^2$ unique elements to estimate +- We cannot estimate all elements of $\mathbf{B}$ using $N(N+1)/2$ equations +- $\mathbf{B}$ is **not identified** +::: + + + +## Identification of SVARs (Simplified) + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### Covariance and structural relationships. + +\begin{align} +&\\ +\mathbf\Sigma &= \mathbf{B}^{-1}\mathbf{B}^{-1\prime}\\[1ex] +\end{align} + +### Identification. + +- Only $N(N+1)/2$ elements in $\mathbf{B}$ can be estimated +- Impose $N(N-1)/2$ restrictions on $\mathbf{B}$ to solve the equation +- This identifies the rows of $\mathbf{B}$ (and the columns of $\mathbf\Theta_0$) up to a sign +- Change the sign of any number of $\mathbf{B}$ rows and $\mathbf\Sigma$ will not change +- Often $\mathbf{B}$ is made lower-triangular + + + +## Identification of SVARs (Simplified) + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### Covariance and structural relationships. + +Let $N=2$ + +\begin{align} +\begin{bmatrix}\sigma_1^2&\sigma_{12}\\ \sigma_{12}&\sigma_2^2\end{bmatrix} &\qquad +\begin{bmatrix}B_{11}&B_{12}\\ B_{21}&B_{22}\end{bmatrix}\\[1ex] +\end{align} + +- 3 unique elements in $\mathbf\Sigma$ - 3 equations in the system +- 4 elements in $\mathbf{B}$ cannot be estimated + +### Identification. + +\begin{align} +\begin{bmatrix}\sigma_1^2&\sigma_{12}\\ \sigma_{12}&\sigma_2^2\end{bmatrix} &\qquad +\begin{bmatrix}B_{11}& 0\\ B_{21}&B_{22}\end{bmatrix}\\[1ex] +\end{align} + +- 3 equations identify 3 elements in $\mathbf{B}$ + + + + +## Identification of Monetary Policy Shock + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +Consider a system of four variables: + +\begin{align} +y_t = \begin{bmatrix} \Delta rgdp_t & \pi_t & cr_t & \Delta rtwi_t \end{bmatrix}' +\end{align} + +- $\Delta rgdp_t$ - real Gross Domestic Product growth +- $\pi_t$ - Consumer Price Index inflation +- $cr_t$ - Cash Rate Target - Australian nominal interest rate +- $\Delta rtwi_t$ - real Trade-Weighted Index rate of return (exchange rate) + +### Identified system. + +A lower-triangular matrix identifies: + +- contemporaneous relationships $\mathbf{B}$ +- contemporaneous effects $\mathbf\Theta_0$ +- structural shocks $u_t$ + + +## Identification of Monetary Policy Shock + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### Identified system. + +\begin{align} +\begin{bmatrix} +B_{11}&0&0&0\\ +B_{21}&B_{22}&0&0\\ +B_{31}&B_{32}&B_{33}&0\\ +B_{41}&B_{42}&B_{43}&B_{44} +\end{bmatrix} +\begin{bmatrix} \Delta rgdp_t \\ \pi_t \\ cr_t \\ \Delta rtwi_t \end{bmatrix} &= \dots + +\begin{bmatrix} u_t^{ad} \\ u_t^{as} \\ u_t^{mps} \\ u_t^{ex} \end{bmatrix} +\end{align} + +### Identified shocks. + +$u_t^{ad}$ - aggregate demand shock is exogenous to the rest of the system + +$u_t^{as}$ - aggregate supply shock + +$u_t^{mps}$ - monetary policy shock identified via Taylor's Rule + +$u_t^{ex}$ - currency shock + + + + +## Identification of Monetary Policy Shock + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### Identified system. + +\begin{align} +\begin{bmatrix} +B_{11}&0&0&0\\ +B_{21}&B_{22}&0&0\\ +B_{31}&B_{32}&B_{33}&0\\ +B_{41}&B_{42}&B_{43}&B_{44} +\end{bmatrix} +\begin{bmatrix} \Delta rgdp_t \\ \pi_t \\ cr_t \\ \Delta rtwi_t \end{bmatrix} &= \dots + +\begin{bmatrix} u_t^{ad} \\ u_t^{as} \\ u_t^{mps} \\ u_t^{ex} \end{bmatrix} +\end{align} + +### Tasks. + +- Write out the third equation for the cash rate. +- Let $B_{33}>0$. What values of $B_{31}$ and $B_{32}$ does theory imply? + + + + +## Identification of Monetary Policy Shock + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### Identified system. + +\begin{align} +\begin{bmatrix} +B_{11}&0&0&0\\ +B_{21}&B_{22}&0&0\\ +B_{31}&B_{32}&B_{33}&0\\ +B_{41}&B_{42}&B_{43}&B_{44} +\end{bmatrix} +\begin{bmatrix} \Delta rgdp_t \\ \pi_t \\ cr_t \\ \Delta rtwi_t \end{bmatrix} &= \dots + +\begin{bmatrix} u_t^{ad} \\ u_t^{as} \\ u_t^{mps} \\ u_t^{ex} \end{bmatrix} +\end{align} + +### Monetary policy shock. + +- is uncorrelated with any other shock +- consists of the unanticipated (unpredictable) part of the *monetary policy instrument*, interest rate +- In this model, the systematic part of the monetary policy consists of: + - contemporaneous relationships with GDP and inflation + - lagged relationships with all variables + + +## Identification via Heteroskedasticity + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +Suppose that: + +- there are two covariances, $\mathbf\Sigma_1$ and $\mathbf\Sigma_2$, associated with the sample +- matrix $\mathbf{B}$ does not change over time +- structural shocks are heteroskedastic with covariances $\text{diag}\left(\boldsymbol\sigma_1^2\right)$ and $\text{diag}\left(\boldsymbol\sigma_2^2\right)$ + +\begin{align} +\mathbf\Sigma_1 &= \mathbf{B}^{-1}\text{diag}\left(\boldsymbol\sigma_1^2\right)\mathbf{B}^{-1\prime}\\[1ex] +\mathbf\Sigma_2 &= \mathbf{B}^{-1}\text{diag}\left(\boldsymbol\sigma_2^2\right)\mathbf{B}^{-1\prime} +\end{align} + +### Identification. + +- $\mathbf\Sigma_1$ and $\mathbf\Sigma_2$ contain $N^2+N$ unique elements +- All $N^2$ elements of $\mathbf{B}$ can be estimated +- Both $N$-vectors $\boldsymbol\sigma_1^2$ and $\boldsymbol\sigma_2^2$ can be estimated due to additional restriction: $E\left[\text{diag}\left(\boldsymbol\sigma_i^2\right)\right] = \mathbf{I}_N$ + + +## Identification via Heteroskedasticity + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +The setup can be generalised to conditional heteroskedasticity of structural shocks + +\begin{align} +u_t |Y_{t-1} &\sim N_N\left(\mathbf{0}_N, \text{diag}\left(\boldsymbol\sigma_t^2\right)\right)\\[1ex] +\mathbf\Sigma_t &= \mathbf{B}^{-1}\text{diag}\left(\boldsymbol\sigma_t^2\right)\mathbf{B}^{-1\prime}\\[1ex] +E\left[\text{diag}\left(\boldsymbol\sigma_t^2\right)\right] &= \mathbf{I}_N +\end{align} + +### Identification. + +- Matrix $\mathbf{B}$ is identified up to its rows' sign change and equations' reordering +- Structural shocks' conditional variances $\boldsymbol\sigma_t^2$ can be estimated + +### Heteroskedasticity Modeling. + +Choose any (conditional) variance model for $\boldsymbol\sigma_t^2$ that fits the data well. + + + + + + +## Dynamic Causal Effects {background-color="#ff69b4"} + +## Impulse response functions + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### Definition. + +**Impulse response functions** to *orthogonal shocks* computed for an empirically relevant SVAR model are considered the **dynamic causal effects** of the underlying shocks $u_t$ on economic measurements $y_{t+i}$ $i$ periods ahead. + +\begin{align*} +\frac{\partial y_{n.t+i}}{\partial u_{j.t}}&=\theta_{nj.i} +\end{align*} + +- $\theta_{nj.i}$ - response of $n$th variable to $j$th shock $i$ periods after shock's occurrence + + for $i=0,1,\dots,h$ and $n,j=1,\dots,N$ + + + + +## Impulse response functions + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### Definition. + +**Impulse response functions** to *orthogonal shocks* computed for an empirically relevant SVAR model are considered the **dynamic causal effects** of the underlying shocks $u_t$ on economic measurements $y_{t+i}$ $i$ periods ahead. + +\begin{align*} +\frac{\partial y_{t+i}}{\partial u_t}&=\underset{N\times N}{\mathbf\Theta_i} +\end{align*} + +- $\mathbf\Theta_i$ - responses of all of the variables to all of the shocks $i$ periods after shocks' occurrence + + for $i=0,1,\dots,h$ and $n,j=1,\dots,N$ + + + + + +## Impulse response functions + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### At finite horizon. + +Define matrices + +$$ +\underset{(pN\times pN)}{\mathbb{A}} = \begin{bmatrix}\mathbf{A}_1 & \mathbf{A}_2 &\dots& \mathbf{A}_p\\ &\mathbf{I}_{N(p-1)}&&\mathbf{0}_{N(p-1)\times N} \end{bmatrix}\quad\text{and}\quad +\underset{(N\times pN)}{\mathbf{J}} = \begin{bmatrix} \mathbf{I}_{N} & \mathbf{0}_{N\times N(p-1)} \end{bmatrix} +$$ +Impulse response at horizon $i=0,1,\dots,h$ are equal to: + +\begin{align} +\mathbf\Theta_i &= \mathbf{J}\mathbb{A}^i\mathbf{J}'\mathbf{B}^{-1} +\end{align} +where $\mathbb{A}^0=\mathbf{I}_N$, $\mathbb{A}^1=\mathbb{A}$, $\mathbb{A}^2=\mathbb{A}\mathbb{A}$, ... + +### At infinite horizon. + +Inform about the value of the effect in the long run. + +\begin{align} +\mathbf\Theta_{\infty} &= \left( \mathbf{I}_N - \mathbf{A}_1 - \dots - \mathbf{A}_p \right)^{-1}\mathbf{B}^{-1} +\end{align} + + + + +## Impulse response functions + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### Bayesian Estimation. + +#### Step 1. Estimate the model + +Obtain a sample from the posterior distribution +$$\left\{ \mathbf{A}^{(s)},\mathbf{B}^{(s)} \right\}_{s=1}^{S}$$ + +#### Step 2. Compute impulse responses + +For each of the $S$ draws, compute $\mathbf\Theta_i^{(s)}$ as a function of $\mathbf{A}^{(s)}$ and $\mathbf{B}^{(s)}$ and return +$$\left\{\mathbf\Theta_i^{(s)}\right\}_{s=1}^{S}$$ +as a sample drew from the posterior distribution of $\Theta_i$ given data. + + + + + + + + + + + + + + +## Bayesian Estimation {background-color="#ff69b4"} + +## Bayesian Estimation + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +$\left.\right.$ + +#### **Gibbs sampler** by [Waggoner & Zha (2003)](https://doi.org/10.1016/S0165-1889(02)00168-9) + +facilitates estimation of Bayesian SVARs for + +- lower-triangular and non-recursive identification patterns of exclusion restrictions +- over-identifying (more than $N(N − 1)/2)$ exclusion restrictions +- models identified via heteroskedasticity + +$\left.\right.$ + +#### Further extensions include SVARs + +- identified through non-normal residuals +- identified by zero and sign restrictions +- identified using instrumental variables (Proxy SVARs) + + + + + +## Bayesian Estimation + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### Exclusion restrictions on the rows of $\mathbf{B}$ + +$$ +\underset{(1\times N)}{\mathbf{B}_{[n\cdot]}} = \underset{(1\times r_n)}{\mathbf{b}_n} \underset{(r_n\times N)}{V_n} \qquad\text{such that}\qquad +\mathbf{B} = \begin{bmatrix} \mathbf{b}_1V_1\\ \vdots \\ \mathbf{b}_NV_N \end{bmatrix} +$$ + +- $\mathbf{b}_n$ - a $1\times r_n$ vector of unrestricted elements of $n$ row of $\mathbf{B}$ +- $V_n$ - an $r_n\times N$ *fixed* matrix of ones and zeros + +### Example. + +$$\mathbf{b}_n = \begin{bmatrix} b_1 & b_2\end{bmatrix}\quad V_n = \begin{bmatrix} 1&0&0\\0&0&1\end{bmatrix} \quad\rightarrow\quad \mathbf{B}_{[n\cdot]} = \begin{bmatrix} b_1&0 & b_2\end{bmatrix} +$$ + + + + +## Bayesian Estimation + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### The $n$th Structural Equation. +\begin{align*} +\mathbf{b}_nV_n\epsilon_t &= u_{n.t}\\ +u_{n.t} &\sim N(0,1) +\end{align*} + +### Matrix Notation. +\begin{align*} +E V_n' \mathbf{b}_n' &= U_n\\ +U_n &\sim N_T\left(\mathbf{0}_T,I_T\right)\\[2ex] +\underset{(T\times1)}{U_n} &= \begin{bmatrix} u_{n.1} & \dots & u_{n.T} \end{bmatrix}'\\ +\underset{(T\times N)}{E} &\text{ - defined as before} +\end{align*} + + + +## Bayesian Estimation + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### Likelihood function. +\begin{align*} +L(\mathbf{A},\mathbf{B}|Y,X) &\propto +|\text{det}\left( \mathbf{B} \right)|^{T}\exp\left\{ -\frac{1}{2}\sum_{n=1}^N \mathbf{b}_nV_nE'EV_n'\mathbf{b}_n' \right\}\\[1ex] +E &= Y - X\mathbf{A} +\end{align*} + +### Hierarchical prior for $\mathbf{B}$ +\begin{align*} +\mathbf{b}_n | \gamma_B &\sim N_{r_n}\left(\mathbf{0}_{r_n}, \gamma_B V_n\underline{S}^{-1}V_n'\right)\\[1ex] +\gamma_B &\sim IG2(\underline{s},\underline{\nu}) +\end{align*} + +- $\underline{S}$ - $N\times N$ prior scale matrix +- $\underline{s}$ and $\underline{\nu}$ positive scalars of scale and shape + + + + +## Bayesian Estimation + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +### Kernel of the full conditional posterior for $\mathbf{B}$ + +\begin{align*} +p(\mathbf{B}|Y,X,\mathbf{A}, \gamma_B)&\propto +|\text{det}\left( \mathbf{B} \right)|^{T}\exp\left\{ -\frac{1}{2}\sum_{n=1}^N \mathbf{b}_n \overline{S}_n^{-1}\mathbf{b}_n' \right\}\\[1ex] +\overline{S}_n^{-1} &= V_n\left[ \gamma_B^{-1}\underline{S}^{-1} + (Y-X\mathbf{A})'(Y-X\mathbf{A}) \right]V_n'\\[2ex] +\end{align*} + +- This is a kernel of a *Generalised-Normal* distribution +- A feasible Gibbs sampler was proposed by by [Waggoner & Zha (2003)](https://doi.org/10.1016/S0165-1889(02)00168-9) +- The Gibbs sampler draws from the full conditional posterior for $n = 1,\dots,N$: +$$ p(\mathbf{b}_n | \mathbf{b}_1,\dots, \mathbf{b}_{n-1},\mathbf{b}_{n+1}, \mathbf{b}_N, \mathbf{A}, \gamma_B, Y, X) $$ + + + + + + + +## Monetary Policy Analysis Using R Package [bsvars](https://cran.r-project.org/package=bsvars) {background-color="#ff69b4"} + + +## [bsvars](https://cran.r-project.org/package=bsvars) an R Package + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +![](cran.png) + + + + +## [bsvars](https://cran.r-project.org/package=bsvars) an R Package: Features + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +- Bayesian estimation of Structural VARs +- identification via: + - exclusion restrictions + - heteroskedasticity + - non-normality +- six heteroskedastic processes +- efficient and fast Gibbs sampler +- excellent computational speed +- frontier econometric techniques +- compiled code using **cpp** via [**Rcpp**](https://www.rcpp.org) and [**RcppArmadillo**](https://cran.r-project.org/package=RcppArmadillo) +- data analysis in **R** + + + +## [bsvars](https://cran.r-project.org/package=bsvars) an R Package: Features + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +![](progress.png) + + + +## [bsvars](https://cran.r-project.org/package=bsvars) an R Package: Features + +::: footer +[Bayesian Structural VARs](https://bayesian-econometrics-2023.github.io/be23-lecture8/) +::: + +- simple model setup using `specify_*()` +- flexibility in setting priors, restrictions, etc. +- one function for estimation `estimate()` +- posterior processing utility functions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## [bsvars:](https://cran.r-project.org/package=bsvars) Bayesian Estimation of Structural Vector Autoregressive Models {background-color="#ff69b4"} diff --git a/index_files/libs/clipboard/clipboard.min.js b/index_files/libs/clipboard/clipboard.min.js new file mode 100644 index 0000000..1103f81 --- /dev/null +++ b/index_files/libs/clipboard/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light-border]>.tippy-arrow:after,.tippy-box[data-theme~=light-border]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=light-border]>.tippy-arrow:after{border-color:transparent;border-style:solid}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-arrow:after{border-top-color:rgba(0,8,16,.2);border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:rgba(0,8,16,.2);border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:16px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-arrow:after{border-left-color:rgba(0,8,16,.2);border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:rgba(0,8,16,.2)}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=light-border]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=light-border]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px} \ No newline at end of file diff --git a/index_files/libs/quarto-html/popper.min.js b/index_files/libs/quarto-html/popper.min.js new file mode 100644 index 0000000..2269d66 --- /dev/null +++ b/index_files/libs/quarto-html/popper.min.js @@ -0,0 +1,6 @@ +/** + * @popperjs/core v2.11.4 - MIT License + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),o=1,i=1;if(r(e)&&t){var a=e.offsetHeight,f=e.offsetWidth;f>0&&(o=s(n.width)/f||1),a>0&&(i=s(n.height)/a||1)}return{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function c(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function p(e){return e?(e.nodeName||"").toLowerCase():null}function u(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function l(e){return f(u(e)).left+c(e).scrollLeft}function d(e){return t(e).getComputedStyle(e)}function h(e){var t=d(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function m(e,n,o){void 0===o&&(o=!1);var i,a,d=r(n),m=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),v=u(n),g=f(e,m),y={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(d||!d&&!o)&&(("body"!==p(n)||h(v))&&(y=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:c(i)),r(n)?((b=f(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):v&&(b.x=l(v))),{x:g.left+y.scrollLeft-b.x,y:g.top+y.scrollTop-b.y,width:g.width,height:g.height}}function v(e){var t=f(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function g(e){return"html"===p(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||u(e)}function y(e){return["html","body","#document"].indexOf(p(e))>=0?e.ownerDocument.body:r(e)&&h(e)?e:y(g(e))}function b(e,n){var r;void 0===n&&(n=[]);var o=y(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],h(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(b(g(s)))}function x(e){return["table","td","th"].indexOf(p(e))>=0}function w(e){return r(e)&&"fixed"!==d(e).position?e.offsetParent:null}function O(e){for(var n=t(e),i=w(e);i&&x(i)&&"static"===d(i).position;)i=w(i);return i&&("html"===p(i)||"body"===p(i)&&"static"===d(i).position)?n:i||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&r(e)&&"fixed"===d(e).position)return null;var n=g(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(p(n))<0;){var i=d(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var j="top",E="bottom",D="right",A="left",L="auto",P=[j,E,D,A],M="start",k="end",W="viewport",B="popper",H=P.reduce((function(e,t){return e.concat([t+"-"+M,t+"-"+k])}),[]),T=[].concat(P,[L]).reduce((function(e,t){return e.concat([t,t+"-"+M,t+"-"+k])}),[]),R=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function S(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function q(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function V(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function N(e,r){return r===W?V(function(e){var n=t(e),r=u(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,s=0,f=0;return o&&(i=o.width,a=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=o.offsetLeft,f=o.offsetTop)),{width:i,height:a,x:s+l(e),y:f}}(e)):n(r)?function(e){var t=f(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(r):V(function(e){var t,n=u(e),r=c(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+l(e),p=-r.scrollTop;return"rtl"===d(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:p}}(u(e)))}function I(e,t,o){var s="clippingParents"===t?function(e){var t=b(g(e)),o=["absolute","fixed"].indexOf(d(e).position)>=0&&r(e)?O(e):e;return n(o)?t.filter((function(e){return n(e)&&q(e,o)&&"body"!==p(e)})):[]}(e):[].concat(t),f=[].concat(s,[o]),c=f[0],u=f.reduce((function(t,n){var r=N(e,n);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),N(e,c));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function _(e){return e.split("-")[1]}function F(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function U(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?_(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case j:t={x:s,y:n.y-r.height};break;case E:t={x:s,y:n.y+n.height};break;case D:t={x:n.x+n.width,y:f};break;case A:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?F(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case M:t[c]=t[c]-(n[p]/2-r[p]/2);break;case k:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function z(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function X(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Y(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.boundary,s=void 0===a?"clippingParents":a,c=r.rootBoundary,p=void 0===c?W:c,l=r.elementContext,d=void 0===l?B:l,h=r.altBoundary,m=void 0!==h&&h,v=r.padding,g=void 0===v?0:v,y=z("number"!=typeof g?g:X(g,P)),b=d===B?"reference":B,x=e.rects.popper,w=e.elements[m?b:d],O=I(n(w)?w:w.contextElement||u(e.elements.popper),s,p),A=f(e.elements.reference),L=U({reference:A,element:x,strategy:"absolute",placement:i}),M=V(Object.assign({},x,L)),k=d===B?M:A,H={top:O.top-k.top+y.top,bottom:k.bottom-O.bottom+y.bottom,left:O.left-k.left+y.left,right:k.right-O.right+y.right},T=e.modifiersData.offset;if(d===B&&T){var R=T[i];Object.keys(H).forEach((function(e){var t=[D,E].indexOf(e)>=0?1:-1,n=[j,E].indexOf(e)>=0?"y":"x";H[e]+=R[n]*t}))}return H}var G={placement:"bottom",modifiers:[],strategy:"absolute"};function J(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[A,D].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},ie={left:"right",right:"left",bottom:"top",top:"bottom"};function ae(e){return e.replace(/left|right|bottom|top/g,(function(e){return ie[e]}))}var se={start:"end",end:"start"};function fe(e){return e.replace(/start|end/g,(function(e){return se[e]}))}function ce(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?T:f,p=_(r),u=p?s?H:H.filter((function(e){return _(e)===p})):P,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=Y(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var pe={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,g=C(v),y=f||(g===v||!h?[ae(v)]:function(e){if(C(e)===L)return[];var t=ae(e);return[fe(e),t,fe(t)]}(v)),b=[v].concat(y).reduce((function(e,n){return e.concat(C(n)===L?ce(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,P=!0,k=b[0],W=0;W=0,S=R?"width":"height",q=Y(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),V=R?T?D:A:T?E:j;x[S]>w[S]&&(V=ae(V));var N=ae(V),I=[];if(i&&I.push(q[H]<=0),s&&I.push(q[V]<=0,q[N]<=0),I.every((function(e){return e}))){k=B,P=!1;break}O.set(B,I)}if(P)for(var F=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return k=t,"break"},U=h?3:1;U>0;U--){if("break"===F(U))break}t.placement!==k&&(t.modifiersData[r]._skip=!0,t.placement=k,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ue(e,t,n){return i(e,a(t,n))}var le={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,g=n.tetherOffset,y=void 0===g?0:g,b=Y(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=_(t.placement),L=!w,P=F(x),k="x"===P?"y":"x",W=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,q={x:0,y:0};if(W){if(s){var V,N="y"===P?j:A,I="y"===P?E:D,U="y"===P?"height":"width",z=W[P],X=z+b[N],G=z-b[I],J=m?-H[U]/2:0,K=w===M?B[U]:H[U],Q=w===M?-H[U]:-B[U],Z=t.elements.arrow,$=m&&Z?v(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=ue(0,B[U],$[U]),oe=L?B[U]/2-J-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=L?-B[U]/2+J+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&O(t.elements.arrow),se=ae?"y"===P?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(V=null==S?void 0:S[P])?V:0,ce=z+ie-fe,pe=ue(m?a(X,z+oe-fe-se):X,z,m?i(G,ce):G);W[P]=pe,q[P]=pe-z}if(c){var le,de="x"===P?j:A,he="x"===P?E:D,me=W[k],ve="y"===k?"height":"width",ge=me+b[de],ye=me-b[he],be=-1!==[j,A].indexOf(x),xe=null!=(le=null==S?void 0:S[k])?le:0,we=be?ge:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ye,je=m&&be?function(e,t,n){var r=ue(e,t,n);return r>n?n:r}(we,me,Oe):ue(m?we:ge,me,m?Oe:ye);W[k]=je,q[k]=je-me}t.modifiersData[r]=q}},requiresIfExists:["offset"]};var de={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=F(s),c=[A,D].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return z("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:X(e,P))}(o.padding,n),u=v(i),l="y"===f?j:A,d="y"===f?E:D,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],g=O(i),y=g?"y"===f?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],L=y/2-u[c]/2+b,M=ue(x,L,w),k=f;n.modifiersData[r]=((t={})[k]=M,t.centerOffset=M-L,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&q(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function he(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function me(e){return[j,D,E,A].some((function(t){return e[t]>=0}))}var ve={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=Y(t,{elementContext:"reference"}),s=Y(t,{altBoundary:!0}),f=he(a,r),c=he(s,o,i),p=me(f),u=me(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},ge=K({defaultModifiers:[Z,$,ne,re]}),ye=[Z,$,ne,re,oe,pe,le,de,ve],be=K({defaultModifiers:ye});e.applyStyles=re,e.arrow=de,e.computeStyles=ne,e.createPopper=be,e.createPopperLite=ge,e.defaultModifiers=ye,e.detectOverflow=Y,e.eventListeners=Z,e.flip=pe,e.hide=ve,e.offset=oe,e.popperGenerator=K,e.popperOffsets=$,e.preventOverflow=le,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/index_files/libs/quarto-html/quarto-html.min.css b/index_files/libs/quarto-html/quarto-html.min.css new file mode 100644 index 0000000..c2857c3 --- /dev/null +++ b/index_files/libs/quarto-html/quarto-html.min.css @@ -0,0 +1 @@ +/*# sourceMappingURL=0a6b880beb84f9b6f36107a76f82c5b1.css.map */ diff --git a/index_files/libs/quarto-html/quarto-syntax-highlighting.css b/index_files/libs/quarto-html/quarto-syntax-highlighting.css new file mode 100644 index 0000000..d9fd98f --- /dev/null +++ b/index_files/libs/quarto-html/quarto-syntax-highlighting.css @@ -0,0 +1,203 @@ +/* quarto syntax highlight colors */ +:root { + --quarto-hl-ot-color: #003B4F; + --quarto-hl-at-color: #657422; + --quarto-hl-ss-color: #20794D; + --quarto-hl-an-color: #5E5E5E; + --quarto-hl-fu-color: #4758AB; + --quarto-hl-st-color: #20794D; + --quarto-hl-cf-color: #003B4F; + --quarto-hl-op-color: #5E5E5E; + --quarto-hl-er-color: #AD0000; + --quarto-hl-bn-color: #AD0000; + --quarto-hl-al-color: #AD0000; + --quarto-hl-va-color: #111111; + --quarto-hl-bu-color: inherit; + --quarto-hl-ex-color: inherit; + --quarto-hl-pp-color: #AD0000; + --quarto-hl-in-color: #5E5E5E; + --quarto-hl-vs-color: #20794D; + --quarto-hl-wa-color: #5E5E5E; + --quarto-hl-do-color: #5E5E5E; + --quarto-hl-im-color: #00769E; + --quarto-hl-ch-color: #20794D; + --quarto-hl-dt-color: #AD0000; + --quarto-hl-fl-color: #AD0000; + --quarto-hl-co-color: #5E5E5E; + --quarto-hl-cv-color: #5E5E5E; + --quarto-hl-cn-color: #8f5902; + --quarto-hl-sc-color: #5E5E5E; + --quarto-hl-dv-color: #AD0000; + --quarto-hl-kw-color: #003B4F; +} + +/* other quarto variables */ +:root { + --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +pre > code.sourceCode > span { + color: #003B4F; +} + +code span { + color: #003B4F; +} + +code.sourceCode > span { + color: #003B4F; +} + +div.sourceCode, +div.sourceCode pre.sourceCode { + color: #003B4F; +} + +code span.ot { + color: #003B4F; + font-style: inherit; +} + +code span.at { + color: #657422; + font-style: inherit; +} + +code span.ss { + color: #20794D; + font-style: inherit; +} + +code span.an { + color: #5E5E5E; + font-style: inherit; +} + +code span.fu { + color: #4758AB; + font-style: inherit; +} + +code span.st { + color: #20794D; + font-style: inherit; +} + +code span.cf { + color: #003B4F; + font-style: inherit; +} + +code span.op { + color: #5E5E5E; + font-style: inherit; +} + +code span.er { + color: #AD0000; + font-style: inherit; +} + +code span.bn { + color: #AD0000; + font-style: inherit; +} + +code span.al { + color: #AD0000; + font-style: inherit; +} + +code span.va { + color: #111111; + font-style: inherit; +} + +code span.bu { + font-style: inherit; +} + +code span.ex { + font-style: inherit; +} + +code span.pp { + color: #AD0000; + font-style: inherit; +} + +code span.in { + color: #5E5E5E; + font-style: inherit; +} + +code span.vs { + color: #20794D; + font-style: inherit; +} + +code span.wa { + color: #5E5E5E; + font-style: italic; +} + +code span.do { + color: #5E5E5E; + font-style: italic; +} + +code span.im { + color: #00769E; + font-style: inherit; +} + +code span.ch { + color: #20794D; + font-style: inherit; +} + +code span.dt { + color: #AD0000; + font-style: inherit; +} + +code span.fl { + color: #AD0000; + font-style: inherit; +} + +code span.co { + color: #5E5E5E; + font-style: inherit; +} + +code span.cv { + color: #5E5E5E; + font-style: italic; +} + +code span.cn { + color: #8f5902; + font-style: inherit; +} + +code span.sc { + color: #5E5E5E; + font-style: inherit; +} + +code span.dv { + color: #AD0000; + font-style: inherit; +} + +code span.kw { + color: #003B4F; + font-style: inherit; +} + +.prevent-inlining { + content: " !el.hasAttribute("disabled") && !el.getAttribute("aria-hidden") + ); + }; + + /** + * Remove roles and attributes from a tab and its content + * @param {Node} tab The tab + * @param {Node} content The tab content + * @param {Object} settings User settings and options + */ + var destroyTab = function (tab, content, settings) { + // Remove the generated ID + if (tab.id.slice(0, settings.idPrefix.length) === settings.idPrefix) { + tab.id = ""; + } + + // remove event listener + tab.removeEventListener("focus", focusHandler, true); + + // Remove roles + tab.removeAttribute("role"); + tab.removeAttribute("aria-controls"); + tab.removeAttribute("aria-selected"); + tab.removeAttribute("tabindex"); + tab.closest("li").removeAttribute("role"); + content.removeAttribute("role"); + content.removeAttribute("aria-labelledby"); + content.removeAttribute("hidden"); + }; + + /** + * Add the required roles and attributes to a tab and its content + * @param {Node} tab The tab + * @param {Node} content The tab content + * @param {Object} settings User settings and options + */ + var setupTab = function (tab, content, settings) { + // Give tab an ID if it doesn't already have one + if (!tab.id) { + tab.id = settings.idPrefix + content.id; + } + + // Add roles + tab.setAttribute("role", "tab"); + tab.setAttribute("aria-controls", content.id); + tab.closest("li").setAttribute("role", "presentation"); + content.setAttribute("role", "tabpanel"); + content.setAttribute("aria-labelledby", tab.id); + + // Add selected state + if (tab.matches(settings.default)) { + tab.setAttribute("aria-selected", "true"); + } else { + tab.setAttribute("aria-selected", "false"); + content.setAttribute("hidden", "hidden"); + } + + // add focus event listender + tab.addEventListener("focus", focusHandler); + }; + + /** + * Hide a tab and its content + * @param {Node} newTab The new tab that's replacing it + */ + var hide = function (newTab) { + // Variables + var tabGroup = newTab.closest('[role="tablist"]'); + if (!tabGroup) return {}; + var tab = tabGroup.querySelector('[role="tab"][aria-selected="true"]'); + if (!tab) return {}; + var content = document.querySelector(tab.hash); + + // Hide the tab + tab.setAttribute("aria-selected", "false"); + + // Hide the content + if (!content) return { previousTab: tab }; + content.setAttribute("hidden", "hidden"); + + // Return the hidden tab and content + return { + previousTab: tab, + previousContent: content, + }; + }; + + /** + * Show a tab and its content + * @param {Node} tab The tab + * @param {Node} content The tab content + */ + var show = function (tab, content) { + tab.setAttribute("aria-selected", "true"); + content.removeAttribute("hidden"); + tab.focus(); + }; + + /** + * Toggle a new tab + * @param {Node} tab The tab to show + */ + var toggle = function (tab) { + // Make sure there's a tab to toggle and it's not already active + if (!tab || tab.getAttribute("aria-selected") == "true") return; + + // Variables + var content = document.querySelector(tab.hash); + if (!content) return; + + // Hide active tab and content + var details = hide(tab); + + // Show new tab and content + show(tab, content); + + // Add event details + details.tab = tab; + details.content = content; + + // Emit a custom event + emitEvent(tab, details); + }; + + /** + * Get all of the tabs in a tablist + * @param {Node} tab A tab from the list + * @return {Object} The tabs and the index of the currently active one + */ + var getTabsMap = function (tab) { + var tabGroup = tab.closest('[role="tablist"]'); + var tabs = tabGroup ? tabGroup.querySelectorAll('[role="tab"]') : null; + if (!tabs) return; + return { + tabs: tabs, + index: Array.prototype.indexOf.call(tabs, tab), + }; + }; + + /** + * Switch the active tab based on keyboard activity + * @param {Node} tab The currently active tab + * @param {Key} key The key that was pressed + */ + var switchTabs = function (tab, key) { + // Get a map of tabs + var map = getTabsMap(tab); + if (!map) return; + var length = map.tabs.length - 1; + var index; + + // Go to previous tab + if (["ArrowUp", "ArrowLeft", "Up", "Left"].indexOf(key) > -1) { + index = map.index < 1 ? length : map.index - 1; + } + + // Go to next tab + else if (["ArrowDown", "ArrowRight", "Down", "Right"].indexOf(key) > -1) { + index = map.index === length ? 0 : map.index + 1; + } + + // Go to home + else if (key === "Home") { + index = 0; + } + + // Go to end + else if (key === "End") { + index = length; + } + + // Toggle the tab + toggle(map.tabs[index]); + }; + + /** + * Create the Constructor object + */ + var Constructor = function (selector, options) { + // + // Variables + // + + var publicAPIs = {}; + var settings, tabWrapper; + + // + // Methods + // + + publicAPIs.destroy = function () { + // Get all tabs + var tabs = tabWrapper.querySelectorAll("a"); + + // Add roles to tabs + Array.prototype.forEach.call(tabs, function (tab) { + // Get the tab content + var content = document.querySelector(tab.hash); + if (!content) return; + + // Setup the tab + destroyTab(tab, content, settings); + }); + + // Remove role from wrapper + tabWrapper.removeAttribute("role"); + + // Remove event listeners + document.documentElement.removeEventListener( + "click", + clickHandler, + true + ); + tabWrapper.removeEventListener("keydown", keyHandler, true); + + // Reset variables + settings = null; + tabWrapper = null; + }; + + /** + * Setup the DOM with the proper attributes + */ + publicAPIs.setup = function () { + // Variables + tabWrapper = document.querySelector(selector); + if (!tabWrapper) return; + var tabs = tabWrapper.querySelectorAll("a"); + + // Add role to wrapper + tabWrapper.setAttribute("role", "tablist"); + + // Add roles to tabs. provide dynanmic tab indexes if we are within reveal + var contentTabindexes = + window.document.body.classList.contains("reveal-viewport"); + var nextTabindex = 1; + Array.prototype.forEach.call(tabs, function (tab) { + if (contentTabindexes) { + tab.setAttribute("tabindex", "" + nextTabindex++); + } else { + tab.setAttribute("tabindex", "0"); + } + + // Get the tab content + var content = document.querySelector(tab.hash); + if (!content) return; + + // set tab indexes for content + if (contentTabindexes) { + getKeyboardFocusableElements(content).forEach(function (el) { + el.setAttribute("tabindex", "" + nextTabindex++); + }); + } + + // Setup the tab + setupTab(tab, content, settings); + }); + }; + + /** + * Toggle a tab based on an ID + * @param {String|Node} id The tab to toggle + */ + publicAPIs.toggle = function (id) { + // Get the tab + var tab = id; + if (typeof id === "string") { + tab = document.querySelector( + selector + ' [role="tab"][href*="' + id + '"]' + ); + } + + // Toggle the tab + toggle(tab); + }; + + /** + * Handle click events + */ + var clickHandler = function (event) { + // Only run on toggles + var tab = event.target.closest(selector + ' [role="tab"]'); + if (!tab) return; + + // Prevent link behavior + event.preventDefault(); + + // Toggle the tab + toggle(tab); + }; + + /** + * Handle keydown events + */ + var keyHandler = function (event) { + // Only run if a tab is in focus + var tab = document.activeElement; + if (!tab.matches(selector + ' [role="tab"]')) return; + + // Only run for specific keys + if (["Home", "End"].indexOf(event.key) < 0) return; + + // Switch tabs + switchTabs(tab, event.key); + }; + + /** + * Initialize the instance + */ + var init = function () { + // Merge user options with defaults + settings = extend(defaults, options || {}); + + // Setup the DOM + publicAPIs.setup(); + + // Add event listeners + document.documentElement.addEventListener("click", clickHandler, true); + tabWrapper.addEventListener("keydown", keyHandler, true); + }; + + // + // Initialize and return the Public APIs + // + + init(); + return publicAPIs; + }; + + // + // Return the Constructor + // + + return Constructor; + } +); diff --git a/index_files/libs/quarto-html/tippy.css b/index_files/libs/quarto-html/tippy.css new file mode 100644 index 0000000..e6ae635 --- /dev/null +++ b/index_files/libs/quarto-html/tippy.css @@ -0,0 +1 @@ +.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} \ No newline at end of file diff --git a/index_files/libs/quarto-html/tippy.umd.min.js b/index_files/libs/quarto-html/tippy.umd.min.js new file mode 100644 index 0000000..ca292be --- /dev/null +++ b/index_files/libs/quarto-html/tippy.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='',F})); + diff --git a/index_files/libs/revealjs/dist/reset.css b/index_files/libs/revealjs/dist/reset.css new file mode 100644 index 0000000..e238539 --- /dev/null +++ b/index_files/libs/revealjs/dist/reset.css @@ -0,0 +1,30 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v4.0 | 20180602 + License: none (public domain) +*/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +main, menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, main, menu, nav, section { + display: block; +} \ No newline at end of file diff --git a/index_files/libs/revealjs/dist/reveal.css b/index_files/libs/revealjs/dist/reveal.css new file mode 100644 index 0000000..5f80fd0 --- /dev/null +++ b/index_files/libs/revealjs/dist/reveal.css @@ -0,0 +1,8 @@ +/*! +* reveal.js 4.3.1 +* https://revealjs.com +* MIT licensed +* +* Copyright (C) 2011-2022 Hakim El Hattab, https://hakim.se +*/ +.reveal .r-stretch,.reveal .stretch{max-width:none;max-height:none}.reveal pre.r-stretch code,.reveal pre.stretch code{height:100%;max-height:100%;box-sizing:border-box}.reveal .r-fit-text{display:inline-block;white-space:nowrap}.reveal .r-stack{display:grid}.reveal .r-stack>*{grid-area:1/1;margin:auto}.reveal .r-hstack,.reveal .r-vstack{display:flex}.reveal .r-hstack img,.reveal .r-hstack video,.reveal .r-vstack img,.reveal .r-vstack video{min-width:0;min-height:0;-o-object-fit:contain;object-fit:contain}.reveal .r-vstack{flex-direction:column;align-items:center;justify-content:center}.reveal .r-hstack{flex-direction:row;align-items:center;justify-content:center}.reveal .items-stretch{align-items:stretch}.reveal .items-start{align-items:flex-start}.reveal .items-center{align-items:center}.reveal .items-end{align-items:flex-end}.reveal .justify-between{justify-content:space-between}.reveal .justify-around{justify-content:space-around}.reveal .justify-start{justify-content:flex-start}.reveal .justify-center{justify-content:center}.reveal .justify-end{justify-content:flex-end}html.reveal-full-page{width:100%;height:100%;height:100vh;height:calc(var(--vh,1vh) * 100);overflow:hidden}.reveal-viewport{height:100%;overflow:hidden;position:relative;line-height:1;margin:0;background-color:#fff;color:#000}.reveal-viewport:-webkit-full-screen{top:0!important;left:0!important;width:100%!important;height:100%!important;transform:none!important}.reveal-viewport:-ms-fullscreen{top:0!important;left:0!important;width:100%!important;height:100%!important;transform:none!important}.reveal-viewport:fullscreen{top:0!important;left:0!important;width:100%!important;height:100%!important;transform:none!important}.reveal .slides section .fragment{opacity:0;visibility:hidden;transition:all .2s ease;will-change:opacity}.reveal .slides section .fragment.visible{opacity:1;visibility:inherit}.reveal .slides section .fragment.disabled{transition:none}.reveal .slides section .fragment.grow{opacity:1;visibility:inherit}.reveal .slides section .fragment.grow.visible{transform:scale(1.3)}.reveal .slides section .fragment.shrink{opacity:1;visibility:inherit}.reveal .slides section .fragment.shrink.visible{transform:scale(.7)}.reveal .slides section .fragment.zoom-in{transform:scale(.1)}.reveal .slides section .fragment.zoom-in.visible{transform:none}.reveal .slides section .fragment.fade-out{opacity:1;visibility:inherit}.reveal .slides section .fragment.fade-out.visible{opacity:0;visibility:hidden}.reveal .slides section .fragment.semi-fade-out{opacity:1;visibility:inherit}.reveal .slides section .fragment.semi-fade-out.visible{opacity:.5;visibility:inherit}.reveal .slides section .fragment.strike{opacity:1;visibility:inherit}.reveal .slides section .fragment.strike.visible{text-decoration:line-through}.reveal .slides section .fragment.fade-up{transform:translate(0,40px)}.reveal .slides section .fragment.fade-up.visible{transform:translate(0,0)}.reveal .slides section .fragment.fade-down{transform:translate(0,-40px)}.reveal .slides section .fragment.fade-down.visible{transform:translate(0,0)}.reveal .slides section .fragment.fade-right{transform:translate(-40px,0)}.reveal .slides section .fragment.fade-right.visible{transform:translate(0,0)}.reveal .slides section .fragment.fade-left{transform:translate(40px,0)}.reveal .slides section .fragment.fade-left.visible{transform:translate(0,0)}.reveal .slides section .fragment.current-visible,.reveal .slides section .fragment.fade-in-then-out{opacity:0;visibility:hidden}.reveal .slides section .fragment.current-visible.current-fragment,.reveal .slides section .fragment.fade-in-then-out.current-fragment{opacity:1;visibility:inherit}.reveal .slides section .fragment.fade-in-then-semi-out{opacity:0;visibility:hidden}.reveal .slides section .fragment.fade-in-then-semi-out.visible{opacity:.5;visibility:inherit}.reveal .slides section .fragment.fade-in-then-semi-out.current-fragment{opacity:1;visibility:inherit}.reveal .slides section .fragment.highlight-blue,.reveal .slides section .fragment.highlight-current-blue,.reveal .slides section .fragment.highlight-current-green,.reveal .slides section .fragment.highlight-current-red,.reveal .slides section .fragment.highlight-green,.reveal .slides section .fragment.highlight-red{opacity:1;visibility:inherit}.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}@keyframes bounce-right{0%,10%,25%,40%,50%{transform:translateX(0)}20%{transform:translateX(10px)}30%{transform:translateX(-5px)}}@keyframes bounce-left{0%,10%,25%,40%,50%{transform:translateX(0)}20%{transform:translateX(-10px)}30%{transform:translateX(5px)}}@keyframes bounce-down{0%,10%,25%,40%,50%{transform:translateY(0)}20%{transform:translateY(10px)}30%{transform:translateY(-5px)}}.reveal .controls{display:none;position:absolute;top:auto;bottom:12px;right:12px;left:auto;z-index:11;color:#000;pointer-events:none;font-size:10px}.reveal .controls button{position:absolute;padding:0;background-color:transparent;border:0;outline:0;cursor:pointer;color:currentColor;transform:scale(.9999);transition:color .2s ease,opacity .2s ease,transform .2s ease;z-index:2;pointer-events:auto;font-size:inherit;visibility:hidden;opacity:0;-webkit-appearance:none;-webkit-tap-highlight-color:transparent}.reveal .controls .controls-arrow:after,.reveal .controls .controls-arrow:before{content:"";position:absolute;top:0;left:0;width:2.6em;height:.5em;border-radius:.25em;background-color:currentColor;transition:all .15s ease,background-color .8s ease;transform-origin:.2em 50%;will-change:transform}.reveal .controls .controls-arrow{position:relative;width:3.6em;height:3.6em}.reveal .controls .controls-arrow:before{transform:translateX(.5em) translateY(1.55em) rotate(45deg)}.reveal .controls .controls-arrow:after{transform:translateX(.5em) translateY(1.55em) rotate(-45deg)}.reveal .controls .controls-arrow:hover:before{transform:translateX(.5em) translateY(1.55em) rotate(40deg)}.reveal .controls .controls-arrow:hover:after{transform:translateX(.5em) translateY(1.55em) rotate(-40deg)}.reveal .controls .controls-arrow:active:before{transform:translateX(.5em) translateY(1.55em) rotate(36deg)}.reveal .controls .controls-arrow:active:after{transform:translateX(.5em) translateY(1.55em) rotate(-36deg)}.reveal .controls .navigate-left{right:6.4em;bottom:3.2em;transform:translateX(-10px)}.reveal .controls .navigate-left.highlight{animation:bounce-left 2s 50 both ease-out}.reveal .controls .navigate-right{right:0;bottom:3.2em;transform:translateX(10px)}.reveal .controls .navigate-right .controls-arrow{transform:rotate(180deg)}.reveal .controls .navigate-right.highlight{animation:bounce-right 2s 50 both ease-out}.reveal .controls .navigate-up{right:3.2em;bottom:6.4em;transform:translateY(-10px)}.reveal .controls .navigate-up .controls-arrow{transform:rotate(90deg)}.reveal .controls .navigate-down{right:3.2em;bottom:-1.4em;padding-bottom:1.4em;transform:translateY(10px)}.reveal .controls .navigate-down .controls-arrow{transform:rotate(-90deg)}.reveal .controls .navigate-down.highlight{animation:bounce-down 2s 50 both ease-out}.reveal .controls[data-controls-back-arrows=faded] .navigate-up.enabled{opacity:.3}.reveal .controls[data-controls-back-arrows=faded] .navigate-up.enabled:hover{opacity:1}.reveal .controls[data-controls-back-arrows=hidden] .navigate-up.enabled{opacity:0;visibility:hidden}.reveal .controls .enabled{visibility:visible;opacity:.9;cursor:pointer;transform:none}.reveal .controls .enabled.fragmented{opacity:.5}.reveal .controls .enabled.fragmented:hover,.reveal .controls .enabled:hover{opacity:1}.reveal:not(.rtl) .controls[data-controls-back-arrows=faded] .navigate-left.enabled{opacity:.3}.reveal:not(.rtl) .controls[data-controls-back-arrows=faded] .navigate-left.enabled:hover{opacity:1}.reveal:not(.rtl) .controls[data-controls-back-arrows=hidden] .navigate-left.enabled{opacity:0;visibility:hidden}.reveal.rtl .controls[data-controls-back-arrows=faded] .navigate-right.enabled{opacity:.3}.reveal.rtl .controls[data-controls-back-arrows=faded] .navigate-right.enabled:hover{opacity:1}.reveal.rtl .controls[data-controls-back-arrows=hidden] .navigate-right.enabled{opacity:0;visibility:hidden}.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-down,.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-up{display:none}.reveal:not(.has-vertical-slides) .controls .navigate-left,.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-left{bottom:1.4em;right:5.5em}.reveal:not(.has-vertical-slides) .controls .navigate-right,.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-right{bottom:1.4em;right:.5em}.reveal:not(.has-horizontal-slides) .controls .navigate-up{right:1.4em;bottom:5em}.reveal:not(.has-horizontal-slides) .controls .navigate-down{right:1.4em;bottom:.5em}.reveal.has-dark-background .controls{color:#fff}.reveal.has-light-background .controls{color:#000}.reveal.no-hover .controls .controls-arrow:active:before,.reveal.no-hover .controls .controls-arrow:hover:before{transform:translateX(.5em) translateY(1.55em) rotate(45deg)}.reveal.no-hover .controls .controls-arrow:active:after,.reveal.no-hover .controls .controls-arrow:hover:after{transform:translateX(.5em) translateY(1.55em) rotate(-45deg)}@media screen and (min-width:500px){.reveal .controls[data-controls-layout=edges]{top:0;right:0;bottom:0;left:0}.reveal .controls[data-controls-layout=edges] .navigate-down,.reveal .controls[data-controls-layout=edges] .navigate-left,.reveal .controls[data-controls-layout=edges] .navigate-right,.reveal .controls[data-controls-layout=edges] .navigate-up{bottom:auto;right:auto}.reveal .controls[data-controls-layout=edges] .navigate-left{top:50%;left:.8em;margin-top:-1.8em}.reveal .controls[data-controls-layout=edges] .navigate-right{top:50%;right:.8em;margin-top:-1.8em}.reveal .controls[data-controls-layout=edges] .navigate-up{top:.8em;left:50%;margin-left:-1.8em}.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:-.3em;left:50%;margin-left:-1.8em}}.reveal .progress{position:absolute;display:none;height:3px;width:100%;bottom:0;left:0;z-index:10;background-color:rgba(0,0,0,.2);color:#fff}.reveal .progress:after{content:"";display:block;position:absolute;height:10px;width:100%;top:-10px}.reveal .progress span{display:block;height:100%;width:100%;background-color:currentColor;transition:transform .8s cubic-bezier(.26,.86,.44,.985);transform-origin:0 0;transform:scaleX(0)}.reveal .slide-number{position:absolute;display:block;right:8px;bottom:8px;z-index:31;font-family:Helvetica,sans-serif;font-size:12px;line-height:1;color:#fff;background-color:rgba(0,0,0,.4);padding:5px}.reveal .slide-number a{color:currentColor}.reveal .slide-number-delimiter{margin:0 3px}.reveal{position:relative;width:100%;height:100%;overflow:hidden;touch-action:pinch-zoom}.reveal.embedded{touch-action:pan-y}.reveal .slides{position:absolute;width:100%;height:100%;top:0;right:0;bottom:0;left:0;margin:auto;pointer-events:none;overflow:visible;z-index:1;text-align:center;perspective:600px;perspective-origin:50% 40%}.reveal .slides>section{perspective:600px}.reveal .slides>section,.reveal .slides>section>section{display:none;position:absolute;width:100%;pointer-events:auto;z-index:10;transform-style:flat;transition:transform-origin .8s cubic-bezier(.26,.86,.44,.985),transform .8s cubic-bezier(.26,.86,.44,.985),visibility .8s cubic-bezier(.26,.86,.44,.985),opacity .8s cubic-bezier(.26,.86,.44,.985)}.reveal[data-transition-speed=fast] .slides section{transition-duration:.4s}.reveal[data-transition-speed=slow] .slides section{transition-duration:1.2s}.reveal .slides section[data-transition-speed=fast]{transition-duration:.4s}.reveal .slides section[data-transition-speed=slow]{transition-duration:1.2s}.reveal .slides>section.stack{padding-top:0;padding-bottom:0;pointer-events:none;height:100%}.reveal .slides>section.present,.reveal .slides>section>section.present{display:block;z-index:11;opacity:1}.reveal .slides>section:empty,.reveal .slides>section>section:empty,.reveal .slides>section>section[data-background-interactive],.reveal .slides>section[data-background-interactive]{pointer-events:none}.reveal.center,.reveal.center .slides,.reveal.center .slides section{min-height:0!important}.reveal .slides>section:not(.present),.reveal .slides>section>section:not(.present){pointer-events:none}.reveal.overview .slides>section,.reveal.overview .slides>section>section{pointer-events:auto}.reveal .slides>section.future,.reveal .slides>section.past,.reveal .slides>section>section.future,.reveal .slides>section>section.past{opacity:0}.reveal .slides>section[data-transition=slide].past,.reveal .slides>section[data-transition~=slide-out].past,.reveal.slide .slides>section:not([data-transition]).past{transform:translate(-150%,0)}.reveal .slides>section[data-transition=slide].future,.reveal .slides>section[data-transition~=slide-in].future,.reveal.slide .slides>section:not([data-transition]).future{transform:translate(150%,0)}.reveal .slides>section>section[data-transition=slide].past,.reveal .slides>section>section[data-transition~=slide-out].past,.reveal.slide .slides>section>section:not([data-transition]).past{transform:translate(0,-150%)}.reveal .slides>section>section[data-transition=slide].future,.reveal .slides>section>section[data-transition~=slide-in].future,.reveal.slide .slides>section>section:not([data-transition]).future{transform:translate(0,150%)}.reveal .slides>section[data-transition=linear].past,.reveal .slides>section[data-transition~=linear-out].past,.reveal.linear .slides>section:not([data-transition]).past{transform:translate(-150%,0)}.reveal .slides>section[data-transition=linear].future,.reveal .slides>section[data-transition~=linear-in].future,.reveal.linear .slides>section:not([data-transition]).future{transform:translate(150%,0)}.reveal .slides>section>section[data-transition=linear].past,.reveal .slides>section>section[data-transition~=linear-out].past,.reveal.linear .slides>section>section:not([data-transition]).past{transform:translate(0,-150%)}.reveal .slides>section>section[data-transition=linear].future,.reveal .slides>section>section[data-transition~=linear-in].future,.reveal.linear .slides>section>section:not([data-transition]).future{transform:translate(0,150%)}.reveal .slides section[data-transition=default].stack,.reveal.default .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=default].past,.reveal .slides>section[data-transition~=default-out].past,.reveal.default .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=default].future,.reveal .slides>section[data-transition~=default-in].future,.reveal.default .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=default].past,.reveal .slides>section>section[data-transition~=default-out].past,.reveal.default .slides>section>section:not([data-transition]).past{transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=default].future,.reveal .slides>section>section[data-transition~=default-in].future,.reveal.default .slides>section>section:not([data-transition]).future{transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides section[data-transition=convex].stack,.reveal.convex .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=convex].past,.reveal .slides>section[data-transition~=convex-out].past,.reveal.convex .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=convex].future,.reveal .slides>section[data-transition~=convex-in].future,.reveal.convex .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=convex].past,.reveal .slides>section>section[data-transition~=convex-out].past,.reveal.convex .slides>section>section:not([data-transition]).past{transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=convex].future,.reveal .slides>section>section[data-transition~=convex-in].future,.reveal.convex .slides>section>section:not([data-transition]).future{transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides section[data-transition=concave].stack,.reveal.concave .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=concave].past,.reveal .slides>section[data-transition~=concave-out].past,.reveal.concave .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=concave].future,.reveal .slides>section[data-transition~=concave-in].future,.reveal.concave .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=concave].past,.reveal .slides>section>section[data-transition~=concave-out].past,.reveal.concave .slides>section>section:not([data-transition]).past{transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0)}.reveal .slides>section>section[data-transition=concave].future,.reveal .slides>section>section[data-transition~=concave-in].future,.reveal.concave .slides>section>section:not([data-transition]).future{transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0)}.reveal .slides section[data-transition=zoom],.reveal.zoom .slides section:not([data-transition]){transition-timing-function:ease}.reveal .slides>section[data-transition=zoom].past,.reveal .slides>section[data-transition~=zoom-out].past,.reveal.zoom .slides>section:not([data-transition]).past{visibility:hidden;transform:scale(16)}.reveal .slides>section[data-transition=zoom].future,.reveal .slides>section[data-transition~=zoom-in].future,.reveal.zoom .slides>section:not([data-transition]).future{visibility:hidden;transform:scale(.2)}.reveal .slides>section>section[data-transition=zoom].past,.reveal .slides>section>section[data-transition~=zoom-out].past,.reveal.zoom .slides>section>section:not([data-transition]).past{transform:scale(16)}.reveal .slides>section>section[data-transition=zoom].future,.reveal .slides>section>section[data-transition~=zoom-in].future,.reveal.zoom .slides>section>section:not([data-transition]).future{transform:scale(.2)}.reveal.cube .slides{perspective:1300px}.reveal.cube .slides section{padding:30px;min-height:700px;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;transform-style:preserve-3d}.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,.1);border-radius:4px;transform:translateZ(-20px)}.reveal.cube .slides section:not(.stack):after{content:"";position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:0 0;z-index:1;border-radius:4px;box-shadow:0 95px 25px rgba(0,0,0,.2);transform:translateZ(-90px) rotateX(65deg)}.reveal.cube .slides>section.stack{padding:0;background:0 0}.reveal.cube .slides>section.past{transform-origin:100% 0;transform:translate3d(-100%,0,0) rotateY(-90deg)}.reveal.cube .slides>section.future{transform-origin:0 0;transform:translate3d(100%,0,0) rotateY(90deg)}.reveal.cube .slides>section>section.past{transform-origin:0 100%;transform:translate3d(0,-100%,0) rotateX(90deg)}.reveal.cube .slides>section>section.future{transform-origin:0 0;transform:translate3d(0,100%,0) rotateX(-90deg)}.reveal.page .slides{perspective-origin:0 50%;perspective:3000px}.reveal.page .slides section{padding:30px;min-height:700px;box-sizing:border-box;transform-style:preserve-3d}.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,.1);transform:translateZ(-20px)}.reveal.page .slides section:not(.stack):after{content:"";position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:0 0;z-index:1;border-radius:4px;box-shadow:0 95px 25px rgba(0,0,0,.2);-webkit-transform:translateZ(-90px) rotateX(65deg)}.reveal.page .slides>section.stack{padding:0;background:0 0}.reveal.page .slides>section.past{transform-origin:0 0;transform:translate3d(-40%,0,0) rotateY(-80deg)}.reveal.page .slides>section.future{transform-origin:100% 0;transform:translate3d(0,0,0)}.reveal.page .slides>section>section.past{transform-origin:0 0;transform:translate3d(0,-40%,0) rotateX(80deg)}.reveal.page .slides>section>section.future{transform-origin:0 100%;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]){transform:none;transition:opacity .5s}.reveal.fade.overview .slides section,.reveal.fade.overview .slides>section>section{transition:none}.reveal .slides section[data-transition=none],.reveal.none .slides section:not([data-transition]){transform:none;transition:none}.reveal .pause-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000;visibility:hidden;opacity:0;z-index:100;transition:all 1s ease}.reveal .pause-overlay .resume-button{position:absolute;bottom:20px;right:20px;color:#ccc;border-radius:2px;padding:6px 14px;border:2px solid #ccc;font-size:16px;background:0 0;cursor:pointer}.reveal .pause-overlay .resume-button:hover{color:#fff;border-color:#fff}.reveal.paused .pause-overlay{visibility:visible;opacity:1}.reveal .no-transition,.reveal .no-transition *,.reveal .slides.disable-slide-transitions section{transition:none!important}.reveal .slides.disable-slide-transitions section{transform:none!important}.reveal .backgrounds{position:absolute;width:100%;height:100%;top:0;left:0;perspective:600px}.reveal .slide-background{display:none;position:absolute;width:100%;height:100%;opacity:0;visibility:hidden;overflow:hidden;background-color:rgba(0,0,0,0);transition:all .8s cubic-bezier(.26,.86,.44,.985)}.reveal .slide-background-content{position:absolute;width:100%;height:100%;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.reveal .slide-background.stack{display:block}.reveal .slide-background.present{opacity:1;visibility:visible;z-index:2}.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;-o-object-fit:cover;object-fit:cover}.reveal .slide-background[data-background-size=contain] video{-o-object-fit:contain;object-fit:contain}.reveal>.backgrounds .slide-background[data-background-transition=none],.reveal[data-background-transition=none]>.backgrounds .slide-background:not([data-background-transition]){transition:none}.reveal>.backgrounds .slide-background[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background:not([data-background-transition]){opacity:1}.reveal>.backgrounds .slide-background.past[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background.past:not([data-background-transition]){transform:translate(-100%,0)}.reveal>.backgrounds .slide-background.future[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background.future:not([data-background-transition]){transform:translate(100%,0)}.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]){transform:translate(0,-100%)}.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide],.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]){transform:translate(0,100%)}.reveal>.backgrounds .slide-background.past[data-background-transition=convex],.reveal[data-background-transition=convex]>.backgrounds .slide-background.past:not([data-background-transition]){opacity:0;transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal>.backgrounds .slide-background.future[data-background-transition=convex],.reveal[data-background-transition=convex]>.backgrounds .slide-background.future:not([data-background-transition]){opacity:0;transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex],.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]){opacity:0;transform:translate3d(0,-100%,0) rotateX(90deg) translate3d(0,-100%,0)}.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex],.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]){opacity:0;transform:translate3d(0,100%,0) rotateX(-90deg) translate3d(0,100%,0)}.reveal>.backgrounds .slide-background.past[data-background-transition=concave],.reveal[data-background-transition=concave]>.backgrounds .slide-background.past:not([data-background-transition]){opacity:0;transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal>.backgrounds .slide-background.future[data-background-transition=concave],.reveal[data-background-transition=concave]>.backgrounds .slide-background.future:not([data-background-transition]){opacity:0;transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave],.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]){opacity:0;transform:translate3d(0,-100%,0) rotateX(-90deg) translate3d(0,-100%,0)}.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave],.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]){opacity:0;transform:translate3d(0,100%,0) rotateX(90deg) translate3d(0,100%,0)}.reveal>.backgrounds .slide-background[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background:not([data-background-transition]){transition-timing-function:ease}.reveal>.backgrounds .slide-background.past[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background.past:not([data-background-transition]){opacity:0;visibility:hidden;transform:scale(16)}.reveal>.backgrounds .slide-background.future[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background.future:not([data-background-transition]){opacity:0;visibility:hidden;transform:scale(.2)}.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]){opacity:0;visibility:hidden;transform:scale(16)}.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom],.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]){opacity:0;visibility:hidden;transform:scale(.2)}.reveal[data-transition-speed=fast]>.backgrounds .slide-background{transition-duration:.4s}.reveal[data-transition-speed=slow]>.backgrounds .slide-background{transition-duration:1.2s}.reveal [data-auto-animate-target^=unmatched]{will-change:opacity}.reveal section[data-auto-animate]:not(.stack):not([data-auto-animate=running]) [data-auto-animate-target^=unmatched]{opacity:0}.reveal.overview{perspective-origin:50% 50%;perspective:700px}.reveal.overview .slides{-moz-transform-style:preserve-3d}.reveal.overview .slides section{height:100%;top:0!important;opacity:1!important;overflow:hidden;visibility:visible!important;cursor:pointer;box-sizing:border-box}.reveal.overview .slides section.present,.reveal.overview .slides section:hover{outline:10px solid rgba(150,150,150,.4);outline-offset:10px}.reveal.overview .slides section .fragment{opacity:1;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:0 0;outline:0;overflow:visible}.reveal.overview .backgrounds{perspective:inherit;-moz-transform-style:preserve-3d}.reveal.overview .backgrounds .slide-background{opacity:1;visibility:visible;outline:10px solid rgba(150,150,150,.1);outline-offset:10px}.reveal.overview .backgrounds .slide-background.stack{overflow:visible}.reveal.overview .slides section,.reveal.overview-deactivating .slides section{transition:none}.reveal.overview .backgrounds .slide-background,.reveal.overview-deactivating .backgrounds .slide-background{transition:none}.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 code,.reveal.rtl pre{direction:ltr}.reveal.rtl ol,.reveal.rtl ul{text-align:right}.reveal.rtl .progress span{transform-origin:100% 0}.reveal.has-parallax-background .backgrounds{transition:all .8s ease}.reveal.has-parallax-background[data-transition-speed=fast] .backgrounds{transition-duration:.4s}.reveal.has-parallax-background[data-transition-speed=slow] .backgrounds{transition-duration:1.2s}.reveal>.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1000;background:rgba(0,0,0,.9);transition:all .3s ease}.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:.6;transition:all .3s ease}.reveal>.overlay header{position:absolute;left:0;top:0;width:100%;padding:5px;z-index:2;box-sizing:border-box}.reveal>.overlay header a{display:inline-block;width:40px;height:40px;line-height:36px;padding:0 10px;float:right;opacity:.6;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;display:flex;top:50px;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;transition:all .3s ease}.reveal>.overlay.overlay-preview.loaded .viewport iframe{opacity:1;visibility:visible}.reveal>.overlay.overlay-preview.loaded .viewport-inner{position:absolute;z-index:-1;left:0;top:45%;width:100%;text-align:center;letter-spacing:normal}.reveal>.overlay.overlay-preview .x-frame-error{opacity:0;transition:opacity .3s ease .3s}.reveal>.overlay.overlay-preview.loaded .x-frame-error{opacity:1}.reveal>.overlay.overlay-preview.loaded .spinner{opacity:0;visibility:hidden;transform:scale(.2)}.reveal>.overlay.overlay-help .viewport{overflow:auto;color:#fff}.reveal>.overlay.overlay-help .viewport .viewport-inner{width:600px;margin:auto;padding:20px 20px 80px 20px;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:16px}.reveal>.overlay.overlay-help .viewport .viewport-inner table td,.reveal>.overlay.overlay-help .viewport .viewport-inner table th{width:200px;padding:14px;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:absolute;left:15px;bottom:20px;z-index:30;cursor:pointer;transition:all .4s ease;-webkit-tap-highlight-color:transparent}.reveal.overview .playback{opacity:0;visibility:hidden}.reveal .hljs{min-height:100%}.reveal .hljs table{margin:initial}.reveal .hljs-ln-code,.reveal .hljs-ln-numbers{padding:0;border:0}.reveal .hljs-ln-numbers{opacity:.6;padding-right:.75em;text-align:right;vertical-align:top}.reveal .hljs.has-highlights tr:not(.highlight-line){opacity:.4}.reveal .hljs:not(:first-child).fragment{position:absolute;top:0;left:0;width:100%;box-sizing:border-box}.reveal pre[data-auto-animate-target]{overflow:hidden}.reveal pre[data-auto-animate-target] code{height:100%}.reveal .roll{display:inline-block;line-height:1.2;overflow:hidden;vertical-align:top;perspective:400px;perspective-origin:50% 50%}.reveal .roll:hover{background:0 0;text-shadow:none}.reveal .roll span{display:block;position:relative;padding:0 2px;pointer-events:none;transition:all .4s ease;transform-origin:50% 0;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden}.reveal .roll:hover span{background:rgba(0,0,0,.5);transform:translate3d(0,0,-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;transform-origin:50% 0;transform:translate3d(0,110%,0) rotateX(-90deg)}.reveal aside.notes{display:none}.reveal .speaker-notes{display:none;position:absolute;width:33.3333333333%;height:100%;top:0;left:100%;padding:14px 18px 14px 18px;z-index:1;font-size:18px;line-height:1.4;border:1px solid rgba(0,0,0,.05);color:#222;background-color:#f5f5f5;overflow:auto;box-sizing:border-box;text-align:left;font-family:Helvetica,sans-serif;-webkit-overflow-scrolling:touch}.reveal .speaker-notes .notes-placeholder{color:#ccc;font-style:italic}.reveal .speaker-notes:focus{outline:0}.reveal .speaker-notes:before{content:"Speaker notes";display:block;margin-bottom:10px;opacity:.5}.reveal.show-notes{max-width:75%;overflow:visible}.reveal.show-notes .speaker-notes{display:block}@media screen and (min-width:1600px){.reveal .speaker-notes{font-size:20px}}@media screen and (max-width:1024px){.reveal.show-notes{border-left:0;max-width:none;max-height:70%;max-height:70vh;overflow:visible}.reveal.show-notes .speaker-notes{top:100%;left:0;width:100%;height:30vh;border:0}}@media screen and (max-width:600px){.reveal.show-notes{max-height:60%;max-height:60vh}.reveal.show-notes .speaker-notes{top:100%;height:40vh}.reveal .speaker-notes{font-size:14px}}.zoomed .reveal *,.zoomed .reveal :after,.zoomed .reveal :before{-webkit-backface-visibility:visible!important;backface-visibility:visible!important}.zoomed .reveal .controls,.zoomed .reveal .progress{opacity:0}.zoomed .reveal .roll span{background:0 0}.zoomed .reveal .roll span:after{visibility:hidden}html.print-pdf *{-webkit-print-color-adjust:exact}html.print-pdf{width:100%;height:100%;overflow:visible}html.print-pdf body{margin:0 auto!important;border:0;padding:0;float:none!important;overflow:visible}html.print-pdf .nestedarrow,html.print-pdf .reveal .controls,html.print-pdf .reveal .playback,html.print-pdf .reveal .progress,html.print-pdf .reveal.overview,html.print-pdf .state-background{display:none!important}html.print-pdf .reveal pre code{overflow:hidden!important;font-family:Courier,"Courier New",monospace!important}html.print-pdf .reveal{width:auto!important;height:auto!important;overflow:hidden!important}html.print-pdf .reveal .slides{position:static;width:100%!important;height:auto!important;zoom:1!important;pointer-events:initial;left:auto;top:auto;margin:0!important;padding:0!important;overflow:visible;display:block;perspective:none;perspective-origin:50% 50%}html.print-pdf .reveal .slides .pdf-page{position:relative;overflow:hidden;z-index:1;page-break-after:always}html.print-pdf .reveal .slides section{visibility:visible!important;display:block!important;position:absolute!important;margin:0!important;padding:0!important;box-sizing:border-box!important;min-height:1px;opacity:1!important;transform-style:flat!important;transform:none!important}html.print-pdf .reveal section.stack{position:relative!important;margin:0!important;padding:0!important;page-break-after:avoid!important;height:auto!important;min-height:auto!important}html.print-pdf .reveal img{box-shadow:none}html.print-pdf .reveal .backgrounds{display:none}html.print-pdf .reveal .slide-background{display:block!important;position:absolute;top:0;left:0;width:100%;height:100%;z-index:auto!important}html.print-pdf .reveal.show-notes{max-width:none;max-height:none}html.print-pdf .reveal .speaker-notes-pdf{display:block;width:100%;height:auto;max-height:none;top:auto;right:auto;bottom:auto;left:auto;z-index:100}html.print-pdf .reveal .speaker-notes-pdf[data-layout=separate-page]{position:relative;color:inherit;background-color:transparent;padding:20px;page-break-after:always;border:0}html.print-pdf .reveal .slide-number-pdf{display:block;position:absolute;font-size:14px}html.print-pdf .aria-status{display:none}@media print{html:not(.print-pdf){background:#fff;width:auto;height:auto;overflow:visible}html:not(.print-pdf) body{background:#fff;font-size:20pt;width:auto;height:auto;border:0;margin:0 5%;padding:0;overflow:visible;float:none!important}html:not(.print-pdf) .controls,html:not(.print-pdf) .fork-reveal,html:not(.print-pdf) .nestedarrow,html:not(.print-pdf) .reveal .backgrounds,html:not(.print-pdf) .reveal .progress,html:not(.print-pdf) .reveal .slide-number,html:not(.print-pdf) .share-reveal,html:not(.print-pdf) .state-background{display:none!important}html:not(.print-pdf) body,html:not(.print-pdf) li,html:not(.print-pdf) p,html:not(.print-pdf) td{font-size:20pt!important;color:#000}html:not(.print-pdf) h1,html:not(.print-pdf) h2,html:not(.print-pdf) h3,html:not(.print-pdf) h4,html:not(.print-pdf) h5,html:not(.print-pdf) h6{color:#000!important;height:auto;line-height:normal;text-align:left;letter-spacing:normal}html:not(.print-pdf) h1{font-size:28pt!important}html:not(.print-pdf) h2{font-size:24pt!important}html:not(.print-pdf) h3{font-size:22pt!important}html:not(.print-pdf) h4{font-size:22pt!important;font-variant:small-caps}html:not(.print-pdf) h5{font-size:21pt!important}html:not(.print-pdf) h6{font-size:20pt!important;font-style:italic}html:not(.print-pdf) a:link,html:not(.print-pdf) a:visited{color:#000!important;font-weight:700;text-decoration:underline}html:not(.print-pdf) div,html:not(.print-pdf) ol,html:not(.print-pdf) p,html:not(.print-pdf) ul{visibility:visible;position:static;width:auto;height:auto;display:block;overflow:visible;margin:0;text-align:left!important}html:not(.print-pdf) .reveal pre,html:not(.print-pdf) .reveal table{margin-left:0;margin-right:0}html:not(.print-pdf) .reveal pre code{padding:20px}html:not(.print-pdf) .reveal blockquote{margin:20px 0}html:not(.print-pdf) .reveal .slides{position:static!important;width:auto!important;height:auto!important;left:0!important;top:0!important;margin-left:0!important;margin-top:0!important;padding:0!important;zoom:1!important;transform:none!important;overflow:visible!important;display:block!important;text-align:left!important;perspective:none;perspective-origin:50% 50%}html:not(.print-pdf) .reveal .slides section{visibility:visible!important;position:static!important;width:auto!important;height:auto!important;display:block!important;overflow:visible!important;left:0!important;top:0!important;margin-left:0!important;margin-top:0!important;padding:60px 20px!important;z-index:auto!important;opacity:1!important;page-break-after:always!important;transform-style:flat!important;transform:none!important;transition:none!important}html:not(.print-pdf) .reveal .slides section.stack{padding:0!important}html:not(.print-pdf) .reveal section:last-of-type{page-break-after:avoid!important}html:not(.print-pdf) .reveal section .fragment{opacity:1!important;visibility:visible!important;transform:none!important}html:not(.print-pdf) .reveal section img{display:block;margin:15px 0;background:#fff;border:1px solid #666;box-shadow:none}html:not(.print-pdf) .reveal section small{font-size:.8em}html:not(.print-pdf) .reveal .hljs{max-height:100%;white-space:pre-wrap;word-wrap:break-word;word-break:break-word;font-size:15pt}html:not(.print-pdf) .reveal .hljs .hljs-ln-numbers{white-space:nowrap}html:not(.print-pdf) .reveal .hljs td{font-size:inherit!important;color:inherit!important}} \ No newline at end of file diff --git a/index_files/libs/revealjs/dist/reveal.esm.js b/index_files/libs/revealjs/dist/reveal.esm.js new file mode 100644 index 0000000..f18da89 --- /dev/null +++ b/index_files/libs/revealjs/dist/reveal.esm.js @@ -0,0 +1,9 @@ +/*! +* reveal.js 4.3.1 +* https://revealjs.com +* MIT licensed +* +* Copyright (C) 2011-2022 Hakim El Hattab, https://hakim.se +*/ +const e=(e,t)=>{for(let i in t)e[i]=t[i];return e},t=(e,t)=>Array.from(e.querySelectorAll(t)),i=(e,t,i)=>{i?e.classList.add(t):e.classList.remove(t)},s=e=>{if("string"==typeof e){if("null"===e)return null;if("true"===e)return!0;if("false"===e)return!1;if(e.match(/^-?[\d\.]+$/))return parseFloat(e)}return e},a=(e,t)=>{e.style.transform=t},n=(e,t)=>{let i=e.matches||e.matchesSelector||e.msMatchesSelector;return!(!i||!i.call(e,t))},r=(e,t)=>{if("function"==typeof e.closest)return e.closest(t);for(;e;){if(n(e,t))return e;e=e.parentNode}return null},o=(e,t,i,s="")=>{let a=e.querySelectorAll("."+i);for(let t=0;t{let t=document.createElement("style");return t.type="text/css",e&&e.length>0&&(t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e))),document.head.appendChild(t),t},d=()=>{let e={};location.search.replace(/[A-Z0-9]+?=([\w\.%-]*)/gi,(t=>{e[t.split("=").shift()]=t.split("=").pop()}));for(let t in e){let i=e[t];e[t]=s(unescape(i))}return void 0!==e.dependencies&&delete e.dependencies,e},c=(e,t=0)=>{if(e){let i,s=e.style.height;return e.style.height="0px",e.parentNode.style.height="auto",i=t-e.parentNode.offsetHeight,e.style.height=s+"px",e.parentNode.style.removeProperty("height"),i}return t},h={mp4:"video/mp4",m4a:"video/mp4",ogv:"video/ogg",mpeg:"video/mpeg",webm:"video/webm"},u=navigator.userAgent,g=/(iphone|ipod|ipad|android)/gi.test(u)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1;/chrome/i.test(u)&&/edge/i.test(u);const v=/android/gi.test(u);var p={};Object.defineProperty(p,"__esModule",{value:!0});var m=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e?x(t(document.querySelectorAll(e)),i):x([e],i)[0]}}("undefined"==typeof window?null:window);class b{constructor(e){this.Reveal=e,this.startEmbeddedIframe=this.startEmbeddedIframe.bind(this)}shouldPreload(e){let t=this.Reveal.getConfig().preloadIframes;return"boolean"!=typeof t&&(t=e.hasAttribute("data-preload")),t}load(e,i={}){e.style.display=this.Reveal.getConfig().display,t(e,"img[data-src], video[data-src], audio[data-src], iframe[data-src]").forEach((e=>{("IFRAME"!==e.tagName||this.shouldPreload(e))&&(e.setAttribute("src",e.getAttribute("data-src")),e.setAttribute("data-lazy-loaded",""),e.removeAttribute("data-src"))})),t(e,"video, audio").forEach((e=>{let i=0;t(e,"source[data-src]").forEach((e=>{e.setAttribute("src",e.getAttribute("data-src")),e.removeAttribute("data-src"),e.setAttribute("data-lazy-loaded",""),i+=1})),g&&"VIDEO"===e.tagName&&e.setAttribute("playsinline",""),i>0&&e.load()}));let s=e.slideBackgroundElement;if(s){s.style.display="block";let t=e.slideBackgroundContentElement,a=e.getAttribute("data-background-iframe");if(!1===s.hasAttribute("data-loaded")){s.setAttribute("data-loaded","true");let n=e.getAttribute("data-background-image"),r=e.getAttribute("data-background-video"),o=e.hasAttribute("data-background-video-loop"),l=e.hasAttribute("data-background-video-muted");if(n)/^data:/.test(n.trim())?t.style.backgroundImage=`url(${n.trim()})`:t.style.backgroundImage=n.split(",").map((e=>`url(${encodeURI(e.trim())})`)).join(",");else if(r&&!this.Reveal.isSpeakerNotes()){let e=document.createElement("video");o&&e.setAttribute("loop",""),l&&(e.muted=!0),g&&(e.muted=!0,e.setAttribute("playsinline","")),r.split(",").forEach((t=>{let i=((e="")=>h[e.split(".").pop()])(t);e.innerHTML+=i?``:``})),t.appendChild(e)}else if(a&&!0!==i.excludeIframes){let e=document.createElement("iframe");e.setAttribute("allowfullscreen",""),e.setAttribute("mozallowfullscreen",""),e.setAttribute("webkitallowfullscreen",""),e.setAttribute("allow","autoplay"),e.setAttribute("data-src",a),e.style.width="100%",e.style.height="100%",e.style.maxHeight="100%",e.style.maxWidth="100%",t.appendChild(e)}}let n=t.querySelector("iframe[data-src]");n&&this.shouldPreload(s)&&!/autoplay=(1|true|yes)/gi.test(a)&&n.getAttribute("src")!==a&&n.setAttribute("src",a)}this.layout(e)}layout(e){Array.from(e.querySelectorAll(".r-fit-text")).forEach((e=>{f(e,{minSize:24,maxSize:.8*this.Reveal.getConfig().height,observeMutations:!1,observeWindow:!1})}))}unload(e){e.style.display="none";let i=this.Reveal.getSlideBackground(e);i&&(i.style.display="none",t(i,"iframe[src]").forEach((e=>{e.removeAttribute("src")}))),t(e,"video[data-lazy-loaded][src], audio[data-lazy-loaded][src], iframe[data-lazy-loaded][src]").forEach((e=>{e.setAttribute("data-src",e.getAttribute("src")),e.removeAttribute("src")})),t(e,"video[data-lazy-loaded] source[src], audio source[src]").forEach((e=>{e.setAttribute("data-src",e.getAttribute("src")),e.removeAttribute("src")}))}formatEmbeddedContent(){let e=(e,i,s)=>{t(this.Reveal.getSlidesElement(),"iframe["+e+'*="'+i+'"]').forEach((t=>{let i=t.getAttribute(e);i&&-1===i.indexOf(s)&&t.setAttribute(e,i+(/\?/.test(i)?"&":"?")+s)}))};e("src","youtube.com/embed/","enablejsapi=1"),e("data-src","youtube.com/embed/","enablejsapi=1"),e("src","player.vimeo.com/","api=1"),e("data-src","player.vimeo.com/","api=1")}startEmbeddedContent(e){e&&!this.Reveal.isSpeakerNotes()&&(t(e,'img[src$=".gif"]').forEach((e=>{e.setAttribute("src",e.getAttribute("src"))})),t(e,"video, audio").forEach((e=>{if(r(e,".fragment")&&!r(e,".fragment.visible"))return;let t=this.Reveal.getConfig().autoPlayMedia;if("boolean"!=typeof t&&(t=e.hasAttribute("data-autoplay")||!!r(e,".slide-background")),t&&"function"==typeof e.play)if(e.readyState>1)this.startEmbeddedMedia({target:e});else if(g){let t=e.play();t&&"function"==typeof t.catch&&!1===e.controls&&t.catch((()=>{e.controls=!0,e.addEventListener("play",(()=>{e.controls=!1}))}))}else e.removeEventListener("loadeddata",this.startEmbeddedMedia),e.addEventListener("loadeddata",this.startEmbeddedMedia)})),t(e,"iframe[src]").forEach((e=>{r(e,".fragment")&&!r(e,".fragment.visible")||this.startEmbeddedIframe({target:e})})),t(e,"iframe[data-src]").forEach((e=>{r(e,".fragment")&&!r(e,".fragment.visible")||e.getAttribute("src")!==e.getAttribute("data-src")&&(e.removeEventListener("load",this.startEmbeddedIframe),e.addEventListener("load",this.startEmbeddedIframe),e.setAttribute("src",e.getAttribute("data-src")))})))}startEmbeddedMedia(e){let t=!!r(e.target,"html"),i=!!r(e.target,".present");t&&i&&(e.target.currentTime=0,e.target.play()),e.target.removeEventListener("loadeddata",this.startEmbeddedMedia)}startEmbeddedIframe(e){let t=e.target;if(t&&t.contentWindow){let i=!!r(e.target,"html"),s=!!r(e.target,".present");if(i&&s){let e=this.Reveal.getConfig().autoPlayMedia;"boolean"!=typeof e&&(e=t.hasAttribute("data-autoplay")||!!r(t,".slide-background")),/youtube\.com\/embed\//.test(t.getAttribute("src"))&&e?t.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}',"*"):/player\.vimeo\.com\//.test(t.getAttribute("src"))&&e?t.contentWindow.postMessage('{"method":"play"}',"*"):t.contentWindow.postMessage("slide:start","*")}}}stopEmbeddedContent(i,s={}){s=e({unloadIframes:!0},s),i&&i.parentNode&&(t(i,"video, audio").forEach((e=>{e.hasAttribute("data-ignore")||"function"!=typeof e.pause||(e.setAttribute("data-paused-by-reveal",""),e.pause())})),t(i,"iframe").forEach((e=>{e.contentWindow&&e.contentWindow.postMessage("slide:stop","*"),e.removeEventListener("load",this.startEmbeddedIframe)})),t(i,'iframe[src*="youtube.com/embed/"]').forEach((e=>{!e.hasAttribute("data-ignore")&&e.contentWindow&&"function"==typeof e.contentWindow.postMessage&&e.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*")})),t(i,'iframe[src*="player.vimeo.com/"]').forEach((e=>{!e.hasAttribute("data-ignore")&&e.contentWindow&&"function"==typeof e.contentWindow.postMessage&&e.contentWindow.postMessage('{"method":"pause"}',"*")})),!0===s.unloadIframes&&t(i,"iframe[data-src]").forEach((e=>{e.setAttribute("src","about:blank"),e.removeAttribute("src")})))}}class y{constructor(e){this.Reveal=e}render(){this.element=document.createElement("div"),this.element.className="slide-number",this.Reveal.getRevealElement().appendChild(this.element)}configure(e,t){let i="none";e.slideNumber&&!this.Reveal.isPrintingPDF()&&("all"===e.showSlideNumber||"speaker"===e.showSlideNumber&&this.Reveal.isSpeakerNotes())&&(i="block"),this.element.style.display=i}update(){this.Reveal.getConfig().slideNumber&&this.element&&(this.element.innerHTML=this.getSlideNumber())}getSlideNumber(e=this.Reveal.getCurrentSlide()){let t,i=this.Reveal.getConfig(),s="h.v";if("function"==typeof i.slideNumber)t=i.slideNumber(e);else{"string"==typeof i.slideNumber&&(s=i.slideNumber),/c/.test(s)||1!==this.Reveal.getHorizontalSlides().length||(s="c");let a=e&&"uncounted"===e.dataset.visibility?0:1;switch(t=[],s){case"c":t.push(this.Reveal.getSlidePastCount(e)+a);break;case"c/t":t.push(this.Reveal.getSlidePastCount(e)+a,"/",this.Reveal.getTotalSlides());break;default:let i=this.Reveal.getIndices(e);t.push(i.h+a);let n="h/v"===s?"/":".";this.Reveal.isVerticalSlide(e)&&t.push(n,i.v+1)}}let a="#"+this.Reveal.location.getHash(e);return this.formatNumber(t[0],t[1],t[2],a)}formatNumber(e,t,i,s="#"+this.Reveal.location.getHash()){return"number"!=typeof i||isNaN(i)?`\n\t\t\t\t\t${e}\n\t\t\t\t\t`:`\n\t\t\t\t\t${e}\n\t\t\t\t\t${t}\n\t\t\t\t\t${i}\n\t\t\t\t\t`}destroy(){this.element.remove()}}const w=e=>{let t=e.match(/^#([0-9a-f]{3})$/i);if(t&&t[1])return t=t[1],{r:17*parseInt(t.charAt(0),16),g:17*parseInt(t.charAt(1),16),b:17*parseInt(t.charAt(2),16)};let i=e.match(/^#([0-9a-f]{6})$/i);if(i&&i[1])return i=i[1],{r:parseInt(i.slice(0,2),16),g:parseInt(i.slice(2,4),16),b:parseInt(i.slice(4,6),16)};let s=e.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i);if(s)return{r:parseInt(s[1],10),g:parseInt(s[2],10),b:parseInt(s[3],10)};let a=e.match(/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\,\s*([\d]+|[\d]*.[\d]+)\s*\)$/i);return a?{r:parseInt(a[1],10),g:parseInt(a[2],10),b:parseInt(a[3],10),a:parseFloat(a[4])}:null};class E{constructor(e){this.Reveal=e}render(){this.element=document.createElement("div"),this.element.className="backgrounds",this.Reveal.getRevealElement().appendChild(this.element)}create(){this.element.innerHTML="",this.element.classList.add("no-transition"),this.Reveal.getHorizontalSlides().forEach((e=>{let i=this.createBackground(e,this.element);t(e,"section").forEach((e=>{this.createBackground(e,i),i.classList.add("stack")}))})),this.Reveal.getConfig().parallaxBackgroundImage?(this.element.style.backgroundImage='url("'+this.Reveal.getConfig().parallaxBackgroundImage+'")',this.element.style.backgroundSize=this.Reveal.getConfig().parallaxBackgroundSize,this.element.style.backgroundRepeat=this.Reveal.getConfig().parallaxBackgroundRepeat,this.element.style.backgroundPosition=this.Reveal.getConfig().parallaxBackgroundPosition,setTimeout((()=>{this.Reveal.getRevealElement().classList.add("has-parallax-background")}),1)):(this.element.style.backgroundImage="",this.Reveal.getRevealElement().classList.remove("has-parallax-background"))}createBackground(e,t){let i=document.createElement("div");i.className="slide-background "+e.className.replace(/present|past|future/,"");let s=document.createElement("div");return s.className="slide-background-content",i.appendChild(s),t.appendChild(i),e.slideBackgroundElement=i,e.slideBackgroundContentElement=s,this.sync(e),i}sync(e){const t=e.slideBackgroundElement,i=e.slideBackgroundContentElement,s={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"),backgroundOpacity:e.getAttribute("data-background-opacity")},a=e.hasAttribute("data-preload");e.classList.remove("has-dark-background"),e.classList.remove("has-light-background"),t.removeAttribute("data-loaded"),t.removeAttribute("data-background-hash"),t.removeAttribute("data-background-size"),t.removeAttribute("data-background-transition"),t.style.backgroundColor="",i.style.backgroundSize="",i.style.backgroundRepeat="",i.style.backgroundPosition="",i.style.backgroundImage="",i.style.opacity="",i.innerHTML="",s.background&&(/^(http|file|\/\/)/gi.test(s.background)||/\.(svg|png|jpg|jpeg|gif|bmp)([?#\s]|$)/gi.test(s.background)?e.setAttribute("data-background-image",s.background):t.style.background=s.background),(s.background||s.backgroundColor||s.backgroundImage||s.backgroundVideo||s.backgroundIframe)&&t.setAttribute("data-background-hash",s.background+s.backgroundSize+s.backgroundImage+s.backgroundVideo+s.backgroundIframe+s.backgroundColor+s.backgroundRepeat+s.backgroundPosition+s.backgroundTransition+s.backgroundOpacity),s.backgroundSize&&t.setAttribute("data-background-size",s.backgroundSize),s.backgroundColor&&(t.style.backgroundColor=s.backgroundColor),s.backgroundTransition&&t.setAttribute("data-background-transition",s.backgroundTransition),a&&t.setAttribute("data-preload",""),s.backgroundSize&&(i.style.backgroundSize=s.backgroundSize),s.backgroundRepeat&&(i.style.backgroundRepeat=s.backgroundRepeat),s.backgroundPosition&&(i.style.backgroundPosition=s.backgroundPosition),s.backgroundOpacity&&(i.style.opacity=s.backgroundOpacity);let n=s.backgroundColor;if(!n||!w(n)){let e=window.getComputedStyle(t);e&&e.backgroundColor&&(n=e.backgroundColor)}if(n){const t=w(n);t&&0!==t.a&&("string"==typeof(r=n)&&(r=w(r)),(r?(299*r.r+587*r.g+114*r.b)/1e3:null)<128?e.classList.add("has-dark-background"):e.classList.add("has-light-background"))}var r}update(e=!1){let i=this.Reveal.getCurrentSlide(),s=this.Reveal.getIndices(),a=null,n=this.Reveal.getConfig().rtl?"future":"past",r=this.Reveal.getConfig().rtl?"past":"future";if(Array.from(this.element.childNodes).forEach(((i,o)=>{i.classList.remove("past","present","future"),os.h?i.classList.add(r):(i.classList.add("present"),a=i),(e||o===s.h)&&t(i,".slide-background").forEach(((e,t)=>{e.classList.remove("past","present","future"),ts.v?e.classList.add("future"):(e.classList.add("present"),o===s.h&&(a=e))}))})),this.previousBackground&&this.Reveal.slideContent.stopEmbeddedContent(this.previousBackground,{unloadIframes:!this.Reveal.slideContent.shouldPreload(this.previousBackground)}),a){this.Reveal.slideContent.startEmbeddedContent(a);let e=a.querySelector(".slide-background-content");if(e){let t=e.style.backgroundImage||"";/\.gif/i.test(t)&&(e.style.backgroundImage="",window.getComputedStyle(e).opacity,e.style.backgroundImage=t)}let t=this.previousBackground?this.previousBackground.getAttribute("data-background-hash"):null,i=a.getAttribute("data-background-hash");i&&i===t&&a!==this.previousBackground&&this.element.classList.add("no-transition"),this.previousBackground=a}i&&["has-light-background","has-dark-background"].forEach((e=>{i.classList.contains(e)?this.Reveal.getRevealElement().classList.add(e):this.Reveal.getRevealElement().classList.remove(e)}),this),setTimeout((()=>{this.element.classList.remove("no-transition")}),1)}updateParallax(){let e=this.Reveal.getIndices();if(this.Reveal.getConfig().parallaxBackgroundImage){let t,i,s=this.Reveal.getHorizontalSlides(),a=this.Reveal.getVerticalSlides(),n=this.element.style.backgroundSize.split(" ");1===n.length?t=i=parseInt(n[0],10):(t=parseInt(n[0],10),i=parseInt(n[1],10));let r,o,l=this.element.offsetWidth,d=s.length;r="number"==typeof this.Reveal.getConfig().parallaxBackgroundHorizontal?this.Reveal.getConfig().parallaxBackgroundHorizontal:d>1?(t-l)/(d-1):0,o=r*e.h*-1;let c,h,u=this.element.offsetHeight,g=a.length;c="number"==typeof this.Reveal.getConfig().parallaxBackgroundVertical?this.Reveal.getConfig().parallaxBackgroundVertical:(i-u)/(g-1),h=g>0?c*e.v:0,this.element.style.backgroundPosition=o+"px "+-h+"px"}}destroy(){this.element.remove()}}const R=/registerPlugin|registerKeyboardShortcut|addKeyBinding|addEventListener/,S=/fade-(down|up|right|left|out|in-then-out|in-then-semi-out)|semi-fade-out|current-visible|shrink|grow/;let A=0;class k{constructor(e){this.Reveal=e}run(e,t){this.reset();let i=this.Reveal.getSlides(),s=i.indexOf(t),a=i.indexOf(e);if(e.hasAttribute("data-auto-animate")&&t.hasAttribute("data-auto-animate")&&e.getAttribute("data-auto-animate-id")===t.getAttribute("data-auto-animate-id")&&!(s>a?t:e).hasAttribute("data-auto-animate-restart")){this.autoAnimateStyleSheet=this.autoAnimateStyleSheet||l();let i=this.getAutoAnimateOptions(t);e.dataset.autoAnimate="pending",t.dataset.autoAnimate="pending",i.slideDirection=s>a?"forward":"backward";let n=this.getAutoAnimatableElements(e,t).map((e=>this.autoAnimateElements(e.from,e.to,e.options||{},i,A++)));if("false"!==t.dataset.autoAnimateUnmatched&&!0===this.Reveal.getConfig().autoAnimateUnmatched){let e=.8*i.duration,s=.2*i.duration;this.getUnmatchedAutoAnimateElements(t).forEach((e=>{let t=this.getAutoAnimateOptions(e,i),s="unmatched";t.duration===i.duration&&t.delay===i.delay||(s="unmatched-"+A++,n.push(`[data-auto-animate="running"] [data-auto-animate-target="${s}"] { transition: opacity ${t.duration}s ease ${t.delay}s; }`)),e.dataset.autoAnimateTarget=s}),this),n.push(`[data-auto-animate="running"] [data-auto-animate-target="unmatched"] { transition: opacity ${e}s ease ${s}s; }`)}this.autoAnimateStyleSheet.innerHTML=n.join(""),requestAnimationFrame((()=>{this.autoAnimateStyleSheet&&(getComputedStyle(this.autoAnimateStyleSheet).fontWeight,t.dataset.autoAnimate="running")})),this.Reveal.dispatchEvent({type:"autoanimate",data:{fromSlide:e,toSlide:t,sheet:this.autoAnimateStyleSheet}})}}reset(){t(this.Reveal.getRevealElement(),'[data-auto-animate]:not([data-auto-animate=""])').forEach((e=>{e.dataset.autoAnimate=""})),t(this.Reveal.getRevealElement(),"[data-auto-animate-target]").forEach((e=>{delete e.dataset.autoAnimateTarget})),this.autoAnimateStyleSheet&&this.autoAnimateStyleSheet.parentNode&&(this.autoAnimateStyleSheet.parentNode.removeChild(this.autoAnimateStyleSheet),this.autoAnimateStyleSheet=null)}autoAnimateElements(e,t,i,s,a){e.dataset.autoAnimateTarget="",t.dataset.autoAnimateTarget=a;let n=this.getAutoAnimateOptions(t,s);void 0!==i.delay&&(n.delay=i.delay),void 0!==i.duration&&(n.duration=i.duration),void 0!==i.easing&&(n.easing=i.easing);let r=this.getAutoAnimatableProperties("from",e,i),o=this.getAutoAnimatableProperties("to",t,i);if(t.classList.contains("fragment")&&(delete o.styles.opacity,e.classList.contains("fragment"))){(e.className.match(S)||[""])[0]===(t.className.match(S)||[""])[0]&&"forward"===s.slideDirection&&t.classList.add("visible","disabled")}if(!1!==i.translate||!1!==i.scale){let e=this.Reveal.getScale(),t={x:(r.x-o.x)/e,y:(r.y-o.y)/e,scaleX:r.width/o.width,scaleY:r.height/o.height};t.x=Math.round(1e3*t.x)/1e3,t.y=Math.round(1e3*t.y)/1e3,t.scaleX=Math.round(1e3*t.scaleX)/1e3,t.scaleX=Math.round(1e3*t.scaleX)/1e3;let s=!1!==i.translate&&(0!==t.x||0!==t.y),a=!1!==i.scale&&(0!==t.scaleX||0!==t.scaleY);if(s||a){let e=[];s&&e.push(`translate(${t.x}px, ${t.y}px)`),a&&e.push(`scale(${t.scaleX}, ${t.scaleY})`),r.styles.transform=e.join(" "),r.styles["transform-origin"]="top left",o.styles.transform="none"}}for(let e in o.styles){const t=o.styles[e],i=r.styles[e];t===i?delete o.styles[e]:(!0===t.explicitValue&&(o.styles[e]=t.value),!0===i.explicitValue&&(r.styles[e]=i.value))}let l="",d=Object.keys(o.styles);if(d.length>0){r.styles.transition="none",o.styles.transition=`all ${n.duration}s ${n.easing} ${n.delay}s`,o.styles["transition-property"]=d.join(", "),o.styles["will-change"]=d.join(", "),l='[data-auto-animate-target="'+a+'"] {'+Object.keys(r.styles).map((e=>e+": "+r.styles[e]+" !important;")).join("")+'}[data-auto-animate="running"] [data-auto-animate-target="'+a+'"] {'+Object.keys(o.styles).map((e=>e+": "+o.styles[e]+" !important;")).join("")+"}"}return l}getAutoAnimateOptions(t,i){let s={easing:this.Reveal.getConfig().autoAnimateEasing,duration:this.Reveal.getConfig().autoAnimateDuration,delay:0};if(s=e(s,i),t.parentNode){let e=r(t.parentNode,"[data-auto-animate-target]");e&&(s=this.getAutoAnimateOptions(e,s))}return t.dataset.autoAnimateEasing&&(s.easing=t.dataset.autoAnimateEasing),t.dataset.autoAnimateDuration&&(s.duration=parseFloat(t.dataset.autoAnimateDuration)),t.dataset.autoAnimateDelay&&(s.delay=parseFloat(t.dataset.autoAnimateDelay)),s}getAutoAnimatableProperties(e,t,i){let s=this.Reveal.getConfig(),a={styles:[]};if(!1!==i.translate||!1!==i.scale){let e;if("function"==typeof i.measure)e=i.measure(t);else if(s.center)e=t.getBoundingClientRect();else{let i=this.Reveal.getScale();e={x:t.offsetLeft*i,y:t.offsetTop*i,width:t.offsetWidth*i,height:t.offsetHeight*i}}a.x=e.x,a.y=e.y,a.width=e.width,a.height=e.height}const n=getComputedStyle(t);return(i.styles||s.autoAnimateStyles).forEach((t=>{let i;"string"==typeof t&&(t={property:t}),i=void 0!==t.from&&"from"===e?{value:t.from,explicitValue:!0}:void 0!==t.to&&"to"===e?{value:t.to,explicitValue:!0}:n[t.property],""!==i&&(a.styles[t.property]=i)})),a}getAutoAnimatableElements(e,t){let i=("function"==typeof this.Reveal.getConfig().autoAnimateMatcher?this.Reveal.getConfig().autoAnimateMatcher:this.getAutoAnimatePairs).call(this,e,t),s=[];return i.filter(((e,t)=>{if(-1===s.indexOf(e.to))return s.push(e.to),!0}))}getAutoAnimatePairs(e,t){let i=[];const s="h1, h2, h3, h4, h5, h6, p, li";return this.findAutoAnimateMatches(i,e,t,"[data-id]",(e=>e.nodeName+":::"+e.getAttribute("data-id"))),this.findAutoAnimateMatches(i,e,t,s,(e=>e.nodeName+":::"+e.innerText)),this.findAutoAnimateMatches(i,e,t,"img, video, iframe",(e=>e.nodeName+":::"+(e.getAttribute("src")||e.getAttribute("data-src")))),this.findAutoAnimateMatches(i,e,t,"pre",(e=>e.nodeName+":::"+e.innerText)),i.forEach((e=>{n(e.from,s)?e.options={scale:!1}:n(e.from,"pre")&&(e.options={scale:!1,styles:["width","height"]},this.findAutoAnimateMatches(i,e.from,e.to,".hljs .hljs-ln-code",(e=>e.textContent),{scale:!1,styles:[],measure:this.getLocalBoundingBox.bind(this)}),this.findAutoAnimateMatches(i,e.from,e.to,".hljs .hljs-ln-line[data-line-number]",(e=>e.getAttribute("data-line-number")),{scale:!1,styles:["width"],measure:this.getLocalBoundingBox.bind(this)}))}),this),i}getLocalBoundingBox(e){const t=this.Reveal.getScale();return{x:Math.round(e.offsetLeft*t*100)/100,y:Math.round(e.offsetTop*t*100)/100,width:Math.round(e.offsetWidth*t*100)/100,height:Math.round(e.offsetHeight*t*100)/100}}findAutoAnimateMatches(e,t,i,s,a,n){let r={},o={};[].slice.call(t.querySelectorAll(s)).forEach(((e,t)=>{const i=a(e);"string"==typeof i&&i.length&&(r[i]=r[i]||[],r[i].push(e))})),[].slice.call(i.querySelectorAll(s)).forEach(((t,i)=>{const s=a(t);let l;if(o[s]=o[s]||[],o[s].push(t),r[s]){const e=o[s].length-1,t=r[s].length-1;r[s][e]?(l=r[s][e],r[s][e]=null):r[s][t]&&(l=r[s][t],r[s][t]=null)}l&&e.push({from:l,to:t,options:n})}))}getUnmatchedAutoAnimateElements(e){return[].slice.call(e.children).reduce(((e,t)=>{const i=t.querySelector("[data-auto-animate-target]");return t.hasAttribute("data-auto-animate-target")||i||e.push(t),t.querySelector("[data-auto-animate-target]")&&(e=e.concat(this.getUnmatchedAutoAnimateElements(t))),e}),[])}}class L{constructor(e){this.Reveal=e}configure(e,t){!1===e.fragments?this.disable():!1===t.fragments&&this.enable()}disable(){t(this.Reveal.getSlidesElement(),".fragment").forEach((e=>{e.classList.add("visible"),e.classList.remove("current-fragment")}))}enable(){t(this.Reveal.getSlidesElement(),".fragment").forEach((e=>{e.classList.remove("visible"),e.classList.remove("current-fragment")}))}availableRoutes(){let e=this.Reveal.getCurrentSlide();if(e&&this.Reveal.getConfig().fragments){let t=e.querySelectorAll(".fragment:not(.disabled)"),i=e.querySelectorAll(".fragment:not(.disabled):not(.visible)");return{prev:t.length-i.length>0,next:!!i.length}}return{prev:!1,next:!1}}sort(e,t=!1){e=Array.from(e);let i=[],s=[],a=[];e.forEach((e=>{if(e.hasAttribute("data-fragment-index")){let t=parseInt(e.getAttribute("data-fragment-index"),10);i[t]||(i[t]=[]),i[t].push(e)}else s.push([e])})),i=i.concat(s);let n=0;return i.forEach((e=>{e.forEach((e=>{a.push(e),e.setAttribute("data-fragment-index",n)})),n++})),!0===t?i:a}sortAll(){this.Reveal.getHorizontalSlides().forEach((e=>{let i=t(e,"section");i.forEach(((e,t)=>{this.sort(e.querySelectorAll(".fragment"))}),this),0===i.length&&this.sort(e.querySelectorAll(".fragment"))}))}update(e,t){let i={shown:[],hidden:[]},s=this.Reveal.getCurrentSlide();if(s&&this.Reveal.getConfig().fragments&&(t=t||this.sort(s.querySelectorAll(".fragment"))).length){let a=0;if("number"!=typeof e){let t=this.sort(s.querySelectorAll(".fragment.visible")).pop();t&&(e=parseInt(t.getAttribute("data-fragment-index")||0,10))}Array.from(t).forEach(((t,s)=>{if(t.hasAttribute("data-fragment-index")&&(s=parseInt(t.getAttribute("data-fragment-index"),10)),a=Math.max(a,s),s<=e){let a=t.classList.contains("visible");t.classList.add("visible"),t.classList.remove("current-fragment"),s===e&&(this.Reveal.announceStatus(this.Reveal.getStatusText(t)),t.classList.add("current-fragment"),this.Reveal.slideContent.startEmbeddedContent(t)),a||(i.shown.push(t),this.Reveal.dispatchEvent({target:t,type:"visible",bubbles:!1}))}else{let e=t.classList.contains("visible");t.classList.remove("visible"),t.classList.remove("current-fragment"),e&&(this.Reveal.slideContent.stopEmbeddedContent(t),i.hidden.push(t),this.Reveal.dispatchEvent({target:t,type:"hidden",bubbles:!1}))}})),e="number"==typeof e?e:-1,e=Math.max(Math.min(e,a),-1),s.setAttribute("data-fragment",e)}return i}sync(e=this.Reveal.getCurrentSlide()){return this.sort(e.querySelectorAll(".fragment"))}goto(e,t=0){let i=this.Reveal.getCurrentSlide();if(i&&this.Reveal.getConfig().fragments){let s=this.sort(i.querySelectorAll(".fragment:not(.disabled)"));if(s.length){if("number"!=typeof e){let t=this.sort(i.querySelectorAll(".fragment:not(.disabled).visible")).pop();e=t?parseInt(t.getAttribute("data-fragment-index")||0,10):-1}e+=t;let a=this.update(e,s);return a.hidden.length&&this.Reveal.dispatchEvent({type:"fragmenthidden",data:{fragment:a.hidden[0],fragments:a.hidden}}),a.shown.length&&this.Reveal.dispatchEvent({type:"fragmentshown",data:{fragment:a.shown[0],fragments:a.shown}}),this.Reveal.controls.update(),this.Reveal.progress.update(),this.Reveal.getConfig().fragmentInURL&&this.Reveal.location.writeURL(),!(!a.shown.length&&!a.hidden.length)}}return!1}next(){return this.goto(null,1)}prev(){return this.goto(null,-1)}}class C{constructor(e){this.Reveal=e,this.active=!1,this.onSlideClicked=this.onSlideClicked.bind(this)}activate(){if(this.Reveal.getConfig().overview&&!this.isActive()){this.active=!0,this.Reveal.getRevealElement().classList.add("overview"),this.Reveal.cancelAutoSlide(),this.Reveal.getSlidesElement().appendChild(this.Reveal.getBackgroundsElement()),t(this.Reveal.getRevealElement(),".slides section").forEach((e=>{e.classList.contains("stack")||e.addEventListener("click",this.onSlideClicked,!0)}));const e=70,i=this.Reveal.getComputedSlideSize();this.overviewSlideWidth=i.width+e,this.overviewSlideHeight=i.height+e,this.Reveal.getConfig().rtl&&(this.overviewSlideWidth=-this.overviewSlideWidth),this.Reveal.updateSlidesVisibility(),this.layout(),this.update(),this.Reveal.layout();const s=this.Reveal.getIndices();this.Reveal.dispatchEvent({type:"overviewshown",data:{indexh:s.h,indexv:s.v,currentSlide:this.Reveal.getCurrentSlide()}})}}layout(){this.Reveal.getHorizontalSlides().forEach(((e,i)=>{e.setAttribute("data-index-h",i),a(e,"translate3d("+i*this.overviewSlideWidth+"px, 0, 0)"),e.classList.contains("stack")&&t(e,"section").forEach(((e,t)=>{e.setAttribute("data-index-h",i),e.setAttribute("data-index-v",t),a(e,"translate3d(0, "+t*this.overviewSlideHeight+"px, 0)")}))})),Array.from(this.Reveal.getBackgroundsElement().childNodes).forEach(((e,i)=>{a(e,"translate3d("+i*this.overviewSlideWidth+"px, 0, 0)"),t(e,".slide-background").forEach(((e,t)=>{a(e,"translate3d(0, "+t*this.overviewSlideHeight+"px, 0)")}))}))}update(){const e=Math.min(window.innerWidth,window.innerHeight),t=Math.max(e/5,150)/e,i=this.Reveal.getIndices();this.Reveal.transformSlides({overview:["scale("+t+")","translateX("+-i.h*this.overviewSlideWidth+"px)","translateY("+-i.v*this.overviewSlideHeight+"px)"].join(" ")})}deactivate(){if(this.Reveal.getConfig().overview){this.active=!1,this.Reveal.getRevealElement().classList.remove("overview"),this.Reveal.getRevealElement().classList.add("overview-deactivating"),setTimeout((()=>{this.Reveal.getRevealElement().classList.remove("overview-deactivating")}),1),this.Reveal.getRevealElement().appendChild(this.Reveal.getBackgroundsElement()),t(this.Reveal.getRevealElement(),".slides section").forEach((e=>{a(e,""),e.removeEventListener("click",this.onSlideClicked,!0)})),t(this.Reveal.getBackgroundsElement(),".slide-background").forEach((e=>{a(e,"")})),this.Reveal.transformSlides({overview:""});const e=this.Reveal.getIndices();this.Reveal.slide(e.h,e.v),this.Reveal.layout(),this.Reveal.cueAutoSlide(),this.Reveal.dispatchEvent({type:"overviewhidden",data:{indexh:e.h,indexv:e.v,currentSlide:this.Reveal.getCurrentSlide()}})}}toggle(e){"boolean"==typeof e?e?this.activate():this.deactivate():this.isActive()?this.deactivate():this.activate()}isActive(){return this.active}onSlideClicked(e){if(this.isActive()){e.preventDefault();let t=e.target;for(;t&&!t.nodeName.match(/section/gi);)t=t.parentNode;if(t&&!t.classList.contains("disabled")&&(this.deactivate(),t.nodeName.match(/section/gi))){let e=parseInt(t.getAttribute("data-index-h"),10),i=parseInt(t.getAttribute("data-index-v"),10);this.Reveal.slide(e,i)}}}}class x{constructor(e){this.Reveal=e,this.shortcuts={},this.bindings={},this.onDocumentKeyDown=this.onDocumentKeyDown.bind(this),this.onDocumentKeyPress=this.onDocumentKeyPress.bind(this)}configure(e,t){"linear"===e.navigationMode?(this.shortcuts["→ , ↓ , SPACE , N , L , J"]="Next slide",this.shortcuts["← , ↑ , P , H , K"]="Previous slide"):(this.shortcuts["N , SPACE"]="Next slide",this.shortcuts["P , Shift SPACE"]="Previous slide",this.shortcuts["← , H"]="Navigate left",this.shortcuts["→ , L"]="Navigate right",this.shortcuts["↑ , K"]="Navigate up",this.shortcuts["↓ , J"]="Navigate down"),this.shortcuts["Alt + ←/↑/→/↓"]="Navigate without fragments",this.shortcuts["Shift + ←/↑/→/↓"]="Jump to first/last slide",this.shortcuts["B , ."]="Pause",this.shortcuts.F="Fullscreen",this.shortcuts["ESC, O"]="Slide overview"}bind(){document.addEventListener("keydown",this.onDocumentKeyDown,!1),document.addEventListener("keypress",this.onDocumentKeyPress,!1)}unbind(){document.removeEventListener("keydown",this.onDocumentKeyDown,!1),document.removeEventListener("keypress",this.onDocumentKeyPress,!1)}addKeyBinding(e,t){"object"==typeof e&&e.keyCode?this.bindings[e.keyCode]={callback:t,key:e.key,description:e.description}:this.bindings[e]={callback:t,key:null,description:null}}removeKeyBinding(e){delete this.bindings[e]}triggerKey(e){this.onDocumentKeyDown({keyCode:e})}registerKeyboardShortcut(e,t){this.shortcuts[e]=t}getShortcuts(){return this.shortcuts}getBindings(){return this.bindings}onDocumentKeyPress(e){e.shiftKey&&63===e.charCode&&this.Reveal.toggleHelp()}onDocumentKeyDown(e){let t=this.Reveal.getConfig();if("function"==typeof t.keyboardCondition&&!1===t.keyboardCondition(e))return!0;if("focused"===t.keyboardCondition&&!this.Reveal.isFocused())return!0;let i=e.keyCode,s=!this.Reveal.isAutoSliding();this.Reveal.onUserInput(e);let a=document.activeElement&&!0===document.activeElement.isContentEditable,n=document.activeElement&&document.activeElement.tagName&&/input|textarea/i.test(document.activeElement.tagName),r=document.activeElement&&document.activeElement.className&&/speaker-notes/i.test(document.activeElement.className),o=!(-1!==[32,37,38,39,40,78,80].indexOf(e.keyCode)&&e.shiftKey||e.altKey)&&(e.shiftKey||e.altKey||e.ctrlKey||e.metaKey);if(a||n||r||o)return;let l,d=[66,86,190,191];if("object"==typeof t.keyboard)for(l in t.keyboard)"togglePause"===t.keyboard[l]&&d.push(parseInt(l,10));if(this.Reveal.isPaused()&&-1===d.indexOf(i))return!1;let c="linear"===t.navigationMode||!this.Reveal.hasHorizontalSlides()||!this.Reveal.hasVerticalSlides(),h=!1;if("object"==typeof t.keyboard)for(l in t.keyboard)if(parseInt(l,10)===i){let i=t.keyboard[l];"function"==typeof i?i.apply(null,[e]):"string"==typeof i&&"function"==typeof this.Reveal[i]&&this.Reveal[i].call(),h=!0}if(!1===h)for(l in this.bindings)if(parseInt(l,10)===i){let t=this.bindings[l].callback;"function"==typeof t?t.apply(null,[e]):"string"==typeof t&&"function"==typeof this.Reveal[t]&&this.Reveal[t].call(),h=!0}!1===h&&(h=!0,80===i||33===i?this.Reveal.prev({skipFragments:e.altKey}):78===i||34===i?this.Reveal.next({skipFragments:e.altKey}):72===i||37===i?e.shiftKey?this.Reveal.slide(0):!this.Reveal.overview.isActive()&&c?this.Reveal.prev({skipFragments:e.altKey}):this.Reveal.left({skipFragments:e.altKey}):76===i||39===i?e.shiftKey?this.Reveal.slide(this.Reveal.getHorizontalSlides().length-1):!this.Reveal.overview.isActive()&&c?this.Reveal.next({skipFragments:e.altKey}):this.Reveal.right({skipFragments:e.altKey}):75===i||38===i?e.shiftKey?this.Reveal.slide(void 0,0):!this.Reveal.overview.isActive()&&c?this.Reveal.prev({skipFragments:e.altKey}):this.Reveal.up({skipFragments:e.altKey}):74===i||40===i?e.shiftKey?this.Reveal.slide(void 0,Number.MAX_VALUE):!this.Reveal.overview.isActive()&&c?this.Reveal.next({skipFragments:e.altKey}):this.Reveal.down({skipFragments:e.altKey}):36===i?this.Reveal.slide(0):35===i?this.Reveal.slide(this.Reveal.getHorizontalSlides().length-1):32===i?(this.Reveal.overview.isActive()&&this.Reveal.overview.deactivate(),e.shiftKey?this.Reveal.prev({skipFragments:e.altKey}):this.Reveal.next({skipFragments:e.altKey})):58===i||59===i||66===i||86===i||190===i||191===i?this.Reveal.togglePause():70===i?(e=>{let t=(e=e||document.documentElement).requestFullscreen||e.webkitRequestFullscreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen;t&&t.apply(e)})(t.embedded?this.Reveal.getViewportElement():document.documentElement):65===i?t.autoSlideStoppable&&this.Reveal.toggleAutoSlide(s):h=!1),h?e.preventDefault&&e.preventDefault():27!==i&&79!==i||(!1===this.Reveal.closeOverlay()&&this.Reveal.overview.toggle(),e.preventDefault&&e.preventDefault()),this.Reveal.cueAutoSlide()}}class P{constructor(e){var t,i,s;s=1e3,(i="MAX_REPLACE_STATE_FREQUENCY")in(t=this)?Object.defineProperty(t,i,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[i]=s,this.Reveal=e,this.writeURLTimeout=0,this.replaceStateTimestamp=0,this.onWindowHashChange=this.onWindowHashChange.bind(this)}bind(){window.addEventListener("hashchange",this.onWindowHashChange,!1)}unbind(){window.removeEventListener("hashchange",this.onWindowHashChange,!1)}getIndicesFromHash(e=window.location.hash){let t=e.replace(/^#\/?/,""),i=t.split("/");if(/^[0-9]*$/.test(i[0])||!t.length){const e=this.Reveal.getConfig();let t,s=e.hashOneBasedIndex?1:0,a=parseInt(i[0],10)-s||0,n=parseInt(i[1],10)-s||0;return e.fragmentInURL&&(t=parseInt(i[2],10),isNaN(t)&&(t=void 0)),{h:a,v:n,f:t}}{let e,i;/\/[-\d]+$/g.test(t)&&(i=parseInt(t.split("/").pop(),10),i=isNaN(i)?void 0:i,t=t.split("/").shift());try{e=document.getElementById(decodeURIComponent(t))}catch(e){}if(e)return{...this.Reveal.getIndices(e),f:i}}return null}readURL(){const e=this.Reveal.getIndices(),t=this.getIndicesFromHash();t?t.h===e.h&&t.v===e.v&&void 0===t.f||this.Reveal.slide(t.h,t.v,t.f):this.Reveal.slide(e.h||0,e.v||0)}writeURL(e){let t=this.Reveal.getConfig(),i=this.Reveal.getCurrentSlide();if(clearTimeout(this.writeURLTimeout),"number"==typeof e)this.writeURLTimeout=setTimeout(this.writeURL,e);else if(i){let e=this.getHash();t.history?window.location.hash=e:t.hash&&("/"===e?this.debouncedReplaceState(window.location.pathname+window.location.search):this.debouncedReplaceState("#"+e))}}replaceState(e){window.history.replaceState(null,null,e),this.replaceStateTimestamp=Date.now()}debouncedReplaceState(e){clearTimeout(this.replaceStateTimeout),Date.now()-this.replaceStateTimestamp>this.MAX_REPLACE_STATE_FREQUENCY?this.replaceState(e):this.replaceStateTimeout=setTimeout((()=>this.replaceState(e)),this.MAX_REPLACE_STATE_FREQUENCY)}getHash(e){let t="/",i=e||this.Reveal.getCurrentSlide(),s=i?i.getAttribute("id"):null;s&&(s=encodeURIComponent(s));let a=this.Reveal.getIndices(e);if(this.Reveal.getConfig().fragmentInURL||(a.f=void 0),"string"==typeof s&&s.length)t="/"+s,a.f>=0&&(t+="/"+a.f);else{let e=this.Reveal.getConfig().hashOneBasedIndex?1:0;(a.h>0||a.v>0||a.f>=0)&&(t+=a.h+e),(a.v>0||a.f>=0)&&(t+="/"+(a.v+e)),a.f>=0&&(t+="/"+a.f)}return t}onWindowHashChange(e){this.readURL()}}class N{constructor(e){this.Reveal=e,this.onNavigateLeftClicked=this.onNavigateLeftClicked.bind(this),this.onNavigateRightClicked=this.onNavigateRightClicked.bind(this),this.onNavigateUpClicked=this.onNavigateUpClicked.bind(this),this.onNavigateDownClicked=this.onNavigateDownClicked.bind(this),this.onNavigatePrevClicked=this.onNavigatePrevClicked.bind(this),this.onNavigateNextClicked=this.onNavigateNextClicked.bind(this)}render(){const e=this.Reveal.getConfig().rtl,i=this.Reveal.getRevealElement();this.element=document.createElement("aside"),this.element.className="controls",this.element.innerHTML=`\n\t\t\t\n\t\t\t\n\t\t\t`,this.Reveal.getRevealElement().appendChild(this.element),this.controlsLeft=t(i,".navigate-left"),this.controlsRight=t(i,".navigate-right"),this.controlsUp=t(i,".navigate-up"),this.controlsDown=t(i,".navigate-down"),this.controlsPrev=t(i,".navigate-prev"),this.controlsNext=t(i,".navigate-next"),this.controlsRightArrow=this.element.querySelector(".navigate-right"),this.controlsLeftArrow=this.element.querySelector(".navigate-left"),this.controlsDownArrow=this.element.querySelector(".navigate-down")}configure(e,t){this.element.style.display=e.controls?"block":"none",this.element.setAttribute("data-controls-layout",e.controlsLayout),this.element.setAttribute("data-controls-back-arrows",e.controlsBackArrows)}bind(){let e=["touchstart","click"];v&&(e=["touchstart"]),e.forEach((e=>{this.controlsLeft.forEach((t=>t.addEventListener(e,this.onNavigateLeftClicked,!1))),this.controlsRight.forEach((t=>t.addEventListener(e,this.onNavigateRightClicked,!1))),this.controlsUp.forEach((t=>t.addEventListener(e,this.onNavigateUpClicked,!1))),this.controlsDown.forEach((t=>t.addEventListener(e,this.onNavigateDownClicked,!1))),this.controlsPrev.forEach((t=>t.addEventListener(e,this.onNavigatePrevClicked,!1))),this.controlsNext.forEach((t=>t.addEventListener(e,this.onNavigateNextClicked,!1)))}))}unbind(){["touchstart","click"].forEach((e=>{this.controlsLeft.forEach((t=>t.removeEventListener(e,this.onNavigateLeftClicked,!1))),this.controlsRight.forEach((t=>t.removeEventListener(e,this.onNavigateRightClicked,!1))),this.controlsUp.forEach((t=>t.removeEventListener(e,this.onNavigateUpClicked,!1))),this.controlsDown.forEach((t=>t.removeEventListener(e,this.onNavigateDownClicked,!1))),this.controlsPrev.forEach((t=>t.removeEventListener(e,this.onNavigatePrevClicked,!1))),this.controlsNext.forEach((t=>t.removeEventListener(e,this.onNavigateNextClicked,!1)))}))}update(){let e=this.Reveal.availableRoutes();[...this.controlsLeft,...this.controlsRight,...this.controlsUp,...this.controlsDown,...this.controlsPrev,...this.controlsNext].forEach((e=>{e.classList.remove("enabled","fragmented"),e.setAttribute("disabled","disabled")})),e.left&&this.controlsLeft.forEach((e=>{e.classList.add("enabled"),e.removeAttribute("disabled")})),e.right&&this.controlsRight.forEach((e=>{e.classList.add("enabled"),e.removeAttribute("disabled")})),e.up&&this.controlsUp.forEach((e=>{e.classList.add("enabled"),e.removeAttribute("disabled")})),e.down&&this.controlsDown.forEach((e=>{e.classList.add("enabled"),e.removeAttribute("disabled")})),(e.left||e.up)&&this.controlsPrev.forEach((e=>{e.classList.add("enabled"),e.removeAttribute("disabled")})),(e.right||e.down)&&this.controlsNext.forEach((e=>{e.classList.add("enabled"),e.removeAttribute("disabled")}));let t=this.Reveal.getCurrentSlide();if(t){let e=this.Reveal.fragments.availableRoutes();e.prev&&this.controlsPrev.forEach((e=>{e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})),e.next&&this.controlsNext.forEach((e=>{e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})),this.Reveal.isVerticalSlide(t)?(e.prev&&this.controlsUp.forEach((e=>{e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})),e.next&&this.controlsDown.forEach((e=>{e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")}))):(e.prev&&this.controlsLeft.forEach((e=>{e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})),e.next&&this.controlsRight.forEach((e=>{e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})))}if(this.Reveal.getConfig().controlsTutorial){let t=this.Reveal.getIndices();!this.Reveal.hasNavigatedVertically()&&e.down?this.controlsDownArrow.classList.add("highlight"):(this.controlsDownArrow.classList.remove("highlight"),this.Reveal.getConfig().rtl?!this.Reveal.hasNavigatedHorizontally()&&e.left&&0===t.v?this.controlsLeftArrow.classList.add("highlight"):this.controlsLeftArrow.classList.remove("highlight"):!this.Reveal.hasNavigatedHorizontally()&&e.right&&0===t.v?this.controlsRightArrow.classList.add("highlight"):this.controlsRightArrow.classList.remove("highlight"))}}destroy(){this.unbind(),this.element.remove()}onNavigateLeftClicked(e){e.preventDefault(),this.Reveal.onUserInput(),"linear"===this.Reveal.getConfig().navigationMode?this.Reveal.prev():this.Reveal.left()}onNavigateRightClicked(e){e.preventDefault(),this.Reveal.onUserInput(),"linear"===this.Reveal.getConfig().navigationMode?this.Reveal.next():this.Reveal.right()}onNavigateUpClicked(e){e.preventDefault(),this.Reveal.onUserInput(),this.Reveal.up()}onNavigateDownClicked(e){e.preventDefault(),this.Reveal.onUserInput(),this.Reveal.down()}onNavigatePrevClicked(e){e.preventDefault(),this.Reveal.onUserInput(),this.Reveal.prev()}onNavigateNextClicked(e){e.preventDefault(),this.Reveal.onUserInput(),this.Reveal.next()}}class M{constructor(e){this.Reveal=e,this.onProgressClicked=this.onProgressClicked.bind(this)}render(){this.element=document.createElement("div"),this.element.className="progress",this.Reveal.getRevealElement().appendChild(this.element),this.bar=document.createElement("span"),this.element.appendChild(this.bar)}configure(e,t){this.element.style.display=e.progress?"block":"none"}bind(){this.Reveal.getConfig().progress&&this.element&&this.element.addEventListener("click",this.onProgressClicked,!1)}unbind(){this.Reveal.getConfig().progress&&this.element&&this.element.removeEventListener("click",this.onProgressClicked,!1)}update(){if(this.Reveal.getConfig().progress&&this.bar){let e=this.Reveal.getProgress();this.Reveal.getTotalSlides()<2&&(e=0),this.bar.style.transform="scaleX("+e+")"}}getMaxWidth(){return this.Reveal.getRevealElement().offsetWidth}onProgressClicked(e){this.Reveal.onUserInput(e),e.preventDefault();let t=this.Reveal.getSlides(),i=t.length,s=Math.floor(e.clientX/this.getMaxWidth()*i);this.Reveal.getConfig().rtl&&(s=i-s);let a=this.Reveal.getIndices(t[s]);this.Reveal.slide(a.h,a.v)}destroy(){this.element.remove()}}class D{constructor(e){this.Reveal=e,this.lastMouseWheelStep=0,this.cursorHidden=!1,this.cursorInactiveTimeout=0,this.onDocumentCursorActive=this.onDocumentCursorActive.bind(this),this.onDocumentMouseScroll=this.onDocumentMouseScroll.bind(this)}configure(e,t){e.mouseWheel?(document.addEventListener("DOMMouseScroll",this.onDocumentMouseScroll,!1),document.addEventListener("mousewheel",this.onDocumentMouseScroll,!1)):(document.removeEventListener("DOMMouseScroll",this.onDocumentMouseScroll,!1),document.removeEventListener("mousewheel",this.onDocumentMouseScroll,!1)),e.hideInactiveCursor?(document.addEventListener("mousemove",this.onDocumentCursorActive,!1),document.addEventListener("mousedown",this.onDocumentCursorActive,!1)):(this.showCursor(),document.removeEventListener("mousemove",this.onDocumentCursorActive,!1),document.removeEventListener("mousedown",this.onDocumentCursorActive,!1))}showCursor(){this.cursorHidden&&(this.cursorHidden=!1,this.Reveal.getRevealElement().style.cursor="")}hideCursor(){!1===this.cursorHidden&&(this.cursorHidden=!0,this.Reveal.getRevealElement().style.cursor="none")}destroy(){this.showCursor(),document.removeEventListener("DOMMouseScroll",this.onDocumentMouseScroll,!1),document.removeEventListener("mousewheel",this.onDocumentMouseScroll,!1),document.removeEventListener("mousemove",this.onDocumentCursorActive,!1),document.removeEventListener("mousedown",this.onDocumentCursorActive,!1)}onDocumentCursorActive(e){this.showCursor(),clearTimeout(this.cursorInactiveTimeout),this.cursorInactiveTimeout=setTimeout(this.hideCursor.bind(this),this.Reveal.getConfig().hideCursorTime)}onDocumentMouseScroll(e){if(Date.now()-this.lastMouseWheelStep>1e3){this.lastMouseWheelStep=Date.now();let t=e.detail||-e.wheelDelta;t>0?this.Reveal.next():t<0&&this.Reveal.prev()}}}const I=(e,t)=>{const i=document.createElement("script");i.type="text/javascript",i.async=!1,i.defer=!1,i.src=e,"function"==typeof t&&(i.onload=i.onreadystatechange=e=>{("load"===e.type||/loaded|complete/.test(i.readyState))&&(i.onload=i.onreadystatechange=i.onerror=null,t())},i.onerror=e=>{i.onload=i.onreadystatechange=i.onerror=null,t(new Error("Failed loading script: "+i.src+"\n"+e))});const s=document.querySelector("head");s.insertBefore(i,s.lastChild)};class T{constructor(e){this.Reveal=e,this.state="idle",this.registeredPlugins={},this.asyncDependencies=[]}load(e,t){return this.state="loading",e.forEach(this.registerPlugin.bind(this)),new Promise((e=>{let i=[],s=0;if(t.forEach((e=>{e.condition&&!e.condition()||(e.async?this.asyncDependencies.push(e):i.push(e))})),i.length){s=i.length;const t=t=>{t&&"function"==typeof t.callback&&t.callback(),0==--s&&this.initPlugins().then(e)};i.forEach((e=>{"string"==typeof e.id?(this.registerPlugin(e),t(e)):"string"==typeof e.src?I(e.src,(()=>t(e))):(console.warn("Unrecognized plugin format",e),t())}))}else this.initPlugins().then(e)}))}initPlugins(){return new Promise((e=>{let t=Object.values(this.registeredPlugins),i=t.length;if(0===i)this.loadAsync().then(e);else{let s,a=()=>{0==--i?this.loadAsync().then(e):s()},n=0;s=()=>{let e=t[n++];if("function"==typeof e.init){let t=e.init(this.Reveal);t&&"function"==typeof t.then?t.then(a):a()}else a()},s()}}))}loadAsync(){return this.state="loaded",this.asyncDependencies.length&&this.asyncDependencies.forEach((e=>{I(e.src,e.callback)})),Promise.resolve()}registerPlugin(e){2===arguments.length&&"string"==typeof arguments[0]?(e=arguments[1]).id=arguments[0]:"function"==typeof e&&(e=e());let t=e.id;"string"!=typeof t?console.warn("Unrecognized plugin format; can't find plugin.id",e):void 0===this.registeredPlugins[t]?(this.registeredPlugins[t]=e,"loaded"===this.state&&"function"==typeof e.init&&e.init(this.Reveal)):console.warn('reveal.js: "'+t+'" plugin has already been registered')}hasPlugin(e){return!!this.registeredPlugins[e]}getPlugin(e){return this.registeredPlugins[e]}getRegisteredPlugins(){return this.registeredPlugins}destroy(){Object.values(this.registeredPlugins).forEach((e=>{"function"==typeof e.destroy&&e.destroy()})),this.registeredPlugins={},this.asyncDependencies=[]}}class F{constructor(e){this.Reveal=e}async setupPDF(){const e=this.Reveal.getConfig(),i=t(this.Reveal.getRevealElement(),".slides section"),s=e.slideNumber&&/all|print/i.test(e.showSlideNumber),a=this.Reveal.getComputedSlideSize(window.innerWidth,window.innerHeight),n=Math.floor(a.width*(1+e.margin)),r=Math.floor(a.height*(1+e.margin)),o=a.width,d=a.height;await new Promise(requestAnimationFrame),l("@page{size:"+n+"px "+r+"px; margin: 0px;}"),l(".reveal section>img, .reveal section>video, .reveal section>iframe{max-width: "+o+"px; max-height:"+d+"px}"),document.documentElement.classList.add("print-pdf"),document.body.style.width=n+"px",document.body.style.height=r+"px";const c=document.querySelector(".reveal-viewport");let h;if(c){const e=window.getComputedStyle(c);e&&e.background&&(h=e.background)}await new Promise(requestAnimationFrame),this.Reveal.layoutSlideContents(o,d),await new Promise(requestAnimationFrame);const u=i.map((e=>e.scrollHeight)),g=[],v=i[0].parentNode;i.forEach((function(i,a){if(!1===i.classList.contains("stack")){let l=(n-o)/2,c=(r-d)/2;const v=u[a];let p=Math.max(Math.ceil(v/r),1);p=Math.min(p,e.pdfMaxPagesPerSlide),(1===p&&e.center||i.classList.contains("center"))&&(c=Math.max((r-v)/2,0));const m=document.createElement("div");if(g.push(m),m.className="pdf-page",m.style.height=(r+e.pdfPageHeightOffset)*p+"px",h&&(m.style.background=h),m.appendChild(i),i.style.left=l+"px",i.style.top=c+"px",i.style.width=o+"px",this.Reveal.slideContent.layout(i),i.slideBackgroundElement&&m.insertBefore(i.slideBackgroundElement,i),e.showNotes){const t=this.Reveal.getSlideNotes(i);if(t){const i=8,s="string"==typeof e.showNotes?e.showNotes:"inline",a=document.createElement("div");a.classList.add("speaker-notes"),a.classList.add("speaker-notes-pdf"),a.setAttribute("data-layout",s),a.innerHTML=t,"separate-page"===s?g.push(a):(a.style.left=i+"px",a.style.bottom=i+"px",a.style.width=n-2*i+"px",m.appendChild(a))}}if(s){const e=a+1,t=document.createElement("div");t.classList.add("slide-number"),t.classList.add("slide-number-pdf"),t.innerHTML=e,m.appendChild(t)}if(e.pdfSeparateFragments){const e=this.Reveal.fragments.sort(m.querySelectorAll(".fragment"),!0);let t;e.forEach((function(e){t&&t.forEach((function(e){e.classList.remove("current-fragment")})),e.forEach((function(e){e.classList.add("visible","current-fragment")}),this);const i=m.cloneNode(!0);g.push(i),t=e}),this),e.forEach((function(e){e.forEach((function(e){e.classList.remove("visible","current-fragment")}))}))}else t(m,".fragment:not(.fade-out)").forEach((function(e){e.classList.add("visible")}))}}),this),await new Promise(requestAnimationFrame),g.forEach((e=>v.appendChild(e))),this.Reveal.dispatchEvent({type:"pdf-ready"})}isPrintingPDF(){return/print-pdf/gi.test(window.location.search)}}class z{constructor(e){this.Reveal=e,this.touchStartX=0,this.touchStartY=0,this.touchStartCount=0,this.touchCaptured=!1,this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.onTouchStart=this.onTouchStart.bind(this),this.onTouchMove=this.onTouchMove.bind(this),this.onTouchEnd=this.onTouchEnd.bind(this)}bind(){let e=this.Reveal.getRevealElement();"onpointerdown"in window?(e.addEventListener("pointerdown",this.onPointerDown,!1),e.addEventListener("pointermove",this.onPointerMove,!1),e.addEventListener("pointerup",this.onPointerUp,!1)):window.navigator.msPointerEnabled?(e.addEventListener("MSPointerDown",this.onPointerDown,!1),e.addEventListener("MSPointerMove",this.onPointerMove,!1),e.addEventListener("MSPointerUp",this.onPointerUp,!1)):(e.addEventListener("touchstart",this.onTouchStart,!1),e.addEventListener("touchmove",this.onTouchMove,!1),e.addEventListener("touchend",this.onTouchEnd,!1))}unbind(){let e=this.Reveal.getRevealElement();e.removeEventListener("pointerdown",this.onPointerDown,!1),e.removeEventListener("pointermove",this.onPointerMove,!1),e.removeEventListener("pointerup",this.onPointerUp,!1),e.removeEventListener("MSPointerDown",this.onPointerDown,!1),e.removeEventListener("MSPointerMove",this.onPointerMove,!1),e.removeEventListener("MSPointerUp",this.onPointerUp,!1),e.removeEventListener("touchstart",this.onTouchStart,!1),e.removeEventListener("touchmove",this.onTouchMove,!1),e.removeEventListener("touchend",this.onTouchEnd,!1)}isSwipePrevented(e){if(n(e,"video, audio"))return!0;for(;e&&"function"==typeof e.hasAttribute;){if(e.hasAttribute("data-prevent-swipe"))return!0;e=e.parentNode}return!1}onTouchStart(e){if(this.isSwipePrevented(e.target))return!0;this.touchStartX=e.touches[0].clientX,this.touchStartY=e.touches[0].clientY,this.touchStartCount=e.touches.length}onTouchMove(e){if(this.isSwipePrevented(e.target))return!0;let t=this.Reveal.getConfig();if(this.touchCaptured)v&&e.preventDefault();else{this.Reveal.onUserInput(e);let i=e.touches[0].clientX,s=e.touches[0].clientY;if(1===e.touches.length&&2!==this.touchStartCount){let a=this.Reveal.availableRoutes({includeFragments:!0}),n=i-this.touchStartX,r=s-this.touchStartY;n>40&&Math.abs(n)>Math.abs(r)?(this.touchCaptured=!0,"linear"===t.navigationMode?t.rtl?this.Reveal.next():this.Reveal.prev():this.Reveal.left()):n<-40&&Math.abs(n)>Math.abs(r)?(this.touchCaptured=!0,"linear"===t.navigationMode?t.rtl?this.Reveal.prev():this.Reveal.next():this.Reveal.right()):r>40&&a.up?(this.touchCaptured=!0,"linear"===t.navigationMode?this.Reveal.prev():this.Reveal.up()):r<-40&&a.down&&(this.touchCaptured=!0,"linear"===t.navigationMode?this.Reveal.next():this.Reveal.down()),t.embedded?(this.touchCaptured||this.Reveal.isVerticalSlide())&&e.preventDefault():e.preventDefault()}}}onTouchEnd(e){this.touchCaptured=!1}onPointerDown(e){e.pointerType!==e.MSPOINTER_TYPE_TOUCH&&"touch"!==e.pointerType||(e.touches=[{clientX:e.clientX,clientY:e.clientY}],this.onTouchStart(e))}onPointerMove(e){e.pointerType!==e.MSPOINTER_TYPE_TOUCH&&"touch"!==e.pointerType||(e.touches=[{clientX:e.clientX,clientY:e.clientY}],this.onTouchMove(e))}onPointerUp(e){e.pointerType!==e.MSPOINTER_TYPE_TOUCH&&"touch"!==e.pointerType||(e.touches=[{clientX:e.clientX,clientY:e.clientY}],this.onTouchEnd(e))}}class H{constructor(e){this.Reveal=e,this.onRevealPointerDown=this.onRevealPointerDown.bind(this),this.onDocumentPointerDown=this.onDocumentPointerDown.bind(this)}configure(e,t){e.embedded?this.blur():(this.focus(),this.unbind())}bind(){this.Reveal.getConfig().embedded&&this.Reveal.getRevealElement().addEventListener("pointerdown",this.onRevealPointerDown,!1)}unbind(){this.Reveal.getRevealElement().removeEventListener("pointerdown",this.onRevealPointerDown,!1),document.removeEventListener("pointerdown",this.onDocumentPointerDown,!1)}focus(){"focus"!==this.state&&(this.Reveal.getRevealElement().classList.add("focused"),document.addEventListener("pointerdown",this.onDocumentPointerDown,!1)),this.state="focus"}blur(){"blur"!==this.state&&(this.Reveal.getRevealElement().classList.remove("focused"),document.removeEventListener("pointerdown",this.onDocumentPointerDown,!1)),this.state="blur"}isFocused(){return"focus"===this.state}destroy(){this.Reveal.getRevealElement().classList.remove("focused")}onRevealPointerDown(e){this.focus()}onDocumentPointerDown(e){let t=r(e.target,".reveal");t&&t===this.Reveal.getRevealElement()||this.blur()}}class q{constructor(e){this.Reveal=e}render(){this.element=document.createElement("div"),this.element.className="speaker-notes",this.element.setAttribute("data-prevent-swipe",""),this.element.setAttribute("tabindex","0"),this.Reveal.getRevealElement().appendChild(this.element)}configure(e,t){e.showNotes&&this.element.setAttribute("data-layout","string"==typeof e.showNotes?e.showNotes:"inline")}update(){this.Reveal.getConfig().showNotes&&this.element&&this.Reveal.getCurrentSlide()&&!this.Reveal.print.isPrintingPDF()&&(this.element.innerHTML=this.getSlideNotes()||'No notes on this slide.')}updateVisibility(){this.Reveal.getConfig().showNotes&&this.hasNotes()&&!this.Reveal.print.isPrintingPDF()?this.Reveal.getRevealElement().classList.add("show-notes"):this.Reveal.getRevealElement().classList.remove("show-notes")}hasNotes(){return this.Reveal.getSlidesElement().querySelectorAll("[data-notes], aside.notes").length>0}isSpeakerNotesWindow(){return!!window.location.search.match(/receiver/gi)}getSlideNotes(e=this.Reveal.getCurrentSlide()){if(e.hasAttribute("data-notes"))return e.getAttribute("data-notes");let t=e.querySelector("aside.notes");return t?t.innerHTML:null}destroy(){this.element.remove()}}class B{constructor(e,t){this.diameter=100,this.diameter2=this.diameter/2,this.thickness=6,this.playing=!1,this.progress=0,this.progressOffset=1,this.container=e,this.progressCheck=t,this.canvas=document.createElement("canvas"),this.canvas.className="playback",this.canvas.width=this.diameter,this.canvas.height=this.diameter,this.canvas.style.width=this.diameter2+"px",this.canvas.style.height=this.diameter2+"px",this.context=this.canvas.getContext("2d"),this.container.appendChild(this.canvas),this.render()}setPlaying(e){const t=this.playing;this.playing=e,!t&&this.playing?this.animate():this.render()}animate(){const e=this.progress;this.progress=this.progressCheck(),e>.8&&this.progress<.2&&(this.progressOffset=this.progress),this.render(),this.playing&&requestAnimationFrame(this.animate.bind(this))}render(){let e=this.playing?this.progress:0,t=this.diameter2-this.thickness,i=this.diameter2,s=this.diameter2,a=28;this.progressOffset+=.1*(1-this.progressOffset);const n=-Math.PI/2+e*(2*Math.PI),r=-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(i,s,t+4,0,2*Math.PI,!1),this.context.fillStyle="rgba( 0, 0, 0, 0.4 )",this.context.fill(),this.context.beginPath(),this.context.arc(i,s,t,0,2*Math.PI,!1),this.context.lineWidth=this.thickness,this.context.strokeStyle="rgba( 255, 255, 255, 0.2 )",this.context.stroke(),this.playing&&(this.context.beginPath(),this.context.arc(i,s,t,r,n,!1),this.context.lineWidth=this.thickness,this.context.strokeStyle="#fff",this.context.stroke()),this.context.translate(i-14,s-14),this.playing?(this.context.fillStyle="#fff",this.context.fillRect(0,0,10,a),this.context.fillRect(18,0,10,a)):(this.context.beginPath(),this.context.translate(4,0),this.context.moveTo(0,0),this.context.lineTo(24,14),this.context.lineTo(0,a),this.context.fillStyle="#fff",this.context.fill()),this.context.restore()}on(e,t){this.canvas.addEventListener(e,t,!1)}off(e,t){this.canvas.removeEventListener(e,t,!1)}destroy(){this.playing=!1,this.canvas.parentNode&&this.container.removeChild(this.canvas)}}var O={width:960,height:700,margin:.04,minScale:.2,maxScale:2,controls:!0,controlsTutorial:!0,controlsLayout:"bottom-right",controlsBackArrows:"faded",progress:!0,slideNumber:!1,showSlideNumber:"all",hashOneBasedIndex:!1,hash:!1,respondToHashChanges:!0,history:!1,keyboard:!0,keyboardCondition:null,disableLayout:!1,overview:!0,center:!0,touch:!0,loop:!1,rtl:!1,navigationMode:"default",shuffle:!1,fragments:!0,fragmentInURL:!0,embedded:!1,help:!0,pause:!0,showNotes:!1,showHiddenSlides:!1,autoPlayMedia:null,preloadIframes:null,autoAnimate:!0,autoAnimateMatcher:null,autoAnimateEasing:"ease",autoAnimateDuration:1,autoAnimateUnmatched:!0,autoAnimateStyles:["opacity","color","background-color","padding","font-size","line-height","letter-spacing","border-width","border-color","border-radius","outline","outline-offset"],autoSlide:0,autoSlideStoppable:!0,autoSlideMethod:null,defaultTiming:null,mouseWheel:!1,previewLinks:!1,postMessage:!0,postMessageEvents:!1,focusBodyOnPageVisibilityChange:!0,transition:"slide",transitionSpeed:"default",backgroundTransition:"fade",parallaxBackgroundImage:"",parallaxBackgroundSize:"",parallaxBackgroundRepeat:"",parallaxBackgroundPosition:"",parallaxBackgroundHorizontal:null,parallaxBackgroundVertical:null,pdfMaxPagesPerSlide:Number.POSITIVE_INFINITY,pdfSeparateFragments:!0,pdfPageHeightOffset:-1,viewDistance:3,mobileViewDistance:2,display:"block",hideInactiveCursor:!0,hideCursorTime:5e3,dependencies:[],plugins:[]};function U(n,l){arguments.length<2&&(l=arguments[0],n=document.querySelector(".reveal"));const h={};let u,v,p,m,f,w={},S=!1,A={hasNavigatedHorizontally:!1,hasNavigatedVertically:!1},I=[],U=1,W={layout:"",overview:""},K={},V="idle",$=0,j=0,X=-1,Y=!1,_=new b(h),J=new y(h),Q=new k(h),Z=new E(h),G=new L(h),ee=new C(h),te=new x(h),ie=new P(h),se=new N(h),ae=new M(h),ne=new D(h),re=new T(h),oe=new F(h),le=new H(h),de=new z(h),ce=new q(h);function he(e){if(!n)throw'Unable to find presentation root (
).';if(K.wrapper=n,K.slides=n.querySelector(".slides"),!K.slides)throw'Unable to find slides container (
).';return w={...O,...w,...l,...e,...d()},ue(),window.addEventListener("load",He,!1),re.load(w.plugins,w.dependencies).then(ge),new Promise((e=>h.on("ready",e)))}function ue(){!0===w.embedded?K.viewport=r(n,".reveal-viewport")||n:(K.viewport=document.body,document.documentElement.classList.add("reveal-full-page")),K.viewport.classList.add("reveal-viewport")}function ge(){S=!0,ve(),pe(),Ee(),ye(),we(),tt(),Re(),ie.readURL(),Z.update(!0),setTimeout((()=>{K.slides.classList.remove("no-transition"),K.wrapper.classList.add("ready"),Pe({type:"ready",data:{indexh:u,indexv:v,currentSlide:m}})}),1),oe.isPrintingPDF()&&(Ae(),"complete"===document.readyState?oe.setupPDF():window.addEventListener("load",(()=>{oe.setupPDF()})))}function ve(){w.showHiddenSlides||t(K.wrapper,'section[data-visibility="hidden"]').forEach((e=>{e.parentNode.removeChild(e)}))}function pe(){K.slides.classList.add("no-transition"),g?K.wrapper.classList.add("no-hover"):K.wrapper.classList.remove("no-hover"),Z.render(),J.render(),se.render(),ae.render(),ce.render(),K.pauseOverlay=o(K.wrapper,"div","pause-overlay",w.controls?'':null),K.statusElement=me(),K.wrapper.setAttribute("role","application")}function me(){let e=K.wrapper.querySelector(".aria-status");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.classList.add("aria-status"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),K.wrapper.appendChild(e)),e}function fe(e){K.statusElement.textContent=e}function be(e){let t="";if(3===e.nodeType)t+=e.textContent;else if(1===e.nodeType){let i=e.getAttribute("aria-hidden"),s="none"===window.getComputedStyle(e).display;"true"===i||s||Array.from(e.childNodes).forEach((e=>{t+=be(e)}))}return t=t.trim(),""===t?"":t+" "}function ye(){setInterval((()=>{0===K.wrapper.scrollTop&&0===K.wrapper.scrollLeft||(K.wrapper.scrollTop=0,K.wrapper.scrollLeft=0)}),1e3)}function we(){document.addEventListener("fullscreenchange",Ht),document.addEventListener("webkitfullscreenchange",Ht)}function Ee(){w.postMessage&&window.addEventListener("message",Dt,!1)}function Re(t){const s={...w};if("object"==typeof t&&e(w,t),!1===h.isReady())return;const a=K.wrapper.querySelectorAll(".slides section").length;K.wrapper.classList.remove(s.transition),K.wrapper.classList.add(w.transition),K.wrapper.setAttribute("data-transition-speed",w.transitionSpeed),K.wrapper.setAttribute("data-background-transition",w.backgroundTransition),K.viewport.style.setProperty("--slide-width",w.width+"px"),K.viewport.style.setProperty("--slide-height",w.height+"px"),w.shuffle&&it(),i(K.wrapper,"embedded",w.embedded),i(K.wrapper,"rtl",w.rtl),i(K.wrapper,"center",w.center),!1===w.pause&&Xe(),w.previewLinks?(Me(),De("[data-preview-link=false]")):(De(),Me("[data-preview-link]:not([data-preview-link=false])")),Q.reset(),f&&(f.destroy(),f=null),a>1&&w.autoSlide&&w.autoSlideStoppable&&(f=new B(K.wrapper,(()=>Math.min(Math.max((Date.now()-X)/$,0),1))),f.on("click",Bt),Y=!1),"default"!==w.navigationMode?K.wrapper.setAttribute("data-navigation-mode",w.navigationMode):K.wrapper.removeAttribute("data-navigation-mode"),ce.configure(w,s),le.configure(w,s),ne.configure(w,s),se.configure(w,s),ae.configure(w,s),te.configure(w,s),G.configure(w,s),J.configure(w,s),Ge()}function Se(){window.addEventListener("resize",Ft,!1),w.touch&&de.bind(),w.keyboard&&te.bind(),w.progress&&ae.bind(),w.respondToHashChanges&&ie.bind(),se.bind(),le.bind(),K.slides.addEventListener("click",Tt,!1),K.slides.addEventListener("transitionend",It,!1),K.pauseOverlay.addEventListener("click",Xe,!1),w.focusBodyOnPageVisibilityChange&&document.addEventListener("visibilitychange",zt,!1)}function Ae(){de.unbind(),le.unbind(),te.unbind(),se.unbind(),ae.unbind(),ie.unbind(),window.removeEventListener("resize",Ft,!1),K.slides.removeEventListener("click",Tt,!1),K.slides.removeEventListener("transitionend",It,!1),K.pauseOverlay.removeEventListener("click",Xe,!1)}function ke(){Ae(),Rt(),De(),ce.destroy(),le.destroy(),re.destroy(),ne.destroy(),se.destroy(),ae.destroy(),Z.destroy(),J.destroy(),document.removeEventListener("fullscreenchange",Ht),document.removeEventListener("webkitfullscreenchange",Ht),document.removeEventListener("visibilitychange",zt,!1),window.removeEventListener("message",Dt,!1),window.removeEventListener("load",He,!1),K.pauseOverlay&&K.pauseOverlay.remove(),K.statusElement&&K.statusElement.remove(),document.documentElement.classList.remove("reveal-full-page"),K.wrapper.classList.remove("ready","center","has-horizontal-slides","has-vertical-slides"),K.wrapper.removeAttribute("data-transition-speed"),K.wrapper.removeAttribute("data-background-transition"),K.viewport.classList.remove("reveal-viewport"),K.viewport.style.removeProperty("--slide-width"),K.viewport.style.removeProperty("--slide-height"),K.slides.style.removeProperty("width"),K.slides.style.removeProperty("height"),K.slides.style.removeProperty("zoom"),K.slides.style.removeProperty("left"),K.slides.style.removeProperty("top"),K.slides.style.removeProperty("bottom"),K.slides.style.removeProperty("right"),K.slides.style.removeProperty("transform"),Array.from(K.wrapper.querySelectorAll(".slides section")).forEach((e=>{e.style.removeProperty("display"),e.style.removeProperty("top"),e.removeAttribute("hidden"),e.removeAttribute("aria-hidden")}))}function Le(e,t,i){n.addEventListener(e,t,i)}function Ce(e,t,i){n.removeEventListener(e,t,i)}function xe(e){"string"==typeof e.layout&&(W.layout=e.layout),"string"==typeof e.overview&&(W.overview=e.overview),W.layout?a(K.slides,W.layout+" "+W.overview):a(K.slides,W.overview)}function Pe({target:t=K.wrapper,type:i,data:s,bubbles:a=!0}){let n=document.createEvent("HTMLEvents",1,2);return n.initEvent(i,a,!0),e(n,s),t.dispatchEvent(n),t===K.wrapper&&Ne(i),n}function Ne(t,i){if(w.postMessageEvents&&window.parent!==window.self){let s={namespace:"reveal",eventName:t,state:yt()};e(s,i),window.parent.postMessage(JSON.stringify(s),"*")}}function Me(e="a"){Array.from(K.wrapper.querySelectorAll(e)).forEach((e=>{/^(http|www)/gi.test(e.getAttribute("href"))&&e.addEventListener("click",qt,!1)}))}function De(e="a"){Array.from(K.wrapper.querySelectorAll(e)).forEach((e=>{/^(http|www)/gi.test(e.getAttribute("href"))&&e.removeEventListener("click",qt,!1)}))}function Ie(e){ze(),K.overlay=document.createElement("div"),K.overlay.classList.add("overlay"),K.overlay.classList.add("overlay-preview"),K.wrapper.appendChild(K.overlay),K.overlay.innerHTML=`
\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tUnable to load iframe. This is likely due to the site's policy (x-frame-options).\n\t\t\t\t\n\t\t\t
`,K.overlay.querySelector("iframe").addEventListener("load",(e=>{K.overlay.classList.add("loaded")}),!1),K.overlay.querySelector(".close").addEventListener("click",(e=>{ze(),e.preventDefault()}),!1),K.overlay.querySelector(".external").addEventListener("click",(e=>{ze()}),!1)}function Te(e){"boolean"==typeof e?e?Fe():ze():K.overlay?ze():Fe()}function Fe(){if(w.help){ze(),K.overlay=document.createElement("div"),K.overlay.classList.add("overlay"),K.overlay.classList.add("overlay-help"),K.wrapper.appendChild(K.overlay);let e='

Keyboard Shortcuts


',t=te.getShortcuts(),i=te.getBindings();e+="";for(let i in t)e+=``;for(let t in i)i[t].key&&i[t].description&&(e+=``);e+="
KEYACTION
${i}${t[i]}
${i[t].key}${i[t].description}
",K.overlay.innerHTML=`\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
${e}
\n\t\t\t\t
\n\t\t\t`,K.overlay.querySelector(".close").addEventListener("click",(e=>{ze(),e.preventDefault()}),!1)}}function ze(){return!!K.overlay&&(K.overlay.parentNode.removeChild(K.overlay),K.overlay=null,!0)}function He(){if(K.wrapper&&!oe.isPrintingPDF()){if(!w.disableLayout){g&&!w.embedded&&document.documentElement.style.setProperty("--vh",.01*window.innerHeight+"px");const e=Be(),t=U;qe(w.width,w.height),K.slides.style.width=e.width+"px",K.slides.style.height=e.height+"px",U=Math.min(e.presentationWidth/e.width,e.presentationHeight/e.height),U=Math.max(U,w.minScale),U=Math.min(U,w.maxScale),1===U?(K.slides.style.zoom="",K.slides.style.left="",K.slides.style.top="",K.slides.style.bottom="",K.slides.style.right="",xe({layout:""})):(K.slides.style.zoom="",K.slides.style.left="50%",K.slides.style.top="50%",K.slides.style.bottom="auto",K.slides.style.right="auto",xe({layout:"translate(-50%, -50%) scale("+U+")"}));const i=Array.from(K.wrapper.querySelectorAll(".slides section"));for(let t=0,s=i.length;t .stretch, section > .r-stretch").forEach((t=>{let s=c(t,i);if(/(img|video)/gi.test(t.nodeName)){const i=t.naturalWidth||t.videoWidth,a=t.naturalHeight||t.videoHeight,n=Math.min(e/i,s/a);t.style.width=i*n+"px",t.style.height=a*n+"px"}else t.style.width=e+"px",t.style.height=s+"px"}))}function Be(e,t){const i={width:w.width,height:w.height,presentationWidth:e||K.wrapper.offsetWidth,presentationHeight:t||K.wrapper.offsetHeight};return i.presentationWidth-=i.presentationWidth*w.margin,i.presentationHeight-=i.presentationHeight*w.margin,"string"==typeof i.width&&/%$/.test(i.width)&&(i.width=parseInt(i.width,10)/100*i.presentationWidth),"string"==typeof i.height&&/%$/.test(i.height)&&(i.height=parseInt(i.height,10)/100*i.presentationHeight),i}function Oe(e,t){"object"==typeof e&&"function"==typeof e.setAttribute&&e.setAttribute("data-previous-indexv",t||0)}function Ue(e){if("object"==typeof e&&"function"==typeof e.setAttribute&&e.classList.contains("stack")){const t=e.hasAttribute("data-start-indexv")?"data-start-indexv":"data-previous-indexv";return parseInt(e.getAttribute(t)||0,10)}return 0}function We(e=m){return e&&e.parentNode&&!!e.parentNode.nodeName.match(/section/i)}function Ke(){return!(!m||!We(m))&&!m.nextElementSibling}function Ve(){return 0===u&&0===v}function $e(){return!!m&&(!m.nextElementSibling&&(!We(m)||!m.parentNode.nextElementSibling))}function je(){if(w.pause){const e=K.wrapper.classList.contains("paused");Rt(),K.wrapper.classList.add("paused"),!1===e&&Pe({type:"paused"})}}function Xe(){const e=K.wrapper.classList.contains("paused");K.wrapper.classList.remove("paused"),Et(),e&&Pe({type:"resumed"})}function Ye(e){"boolean"==typeof e?e?je():Xe():_e()?Xe():je()}function _e(){return K.wrapper.classList.contains("paused")}function Je(e){"boolean"==typeof e?e?At():St():Y?At():St()}function Qe(){return!(!$||Y)}function Ze(e,t,i,s){if(Pe({type:"beforeslidechange",data:{indexh:void 0===e?u:e,indexv:void 0===t?v:t,origin:s}}).defaultPrevented)return;p=m;const a=K.wrapper.querySelectorAll(".slides>section");if(0===a.length)return;void 0!==t||ee.isActive()||(t=Ue(a[e])),p&&p.parentNode&&p.parentNode.classList.contains("stack")&&Oe(p.parentNode,v);const n=I.concat();I.length=0;let r=u||0,o=v||0;u=st(".slides>section",void 0===e?u:e),v=st(".slides>section.present>section",void 0===t?v:t);let l=u!==r||v!==o;l||(p=null);let d=a[u],c=d.querySelectorAll("section");m=c[v]||d;let h=!1;l&&p&&m&&!ee.isActive()&&(p.hasAttribute("data-auto-animate")&&m.hasAttribute("data-auto-animate")&&p.getAttribute("data-auto-animate-id")===m.getAttribute("data-auto-animate-id")&&!(u>r||v>o?m:p).hasAttribute("data-auto-animate-restart")&&(h=!0,K.slides.classList.add("disable-slide-transitions")),V="running"),at(),He(),ee.isActive()&&ee.update(),void 0!==i&&G.goto(i),p&&p!==m&&(p.classList.remove("present"),p.setAttribute("aria-hidden","true"),Ve()&&setTimeout((()=>{ut().forEach((e=>{Oe(e,0)}))}),0));e:for(let e=0,t=I.length;e{fe(be(m))})),ae.update(),se.update(),ce.update(),Z.update(),Z.updateParallax(),J.update(),G.update(),ie.writeURL(),Et(),h&&(setTimeout((()=>{K.slides.classList.remove("disable-slide-transitions")}),0),w.autoAnimate&&Q.run(p,m))}function Ge(){Ae(),Se(),He(),$=w.autoSlide,Et(),Z.create(),ie.writeURL(),G.sortAll(),se.update(),ae.update(),at(),ce.update(),ce.updateVisibility(),Z.update(!0),J.update(),_.formatEmbeddedContent(),!1===w.autoPlayMedia?_.stopEmbeddedContent(m,{unloadIframes:!1}):_.startEmbeddedContent(m),ee.isActive()&&ee.layout()}function et(e=m){Z.sync(e),G.sync(e),_.load(e),Z.update(),ce.update()}function tt(){ct().forEach((e=>{t(e,"section").forEach(((e,t)=>{t>0&&(e.classList.remove("present"),e.classList.remove("past"),e.classList.add("future"),e.setAttribute("aria-hidden","true"))}))}))}function it(e=ct()){e.forEach(((t,i)=>{let s=e[Math.floor(Math.random()*e.length)];s.parentNode===t.parentNode&&t.parentNode.insertBefore(t,s);let a=t.querySelectorAll("section");a.length&&it(a)}))}function st(e,i){let s=t(K.wrapper,e),a=s.length,n=oe.isPrintingPDF();if(a){w.loop&&(i%=a)<0&&(i=a+i),i=Math.max(Math.min(i,a-1),0);for(let e=0;e{e.classList.add("visible"),e.classList.remove("current-fragment")}))):e>i&&(a.classList.add(r?"past":"future"),w.fragments&&t(a,".fragment.visible").forEach((e=>{e.classList.remove("visible","current-fragment")})))}let e=s[i],r=e.classList.contains("present");e.classList.add("present"),e.removeAttribute("hidden"),e.removeAttribute("aria-hidden"),r||Pe({target:e,type:"visible",bubbles:!1});let o=e.getAttribute("data-state");o&&(I=I.concat(o.split(" ")))}else i=0;return i}function at(){let e,i,s=ct(),a=s.length;if(a&&void 0!==u){let n=ee.isActive()?10:w.viewDistance;g&&(n=ee.isActive()?6:w.mobileViewDistance),oe.isPrintingPDF()&&(n=Number.MAX_VALUE);for(let r=0;rsection"),i=K.wrapper.querySelectorAll(".slides>section.present>section"),s={left:u>0,right:u0,down:v1&&(s.left=!0,s.right=!0),i.length>1&&(s.up=!0,s.down=!0)),t.length>1&&"linear"===w.navigationMode&&(s.right=s.right||s.down,s.left=s.left||s.up),!0===e){let e=G.availableRoutes();s.left=s.left||e.prev,s.up=s.up||e.prev,s.down=s.down||e.next,s.right=s.right||e.next}if(w.rtl){let e=s.left;s.left=s.right,s.right=e}return s}function rt(e=m){let t=ct(),i=0;e:for(let s=0;s0){let i=.9;t+=m.querySelectorAll(".fragment.visible").length/e.length*i}}return Math.min(t/(e-1),1)}function lt(e){let i,s=u,a=v;if(e){let i=We(e),n=i?e.parentNode:e,r=ct();s=Math.max(r.indexOf(n),0),a=void 0,i&&(a=Math.max(t(e.parentNode,"section").indexOf(e),0))}if(!e&&m){if(m.querySelectorAll(".fragment").length>0){let e=m.querySelector(".current-fragment");i=e&&e.hasAttribute("data-fragment-index")?parseInt(e.getAttribute("data-fragment-index"),10):m.querySelectorAll(".fragment.visible").length-1}}return{h:s,v:a,f:i}}function dt(){return t(K.wrapper,'.slides section:not(.stack):not([data-visibility="uncounted"])')}function ct(){return t(K.wrapper,".slides>section")}function ht(){return t(K.wrapper,".slides>section>section")}function ut(){return t(K.wrapper,".slides>section.stack")}function gt(){return ct().length>1}function vt(){return ht().length>1}function pt(){return dt().map((e=>{let t={};for(let i=0;i{e.hasAttribute("data-autoplay")&&$&&1e3*e.duration/e.playbackRate>$&&($=1e3*e.duration/e.playbackRate+1e3)}))),!$||Y||_e()||ee.isActive()||$e()&&!G.availableRoutes().next&&!0!==w.loop||(j=setTimeout((()=>{"function"==typeof w.autoSlideMethod?w.autoSlideMethod():Nt(),Et()}),$),X=Date.now()),f&&f.setPlaying(-1!==j)}}function Rt(){clearTimeout(j),j=-1}function St(){$&&!Y&&(Y=!0,Pe({type:"autoslidepaused"}),clearTimeout(j),f&&f.setPlaying(!1))}function At(){$&&Y&&(Y=!1,Pe({type:"autoslideresumed"}),Et())}function kt({skipFragments:e=!1}={}){A.hasNavigatedHorizontally=!0,w.rtl?(ee.isActive()||e||!1===G.next())&&nt().left&&Ze(u+1,"grid"===w.navigationMode?v:void 0):(ee.isActive()||e||!1===G.prev())&&nt().left&&Ze(u-1,"grid"===w.navigationMode?v:void 0)}function Lt({skipFragments:e=!1}={}){A.hasNavigatedHorizontally=!0,w.rtl?(ee.isActive()||e||!1===G.prev())&&nt().right&&Ze(u-1,"grid"===w.navigationMode?v:void 0):(ee.isActive()||e||!1===G.next())&&nt().right&&Ze(u+1,"grid"===w.navigationMode?v:void 0)}function Ct({skipFragments:e=!1}={}){(ee.isActive()||e||!1===G.prev())&&nt().up&&Ze(u,v-1)}function xt({skipFragments:e=!1}={}){A.hasNavigatedVertically=!0,(ee.isActive()||e||!1===G.next())&&nt().down&&Ze(u,v+1)}function Pt({skipFragments:e=!1}={}){if(e||!1===G.prev())if(nt().up)Ct({skipFragments:e});else{let i;if(i=w.rtl?t(K.wrapper,".slides>section.future").pop():t(K.wrapper,".slides>section.past").pop(),i&&i.classList.contains("stack")){let e=i.querySelectorAll("section").length-1||void 0;Ze(u-1,e)}else kt({skipFragments:e})}}function Nt({skipFragments:e=!1}={}){if(A.hasNavigatedHorizontally=!0,A.hasNavigatedVertically=!0,e||!1===G.next()){let t=nt();t.down&&t.right&&w.loop&&Ke()&&(t.down=!1),t.down?xt({skipFragments:e}):w.rtl?kt({skipFragments:e}):Lt({skipFragments:e})}}function Mt(e){w.autoSlideStoppable&&St()}function Dt(e){let t=e.data;if("string"==typeof t&&"{"===t.charAt(0)&&"}"===t.charAt(t.length-1)&&(t=JSON.parse(t),t.method&&"function"==typeof h[t.method]))if(!1===R.test(t.method)){const e=h[t.method].apply(h,t.args);Ne("callback",{method:t.method,result:e})}else console.warn('reveal.js: "'+t.method+'" is is blacklisted from the postMessage API')}function It(e){"running"===V&&/section/gi.test(e.target.nodeName)&&(V="idle",Pe({type:"slidetransitionend",data:{indexh:u,indexv:v,previousSlide:p,currentSlide:m}}))}function Tt(e){const t=r(e.target,'a[href^="#"]');if(t){const i=t.getAttribute("href"),s=ie.getIndicesFromHash(i);s&&(h.slide(s.h,s.v,s.f),e.preventDefault())}}function Ft(e){He()}function zt(e){!1===document.hidden&&document.activeElement!==document.body&&("function"==typeof document.activeElement.blur&&document.activeElement.blur(),document.body.focus())}function Ht(e){(document.fullscreenElement||document.webkitFullscreenElement)===K.wrapper&&(e.stopImmediatePropagation(),setTimeout((()=>{h.layout(),h.focus.focus()}),1))}function qt(e){if(e.currentTarget&&e.currentTarget.hasAttribute("href")){let t=e.currentTarget.getAttribute("href");t&&(Ie(t),e.preventDefault())}}function Bt(e){$e()&&!1===w.loop?(Ze(0,0),At()):Y?At():St()}const Ot={VERSION:"4.3.1",initialize:he,configure:Re,destroy:ke,sync:Ge,syncSlide:et,syncFragments:G.sync.bind(G),slide:Ze,left:kt,right:Lt,up:Ct,down:xt,prev:Pt,next:Nt,navigateLeft:kt,navigateRight:Lt,navigateUp:Ct,navigateDown:xt,navigatePrev:Pt,navigateNext:Nt,navigateFragment:G.goto.bind(G),prevFragment:G.prev.bind(G),nextFragment:G.next.bind(G),on:Le,off:Ce,addEventListener:Le,removeEventListener:Ce,layout:He,shuffle:it,availableRoutes:nt,availableFragments:G.availableRoutes.bind(G),toggleHelp:Te,toggleOverview:ee.toggle.bind(ee),togglePause:Ye,toggleAutoSlide:Je,isFirstSlide:Ve,isLastSlide:$e,isLastVerticalSlide:Ke,isVerticalSlide:We,isPaused:_e,isAutoSliding:Qe,isSpeakerNotes:ce.isSpeakerNotesWindow.bind(ce),isOverview:ee.isActive.bind(ee),isFocused:le.isFocused.bind(le),isPrintingPDF:oe.isPrintingPDF.bind(oe),isReady:()=>S,loadSlide:_.load.bind(_),unloadSlide:_.unload.bind(_),showPreview:Ie,hidePreview:ze,addEventListeners:Se,removeEventListeners:Ae,dispatchEvent:Pe,getState:yt,setState:wt,getProgress:ot,getIndices:lt,getSlidesAttributes:pt,getSlidePastCount:rt,getTotalSlides:mt,getSlide:ft,getPreviousSlide:()=>p,getCurrentSlide:()=>m,getSlideBackground:bt,getSlideNotes:ce.getSlideNotes.bind(ce),getSlides:dt,getHorizontalSlides:ct,getVerticalSlides:ht,hasHorizontalSlides:gt,hasVerticalSlides:vt,hasNavigatedHorizontally:()=>A.hasNavigatedHorizontally,hasNavigatedVertically:()=>A.hasNavigatedVertically,addKeyBinding:te.addKeyBinding.bind(te),removeKeyBinding:te.removeKeyBinding.bind(te),triggerKey:te.triggerKey.bind(te),registerKeyboardShortcut:te.registerKeyboardShortcut.bind(te),getComputedSlideSize:Be,getScale:()=>U,getConfig:()=>w,getQueryHash:d,getSlidePath:ie.getHash.bind(ie),getRevealElement:()=>n,getSlidesElement:()=>K.slides,getViewportElement:()=>K.viewport,getBackgroundsElement:()=>Z.element,registerPlugin:re.registerPlugin.bind(re),hasPlugin:re.hasPlugin.bind(re),getPlugin:re.getPlugin.bind(re),getPlugins:re.getRegisteredPlugins.bind(re)};return e(h,{...Ot,announceStatus:fe,getStatusText:be,print:oe,focus:le,progress:ae,controls:se,location:ie,overview:ee,fragments:G,slideContent:_,slideNumber:J,onUserInput:Mt,closeOverlay:ze,updateSlidesVisibility:at,layoutSlideContents:qe,transformSlides:xe,cueAutoSlide:Et,cancelAutoSlide:Rt}),Ot}let W=U,K=[];W.initialize=e=>(Object.assign(W,new U(document.querySelector(".reveal"),e)),K.map((e=>e(W))),W.initialize()),["configure","on","off","addEventListener","removeEventListener","registerPlugin"].forEach((e=>{W[e]=(...t)=>{K.push((i=>i[e].call(null,...t)))}})),W.isReady=()=>!1,W.VERSION="4.3.1";export default W; +//# sourceMappingURL=reveal.esm.js.map diff --git a/index_files/libs/revealjs/dist/reveal.esm.js.map b/index_files/libs/revealjs/dist/reveal.esm.js.map new file mode 100644 index 0000000..286c75a --- /dev/null +++ b/index_files/libs/revealjs/dist/reveal.esm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"reveal.esm.js","sources":["../js/utils/util.js","../js/utils/device.js","../node_modules/fitty/dist/fitty.module.js","../js/controllers/slidecontent.js","../js/controllers/slidenumber.js","../js/utils/color.js","../js/controllers/backgrounds.js","../js/utils/constants.js","../js/controllers/autoanimate.js","../js/controllers/fragments.js","../js/controllers/overview.js","../js/controllers/keyboard.js","../js/controllers/location.js","../js/controllers/controls.js","../js/controllers/progress.js","../js/controllers/pointer.js","../js/utils/loader.js","../js/controllers/plugins.js","../js/controllers/print.js","../js/controllers/touch.js","../js/controllers/focus.js","../js/controllers/notes.js","../js/components/playback.js","../js/config.js","../js/reveal.js","../js/index.js"],"sourcesContent":["/**\n * Extend object a with the properties of object b.\n * If there's a conflict, object b takes precedence.\n *\n * @param {object} a\n * @param {object} b\n */\nexport const extend = ( a, b ) => {\n\n\tfor( let i in b ) {\n\t\ta[ i ] = b[ i ];\n\t}\n\n\treturn a;\n\n}\n\n/**\n * querySelectorAll but returns an Array.\n */\nexport const queryAll = ( el, selector ) => {\n\n\treturn Array.from( el.querySelectorAll( selector ) );\n\n}\n\n/**\n * classList.toggle() with cross browser support\n */\nexport const toggleClass = ( el, className, value ) => {\n\tif( value ) {\n\t\tel.classList.add( className );\n\t}\n\telse {\n\t\tel.classList.remove( className );\n\t}\n}\n\n/**\n * Utility for deserializing a value.\n *\n * @param {*} value\n * @return {*}\n */\nexport const deserialize = ( value ) => {\n\n\tif( typeof value === 'string' ) {\n\t\tif( value === 'null' ) return null;\n\t\telse if( value === 'true' ) return true;\n\t\telse if( value === 'false' ) return false;\n\t\telse if( value.match( /^-?[\\d\\.]+$/ ) ) return parseFloat( value );\n\t}\n\n\treturn value;\n\n}\n\n/**\n * Measures the distance in pixels between point a\n * and point b.\n *\n * @param {object} a point with x/y properties\n * @param {object} b point with x/y properties\n *\n * @return {number}\n */\nexport const distanceBetween = ( a, b ) => {\n\n\tlet dx = a.x - b.x,\n\t\tdy = a.y - b.y;\n\n\treturn Math.sqrt( dx*dx + dy*dy );\n\n}\n\n/**\n * Applies a CSS transform to the target element.\n *\n * @param {HTMLElement} element\n * @param {string} transform\n */\nexport const transformElement = ( element, transform ) => {\n\n\telement.style.transform = transform;\n\n}\n\n/**\n * Element.matches with IE support.\n *\n * @param {HTMLElement} target The element to match\n * @param {String} selector The CSS selector to match\n * the element against\n *\n * @return {Boolean}\n */\nexport const matches = ( target, selector ) => {\n\n\tlet matchesMethod = target.matches || target.matchesSelector || target.msMatchesSelector;\n\n\treturn !!( matchesMethod && matchesMethod.call( target, selector ) );\n\n}\n\n/**\n * Find the closest parent that matches the given\n * selector.\n *\n * @param {HTMLElement} target The child element\n * @param {String} selector The CSS selector to match\n * the parents against\n *\n * @return {HTMLElement} The matched parent or null\n * if no matching parent was found\n */\nexport const closest = ( target, selector ) => {\n\n\t// Native Element.closest\n\tif( typeof target.closest === 'function' ) {\n\t\treturn target.closest( selector );\n\t}\n\n\t// Polyfill\n\twhile( target ) {\n\t\tif( matches( target, selector ) ) {\n\t\t\treturn target;\n\t\t}\n\n\t\t// Keep searching\n\t\ttarget = target.parentNode;\n\t}\n\n\treturn null;\n\n}\n\n/**\n * Handling the fullscreen functionality via the fullscreen API\n *\n * @see http://fullscreen.spec.whatwg.org/\n * @see https://developer.mozilla.org/en-US/docs/DOM/Using_fullscreen_mode\n */\nexport const enterFullscreen = element => {\n\n\telement = element || document.documentElement;\n\n\t// Check which implementation is available\n\tlet requestMethod = element.requestFullscreen ||\n\t\t\t\t\t\telement.webkitRequestFullscreen ||\n\t\t\t\t\t\telement.webkitRequestFullScreen ||\n\t\t\t\t\t\telement.mozRequestFullScreen ||\n\t\t\t\t\t\telement.msRequestFullscreen;\n\n\tif( requestMethod ) {\n\t\trequestMethod.apply( element );\n\t}\n\n}\n\n/**\n * Creates an HTML element and returns a reference to it.\n * If the element already exists the existing instance will\n * be returned.\n *\n * @param {HTMLElement} container\n * @param {string} tagname\n * @param {string} classname\n * @param {string} innerHTML\n *\n * @return {HTMLElement}\n */\nexport const createSingletonNode = ( container, tagname, classname, innerHTML='' ) => {\n\n\t// Find all nodes matching the description\n\tlet nodes = container.querySelectorAll( '.' + classname );\n\n\t// Check all matches to find one which is a direct child of\n\t// the specified container\n\tfor( let i = 0; i < nodes.length; i++ ) {\n\t\tlet testNode = nodes[i];\n\t\tif( testNode.parentNode === container ) {\n\t\t\treturn testNode;\n\t\t}\n\t}\n\n\t// If no node was found, create it now\n\tlet node = document.createElement( tagname );\n\tnode.className = classname;\n\tnode.innerHTML = innerHTML;\n\tcontainer.appendChild( node );\n\n\treturn node;\n\n}\n\n/**\n * Injects the given CSS styles into the DOM.\n *\n * @param {string} value\n */\nexport const createStyleSheet = ( value ) => {\n\n\tlet tag = document.createElement( 'style' );\n\ttag.type = 'text/css';\n\n\tif( value && value.length > 0 ) {\n\t\tif( tag.styleSheet ) {\n\t\t\ttag.styleSheet.cssText = value;\n\t\t}\n\t\telse {\n\t\t\ttag.appendChild( document.createTextNode( value ) );\n\t\t}\n\t}\n\n\tdocument.head.appendChild( tag );\n\n\treturn tag;\n\n}\n\n/**\n * Returns a key:value hash of all query params.\n */\nexport const getQueryHash = () => {\n\n\tlet query = {};\n\n\tlocation.search.replace( /[A-Z0-9]+?=([\\w\\.%-]*)/gi, a => {\n\t\tquery[ a.split( '=' ).shift() ] = a.split( '=' ).pop();\n\t} );\n\n\t// Basic deserialization\n\tfor( let i in query ) {\n\t\tlet value = query[ i ];\n\n\t\tquery[ i ] = deserialize( unescape( value ) );\n\t}\n\n\t// Do not accept new dependencies via query config to avoid\n\t// the potential of malicious script injection\n\tif( typeof query['dependencies'] !== 'undefined' ) delete query['dependencies'];\n\n\treturn query;\n\n}\n\n/**\n * Returns the remaining height within the parent of the\n * target element.\n *\n * remaining height = [ configured parent height ] - [ current parent height ]\n *\n * @param {HTMLElement} element\n * @param {number} [height]\n */\nexport const getRemainingHeight = ( element, height = 0 ) => {\n\n\tif( element ) {\n\t\tlet newHeight, oldHeight = element.style.height;\n\n\t\t// Change the .stretch element height to 0 in order find the height of all\n\t\t// the other elements\n\t\telement.style.height = '0px';\n\n\t\t// In Overview mode, the parent (.slide) height is set of 700px.\n\t\t// Restore it temporarily to its natural height.\n\t\telement.parentNode.style.height = 'auto';\n\n\t\tnewHeight = height - element.parentNode.offsetHeight;\n\n\t\t// Restore the old height, just in case\n\t\telement.style.height = oldHeight + 'px';\n\n\t\t// Clear the parent (.slide) height. .removeProperty works in IE9+\n\t\telement.parentNode.style.removeProperty('height');\n\n\t\treturn newHeight;\n\t}\n\n\treturn height;\n\n}\n\nconst fileExtensionToMimeMap = {\n\t'mp4': 'video/mp4',\n\t'm4a': 'video/mp4',\n\t'ogv': 'video/ogg',\n\t'mpeg': 'video/mpeg',\n\t'webm': 'video/webm'\n}\n\n/**\n * Guess the MIME type for common file formats.\n */\nexport const getMimeTypeFromFile = ( filename='' ) => {\n\treturn fileExtensionToMimeMap[filename.split('.').pop()]\n}","const UA = navigator.userAgent;\n\nexport const isMobile = /(iphone|ipod|ipad|android)/gi.test( UA ) ||\n\t\t\t\t\t\t( navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 ); // iPadOS\n\nexport const isChrome = /chrome/i.test( UA ) && !/edge/i.test( UA );\n\nexport const isAndroid = /android/gi.test( UA );","/*\n * fitty v2.3.3 - Snugly resizes text to fit its parent container\n * Copyright (c) 2020 Rik Schennink (https://pqina.nl/)\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = function (w) {\n\n // no window, early exit\n if (!w) return;\n\n // node list to array helper method\n var toArray = function toArray(nl) {\n return [].slice.call(nl);\n };\n\n // states\n var DrawState = {\n IDLE: 0,\n DIRTY_CONTENT: 1,\n DIRTY_LAYOUT: 2,\n DIRTY: 3\n };\n\n // all active fitty elements\n var fitties = [];\n\n // group all redraw calls till next frame, we cancel each frame request when a new one comes in. If no support for request animation frame, this is an empty function and supports for fitty stops.\n var redrawFrame = null;\n var requestRedraw = 'requestAnimationFrame' in w ? function () {\n w.cancelAnimationFrame(redrawFrame);\n redrawFrame = w.requestAnimationFrame(function () {\n return redraw(fitties.filter(function (f) {\n return f.dirty && f.active;\n }));\n });\n } : function () {};\n\n // sets all fitties to dirty so they are redrawn on the next redraw loop, then calls redraw\n var redrawAll = function redrawAll(type) {\n return function () {\n fitties.forEach(function (f) {\n return f.dirty = type;\n });\n requestRedraw();\n };\n };\n\n // redraws fitties so they nicely fit their parent container\n var redraw = function redraw(fitties) {\n\n // getting info from the DOM at this point should not trigger a reflow, let's gather as much intel as possible before triggering a reflow\n\n // check if styles of all fitties have been computed\n fitties.filter(function (f) {\n return !f.styleComputed;\n }).forEach(function (f) {\n f.styleComputed = computeStyle(f);\n });\n\n // restyle elements that require pre-styling, this triggers a reflow, please try to prevent by adding CSS rules (see docs)\n fitties.filter(shouldPreStyle).forEach(applyStyle);\n\n // we now determine which fitties should be redrawn\n var fittiesToRedraw = fitties.filter(shouldRedraw);\n\n // we calculate final styles for these fitties\n fittiesToRedraw.forEach(calculateStyles);\n\n // now we apply the calculated styles from our previous loop\n fittiesToRedraw.forEach(function (f) {\n applyStyle(f);\n markAsClean(f);\n });\n\n // now we dispatch events for all restyled fitties\n fittiesToRedraw.forEach(dispatchFitEvent);\n };\n\n var markAsClean = function markAsClean(f) {\n return f.dirty = DrawState.IDLE;\n };\n\n var calculateStyles = function calculateStyles(f) {\n\n // get available width from parent node\n f.availableWidth = f.element.parentNode.clientWidth;\n\n // the space our target element uses\n f.currentWidth = f.element.scrollWidth;\n\n // remember current font size\n f.previousFontSize = f.currentFontSize;\n\n // let's calculate the new font size\n f.currentFontSize = Math.min(Math.max(f.minSize, f.availableWidth / f.currentWidth * f.previousFontSize), f.maxSize);\n\n // if allows wrapping, only wrap when at minimum font size (otherwise would break container)\n f.whiteSpace = f.multiLine && f.currentFontSize === f.minSize ? 'normal' : 'nowrap';\n };\n\n // should always redraw if is not dirty layout, if is dirty layout, only redraw if size has changed\n var shouldRedraw = function shouldRedraw(f) {\n return f.dirty !== DrawState.DIRTY_LAYOUT || f.dirty === DrawState.DIRTY_LAYOUT && f.element.parentNode.clientWidth !== f.availableWidth;\n };\n\n // every fitty element is tested for invalid styles\n var computeStyle = function computeStyle(f) {\n\n // get style properties\n var style = w.getComputedStyle(f.element, null);\n\n // get current font size in pixels (if we already calculated it, use the calculated version)\n f.currentFontSize = parseFloat(style.getPropertyValue('font-size'));\n\n // get display type and wrap mode\n f.display = style.getPropertyValue('display');\n f.whiteSpace = style.getPropertyValue('white-space');\n };\n\n // determines if this fitty requires initial styling, can be prevented by applying correct styles through CSS\n var shouldPreStyle = function shouldPreStyle(f) {\n\n var preStyle = false;\n\n // if we already tested for prestyling we don't have to do it again\n if (f.preStyleTestCompleted) return false;\n\n // should have an inline style, if not, apply\n if (!/inline-/.test(f.display)) {\n preStyle = true;\n f.display = 'inline-block';\n }\n\n // to correctly calculate dimensions the element should have whiteSpace set to nowrap\n if (f.whiteSpace !== 'nowrap') {\n preStyle = true;\n f.whiteSpace = 'nowrap';\n }\n\n // we don't have to do this twice\n f.preStyleTestCompleted = true;\n\n return preStyle;\n };\n\n // apply styles to single fitty\n var applyStyle = function applyStyle(f) {\n f.element.style.whiteSpace = f.whiteSpace;\n f.element.style.display = f.display;\n f.element.style.fontSize = f.currentFontSize + 'px';\n };\n\n // dispatch a fit event on a fitty\n var dispatchFitEvent = function dispatchFitEvent(f) {\n f.element.dispatchEvent(new CustomEvent('fit', {\n detail: {\n oldValue: f.previousFontSize,\n newValue: f.currentFontSize,\n scaleFactor: f.currentFontSize / f.previousFontSize\n }\n }));\n };\n\n // fit method, marks the fitty as dirty and requests a redraw (this will also redraw any other fitty marked as dirty)\n var fit = function fit(f, type) {\n return function () {\n f.dirty = type;\n if (!f.active) return;\n requestRedraw();\n };\n };\n\n var init = function init(f) {\n\n // save some of the original CSS properties before we change them\n f.originalStyle = {\n whiteSpace: f.element.style.whiteSpace,\n display: f.element.style.display,\n fontSize: f.element.style.fontSize\n };\n\n // should we observe DOM mutations\n observeMutations(f);\n\n // this is a new fitty so we need to validate if it's styles are in order\n f.newbie = true;\n\n // because it's a new fitty it should also be dirty, we want it to redraw on the first loop\n f.dirty = true;\n\n // we want to be able to update this fitty\n fitties.push(f);\n };\n\n var destroy = function destroy(f) {\n return function () {\n\n // remove from fitties array\n fitties = fitties.filter(function (_) {\n return _.element !== f.element;\n });\n\n // stop observing DOM\n if (f.observeMutations) f.observer.disconnect();\n\n // reset the CSS properties we changes\n f.element.style.whiteSpace = f.originalStyle.whiteSpace;\n f.element.style.display = f.originalStyle.display;\n f.element.style.fontSize = f.originalStyle.fontSize;\n };\n };\n\n // add a new fitty, does not redraw said fitty\n var subscribe = function subscribe(f) {\n return function () {\n if (f.active) return;\n f.active = true;\n requestRedraw();\n };\n };\n\n // remove an existing fitty\n var unsubscribe = function unsubscribe(f) {\n return function () {\n return f.active = false;\n };\n };\n\n var observeMutations = function observeMutations(f) {\n\n // no observing?\n if (!f.observeMutations) return;\n\n // start observing mutations\n f.observer = new MutationObserver(fit(f, DrawState.DIRTY_CONTENT));\n\n // start observing\n f.observer.observe(f.element, f.observeMutations);\n };\n\n // default mutation observer settings\n var mutationObserverDefaultSetting = {\n subtree: true,\n childList: true,\n characterData: true\n };\n\n // default fitty options\n var defaultOptions = {\n minSize: 16,\n maxSize: 512,\n multiLine: true,\n observeMutations: 'MutationObserver' in w ? mutationObserverDefaultSetting : false\n };\n\n // array of elements in, fitty instances out\n function fittyCreate(elements, options) {\n\n // set options object\n var fittyOptions = _extends({}, defaultOptions, options);\n\n // create fitties\n var publicFitties = elements.map(function (element) {\n\n // create fitty instance\n var f = _extends({}, fittyOptions, {\n\n // internal options for this fitty\n element: element,\n active: true\n });\n\n // initialise this fitty\n init(f);\n\n // expose API\n return {\n element: element,\n fit: fit(f, DrawState.DIRTY),\n unfreeze: subscribe(f),\n freeze: unsubscribe(f),\n unsubscribe: destroy(f)\n };\n });\n\n // call redraw on newly initiated fitties\n requestRedraw();\n\n // expose fitties\n return publicFitties;\n }\n\n // fitty creation function\n function fitty(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\n // if target is a string\n return typeof target === 'string' ?\n\n // treat it as a querySelector\n fittyCreate(toArray(document.querySelectorAll(target)), options) :\n\n // create single fitty\n fittyCreate([target], options)[0];\n }\n\n // handles viewport changes, redraws all fitties, but only does so after a timeout\n var resizeDebounce = null;\n var onWindowResized = function onWindowResized() {\n w.clearTimeout(resizeDebounce);\n resizeDebounce = w.setTimeout(redrawAll(DrawState.DIRTY_LAYOUT), fitty.observeWindowDelay);\n };\n\n // define observe window property, so when we set it to true or false events are automatically added and removed\n var events = ['resize', 'orientationchange'];\n Object.defineProperty(fitty, 'observeWindow', {\n set: function set(enabled) {\n var method = (enabled ? 'add' : 'remove') + 'EventListener';\n events.forEach(function (e) {\n w[method](e, onWindowResized);\n });\n }\n });\n\n // fitty global properties (by setting observeWindow to true the events above get added)\n fitty.observeWindow = true;\n fitty.observeWindowDelay = 100;\n\n // public fit all method, will force redraw no matter what\n fitty.fitAll = redrawAll(DrawState.DIRTY);\n\n // export our fitty function, we don't want to keep it to our selves\n return fitty;\n}(typeof window === 'undefined' ? null : window);","import { extend, queryAll, closest, getMimeTypeFromFile } from '../utils/util.js'\nimport { isMobile } from '../utils/device.js'\n\nimport fitty from 'fitty';\n\n/**\n * Handles loading, unloading and playback of slide\n * content such as images, videos and iframes.\n */\nexport default class SlideContent {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t\tthis.startEmbeddedIframe = this.startEmbeddedIframe.bind( this );\n\n\t}\n\n\t/**\n\t * Should the given element be preloaded?\n\t * Decides based on local element attributes and global config.\n\t *\n\t * @param {HTMLElement} element\n\t */\n\tshouldPreload( element ) {\n\n\t\t// Prefer an explicit global preload setting\n\t\tlet preload = this.Reveal.getConfig().preloadIframes;\n\n\t\t// If no global setting is available, fall back on the element's\n\t\t// own preload setting\n\t\tif( typeof preload !== 'boolean' ) {\n\t\t\tpreload = element.hasAttribute( 'data-preload' );\n\t\t}\n\n\t\treturn preload;\n\t}\n\n\t/**\n\t * Called when the given slide is within the configured view\n\t * distance. Shows the slide element and loads any content\n\t * that is set to load lazily (data-src).\n\t *\n\t * @param {HTMLElement} slide Slide to show\n\t */\n\tload( slide, options = {} ) {\n\n\t\t// Show the slide element\n\t\tslide.style.display = this.Reveal.getConfig().display;\n\n\t\t// Media elements with data-src attributes\n\t\tqueryAll( slide, 'img[data-src], video[data-src], audio[data-src], iframe[data-src]' ).forEach( element => {\n\t\t\tif( element.tagName !== 'IFRAME' || this.shouldPreload( element ) ) {\n\t\t\t\telement.setAttribute( 'src', element.getAttribute( 'data-src' ) );\n\t\t\t\telement.setAttribute( 'data-lazy-loaded', '' );\n\t\t\t\telement.removeAttribute( 'data-src' );\n\t\t\t}\n\t\t} );\n\n\t\t// Media elements with children\n\t\tqueryAll( slide, 'video, audio' ).forEach( media => {\n\t\t\tlet sources = 0;\n\n\t\t\tqueryAll( media, 'source[data-src]' ).forEach( source => {\n\t\t\t\tsource.setAttribute( 'src', source.getAttribute( 'data-src' ) );\n\t\t\t\tsource.removeAttribute( 'data-src' );\n\t\t\t\tsource.setAttribute( 'data-lazy-loaded', '' );\n\t\t\t\tsources += 1;\n\t\t\t} );\n\n\t\t\t// Enable inline video playback in mobile Safari\n\t\t\tif( isMobile && media.tagName === 'VIDEO' ) {\n\t\t\t\tmedia.setAttribute( 'playsinline', '' );\n\t\t\t}\n\n\t\t\t// If we rewrote sources for this video/audio element, we need\n\t\t\t// to manually tell it to load from its new origin\n\t\t\tif( sources > 0 ) {\n\t\t\t\tmedia.load();\n\t\t\t}\n\t\t} );\n\n\n\t\t// Show the corresponding background element\n\t\tlet background = slide.slideBackgroundElement;\n\t\tif( background ) {\n\t\t\tbackground.style.display = 'block';\n\n\t\t\tlet backgroundContent = slide.slideBackgroundContentElement;\n\t\t\tlet backgroundIframe = slide.getAttribute( 'data-background-iframe' );\n\n\t\t\t// If the background contains media, load it\n\t\t\tif( background.hasAttribute( 'data-loaded' ) === false ) {\n\t\t\t\tbackground.setAttribute( 'data-loaded', 'true' );\n\n\t\t\t\tlet backgroundImage = slide.getAttribute( 'data-background-image' ),\n\t\t\t\t\tbackgroundVideo = slide.getAttribute( 'data-background-video' ),\n\t\t\t\t\tbackgroundVideoLoop = slide.hasAttribute( 'data-background-video-loop' ),\n\t\t\t\t\tbackgroundVideoMuted = slide.hasAttribute( 'data-background-video-muted' );\n\n\t\t\t\t// Images\n\t\t\t\tif( backgroundImage ) {\n\t\t\t\t\t// base64\n\t\t\t\t\tif( /^data:/.test( backgroundImage.trim() ) ) {\n\t\t\t\t\t\tbackgroundContent.style.backgroundImage = `url(${backgroundImage.trim()})`;\n\t\t\t\t\t}\n\t\t\t\t\t// URL(s)\n\t\t\t\t\telse {\n\t\t\t\t\t\tbackgroundContent.style.backgroundImage = backgroundImage.split( ',' ).map( background => {\n\t\t\t\t\t\t\treturn `url(${encodeURI(background.trim())})`;\n\t\t\t\t\t\t}).join( ',' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Videos\n\t\t\t\telse if ( backgroundVideo && !this.Reveal.isSpeakerNotes() ) {\n\t\t\t\t\tlet video = document.createElement( 'video' );\n\n\t\t\t\t\tif( backgroundVideoLoop ) {\n\t\t\t\t\t\tvideo.setAttribute( 'loop', '' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif( backgroundVideoMuted ) {\n\t\t\t\t\t\tvideo.muted = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Enable inline playback in mobile Safari\n\t\t\t\t\t//\n\t\t\t\t\t// Mute is required for video to play when using\n\t\t\t\t\t// swipe gestures to navigate since they don't\n\t\t\t\t\t// count as direct user actions :'(\n\t\t\t\t\tif( isMobile ) {\n\t\t\t\t\t\tvideo.muted = true;\n\t\t\t\t\t\tvideo.setAttribute( 'playsinline', '' );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support comma separated lists of video sources\n\t\t\t\t\tbackgroundVideo.split( ',' ).forEach( source => {\n\t\t\t\t\t\tlet type = getMimeTypeFromFile( source );\n\t\t\t\t\t\tif( type ) {\n\t\t\t\t\t\t\tvideo.innerHTML += ``;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvideo.innerHTML += ``;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\tbackgroundContent.appendChild( video );\n\t\t\t\t}\n\t\t\t\t// Iframes\n\t\t\t\telse if( backgroundIframe && options.excludeIframes !== true ) {\n\t\t\t\t\tlet iframe = document.createElement( 'iframe' );\n\t\t\t\t\tiframe.setAttribute( 'allowfullscreen', '' );\n\t\t\t\t\tiframe.setAttribute( 'mozallowfullscreen', '' );\n\t\t\t\t\tiframe.setAttribute( 'webkitallowfullscreen', '' );\n\t\t\t\t\tiframe.setAttribute( 'allow', 'autoplay' );\n\n\t\t\t\t\tiframe.setAttribute( 'data-src', backgroundIframe );\n\n\t\t\t\t\tiframe.style.width = '100%';\n\t\t\t\t\tiframe.style.height = '100%';\n\t\t\t\t\tiframe.style.maxHeight = '100%';\n\t\t\t\t\tiframe.style.maxWidth = '100%';\n\n\t\t\t\t\tbackgroundContent.appendChild( iframe );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start loading preloadable iframes\n\t\t\tlet backgroundIframeElement = backgroundContent.querySelector( 'iframe[data-src]' );\n\t\t\tif( backgroundIframeElement ) {\n\n\t\t\t\t// Check if this iframe is eligible to be preloaded\n\t\t\t\tif( this.shouldPreload( background ) && !/autoplay=(1|true|yes)/gi.test( backgroundIframe ) ) {\n\t\t\t\t\tif( backgroundIframeElement.getAttribute( 'src' ) !== backgroundIframe ) {\n\t\t\t\t\t\tbackgroundIframeElement.setAttribute( 'src', backgroundIframe );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.layout( slide );\n\n\t}\n\n\t/**\n\t * Applies JS-dependent layout helpers for the given slide,\n\t * if there are any.\n\t */\n\tlayout( slide ) {\n\n\t\t// Autosize text with the r-fit-text class based on the\n\t\t// size of its container. This needs to happen after the\n\t\t// slide is visible in order to measure the text.\n\t\tArray.from( slide.querySelectorAll( '.r-fit-text' ) ).forEach( element => {\n\t\t\tfitty( element, {\n\t\t\t\tminSize: 24,\n\t\t\t\tmaxSize: this.Reveal.getConfig().height * 0.8,\n\t\t\t\tobserveMutations: false,\n\t\t\t\tobserveWindow: false\n\t\t\t} );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Unloads and hides the given slide. This is called when the\n\t * slide is moved outside of the configured view distance.\n\t *\n\t * @param {HTMLElement} slide\n\t */\n\tunload( slide ) {\n\n\t\t// Hide the slide element\n\t\tslide.style.display = 'none';\n\n\t\t// Hide the corresponding background element\n\t\tlet background = this.Reveal.getSlideBackground( slide );\n\t\tif( background ) {\n\t\t\tbackground.style.display = 'none';\n\n\t\t\t// Unload any background iframes\n\t\t\tqueryAll( background, 'iframe[src]' ).forEach( element => {\n\t\t\t\telement.removeAttribute( 'src' );\n\t\t\t} );\n\t\t}\n\n\t\t// Reset lazy-loaded media elements with src attributes\n\t\tqueryAll( slide, 'video[data-lazy-loaded][src], audio[data-lazy-loaded][src], iframe[data-lazy-loaded][src]' ).forEach( element => {\n\t\t\telement.setAttribute( 'data-src', element.getAttribute( 'src' ) );\n\t\t\telement.removeAttribute( 'src' );\n\t\t} );\n\n\t\t// Reset lazy-loaded media elements with children\n\t\tqueryAll( slide, 'video[data-lazy-loaded] source[src], audio source[src]' ).forEach( source => {\n\t\t\tsource.setAttribute( 'data-src', source.getAttribute( 'src' ) );\n\t\t\tsource.removeAttribute( 'src' );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Enforces origin-specific format rules for embedded media.\n\t */\n\tformatEmbeddedContent() {\n\n\t\tlet _appendParamToIframeSource = ( sourceAttribute, sourceURL, param ) => {\n\t\t\tqueryAll( this.Reveal.getSlidesElement(), 'iframe['+ sourceAttribute +'*=\"'+ sourceURL +'\"]' ).forEach( el => {\n\t\t\t\tlet src = el.getAttribute( sourceAttribute );\n\t\t\t\tif( src && src.indexOf( param ) === -1 ) {\n\t\t\t\t\tel.setAttribute( sourceAttribute, src + ( !/\\?/.test( src ) ? '?' : '&' ) + param );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\t// YouTube frames must include \"?enablejsapi=1\"\n\t\t_appendParamToIframeSource( 'src', 'youtube.com/embed/', 'enablejsapi=1' );\n\t\t_appendParamToIframeSource( 'data-src', 'youtube.com/embed/', 'enablejsapi=1' );\n\n\t\t// Vimeo frames must include \"?api=1\"\n\t\t_appendParamToIframeSource( 'src', 'player.vimeo.com/', 'api=1' );\n\t\t_appendParamToIframeSource( 'data-src', 'player.vimeo.com/', 'api=1' );\n\n\t}\n\n\t/**\n\t * Start playback of any embedded content inside of\n\t * the given element.\n\t *\n\t * @param {HTMLElement} element\n\t */\n\tstartEmbeddedContent( element ) {\n\n\t\tif( element && !this.Reveal.isSpeakerNotes() ) {\n\n\t\t\t// Restart GIFs\n\t\t\tqueryAll( element, 'img[src$=\".gif\"]' ).forEach( el => {\n\t\t\t\t// Setting the same unchanged source like this was confirmed\n\t\t\t\t// to work in Chrome, FF & Safari\n\t\t\t\tel.setAttribute( 'src', el.getAttribute( 'src' ) );\n\t\t\t} );\n\n\t\t\t// HTML5 media elements\n\t\t\tqueryAll( element, 'video, audio' ).forEach( el => {\n\t\t\t\tif( closest( el, '.fragment' ) && !closest( el, '.fragment.visible' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Prefer an explicit global autoplay setting\n\t\t\t\tlet autoplay = this.Reveal.getConfig().autoPlayMedia;\n\n\t\t\t\t// If no global setting is available, fall back on the element's\n\t\t\t\t// own autoplay setting\n\t\t\t\tif( typeof autoplay !== 'boolean' ) {\n\t\t\t\t\tautoplay = el.hasAttribute( 'data-autoplay' ) || !!closest( el, '.slide-background' );\n\t\t\t\t}\n\n\t\t\t\tif( autoplay && typeof el.play === 'function' ) {\n\n\t\t\t\t\t// If the media is ready, start playback\n\t\t\t\t\tif( el.readyState > 1 ) {\n\t\t\t\t\t\tthis.startEmbeddedMedia( { target: el } );\n\t\t\t\t\t}\n\t\t\t\t\t// Mobile devices never fire a loaded event so instead\n\t\t\t\t\t// of waiting, we initiate playback\n\t\t\t\t\telse if( isMobile ) {\n\t\t\t\t\t\tlet promise = el.play();\n\n\t\t\t\t\t\t// If autoplay does not work, ensure that the controls are visible so\n\t\t\t\t\t\t// that the viewer can start the media on their own\n\t\t\t\t\t\tif( promise && typeof promise.catch === 'function' && el.controls === false ) {\n\t\t\t\t\t\t\tpromise.catch( () => {\n\t\t\t\t\t\t\t\tel.controls = true;\n\n\t\t\t\t\t\t\t\t// Once the video does start playing, hide the controls again\n\t\t\t\t\t\t\t\tel.addEventListener( 'play', () => {\n\t\t\t\t\t\t\t\t\tel.controls = false;\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// If the media isn't loaded, wait before playing\n\t\t\t\t\telse {\n\t\t\t\t\t\tel.removeEventListener( 'loadeddata', this.startEmbeddedMedia ); // remove first to avoid dupes\n\t\t\t\t\t\tel.addEventListener( 'loadeddata', this.startEmbeddedMedia );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Normal iframes\n\t\t\tqueryAll( element, 'iframe[src]' ).forEach( el => {\n\t\t\t\tif( closest( el, '.fragment' ) && !closest( el, '.fragment.visible' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.startEmbeddedIframe( { target: el } );\n\t\t\t} );\n\n\t\t\t// Lazy loading iframes\n\t\t\tqueryAll( element, 'iframe[data-src]' ).forEach( el => {\n\t\t\t\tif( closest( el, '.fragment' ) && !closest( el, '.fragment.visible' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif( el.getAttribute( 'src' ) !== el.getAttribute( 'data-src' ) ) {\n\t\t\t\t\tel.removeEventListener( 'load', this.startEmbeddedIframe ); // remove first to avoid dupes\n\t\t\t\t\tel.addEventListener( 'load', this.startEmbeddedIframe );\n\t\t\t\t\tel.setAttribute( 'src', el.getAttribute( 'data-src' ) );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Starts playing an embedded video/audio element after\n\t * it has finished loading.\n\t *\n\t * @param {object} event\n\t */\n\tstartEmbeddedMedia( event ) {\n\n\t\tlet isAttachedToDOM = !!closest( event.target, 'html' ),\n\t\t\tisVisible \t\t= !!closest( event.target, '.present' );\n\n\t\tif( isAttachedToDOM && isVisible ) {\n\t\t\tevent.target.currentTime = 0;\n\t\t\tevent.target.play();\n\t\t}\n\n\t\tevent.target.removeEventListener( 'loadeddata', this.startEmbeddedMedia );\n\n\t}\n\n\t/**\n\t * \"Starts\" the content of an embedded iframe using the\n\t * postMessage API.\n\t *\n\t * @param {object} event\n\t */\n\tstartEmbeddedIframe( event ) {\n\n\t\tlet iframe = event.target;\n\n\t\tif( iframe && iframe.contentWindow ) {\n\n\t\t\tlet isAttachedToDOM = !!closest( event.target, 'html' ),\n\t\t\t\tisVisible \t\t= !!closest( event.target, '.present' );\n\n\t\t\tif( isAttachedToDOM && isVisible ) {\n\n\t\t\t\t// Prefer an explicit global autoplay setting\n\t\t\t\tlet autoplay = this.Reveal.getConfig().autoPlayMedia;\n\n\t\t\t\t// If no global setting is available, fall back on the element's\n\t\t\t\t// own autoplay setting\n\t\t\t\tif( typeof autoplay !== 'boolean' ) {\n\t\t\t\t\tautoplay = iframe.hasAttribute( 'data-autoplay' ) || !!closest( iframe, '.slide-background' );\n\t\t\t\t}\n\n\t\t\t\t// YouTube postMessage API\n\t\t\t\tif( /youtube\\.com\\/embed\\//.test( iframe.getAttribute( 'src' ) ) && autoplay ) {\n\t\t\t\t\tiframe.contentWindow.postMessage( '{\"event\":\"command\",\"func\":\"playVideo\",\"args\":\"\"}', '*' );\n\t\t\t\t}\n\t\t\t\t// Vimeo postMessage API\n\t\t\t\telse if( /player\\.vimeo\\.com\\//.test( iframe.getAttribute( 'src' ) ) && autoplay ) {\n\t\t\t\t\tiframe.contentWindow.postMessage( '{\"method\":\"play\"}', '*' );\n\t\t\t\t}\n\t\t\t\t// Generic postMessage API\n\t\t\t\telse {\n\t\t\t\t\tiframe.contentWindow.postMessage( 'slide:start', '*' );\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Stop playback of any embedded content inside of\n\t * the targeted slide.\n\t *\n\t * @param {HTMLElement} element\n\t */\n\tstopEmbeddedContent( element, options = {} ) {\n\n\t\toptions = extend( {\n\t\t\t// Defaults\n\t\t\tunloadIframes: true\n\t\t}, options );\n\n\t\tif( element && element.parentNode ) {\n\t\t\t// HTML5 media elements\n\t\t\tqueryAll( element, 'video, audio' ).forEach( el => {\n\t\t\t\tif( !el.hasAttribute( 'data-ignore' ) && typeof el.pause === 'function' ) {\n\t\t\t\t\tel.setAttribute('data-paused-by-reveal', '');\n\t\t\t\t\tel.pause();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Generic postMessage API for non-lazy loaded iframes\n\t\t\tqueryAll( element, 'iframe' ).forEach( el => {\n\t\t\t\tif( el.contentWindow ) el.contentWindow.postMessage( 'slide:stop', '*' );\n\t\t\t\tel.removeEventListener( 'load', this.startEmbeddedIframe );\n\t\t\t});\n\n\t\t\t// YouTube postMessage API\n\t\t\tqueryAll( element, 'iframe[src*=\"youtube.com/embed/\"]' ).forEach( el => {\n\t\t\t\tif( !el.hasAttribute( 'data-ignore' ) && el.contentWindow && typeof el.contentWindow.postMessage === 'function' ) {\n\t\t\t\t\tel.contentWindow.postMessage( '{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*' );\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Vimeo postMessage API\n\t\t\tqueryAll( element, 'iframe[src*=\"player.vimeo.com/\"]' ).forEach( el => {\n\t\t\t\tif( !el.hasAttribute( 'data-ignore' ) && el.contentWindow && typeof el.contentWindow.postMessage === 'function' ) {\n\t\t\t\t\tel.contentWindow.postMessage( '{\"method\":\"pause\"}', '*' );\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif( options.unloadIframes === true ) {\n\t\t\t\t// Unload lazy-loaded iframes\n\t\t\t\tqueryAll( element, 'iframe[data-src]' ).forEach( el => {\n\t\t\t\t\t// Only removing the src doesn't actually unload the frame\n\t\t\t\t\t// in all browsers (Firefox) so we set it to blank first\n\t\t\t\t\tel.setAttribute( 'src', 'about:blank' );\n\t\t\t\t\tel.removeAttribute( 'src' );\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t}\n\n}\n","/**\n * Handles the display of reveal.js' optional slide number.\n */\nexport default class SlideNumber {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t}\n\n\trender() {\n\n\t\tthis.element = document.createElement( 'div' );\n\t\tthis.element.className = 'slide-number';\n\t\tthis.Reveal.getRevealElement().appendChild( this.element );\n\n\t}\n\n\t/**\n\t * Called when the reveal.js config is updated.\n\t */\n\tconfigure( config, oldConfig ) {\n\n\t\tlet slideNumberDisplay = 'none';\n\t\tif( config.slideNumber && !this.Reveal.isPrintingPDF() ) {\n\t\t\tif( config.showSlideNumber === 'all' ) {\n\t\t\t\tslideNumberDisplay = 'block';\n\t\t\t}\n\t\t\telse if( config.showSlideNumber === 'speaker' && this.Reveal.isSpeakerNotes() ) {\n\t\t\t\tslideNumberDisplay = 'block';\n\t\t\t}\n\t\t}\n\n\t\tthis.element.style.display = slideNumberDisplay;\n\n\t}\n\n\t/**\n\t * Updates the slide number to match the current slide.\n\t */\n\tupdate() {\n\n\t\t// Update slide number if enabled\n\t\tif( this.Reveal.getConfig().slideNumber && this.element ) {\n\t\t\tthis.element.innerHTML = this.getSlideNumber();\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns the HTML string corresponding to the current slide\n\t * number, including formatting.\n\t */\n\tgetSlideNumber( slide = this.Reveal.getCurrentSlide() ) {\n\n\t\tlet config = this.Reveal.getConfig();\n\t\tlet value;\n\t\tlet format = 'h.v';\n\n\t\tif ( typeof config.slideNumber === 'function' ) {\n\t\t\tvalue = config.slideNumber( slide );\n\t\t} else {\n\t\t\t// Check if a custom number format is available\n\t\t\tif( typeof config.slideNumber === 'string' ) {\n\t\t\t\tformat = config.slideNumber;\n\t\t\t}\n\n\t\t\t// If there are ONLY vertical slides in this deck, always use\n\t\t\t// a flattened slide number\n\t\t\tif( !/c/.test( format ) && this.Reveal.getHorizontalSlides().length === 1 ) {\n\t\t\t\tformat = 'c';\n\t\t\t}\n\n\t\t\t// Offset the current slide number by 1 to make it 1-indexed\n\t\t\tlet horizontalOffset = slide && slide.dataset.visibility === 'uncounted' ? 0 : 1;\n\n\t\t\tvalue = [];\n\t\t\tswitch( format ) {\n\t\t\t\tcase 'c':\n\t\t\t\t\tvalue.push( this.Reveal.getSlidePastCount( slide ) + horizontalOffset );\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'c/t':\n\t\t\t\t\tvalue.push( this.Reveal.getSlidePastCount( slide ) + horizontalOffset, '/', this.Reveal.getTotalSlides() );\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet indices = this.Reveal.getIndices( slide );\n\t\t\t\t\tvalue.push( indices.h + horizontalOffset );\n\t\t\t\t\tlet sep = format === 'h/v' ? '/' : '.';\n\t\t\t\t\tif( this.Reveal.isVerticalSlide( slide ) ) value.push( sep, indices.v + 1 );\n\t\t\t}\n\t\t}\n\n\t\tlet url = '#' + this.Reveal.location.getHash( slide );\n\t\treturn this.formatNumber( value[0], value[1], value[2], url );\n\n\t}\n\n\t/**\n\t * Applies HTML formatting to a slide number before it's\n\t * written to the DOM.\n\t *\n\t * @param {number} a Current slide\n\t * @param {string} delimiter Character to separate slide numbers\n\t * @param {(number|*)} b Total slides\n\t * @param {HTMLElement} [url='#'+locationHash()] The url to link to\n\t * @return {string} HTML string fragment\n\t */\n\tformatNumber( a, delimiter, b, url = '#' + this.Reveal.location.getHash() ) {\n\n\t\tif( typeof b === 'number' && !isNaN( b ) ) {\n\t\t\treturn `\n\t\t\t\t\t${a}\n\t\t\t\t\t${delimiter}\n\t\t\t\t\t${b}\n\t\t\t\t\t`;\n\t\t}\n\t\telse {\n\t\t\treturn `\n\t\t\t\t\t${a}\n\t\t\t\t\t`;\n\t\t}\n\n\t}\n\n\tdestroy() {\n\n\t\tthis.element.remove();\n\n\t}\n\n}","/**\n * Converts various color input formats to an {r:0,g:0,b:0} object.\n *\n * @param {string} color The string representation of a color\n * @example\n * colorToRgb('#000');\n * @example\n * colorToRgb('#000000');\n * @example\n * colorToRgb('rgb(0,0,0)');\n * @example\n * colorToRgb('rgba(0,0,0)');\n *\n * @return {{r: number, g: number, b: number, [a]: number}|null}\n */\nexport const colorToRgb = ( color ) => {\n\n\tlet hex3 = color.match( /^#([0-9a-f]{3})$/i );\n\tif( hex3 && hex3[1] ) {\n\t\thex3 = hex3[1];\n\t\treturn {\n\t\t\tr: parseInt( hex3.charAt( 0 ), 16 ) * 0x11,\n\t\t\tg: parseInt( hex3.charAt( 1 ), 16 ) * 0x11,\n\t\t\tb: parseInt( hex3.charAt( 2 ), 16 ) * 0x11\n\t\t};\n\t}\n\n\tlet hex6 = color.match( /^#([0-9a-f]{6})$/i );\n\tif( hex6 && hex6[1] ) {\n\t\thex6 = hex6[1];\n\t\treturn {\n\t\t\tr: parseInt( hex6.slice( 0, 2 ), 16 ),\n\t\t\tg: parseInt( hex6.slice( 2, 4 ), 16 ),\n\t\t\tb: parseInt( hex6.slice( 4, 6 ), 16 )\n\t\t};\n\t}\n\n\tlet rgb = color.match( /^rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/i );\n\tif( rgb ) {\n\t\treturn {\n\t\t\tr: parseInt( rgb[1], 10 ),\n\t\t\tg: parseInt( rgb[2], 10 ),\n\t\t\tb: parseInt( rgb[3], 10 )\n\t\t};\n\t}\n\n\tlet rgba = color.match( /^rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\,\\s*([\\d]+|[\\d]*.[\\d]+)\\s*\\)$/i );\n\tif( rgba ) {\n\t\treturn {\n\t\t\tr: parseInt( rgba[1], 10 ),\n\t\t\tg: parseInt( rgba[2], 10 ),\n\t\t\tb: parseInt( rgba[3], 10 ),\n\t\t\ta: parseFloat( rgba[4] )\n\t\t};\n\t}\n\n\treturn null;\n\n}\n\n/**\n * Calculates brightness on a scale of 0-255.\n *\n * @param {string} color See colorToRgb for supported formats.\n * @see {@link colorToRgb}\n */\nexport const colorBrightness = ( color ) => {\n\n\tif( typeof color === 'string' ) color = colorToRgb( color );\n\n\tif( color ) {\n\t\treturn ( color.r * 299 + color.g * 587 + color.b * 114 ) / 1000;\n\t}\n\n\treturn null;\n\n}","import { queryAll } from '../utils/util.js'\nimport { colorToRgb, colorBrightness } from '../utils/color.js'\n\n/**\n * Creates and updates slide backgrounds.\n */\nexport default class Backgrounds {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t}\n\n\trender() {\n\n\t\tthis.element = document.createElement( 'div' );\n\t\tthis.element.className = 'backgrounds';\n\t\tthis.Reveal.getRevealElement().appendChild( this.element );\n\n\t}\n\n\t/**\n\t * Creates the slide background elements and appends them\n\t * to the background container. One element is created per\n\t * slide no matter if the given slide has visible background.\n\t */\n\tcreate() {\n\n\t\t// Clear prior backgrounds\n\t\tthis.element.innerHTML = '';\n\t\tthis.element.classList.add( 'no-transition' );\n\n\t\t// Iterate over all horizontal slides\n\t\tthis.Reveal.getHorizontalSlides().forEach( slideh => {\n\n\t\t\tlet backgroundStack = this.createBackground( slideh, this.element );\n\n\t\t\t// Iterate over all vertical slides\n\t\t\tqueryAll( slideh, 'section' ).forEach( slidev => {\n\n\t\t\t\tthis.createBackground( slidev, backgroundStack );\n\n\t\t\t\tbackgroundStack.classList.add( 'stack' );\n\n\t\t\t} );\n\n\t\t} );\n\n\t\t// Add parallax background if specified\n\t\tif( this.Reveal.getConfig().parallaxBackgroundImage ) {\n\n\t\t\tthis.element.style.backgroundImage = 'url(\"' + this.Reveal.getConfig().parallaxBackgroundImage + '\")';\n\t\t\tthis.element.style.backgroundSize = this.Reveal.getConfig().parallaxBackgroundSize;\n\t\t\tthis.element.style.backgroundRepeat = this.Reveal.getConfig().parallaxBackgroundRepeat;\n\t\t\tthis.element.style.backgroundPosition = this.Reveal.getConfig().parallaxBackgroundPosition;\n\n\t\t\t// Make sure the below properties are set on the element - these properties are\n\t\t\t// needed for proper transitions to be set on the element via CSS. To remove\n\t\t\t// annoying background slide-in effect when the presentation starts, apply\n\t\t\t// these properties after short time delay\n\t\t\tsetTimeout( () => {\n\t\t\t\tthis.Reveal.getRevealElement().classList.add( 'has-parallax-background' );\n\t\t\t}, 1 );\n\n\t\t}\n\t\telse {\n\n\t\t\tthis.element.style.backgroundImage = '';\n\t\t\tthis.Reveal.getRevealElement().classList.remove( 'has-parallax-background' );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Creates a background for the given slide.\n\t *\n\t * @param {HTMLElement} slide\n\t * @param {HTMLElement} container The element that the background\n\t * should be appended to\n\t * @return {HTMLElement} New background div\n\t */\n\tcreateBackground( slide, container ) {\n\n\t\t// Main slide background element\n\t\tlet element = document.createElement( 'div' );\n\t\telement.className = 'slide-background ' + slide.className.replace( /present|past|future/, '' );\n\n\t\t// Inner background element that wraps images/videos/iframes\n\t\tlet contentElement = document.createElement( 'div' );\n\t\tcontentElement.className = 'slide-background-content';\n\n\t\telement.appendChild( contentElement );\n\t\tcontainer.appendChild( element );\n\n\t\tslide.slideBackgroundElement = element;\n\t\tslide.slideBackgroundContentElement = contentElement;\n\n\t\t// Syncs the background to reflect all current background settings\n\t\tthis.sync( slide );\n\n\t\treturn element;\n\n\t}\n\n\t/**\n\t * Renders all of the visual properties of a slide background\n\t * based on the various background attributes.\n\t *\n\t * @param {HTMLElement} slide\n\t */\n\tsync( slide ) {\n\n\t\tconst element = slide.slideBackgroundElement,\n\t\t\tcontentElement = slide.slideBackgroundContentElement;\n\n\t\tconst data = {\n\t\t\tbackground: slide.getAttribute( 'data-background' ),\n\t\t\tbackgroundSize: slide.getAttribute( 'data-background-size' ),\n\t\t\tbackgroundImage: slide.getAttribute( 'data-background-image' ),\n\t\t\tbackgroundVideo: slide.getAttribute( 'data-background-video' ),\n\t\t\tbackgroundIframe: slide.getAttribute( 'data-background-iframe' ),\n\t\t\tbackgroundColor: slide.getAttribute( 'data-background-color' ),\n\t\t\tbackgroundRepeat: slide.getAttribute( 'data-background-repeat' ),\n\t\t\tbackgroundPosition: slide.getAttribute( 'data-background-position' ),\n\t\t\tbackgroundTransition: slide.getAttribute( 'data-background-transition' ),\n\t\t\tbackgroundOpacity: slide.getAttribute( 'data-background-opacity' ),\n\t\t};\n\n\t\tconst dataPreload = slide.hasAttribute( 'data-preload' );\n\n\t\t// Reset the prior background state in case this is not the\n\t\t// initial sync\n\t\tslide.classList.remove( 'has-dark-background' );\n\t\tslide.classList.remove( 'has-light-background' );\n\n\t\telement.removeAttribute( 'data-loaded' );\n\t\telement.removeAttribute( 'data-background-hash' );\n\t\telement.removeAttribute( 'data-background-size' );\n\t\telement.removeAttribute( 'data-background-transition' );\n\t\telement.style.backgroundColor = '';\n\n\t\tcontentElement.style.backgroundSize = '';\n\t\tcontentElement.style.backgroundRepeat = '';\n\t\tcontentElement.style.backgroundPosition = '';\n\t\tcontentElement.style.backgroundImage = '';\n\t\tcontentElement.style.opacity = '';\n\t\tcontentElement.innerHTML = '';\n\n\t\tif( data.background ) {\n\t\t\t// Auto-wrap image urls in url(...)\n\t\t\tif( /^(http|file|\\/\\/)/gi.test( data.background ) || /\\.(svg|png|jpg|jpeg|gif|bmp)([?#\\s]|$)/gi.test( data.background ) ) {\n\t\t\t\tslide.setAttribute( 'data-background-image', data.background );\n\t\t\t}\n\t\t\telse {\n\t\t\t\telement.style.background = data.background;\n\t\t\t}\n\t\t}\n\n\t\t// Create a hash for this combination of background settings.\n\t\t// This is used to determine when two slide backgrounds are\n\t\t// the same.\n\t\tif( data.background || data.backgroundColor || data.backgroundImage || data.backgroundVideo || data.backgroundIframe ) {\n\t\t\telement.setAttribute( 'data-background-hash', data.background +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.backgroundSize +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.backgroundImage +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.backgroundVideo +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.backgroundIframe +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.backgroundColor +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.backgroundRepeat +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.backgroundPosition +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.backgroundTransition +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.backgroundOpacity );\n\t\t}\n\n\t\t// Additional and optional background properties\n\t\tif( data.backgroundSize ) element.setAttribute( 'data-background-size', data.backgroundSize );\n\t\tif( data.backgroundColor ) element.style.backgroundColor = data.backgroundColor;\n\t\tif( data.backgroundTransition ) element.setAttribute( 'data-background-transition', data.backgroundTransition );\n\n\t\tif( dataPreload ) element.setAttribute( 'data-preload', '' );\n\n\t\t// Background image options are set on the content wrapper\n\t\tif( data.backgroundSize ) contentElement.style.backgroundSize = data.backgroundSize;\n\t\tif( data.backgroundRepeat ) contentElement.style.backgroundRepeat = data.backgroundRepeat;\n\t\tif( data.backgroundPosition ) contentElement.style.backgroundPosition = data.backgroundPosition;\n\t\tif( data.backgroundOpacity ) contentElement.style.opacity = data.backgroundOpacity;\n\n\t\t// If this slide has a background color, we add a class that\n\t\t// signals if it is light or dark. If the slide has no background\n\t\t// color, no class will be added\n\t\tlet contrastColor = data.backgroundColor;\n\n\t\t// If no bg color was found, or it cannot be converted by colorToRgb, check the computed background\n\t\tif( !contrastColor || !colorToRgb( contrastColor ) ) {\n\t\t\tlet computedBackgroundStyle = window.getComputedStyle( element );\n\t\t\tif( computedBackgroundStyle && computedBackgroundStyle.backgroundColor ) {\n\t\t\t\tcontrastColor = computedBackgroundStyle.backgroundColor;\n\t\t\t}\n\t\t}\n\n\t\tif( contrastColor ) {\n\t\t\tconst rgb = colorToRgb( contrastColor );\n\n\t\t\t// Ignore fully transparent backgrounds. Some browsers return\n\t\t\t// rgba(0,0,0,0) when reading the computed background color of\n\t\t\t// an element with no background\n\t\t\tif( rgb && rgb.a !== 0 ) {\n\t\t\t\tif( colorBrightness( contrastColor ) < 128 ) {\n\t\t\t\t\tslide.classList.add( 'has-dark-background' );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tslide.classList.add( 'has-light-background' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates the background elements to reflect the current\n\t * slide.\n\t *\n\t * @param {boolean} includeAll If true, the backgrounds of\n\t * all vertical slides (not just the present) will be updated.\n\t */\n\tupdate( includeAll = false ) {\n\n\t\tlet currentSlide = this.Reveal.getCurrentSlide();\n\t\tlet indices = this.Reveal.getIndices();\n\n\t\tlet currentBackground = null;\n\n\t\t// Reverse past/future classes when in RTL mode\n\t\tlet horizontalPast = this.Reveal.getConfig().rtl ? 'future' : 'past',\n\t\t\thorizontalFuture = this.Reveal.getConfig().rtl ? 'past' : 'future';\n\n\t\t// Update the classes of all backgrounds to match the\n\t\t// states of their slides (past/present/future)\n\t\tArray.from( this.element.childNodes ).forEach( ( backgroundh, h ) => {\n\n\t\t\tbackgroundh.classList.remove( 'past', 'present', 'future' );\n\n\t\t\tif( h < indices.h ) {\n\t\t\t\tbackgroundh.classList.add( horizontalPast );\n\t\t\t}\n\t\t\telse if ( h > indices.h ) {\n\t\t\t\tbackgroundh.classList.add( horizontalFuture );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbackgroundh.classList.add( 'present' );\n\n\t\t\t\t// Store a reference to the current background element\n\t\t\t\tcurrentBackground = backgroundh;\n\t\t\t}\n\n\t\t\tif( includeAll || h === indices.h ) {\n\t\t\t\tqueryAll( backgroundh, '.slide-background' ).forEach( ( backgroundv, v ) => {\n\n\t\t\t\t\tbackgroundv.classList.remove( 'past', 'present', 'future' );\n\n\t\t\t\t\tif( v < indices.v ) {\n\t\t\t\t\t\tbackgroundv.classList.add( 'past' );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( v > indices.v ) {\n\t\t\t\t\t\tbackgroundv.classList.add( 'future' );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tbackgroundv.classList.add( 'present' );\n\n\t\t\t\t\t\t// Only if this is the present horizontal and vertical slide\n\t\t\t\t\t\tif( h === indices.h ) currentBackground = backgroundv;\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\t\t\t}\n\n\t\t} );\n\n\t\t// Stop content inside of previous backgrounds\n\t\tif( this.previousBackground ) {\n\n\t\t\tthis.Reveal.slideContent.stopEmbeddedContent( this.previousBackground, { unloadIframes: !this.Reveal.slideContent.shouldPreload( this.previousBackground ) } );\n\n\t\t}\n\n\t\t// Start content in the current background\n\t\tif( currentBackground ) {\n\n\t\t\tthis.Reveal.slideContent.startEmbeddedContent( currentBackground );\n\n\t\t\tlet currentBackgroundContent = currentBackground.querySelector( '.slide-background-content' );\n\t\t\tif( currentBackgroundContent ) {\n\n\t\t\t\tlet backgroundImageURL = currentBackgroundContent.style.backgroundImage || '';\n\n\t\t\t\t// Restart GIFs (doesn't work in Firefox)\n\t\t\t\tif( /\\.gif/i.test( backgroundImageURL ) ) {\n\t\t\t\t\tcurrentBackgroundContent.style.backgroundImage = '';\n\t\t\t\t\twindow.getComputedStyle( currentBackgroundContent ).opacity;\n\t\t\t\t\tcurrentBackgroundContent.style.backgroundImage = backgroundImageURL;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Don't transition between identical backgrounds. This\n\t\t\t// prevents unwanted flicker.\n\t\t\tlet previousBackgroundHash = this.previousBackground ? this.previousBackground.getAttribute( 'data-background-hash' ) : null;\n\t\t\tlet currentBackgroundHash = currentBackground.getAttribute( 'data-background-hash' );\n\t\t\tif( currentBackgroundHash && currentBackgroundHash === previousBackgroundHash && currentBackground !== this.previousBackground ) {\n\t\t\t\tthis.element.classList.add( 'no-transition' );\n\t\t\t}\n\n\t\t\tthis.previousBackground = currentBackground;\n\n\t\t}\n\n\t\t// If there's a background brightness flag for this slide,\n\t\t// bubble it to the .reveal container\n\t\tif( currentSlide ) {\n\t\t\t[ 'has-light-background', 'has-dark-background' ].forEach( classToBubble => {\n\t\t\t\tif( currentSlide.classList.contains( classToBubble ) ) {\n\t\t\t\t\tthis.Reveal.getRevealElement().classList.add( classToBubble );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.Reveal.getRevealElement().classList.remove( classToBubble );\n\t\t\t\t}\n\t\t\t}, this );\n\t\t}\n\n\t\t// Allow the first background to apply without transition\n\t\tsetTimeout( () => {\n\t\t\tthis.element.classList.remove( 'no-transition' );\n\t\t}, 1 );\n\n\t}\n\n\t/**\n\t * Updates the position of the parallax background based\n\t * on the current slide index.\n\t */\n\tupdateParallax() {\n\n\t\tlet indices = this.Reveal.getIndices();\n\n\t\tif( this.Reveal.getConfig().parallaxBackgroundImage ) {\n\n\t\t\tlet horizontalSlides = this.Reveal.getHorizontalSlides(),\n\t\t\t\tverticalSlides = this.Reveal.getVerticalSlides();\n\n\t\t\tlet backgroundSize = this.element.style.backgroundSize.split( ' ' ),\n\t\t\t\tbackgroundWidth, backgroundHeight;\n\n\t\t\tif( backgroundSize.length === 1 ) {\n\t\t\t\tbackgroundWidth = backgroundHeight = parseInt( backgroundSize[0], 10 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbackgroundWidth = parseInt( backgroundSize[0], 10 );\n\t\t\t\tbackgroundHeight = parseInt( backgroundSize[1], 10 );\n\t\t\t}\n\n\t\t\tlet slideWidth = this.element.offsetWidth,\n\t\t\t\thorizontalSlideCount = horizontalSlides.length,\n\t\t\t\thorizontalOffsetMultiplier,\n\t\t\t\thorizontalOffset;\n\n\t\t\tif( typeof this.Reveal.getConfig().parallaxBackgroundHorizontal === 'number' ) {\n\t\t\t\thorizontalOffsetMultiplier = this.Reveal.getConfig().parallaxBackgroundHorizontal;\n\t\t\t}\n\t\t\telse {\n\t\t\t\thorizontalOffsetMultiplier = horizontalSlideCount > 1 ? ( backgroundWidth - slideWidth ) / ( horizontalSlideCount-1 ) : 0;\n\t\t\t}\n\n\t\t\thorizontalOffset = horizontalOffsetMultiplier * indices.h * -1;\n\n\t\t\tlet slideHeight = this.element.offsetHeight,\n\t\t\t\tverticalSlideCount = verticalSlides.length,\n\t\t\t\tverticalOffsetMultiplier,\n\t\t\t\tverticalOffset;\n\n\t\t\tif( typeof this.Reveal.getConfig().parallaxBackgroundVertical === 'number' ) {\n\t\t\t\tverticalOffsetMultiplier = this.Reveal.getConfig().parallaxBackgroundVertical;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tverticalOffsetMultiplier = ( backgroundHeight - slideHeight ) / ( verticalSlideCount-1 );\n\t\t\t}\n\n\t\t\tverticalOffset = verticalSlideCount > 0 ? verticalOffsetMultiplier * indices.v : 0;\n\n\t\t\tthis.element.style.backgroundPosition = horizontalOffset + 'px ' + -verticalOffset + 'px';\n\n\t\t}\n\n\t}\n\n\tdestroy() {\n\n\t\tthis.element.remove();\n\n\t}\n\n}\n","\nexport const SLIDES_SELECTOR = '.slides section';\nexport const HORIZONTAL_SLIDES_SELECTOR = '.slides>section';\nexport const VERTICAL_SLIDES_SELECTOR = '.slides>section.present>section';\n\n// Methods that may not be invoked via the postMessage API\nexport const POST_MESSAGE_METHOD_BLACKLIST = /registerPlugin|registerKeyboardShortcut|addKeyBinding|addEventListener/;\n\n// Regex for retrieving the fragment style from a class attribute\nexport const FRAGMENT_STYLE_REGEX = /fade-(down|up|right|left|out|in-then-out|in-then-semi-out)|semi-fade-out|current-visible|shrink|grow/;","import { queryAll, extend, createStyleSheet, matches, closest } from '../utils/util.js'\nimport { FRAGMENT_STYLE_REGEX } from '../utils/constants.js'\n\n// Counter used to generate unique IDs for auto-animated elements\nlet autoAnimateCounter = 0;\n\n/**\n * Automatically animates matching elements across\n * slides with the [data-auto-animate] attribute.\n */\nexport default class AutoAnimate {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t}\n\n\t/**\n\t * Runs an auto-animation between the given slides.\n\t *\n\t * @param {HTMLElement} fromSlide\n\t * @param {HTMLElement} toSlide\n\t */\n\trun( fromSlide, toSlide ) {\n\n\t\t// Clean up after prior animations\n\t\tthis.reset();\n\n\t\tlet allSlides = this.Reveal.getSlides();\n\t\tlet toSlideIndex = allSlides.indexOf( toSlide );\n\t\tlet fromSlideIndex = allSlides.indexOf( fromSlide );\n\n\t\t// Ensure that both slides are auto-animate targets with the same data-auto-animate-id value\n\t\t// (including null if absent on both) and that data-auto-animate-restart isn't set on the\n\t\t// physically latter slide (independent of slide direction)\n\t\tif( fromSlide.hasAttribute( 'data-auto-animate' ) && toSlide.hasAttribute( 'data-auto-animate' )\n\t\t\t\t&& fromSlide.getAttribute( 'data-auto-animate-id' ) === toSlide.getAttribute( 'data-auto-animate-id' ) \n\t\t\t\t&& !( toSlideIndex > fromSlideIndex ? toSlide : fromSlide ).hasAttribute( 'data-auto-animate-restart' ) ) {\n\n\t\t\t// Create a new auto-animate sheet\n\t\t\tthis.autoAnimateStyleSheet = this.autoAnimateStyleSheet || createStyleSheet();\n\n\t\t\tlet animationOptions = this.getAutoAnimateOptions( toSlide );\n\n\t\t\t// Set our starting state\n\t\t\tfromSlide.dataset.autoAnimate = 'pending';\n\t\t\ttoSlide.dataset.autoAnimate = 'pending';\n\n\t\t\t// Flag the navigation direction, needed for fragment buildup\n\t\t\tanimationOptions.slideDirection = toSlideIndex > fromSlideIndex ? 'forward' : 'backward';\n\n\t\t\t// Inject our auto-animate styles for this transition\n\t\t\tlet css = this.getAutoAnimatableElements( fromSlide, toSlide ).map( elements => {\n\t\t\t\treturn this.autoAnimateElements( elements.from, elements.to, elements.options || {}, animationOptions, autoAnimateCounter++ );\n\t\t\t} );\n\n\t\t\t// Animate unmatched elements, if enabled\n\t\t\tif( toSlide.dataset.autoAnimateUnmatched !== 'false' && this.Reveal.getConfig().autoAnimateUnmatched === true ) {\n\n\t\t\t\t// Our default timings for unmatched elements\n\t\t\t\tlet defaultUnmatchedDuration = animationOptions.duration * 0.8,\n\t\t\t\t\tdefaultUnmatchedDelay = animationOptions.duration * 0.2;\n\n\t\t\t\tthis.getUnmatchedAutoAnimateElements( toSlide ).forEach( unmatchedElement => {\n\n\t\t\t\t\tlet unmatchedOptions = this.getAutoAnimateOptions( unmatchedElement, animationOptions );\n\t\t\t\t\tlet id = 'unmatched';\n\n\t\t\t\t\t// If there is a duration or delay set specifically for this\n\t\t\t\t\t// element our unmatched elements should adhere to those\n\t\t\t\t\tif( unmatchedOptions.duration !== animationOptions.duration || unmatchedOptions.delay !== animationOptions.delay ) {\n\t\t\t\t\t\tid = 'unmatched-' + autoAnimateCounter++;\n\t\t\t\t\t\tcss.push( `[data-auto-animate=\"running\"] [data-auto-animate-target=\"${id}\"] { transition: opacity ${unmatchedOptions.duration}s ease ${unmatchedOptions.delay}s; }` );\n\t\t\t\t\t}\n\n\t\t\t\t\tunmatchedElement.dataset.autoAnimateTarget = id;\n\n\t\t\t\t}, this );\n\n\t\t\t\t// Our default transition for unmatched elements\n\t\t\t\tcss.push( `[data-auto-animate=\"running\"] [data-auto-animate-target=\"unmatched\"] { transition: opacity ${defaultUnmatchedDuration}s ease ${defaultUnmatchedDelay}s; }` );\n\n\t\t\t}\n\n\t\t\t// Setting the whole chunk of CSS at once is the most\n\t\t\t// efficient way to do this. Using sheet.insertRule\n\t\t\t// is multiple factors slower.\n\t\t\tthis.autoAnimateStyleSheet.innerHTML = css.join( '' );\n\n\t\t\t// Start the animation next cycle\n\t\t\trequestAnimationFrame( () => {\n\t\t\t\tif( this.autoAnimateStyleSheet ) {\n\t\t\t\t\t// This forces our newly injected styles to be applied in Firefox\n\t\t\t\t\tgetComputedStyle( this.autoAnimateStyleSheet ).fontWeight;\n\n\t\t\t\t\ttoSlide.dataset.autoAnimate = 'running';\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.Reveal.dispatchEvent({\n\t\t\t\ttype: 'autoanimate',\n\t\t\t\tdata: {\n\t\t\t\t\tfromSlide,\n\t\t\t\t\ttoSlide,\n\t\t\t\t\tsheet: this.autoAnimateStyleSheet\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Rolls back all changes that we've made to the DOM so\n\t * that as part of animating.\n\t */\n\treset() {\n\n\t\t// Reset slides\n\t\tqueryAll( this.Reveal.getRevealElement(), '[data-auto-animate]:not([data-auto-animate=\"\"])' ).forEach( element => {\n\t\t\telement.dataset.autoAnimate = '';\n\t\t} );\n\n\t\t// Reset elements\n\t\tqueryAll( this.Reveal.getRevealElement(), '[data-auto-animate-target]' ).forEach( element => {\n\t\t\tdelete element.dataset.autoAnimateTarget;\n\t\t} );\n\n\t\t// Remove the animation sheet\n\t\tif( this.autoAnimateStyleSheet && this.autoAnimateStyleSheet.parentNode ) {\n\t\t\tthis.autoAnimateStyleSheet.parentNode.removeChild( this.autoAnimateStyleSheet );\n\t\t\tthis.autoAnimateStyleSheet = null;\n\t\t}\n\n\t}\n\n\t/**\n\t * Creates a FLIP animation where the `to` element starts out\n\t * in the `from` element position and animates to its original\n\t * state.\n\t *\n\t * @param {HTMLElement} from\n\t * @param {HTMLElement} to\n\t * @param {Object} elementOptions Options for this element pair\n\t * @param {Object} animationOptions Options set at the slide level\n\t * @param {String} id Unique ID that we can use to identify this\n\t * auto-animate element in the DOM\n\t */\n\tautoAnimateElements( from, to, elementOptions, animationOptions, id ) {\n\n\t\t// 'from' elements are given a data-auto-animate-target with no value,\n\t\t// 'to' elements are are given a data-auto-animate-target with an ID\n\t\tfrom.dataset.autoAnimateTarget = '';\n\t\tto.dataset.autoAnimateTarget = id;\n\n\t\t// Each element may override any of the auto-animate options\n\t\t// like transition easing, duration and delay via data-attributes\n\t\tlet options = this.getAutoAnimateOptions( to, animationOptions );\n\n\t\t// If we're using a custom element matcher the element options\n\t\t// may contain additional transition overrides\n\t\tif( typeof elementOptions.delay !== 'undefined' ) options.delay = elementOptions.delay;\n\t\tif( typeof elementOptions.duration !== 'undefined' ) options.duration = elementOptions.duration;\n\t\tif( typeof elementOptions.easing !== 'undefined' ) options.easing = elementOptions.easing;\n\n\t\tlet fromProps = this.getAutoAnimatableProperties( 'from', from, elementOptions ),\n\t\t\ttoProps = this.getAutoAnimatableProperties( 'to', to, elementOptions );\n\n\t\t// Maintain fragment visibility for matching elements when\n\t\t// we're navigating forwards, this way the viewer won't need\n\t\t// to step through the same fragments twice\n\t\tif( to.classList.contains( 'fragment' ) ) {\n\n\t\t\t// Don't auto-animate the opacity of fragments to avoid\n\t\t\t// conflicts with fragment animations\n\t\t\tdelete toProps.styles['opacity'];\n\n\t\t\tif( from.classList.contains( 'fragment' ) ) {\n\n\t\t\t\tlet fromFragmentStyle = ( from.className.match( FRAGMENT_STYLE_REGEX ) || [''] )[0];\n\t\t\t\tlet toFragmentStyle = ( to.className.match( FRAGMENT_STYLE_REGEX ) || [''] )[0];\n\n\t\t\t\t// Only skip the fragment if the fragment animation style\n\t\t\t\t// remains unchanged\n\t\t\t\tif( fromFragmentStyle === toFragmentStyle && animationOptions.slideDirection === 'forward' ) {\n\t\t\t\t\tto.classList.add( 'visible', 'disabled' );\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// If translation and/or scaling are enabled, css transform\n\t\t// the 'to' element so that it matches the position and size\n\t\t// of the 'from' element\n\t\tif( elementOptions.translate !== false || elementOptions.scale !== false ) {\n\n\t\t\tlet presentationScale = this.Reveal.getScale();\n\n\t\t\tlet delta = {\n\t\t\t\tx: ( fromProps.x - toProps.x ) / presentationScale,\n\t\t\t\ty: ( fromProps.y - toProps.y ) / presentationScale,\n\t\t\t\tscaleX: fromProps.width / toProps.width,\n\t\t\t\tscaleY: fromProps.height / toProps.height\n\t\t\t};\n\n\t\t\t// Limit decimal points to avoid 0.0001px blur and stutter\n\t\t\tdelta.x = Math.round( delta.x * 1000 ) / 1000;\n\t\t\tdelta.y = Math.round( delta.y * 1000 ) / 1000;\n\t\t\tdelta.scaleX = Math.round( delta.scaleX * 1000 ) / 1000;\n\t\t\tdelta.scaleX = Math.round( delta.scaleX * 1000 ) / 1000;\n\n\t\t\tlet translate = elementOptions.translate !== false && ( delta.x !== 0 || delta.y !== 0 ),\n\t\t\t\tscale = elementOptions.scale !== false && ( delta.scaleX !== 0 || delta.scaleY !== 0 );\n\n\t\t\t// No need to transform if nothing's changed\n\t\t\tif( translate || scale ) {\n\n\t\t\t\tlet transform = [];\n\n\t\t\t\tif( translate ) transform.push( `translate(${delta.x}px, ${delta.y}px)` );\n\t\t\t\tif( scale ) transform.push( `scale(${delta.scaleX}, ${delta.scaleY})` );\n\n\t\t\t\tfromProps.styles['transform'] = transform.join( ' ' );\n\t\t\t\tfromProps.styles['transform-origin'] = 'top left';\n\n\t\t\t\ttoProps.styles['transform'] = 'none';\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Delete all unchanged 'to' styles\n\t\tfor( let propertyName in toProps.styles ) {\n\t\t\tconst toValue = toProps.styles[propertyName];\n\t\t\tconst fromValue = fromProps.styles[propertyName];\n\n\t\t\tif( toValue === fromValue ) {\n\t\t\t\tdelete toProps.styles[propertyName];\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// If these property values were set via a custom matcher providing\n\t\t\t\t// an explicit 'from' and/or 'to' value, we always inject those values.\n\t\t\t\tif( toValue.explicitValue === true ) {\n\t\t\t\t\ttoProps.styles[propertyName] = toValue.value;\n\t\t\t\t}\n\n\t\t\t\tif( fromValue.explicitValue === true ) {\n\t\t\t\t\tfromProps.styles[propertyName] = fromValue.value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet css = '';\n\n\t\tlet toStyleProperties = Object.keys( toProps.styles );\n\n\t\t// Only create animate this element IF at least one style\n\t\t// property has changed\n\t\tif( toStyleProperties.length > 0 ) {\n\n\t\t\t// Instantly move to the 'from' state\n\t\t\tfromProps.styles['transition'] = 'none';\n\n\t\t\t// Animate towards the 'to' state\n\t\t\ttoProps.styles['transition'] = `all ${options.duration}s ${options.easing} ${options.delay}s`;\n\t\t\ttoProps.styles['transition-property'] = toStyleProperties.join( ', ' );\n\t\t\ttoProps.styles['will-change'] = toStyleProperties.join( ', ' );\n\n\t\t\t// Build up our custom CSS. We need to override inline styles\n\t\t\t// so we need to make our styles vErY IMPORTANT!1!!\n\t\t\tlet fromCSS = Object.keys( fromProps.styles ).map( propertyName => {\n\t\t\t\treturn propertyName + ': ' + fromProps.styles[propertyName] + ' !important;';\n\t\t\t} ).join( '' );\n\n\t\t\tlet toCSS = Object.keys( toProps.styles ).map( propertyName => {\n\t\t\t\treturn propertyName + ': ' + toProps.styles[propertyName] + ' !important;';\n\t\t\t} ).join( '' );\n\n\t\t\tcss = \t'[data-auto-animate-target=\"'+ id +'\"] {'+ fromCSS +'}' +\n\t\t\t\t\t'[data-auto-animate=\"running\"] [data-auto-animate-target=\"'+ id +'\"] {'+ toCSS +'}';\n\n\t\t}\n\n\t\treturn css;\n\n\t}\n\n\t/**\n\t * Returns the auto-animate options for the given element.\n\t *\n\t * @param {HTMLElement} element Element to pick up options\n\t * from, either a slide or an animation target\n\t * @param {Object} [inheritedOptions] Optional set of existing\n\t * options\n\t */\n\tgetAutoAnimateOptions( element, inheritedOptions ) {\n\n\t\tlet options = {\n\t\t\teasing: this.Reveal.getConfig().autoAnimateEasing,\n\t\t\tduration: this.Reveal.getConfig().autoAnimateDuration,\n\t\t\tdelay: 0\n\t\t};\n\n\t\toptions = extend( options, inheritedOptions );\n\n\t\t// Inherit options from parent elements\n\t\tif( element.parentNode ) {\n\t\t\tlet autoAnimatedParent = closest( element.parentNode, '[data-auto-animate-target]' );\n\t\t\tif( autoAnimatedParent ) {\n\t\t\t\toptions = this.getAutoAnimateOptions( autoAnimatedParent, options );\n\t\t\t}\n\t\t}\n\n\t\tif( element.dataset.autoAnimateEasing ) {\n\t\t\toptions.easing = element.dataset.autoAnimateEasing;\n\t\t}\n\n\t\tif( element.dataset.autoAnimateDuration ) {\n\t\t\toptions.duration = parseFloat( element.dataset.autoAnimateDuration );\n\t\t}\n\n\t\tif( element.dataset.autoAnimateDelay ) {\n\t\t\toptions.delay = parseFloat( element.dataset.autoAnimateDelay );\n\t\t}\n\n\t\treturn options;\n\n\t}\n\n\t/**\n\t * Returns an object containing all of the properties\n\t * that can be auto-animated for the given element and\n\t * their current computed values.\n\t *\n\t * @param {String} direction 'from' or 'to'\n\t */\n\tgetAutoAnimatableProperties( direction, element, elementOptions ) {\n\n\t\tlet config = this.Reveal.getConfig();\n\n\t\tlet properties = { styles: [] };\n\n\t\t// Position and size\n\t\tif( elementOptions.translate !== false || elementOptions.scale !== false ) {\n\t\t\tlet bounds;\n\n\t\t\t// Custom auto-animate may optionally return a custom tailored\n\t\t\t// measurement function\n\t\t\tif( typeof elementOptions.measure === 'function' ) {\n\t\t\t\tbounds = elementOptions.measure( element );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif( config.center ) {\n\t\t\t\t\t// More precise, but breaks when used in combination\n\t\t\t\t\t// with zoom for scaling the deck ¯\\_(ツ)_/¯\n\t\t\t\t\tbounds = element.getBoundingClientRect();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet scale = this.Reveal.getScale();\n\t\t\t\t\tbounds = {\n\t\t\t\t\t\tx: element.offsetLeft * scale,\n\t\t\t\t\t\ty: element.offsetTop * scale,\n\t\t\t\t\t\twidth: element.offsetWidth * scale,\n\t\t\t\t\t\theight: element.offsetHeight * scale\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tproperties.x = bounds.x;\n\t\t\tproperties.y = bounds.y;\n\t\t\tproperties.width = bounds.width;\n\t\t\tproperties.height = bounds.height;\n\t\t}\n\n\t\tconst computedStyles = getComputedStyle( element );\n\n\t\t// CSS styles\n\t\t( elementOptions.styles || config.autoAnimateStyles ).forEach( style => {\n\t\t\tlet value;\n\n\t\t\t// `style` is either the property name directly, or an object\n\t\t\t// definition of a style property\n\t\t\tif( typeof style === 'string' ) style = { property: style };\n\n\t\t\tif( typeof style.from !== 'undefined' && direction === 'from' ) {\n\t\t\t\tvalue = { value: style.from, explicitValue: true };\n\t\t\t}\n\t\t\telse if( typeof style.to !== 'undefined' && direction === 'to' ) {\n\t\t\t\tvalue = { value: style.to, explicitValue: true };\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvalue = computedStyles[style.property];\n\t\t\t}\n\n\t\t\tif( value !== '' ) {\n\t\t\t\tproperties.styles[style.property] = value;\n\t\t\t}\n\t\t} );\n\n\t\treturn properties;\n\n\t}\n\n\t/**\n\t * Get a list of all element pairs that we can animate\n\t * between the given slides.\n\t *\n\t * @param {HTMLElement} fromSlide\n\t * @param {HTMLElement} toSlide\n\t *\n\t * @return {Array} Each value is an array where [0] is\n\t * the element we're animating from and [1] is the\n\t * element we're animating to\n\t */\n\tgetAutoAnimatableElements( fromSlide, toSlide ) {\n\n\t\tlet matcher = typeof this.Reveal.getConfig().autoAnimateMatcher === 'function' ? this.Reveal.getConfig().autoAnimateMatcher : this.getAutoAnimatePairs;\n\n\t\tlet pairs = matcher.call( this, fromSlide, toSlide );\n\n\t\tlet reserved = [];\n\n\t\t// Remove duplicate pairs\n\t\treturn pairs.filter( ( pair, index ) => {\n\t\t\tif( reserved.indexOf( pair.to ) === -1 ) {\n\t\t\t\treserved.push( pair.to );\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} );\n\n\t}\n\n\t/**\n\t * Identifies matching elements between slides.\n\t *\n\t * You can specify a custom matcher function by using\n\t * the `autoAnimateMatcher` config option.\n\t */\n\tgetAutoAnimatePairs( fromSlide, toSlide ) {\n\n\t\tlet pairs = [];\n\n\t\tconst codeNodes = 'pre';\n\t\tconst textNodes = 'h1, h2, h3, h4, h5, h6, p, li';\n\t\tconst mediaNodes = 'img, video, iframe';\n\n\t\t// Eplicit matches via data-id\n\t\tthis.findAutoAnimateMatches( pairs, fromSlide, toSlide, '[data-id]', node => {\n\t\t\treturn node.nodeName + ':::' + node.getAttribute( 'data-id' );\n\t\t} );\n\n\t\t// Text\n\t\tthis.findAutoAnimateMatches( pairs, fromSlide, toSlide, textNodes, node => {\n\t\t\treturn node.nodeName + ':::' + node.innerText;\n\t\t} );\n\n\t\t// Media\n\t\tthis.findAutoAnimateMatches( pairs, fromSlide, toSlide, mediaNodes, node => {\n\t\t\treturn node.nodeName + ':::' + ( node.getAttribute( 'src' ) || node.getAttribute( 'data-src' ) );\n\t\t} );\n\n\t\t// Code\n\t\tthis.findAutoAnimateMatches( pairs, fromSlide, toSlide, codeNodes, node => {\n\t\t\treturn node.nodeName + ':::' + node.innerText;\n\t\t} );\n\n\t\tpairs.forEach( pair => {\n\n\t\t\t// Disable scale transformations on text nodes, we transition\n\t\t\t// each individual text property instead\n\t\t\tif( matches( pair.from, textNodes ) ) {\n\t\t\t\tpair.options = { scale: false };\n\t\t\t}\n\t\t\t// Animate individual lines of code\n\t\t\telse if( matches( pair.from, codeNodes ) ) {\n\n\t\t\t\t// Transition the code block's width and height instead of scaling\n\t\t\t\t// to prevent its content from being squished\n\t\t\t\tpair.options = { scale: false, styles: [ 'width', 'height' ] };\n\n\t\t\t\t// Lines of code\n\t\t\t\tthis.findAutoAnimateMatches( pairs, pair.from, pair.to, '.hljs .hljs-ln-code', node => {\n\t\t\t\t\treturn node.textContent;\n\t\t\t\t}, {\n\t\t\t\t\tscale: false,\n\t\t\t\t\tstyles: [],\n\t\t\t\t\tmeasure: this.getLocalBoundingBox.bind( this )\n\t\t\t\t} );\n\n\t\t\t\t// Line numbers\n\t\t\t\tthis.findAutoAnimateMatches( pairs, pair.from, pair.to, '.hljs .hljs-ln-line[data-line-number]', node => {\n\t\t\t\t\treturn node.getAttribute( 'data-line-number' );\n\t\t\t\t}, {\n\t\t\t\t\tscale: false,\n\t\t\t\t\tstyles: [ 'width' ],\n\t\t\t\t\tmeasure: this.getLocalBoundingBox.bind( this )\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}, this );\n\n\t\treturn pairs;\n\n\t}\n\n\t/**\n\t * Helper method which returns a bounding box based on\n\t * the given elements offset coordinates.\n\t *\n\t * @param {HTMLElement} element\n\t * @return {Object} x, y, width, height\n\t */\n\tgetLocalBoundingBox( element ) {\n\n\t\tconst presentationScale = this.Reveal.getScale();\n\n\t\treturn {\n\t\t\tx: Math.round( ( element.offsetLeft * presentationScale ) * 100 ) / 100,\n\t\t\ty: Math.round( ( element.offsetTop * presentationScale ) * 100 ) / 100,\n\t\t\twidth: Math.round( ( element.offsetWidth * presentationScale ) * 100 ) / 100,\n\t\t\theight: Math.round( ( element.offsetHeight * presentationScale ) * 100 ) / 100\n\t\t};\n\n\t}\n\n\t/**\n\t * Finds matching elements between two slides.\n\t *\n\t * @param {Array} pairs \tList of pairs to push matches to\n\t * @param {HTMLElement} fromScope Scope within the from element exists\n\t * @param {HTMLElement} toScope Scope within the to element exists\n\t * @param {String} selector CSS selector of the element to match\n\t * @param {Function} serializer A function that accepts an element and returns\n\t * a stringified ID based on its contents\n\t * @param {Object} animationOptions Optional config options for this pair\n\t */\n\tfindAutoAnimateMatches( pairs, fromScope, toScope, selector, serializer, animationOptions ) {\n\n\t\tlet fromMatches = {};\n\t\tlet toMatches = {};\n\n\t\t[].slice.call( fromScope.querySelectorAll( selector ) ).forEach( ( element, i ) => {\n\t\t\tconst key = serializer( element );\n\t\t\tif( typeof key === 'string' && key.length ) {\n\t\t\t\tfromMatches[key] = fromMatches[key] || [];\n\t\t\t\tfromMatches[key].push( element );\n\t\t\t}\n\t\t} );\n\n\t\t[].slice.call( toScope.querySelectorAll( selector ) ).forEach( ( element, i ) => {\n\t\t\tconst key = serializer( element );\n\t\t\ttoMatches[key] = toMatches[key] || [];\n\t\t\ttoMatches[key].push( element );\n\n\t\t\tlet fromElement;\n\n\t\t\t// Retrieve the 'from' element\n\t\t\tif( fromMatches[key] ) {\n\t\t\t\tconst pimaryIndex = toMatches[key].length - 1;\n\t\t\t\tconst secondaryIndex = fromMatches[key].length - 1;\n\n\t\t\t\t// If there are multiple identical from elements, retrieve\n\t\t\t\t// the one at the same index as our to-element.\n\t\t\t\tif( fromMatches[key][ pimaryIndex ] ) {\n\t\t\t\t\tfromElement = fromMatches[key][ pimaryIndex ];\n\t\t\t\t\tfromMatches[key][ pimaryIndex ] = null;\n\t\t\t\t}\n\t\t\t\t// If there are no matching from-elements at the same index,\n\t\t\t\t// use the last one.\n\t\t\t\telse if( fromMatches[key][ secondaryIndex ] ) {\n\t\t\t\t\tfromElement = fromMatches[key][ secondaryIndex ];\n\t\t\t\t\tfromMatches[key][ secondaryIndex ] = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If we've got a matching pair, push it to the list of pairs\n\t\t\tif( fromElement ) {\n\t\t\t\tpairs.push({\n\t\t\t\t\tfrom: fromElement,\n\t\t\t\t\tto: element,\n\t\t\t\t\toptions: animationOptions\n\t\t\t\t});\n\t\t\t}\n\t\t} );\n\n\t}\n\n\t/**\n\t * Returns a all elements within the given scope that should\n\t * be considered unmatched in an auto-animate transition. If\n\t * fading of unmatched elements is turned on, these elements\n\t * will fade when going between auto-animate slides.\n\t *\n\t * Note that parents of auto-animate targets are NOT considerd\n\t * unmatched since fading them would break the auto-animation.\n\t *\n\t * @param {HTMLElement} rootElement\n\t * @return {Array}\n\t */\n\tgetUnmatchedAutoAnimateElements( rootElement ) {\n\n\t\treturn [].slice.call( rootElement.children ).reduce( ( result, element ) => {\n\n\t\t\tconst containsAnimatedElements = element.querySelector( '[data-auto-animate-target]' );\n\n\t\t\t// The element is unmatched if\n\t\t\t// - It is not an auto-animate target\n\t\t\t// - It does not contain any auto-animate targets\n\t\t\tif( !element.hasAttribute( 'data-auto-animate-target' ) && !containsAnimatedElements ) {\n\t\t\t\tresult.push( element );\n\t\t\t}\n\n\t\t\tif( element.querySelector( '[data-auto-animate-target]' ) ) {\n\t\t\t\tresult = result.concat( this.getUnmatchedAutoAnimateElements( element ) );\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t}, [] );\n\n\t}\n\n}\n","import { extend, queryAll } from '../utils/util.js'\n\n/**\n * Handles sorting and navigation of slide fragments.\n * Fragments are elements within a slide that are\n * revealed/animated incrementally.\n */\nexport default class Fragments {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t}\n\n\t/**\n\t * Called when the reveal.js config is updated.\n\t */\n\tconfigure( config, oldConfig ) {\n\n\t\tif( config.fragments === false ) {\n\t\t\tthis.disable();\n\t\t}\n\t\telse if( oldConfig.fragments === false ) {\n\t\t\tthis.enable();\n\t\t}\n\n\t}\n\n\t/**\n\t * If fragments are disabled in the deck, they should all be\n\t * visible rather than stepped through.\n\t */\n\tdisable() {\n\n\t\tqueryAll( this.Reveal.getSlidesElement(), '.fragment' ).forEach( element => {\n\t\t\telement.classList.add( 'visible' );\n\t\t\telement.classList.remove( 'current-fragment' );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Reverse of #disable(). Only called if fragments have\n\t * previously been disabled.\n\t */\n\tenable() {\n\n\t\tqueryAll( this.Reveal.getSlidesElement(), '.fragment' ).forEach( element => {\n\t\t\telement.classList.remove( 'visible' );\n\t\t\telement.classList.remove( 'current-fragment' );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Returns an object describing the available fragment\n\t * directions.\n\t *\n\t * @return {{prev: boolean, next: boolean}}\n\t */\n\tavailableRoutes() {\n\n\t\tlet currentSlide = this.Reveal.getCurrentSlide();\n\t\tif( currentSlide && this.Reveal.getConfig().fragments ) {\n\t\t\tlet fragments = currentSlide.querySelectorAll( '.fragment:not(.disabled)' );\n\t\t\tlet hiddenFragments = currentSlide.querySelectorAll( '.fragment:not(.disabled):not(.visible)' );\n\n\t\t\treturn {\n\t\t\t\tprev: fragments.length - hiddenFragments.length > 0,\n\t\t\t\tnext: !!hiddenFragments.length\n\t\t\t};\n\t\t}\n\t\telse {\n\t\t\treturn { prev: false, next: false };\n\t\t}\n\n\t}\n\n\t/**\n\t * Return a sorted fragments list, ordered by an increasing\n\t * \"data-fragment-index\" attribute.\n\t *\n\t * Fragments will be revealed in the order that they are returned by\n\t * this function, so you can use the index attributes to control the\n\t * order of fragment appearance.\n\t *\n\t * To maintain a sensible default fragment order, fragments are presumed\n\t * to be passed in document order. This function adds a \"fragment-index\"\n\t * attribute to each node if such an attribute is not already present,\n\t * and sets that attribute to an integer value which is the position of\n\t * the fragment within the fragments list.\n\t *\n\t * @param {object[]|*} fragments\n\t * @param {boolean} grouped If true the returned array will contain\n\t * nested arrays for all fragments with the same index\n\t * @return {object[]} sorted Sorted array of fragments\n\t */\n\tsort( fragments, grouped = false ) {\n\n\t\tfragments = Array.from( fragments );\n\n\t\tlet ordered = [],\n\t\t\tunordered = [],\n\t\t\tsorted = [];\n\n\t\t// Group ordered and unordered elements\n\t\tfragments.forEach( fragment => {\n\t\t\tif( fragment.hasAttribute( 'data-fragment-index' ) ) {\n\t\t\t\tlet index = parseInt( fragment.getAttribute( 'data-fragment-index' ), 10 );\n\n\t\t\t\tif( !ordered[index] ) {\n\t\t\t\t\tordered[index] = [];\n\t\t\t\t}\n\n\t\t\t\tordered[index].push( fragment );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tunordered.push( [ fragment ] );\n\t\t\t}\n\t\t} );\n\n\t\t// Append fragments without explicit indices in their\n\t\t// DOM order\n\t\tordered = ordered.concat( unordered );\n\n\t\t// Manually count the index up per group to ensure there\n\t\t// are no gaps\n\t\tlet index = 0;\n\n\t\t// Push all fragments in their sorted order to an array,\n\t\t// this flattens the groups\n\t\tordered.forEach( group => {\n\t\t\tgroup.forEach( fragment => {\n\t\t\t\tsorted.push( fragment );\n\t\t\t\tfragment.setAttribute( 'data-fragment-index', index );\n\t\t\t} );\n\n\t\t\tindex ++;\n\t\t} );\n\n\t\treturn grouped === true ? ordered : sorted;\n\n\t}\n\n\t/**\n\t * Sorts and formats all of fragments in the\n\t * presentation.\n\t */\n\tsortAll() {\n\n\t\tthis.Reveal.getHorizontalSlides().forEach( horizontalSlide => {\n\n\t\t\tlet verticalSlides = queryAll( horizontalSlide, 'section' );\n\t\t\tverticalSlides.forEach( ( verticalSlide, y ) => {\n\n\t\t\t\tthis.sort( verticalSlide.querySelectorAll( '.fragment' ) );\n\n\t\t\t}, this );\n\n\t\t\tif( verticalSlides.length === 0 ) this.sort( horizontalSlide.querySelectorAll( '.fragment' ) );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Refreshes the fragments on the current slide so that they\n\t * have the appropriate classes (.visible + .current-fragment).\n\t *\n\t * @param {number} [index] The index of the current fragment\n\t * @param {array} [fragments] Array containing all fragments\n\t * in the current slide\n\t *\n\t * @return {{shown: array, hidden: array}}\n\t */\n\tupdate( index, fragments ) {\n\n\t\tlet changedFragments = {\n\t\t\tshown: [],\n\t\t\thidden: []\n\t\t};\n\n\t\tlet currentSlide = this.Reveal.getCurrentSlide();\n\t\tif( currentSlide && this.Reveal.getConfig().fragments ) {\n\n\t\t\tfragments = fragments || this.sort( currentSlide.querySelectorAll( '.fragment' ) );\n\n\t\t\tif( fragments.length ) {\n\n\t\t\t\tlet maxIndex = 0;\n\n\t\t\t\tif( typeof index !== 'number' ) {\n\t\t\t\t\tlet currentFragment = this.sort( currentSlide.querySelectorAll( '.fragment.visible' ) ).pop();\n\t\t\t\t\tif( currentFragment ) {\n\t\t\t\t\t\tindex = parseInt( currentFragment.getAttribute( 'data-fragment-index' ) || 0, 10 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tArray.from( fragments ).forEach( ( el, i ) => {\n\n\t\t\t\t\tif( el.hasAttribute( 'data-fragment-index' ) ) {\n\t\t\t\t\t\ti = parseInt( el.getAttribute( 'data-fragment-index' ), 10 );\n\t\t\t\t\t}\n\n\t\t\t\t\tmaxIndex = Math.max( maxIndex, i );\n\n\t\t\t\t\t// Visible fragments\n\t\t\t\t\tif( i <= index ) {\n\t\t\t\t\t\tlet wasVisible = el.classList.contains( 'visible' )\n\t\t\t\t\t\tel.classList.add( 'visible' );\n\t\t\t\t\t\tel.classList.remove( 'current-fragment' );\n\n\t\t\t\t\t\tif( i === index ) {\n\t\t\t\t\t\t\t// Announce the fragments one by one to the Screen Reader\n\t\t\t\t\t\t\tthis.Reveal.announceStatus( this.Reveal.getStatusText( el ) );\n\n\t\t\t\t\t\t\tel.classList.add( 'current-fragment' );\n\t\t\t\t\t\t\tthis.Reveal.slideContent.startEmbeddedContent( el );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif( !wasVisible ) {\n\t\t\t\t\t\t\tchangedFragments.shown.push( el )\n\t\t\t\t\t\t\tthis.Reveal.dispatchEvent({\n\t\t\t\t\t\t\t\ttarget: el,\n\t\t\t\t\t\t\t\ttype: 'visible',\n\t\t\t\t\t\t\t\tbubbles: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Hidden fragments\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet wasVisible = el.classList.contains( 'visible' )\n\t\t\t\t\t\tel.classList.remove( 'visible' );\n\t\t\t\t\t\tel.classList.remove( 'current-fragment' );\n\n\t\t\t\t\t\tif( wasVisible ) {\n\t\t\t\t\t\t\tthis.Reveal.slideContent.stopEmbeddedContent( el );\n\t\t\t\t\t\t\tchangedFragments.hidden.push( el );\n\t\t\t\t\t\t\tthis.Reveal.dispatchEvent({\n\t\t\t\t\t\t\t\ttarget: el,\n\t\t\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\t\t\tbubbles: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\t// Write the current fragment index to the slide
.\n\t\t\t\t// This can be used by end users to apply styles based on\n\t\t\t\t// the current fragment index.\n\t\t\t\tindex = typeof index === 'number' ? index : -1;\n\t\t\t\tindex = Math.max( Math.min( index, maxIndex ), -1 );\n\t\t\t\tcurrentSlide.setAttribute( 'data-fragment', index );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn changedFragments;\n\n\t}\n\n\t/**\n\t * Formats the fragments on the given slide so that they have\n\t * valid indices. Call this if fragments are changed in the DOM\n\t * after reveal.js has already initialized.\n\t *\n\t * @param {HTMLElement} slide\n\t * @return {Array} a list of the HTML fragments that were synced\n\t */\n\tsync( slide = this.Reveal.getCurrentSlide() ) {\n\n\t\treturn this.sort( slide.querySelectorAll( '.fragment' ) );\n\n\t}\n\n\t/**\n\t * Navigate to the specified slide fragment.\n\t *\n\t * @param {?number} index The index of the fragment that\n\t * should be shown, -1 means all are invisible\n\t * @param {number} offset Integer offset to apply to the\n\t * fragment index\n\t *\n\t * @return {boolean} true if a change was made in any\n\t * fragments visibility as part of this call\n\t */\n\tgoto( index, offset = 0 ) {\n\n\t\tlet currentSlide = this.Reveal.getCurrentSlide();\n\t\tif( currentSlide && this.Reveal.getConfig().fragments ) {\n\n\t\t\tlet fragments = this.sort( currentSlide.querySelectorAll( '.fragment:not(.disabled)' ) );\n\t\t\tif( fragments.length ) {\n\n\t\t\t\t// If no index is specified, find the current\n\t\t\t\tif( typeof index !== 'number' ) {\n\t\t\t\t\tlet lastVisibleFragment = this.sort( currentSlide.querySelectorAll( '.fragment:not(.disabled).visible' ) ).pop();\n\n\t\t\t\t\tif( lastVisibleFragment ) {\n\t\t\t\t\t\tindex = parseInt( lastVisibleFragment.getAttribute( 'data-fragment-index' ) || 0, 10 );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tindex = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply the offset if there is one\n\t\t\t\tindex += offset;\n\n\t\t\t\tlet changedFragments = this.update( index, fragments );\n\n\t\t\t\tif( changedFragments.hidden.length ) {\n\t\t\t\t\tthis.Reveal.dispatchEvent({\n\t\t\t\t\t\ttype: 'fragmenthidden',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfragment: changedFragments.hidden[0],\n\t\t\t\t\t\t\tfragments: changedFragments.hidden\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif( changedFragments.shown.length ) {\n\t\t\t\t\tthis.Reveal.dispatchEvent({\n\t\t\t\t\t\ttype: 'fragmentshown',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfragment: changedFragments.shown[0],\n\t\t\t\t\t\t\tfragments: changedFragments.shown\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tthis.Reveal.controls.update();\n\t\t\t\tthis.Reveal.progress.update();\n\n\t\t\t\tif( this.Reveal.getConfig().fragmentInURL ) {\n\t\t\t\t\tthis.Reveal.location.writeURL();\n\t\t\t\t}\n\n\t\t\t\treturn !!( changedFragments.shown.length || changedFragments.hidden.length );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Navigate to the next slide fragment.\n\t *\n\t * @return {boolean} true if there was a next fragment,\n\t * false otherwise\n\t */\n\tnext() {\n\n\t\treturn this.goto( null, 1 );\n\n\t}\n\n\t/**\n\t * Navigate to the previous slide fragment.\n\t *\n\t * @return {boolean} true if there was a previous fragment,\n\t * false otherwise\n\t */\n\tprev() {\n\n\t\treturn this.goto( null, -1 );\n\n\t}\n\n}","import { SLIDES_SELECTOR } from '../utils/constants.js'\nimport { extend, queryAll, transformElement } from '../utils/util.js'\n\n/**\n * Handles all logic related to the overview mode\n * (birds-eye view of all slides).\n */\nexport default class Overview {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t\tthis.active = false;\n\n\t\tthis.onSlideClicked = this.onSlideClicked.bind( this );\n\n\t}\n\n\t/**\n\t * Displays the overview of slides (quick nav) by scaling\n\t * down and arranging all slide elements.\n\t */\n\tactivate() {\n\n\t\t// Only proceed if enabled in config\n\t\tif( this.Reveal.getConfig().overview && !this.isActive() ) {\n\n\t\t\tthis.active = true;\n\n\t\t\tthis.Reveal.getRevealElement().classList.add( 'overview' );\n\n\t\t\t// Don't auto-slide while in overview mode\n\t\t\tthis.Reveal.cancelAutoSlide();\n\n\t\t\t// Move the backgrounds element into the slide container to\n\t\t\t// that the same scaling is applied\n\t\t\tthis.Reveal.getSlidesElement().appendChild( this.Reveal.getBackgroundsElement() );\n\n\t\t\t// Clicking on an overview slide navigates to it\n\t\t\tqueryAll( this.Reveal.getRevealElement(), SLIDES_SELECTOR ).forEach( slide => {\n\t\t\t\tif( !slide.classList.contains( 'stack' ) ) {\n\t\t\t\t\tslide.addEventListener( 'click', this.onSlideClicked, true );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Calculate slide sizes\n\t\t\tconst margin = 70;\n\t\t\tconst slideSize = this.Reveal.getComputedSlideSize();\n\t\t\tthis.overviewSlideWidth = slideSize.width + margin;\n\t\t\tthis.overviewSlideHeight = slideSize.height + margin;\n\n\t\t\t// Reverse in RTL mode\n\t\t\tif( this.Reveal.getConfig().rtl ) {\n\t\t\t\tthis.overviewSlideWidth = -this.overviewSlideWidth;\n\t\t\t}\n\n\t\t\tthis.Reveal.updateSlidesVisibility();\n\n\t\t\tthis.layout();\n\t\t\tthis.update();\n\n\t\t\tthis.Reveal.layout();\n\n\t\t\tconst indices = this.Reveal.getIndices();\n\n\t\t\t// Notify observers of the overview showing\n\t\t\tthis.Reveal.dispatchEvent({\n\t\t\t\ttype: 'overviewshown',\n\t\t\t\tdata: {\n\t\t\t\t\t'indexh': indices.h,\n\t\t\t\t\t'indexv': indices.v,\n\t\t\t\t\t'currentSlide': this.Reveal.getCurrentSlide()\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Uses CSS transforms to position all slides in a grid for\n\t * display inside of the overview mode.\n\t */\n\tlayout() {\n\n\t\t// Layout slides\n\t\tthis.Reveal.getHorizontalSlides().forEach( ( hslide, h ) => {\n\t\t\thslide.setAttribute( 'data-index-h', h );\n\t\t\ttransformElement( hslide, 'translate3d(' + ( h * this.overviewSlideWidth ) + 'px, 0, 0)' );\n\n\t\t\tif( hslide.classList.contains( 'stack' ) ) {\n\n\t\t\t\tqueryAll( hslide, 'section' ).forEach( ( vslide, v ) => {\n\t\t\t\t\tvslide.setAttribute( 'data-index-h', h );\n\t\t\t\t\tvslide.setAttribute( 'data-index-v', v );\n\n\t\t\t\t\ttransformElement( vslide, 'translate3d(0, ' + ( v * this.overviewSlideHeight ) + 'px, 0)' );\n\t\t\t\t} );\n\n\t\t\t}\n\t\t} );\n\n\t\t// Layout slide backgrounds\n\t\tArray.from( this.Reveal.getBackgroundsElement().childNodes ).forEach( ( hbackground, h ) => {\n\t\t\ttransformElement( hbackground, 'translate3d(' + ( h * this.overviewSlideWidth ) + 'px, 0, 0)' );\n\n\t\t\tqueryAll( hbackground, '.slide-background' ).forEach( ( vbackground, v ) => {\n\t\t\t\ttransformElement( vbackground, 'translate3d(0, ' + ( v * this.overviewSlideHeight ) + 'px, 0)' );\n\t\t\t} );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Moves the overview viewport to the current slides.\n\t * Called each time the current slide changes.\n\t */\n\tupdate() {\n\n\t\tconst vmin = Math.min( window.innerWidth, window.innerHeight );\n\t\tconst scale = Math.max( vmin / 5, 150 ) / vmin;\n\t\tconst indices = this.Reveal.getIndices();\n\n\t\tthis.Reveal.transformSlides( {\n\t\t\toverview: [\n\t\t\t\t'scale('+ scale +')',\n\t\t\t\t'translateX('+ ( -indices.h * this.overviewSlideWidth ) +'px)',\n\t\t\t\t'translateY('+ ( -indices.v * this.overviewSlideHeight ) +'px)'\n\t\t\t].join( ' ' )\n\t\t} );\n\n\t}\n\n\t/**\n\t * Exits the slide overview and enters the currently\n\t * active slide.\n\t */\n\tdeactivate() {\n\n\t\t// Only proceed if enabled in config\n\t\tif( this.Reveal.getConfig().overview ) {\n\n\t\t\tthis.active = false;\n\n\t\t\tthis.Reveal.getRevealElement().classList.remove( 'overview' );\n\n\t\t\t// Temporarily add a class so that transitions can do different things\n\t\t\t// depending on whether they are exiting/entering overview, or just\n\t\t\t// moving from slide to slide\n\t\t\tthis.Reveal.getRevealElement().classList.add( 'overview-deactivating' );\n\n\t\t\tsetTimeout( () => {\n\t\t\t\tthis.Reveal.getRevealElement().classList.remove( 'overview-deactivating' );\n\t\t\t}, 1 );\n\n\t\t\t// Move the background element back out\n\t\t\tthis.Reveal.getRevealElement().appendChild( this.Reveal.getBackgroundsElement() );\n\n\t\t\t// Clean up changes made to slides\n\t\t\tqueryAll( this.Reveal.getRevealElement(), SLIDES_SELECTOR ).forEach( slide => {\n\t\t\t\ttransformElement( slide, '' );\n\n\t\t\t\tslide.removeEventListener( 'click', this.onSlideClicked, true );\n\t\t\t} );\n\n\t\t\t// Clean up changes made to backgrounds\n\t\t\tqueryAll( this.Reveal.getBackgroundsElement(), '.slide-background' ).forEach( background => {\n\t\t\t\ttransformElement( background, '' );\n\t\t\t} );\n\n\t\t\tthis.Reveal.transformSlides( { overview: '' } );\n\n\t\t\tconst indices = this.Reveal.getIndices();\n\n\t\t\tthis.Reveal.slide( indices.h, indices.v );\n\t\t\tthis.Reveal.layout();\n\t\t\tthis.Reveal.cueAutoSlide();\n\n\t\t\t// Notify observers of the overview hiding\n\t\t\tthis.Reveal.dispatchEvent({\n\t\t\t\ttype: 'overviewhidden',\n\t\t\t\tdata: {\n\t\t\t\t\t'indexh': indices.h,\n\t\t\t\t\t'indexv': indices.v,\n\t\t\t\t\t'currentSlide': this.Reveal.getCurrentSlide()\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\t}\n\n\t/**\n\t * Toggles the slide overview mode on and off.\n\t *\n\t * @param {Boolean} [override] Flag which overrides the\n\t * toggle logic and forcibly sets the desired state. True means\n\t * overview is open, false means it's closed.\n\t */\n\ttoggle( override ) {\n\n\t\tif( typeof override === 'boolean' ) {\n\t\t\toverride ? this.activate() : this.deactivate();\n\t\t}\n\t\telse {\n\t\t\tthis.isActive() ? this.deactivate() : this.activate();\n\t\t}\n\n\t}\n\n\t/**\n\t * Checks if the overview is currently active.\n\t *\n\t * @return {Boolean} true if the overview is active,\n\t * false otherwise\n\t */\n\tisActive() {\n\n\t\treturn this.active;\n\n\t}\n\n\t/**\n\t * Invoked when a slide is and we're in the overview.\n\t *\n\t * @param {object} event\n\t */\n\tonSlideClicked( event ) {\n\n\t\tif( this.isActive() ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tlet element = event.target;\n\n\t\t\twhile( element && !element.nodeName.match( /section/gi ) ) {\n\t\t\t\telement = element.parentNode;\n\t\t\t}\n\n\t\t\tif( element && !element.classList.contains( 'disabled' ) ) {\n\n\t\t\t\tthis.deactivate();\n\n\t\t\t\tif( element.nodeName.match( /section/gi ) ) {\n\t\t\t\t\tlet h = parseInt( element.getAttribute( 'data-index-h' ), 10 ),\n\t\t\t\t\t\tv = parseInt( element.getAttribute( 'data-index-v' ), 10 );\n\n\t\t\t\t\tthis.Reveal.slide( h, v );\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t}\n\n}","import { enterFullscreen } from '../utils/util.js'\n\n/**\n * Handles all reveal.js keyboard interactions.\n */\nexport default class Keyboard {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t\t// A key:value map of keyboard keys and descriptions of\n\t\t// the actions they trigger\n\t\tthis.shortcuts = {};\n\n\t\t// Holds custom key code mappings\n\t\tthis.bindings = {};\n\n\t\tthis.onDocumentKeyDown = this.onDocumentKeyDown.bind( this );\n\t\tthis.onDocumentKeyPress = this.onDocumentKeyPress.bind( this );\n\n\t}\n\n\t/**\n\t * Called when the reveal.js config is updated.\n\t */\n\tconfigure( config, oldConfig ) {\n\n\t\tif( config.navigationMode === 'linear' ) {\n\t\t\tthis.shortcuts['→ , ↓ , SPACE , N , L , J'] = 'Next slide';\n\t\t\tthis.shortcuts['← , ↑ , P , H , K'] = 'Previous slide';\n\t\t}\n\t\telse {\n\t\t\tthis.shortcuts['N , SPACE'] = 'Next slide';\n\t\t\tthis.shortcuts['P , Shift SPACE'] = 'Previous slide';\n\t\t\tthis.shortcuts['← , H'] = 'Navigate left';\n\t\t\tthis.shortcuts['→ , L'] = 'Navigate right';\n\t\t\tthis.shortcuts['↑ , K'] = 'Navigate up';\n\t\t\tthis.shortcuts['↓ , J'] = 'Navigate down';\n\t\t}\n\n\t\tthis.shortcuts['Alt + ←/↑/→/↓'] = 'Navigate without fragments';\n\t\tthis.shortcuts['Shift + ←/↑/→/↓'] = 'Jump to first/last slide';\n\t\tthis.shortcuts['B , .'] = 'Pause';\n\t\tthis.shortcuts['F'] = 'Fullscreen';\n\t\tthis.shortcuts['ESC, O'] = 'Slide overview';\n\n\t}\n\n\t/**\n\t * Starts listening for keyboard events.\n\t */\n\tbind() {\n\n\t\tdocument.addEventListener( 'keydown', this.onDocumentKeyDown, false );\n\t\tdocument.addEventListener( 'keypress', this.onDocumentKeyPress, false );\n\n\t}\n\n\t/**\n\t * Stops listening for keyboard events.\n\t */\n\tunbind() {\n\n\t\tdocument.removeEventListener( 'keydown', this.onDocumentKeyDown, false );\n\t\tdocument.removeEventListener( 'keypress', this.onDocumentKeyPress, false );\n\n\t}\n\n\t/**\n\t * Add a custom key binding with optional description to\n\t * be added to the help screen.\n\t */\n\taddKeyBinding( binding, callback ) {\n\n\t\tif( typeof binding === 'object' && binding.keyCode ) {\n\t\t\tthis.bindings[binding.keyCode] = {\n\t\t\t\tcallback: callback,\n\t\t\t\tkey: binding.key,\n\t\t\t\tdescription: binding.description\n\t\t\t};\n\t\t}\n\t\telse {\n\t\t\tthis.bindings[binding] = {\n\t\t\t\tcallback: callback,\n\t\t\t\tkey: null,\n\t\t\t\tdescription: null\n\t\t\t};\n\t\t}\n\n\t}\n\n\t/**\n\t * Removes the specified custom key binding.\n\t */\n\tremoveKeyBinding( keyCode ) {\n\n\t\tdelete this.bindings[keyCode];\n\n\t}\n\n\t/**\n\t * Programmatically triggers a keyboard event\n\t *\n\t * @param {int} keyCode\n\t */\n\ttriggerKey( keyCode ) {\n\n\t\tthis.onDocumentKeyDown( { keyCode } );\n\n\t}\n\n\t/**\n\t * Registers a new shortcut to include in the help overlay\n\t *\n\t * @param {String} key\n\t * @param {String} value\n\t */\n\tregisterKeyboardShortcut( key, value ) {\n\n\t\tthis.shortcuts[key] = value;\n\n\t}\n\n\tgetShortcuts() {\n\n\t\treturn this.shortcuts;\n\n\t}\n\n\tgetBindings() {\n\n\t\treturn this.bindings;\n\n\t}\n\n\t/**\n\t * Handler for the document level 'keypress' event.\n\t *\n\t * @param {object} event\n\t */\n\tonDocumentKeyPress( event ) {\n\n\t\t// Check if the pressed key is question mark\n\t\tif( event.shiftKey && event.charCode === 63 ) {\n\t\t\tthis.Reveal.toggleHelp();\n\t\t}\n\n\t}\n\n\t/**\n\t * Handler for the document level 'keydown' event.\n\t *\n\t * @param {object} event\n\t */\n\tonDocumentKeyDown( event ) {\n\n\t\tlet config = this.Reveal.getConfig();\n\n\t\t// If there's a condition specified and it returns false,\n\t\t// ignore this event\n\t\tif( typeof config.keyboardCondition === 'function' && config.keyboardCondition(event) === false ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If keyboardCondition is set, only capture keyboard events\n\t\t// for embedded decks when they are focused\n\t\tif( config.keyboardCondition === 'focused' && !this.Reveal.isFocused() ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Shorthand\n\t\tlet keyCode = event.keyCode;\n\n\t\t// Remember if auto-sliding was paused so we can toggle it\n\t\tlet autoSlideWasPaused = !this.Reveal.isAutoSliding();\n\n\t\tthis.Reveal.onUserInput( event );\n\n\t\t// Is there a focused element that could be using the keyboard?\n\t\tlet activeElementIsCE = document.activeElement && document.activeElement.isContentEditable === true;\n\t\tlet activeElementIsInput = document.activeElement && document.activeElement.tagName && /input|textarea/i.test( document.activeElement.tagName );\n\t\tlet activeElementIsNotes = document.activeElement && document.activeElement.className && /speaker-notes/i.test( document.activeElement.className);\n\n\t\t// Whitelist certain modifiers for slide navigation shortcuts\n\t\tlet isNavigationKey = [32, 37, 38, 39, 40, 78, 80].indexOf( event.keyCode ) !== -1;\n\n\t\t// Prevent all other events when a modifier is pressed\n\t\tlet unusedModifier = \t!( isNavigationKey && event.shiftKey || event.altKey ) &&\n\t\t\t\t\t\t\t\t( event.shiftKey || event.altKey || event.ctrlKey || event.metaKey );\n\n\t\t// Disregard the event if there's a focused element or a\n\t\t// keyboard modifier key is present\n\t\tif( activeElementIsCE || activeElementIsInput || activeElementIsNotes || unusedModifier ) return;\n\n\t\t// While paused only allow resume keyboard events; 'b', 'v', '.'\n\t\tlet resumeKeyCodes = [66,86,190,191];\n\t\tlet key;\n\n\t\t// Custom key bindings for togglePause should be able to resume\n\t\tif( typeof config.keyboard === 'object' ) {\n\t\t\tfor( key in config.keyboard ) {\n\t\t\t\tif( config.keyboard[key] === 'togglePause' ) {\n\t\t\t\t\tresumeKeyCodes.push( parseInt( key, 10 ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif( this.Reveal.isPaused() && resumeKeyCodes.indexOf( keyCode ) === -1 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Use linear navigation if we're configured to OR if\n\t\t// the presentation is one-dimensional\n\t\tlet useLinearMode = config.navigationMode === 'linear' || !this.Reveal.hasHorizontalSlides() || !this.Reveal.hasVerticalSlides();\n\n\t\tlet triggered = false;\n\n\t\t// 1. User defined key bindings\n\t\tif( typeof config.keyboard === 'object' ) {\n\n\t\t\tfor( key in config.keyboard ) {\n\n\t\t\t\t// Check if this binding matches the pressed key\n\t\t\t\tif( parseInt( key, 10 ) === keyCode ) {\n\n\t\t\t\t\tlet value = config.keyboard[ key ];\n\n\t\t\t\t\t// Callback function\n\t\t\t\t\tif( typeof value === 'function' ) {\n\t\t\t\t\t\tvalue.apply( null, [ event ] );\n\t\t\t\t\t}\n\t\t\t\t\t// String shortcuts to reveal.js API\n\t\t\t\t\telse if( typeof value === 'string' && typeof this.Reveal[ value ] === 'function' ) {\n\t\t\t\t\t\tthis.Reveal[ value ].call();\n\t\t\t\t\t}\n\n\t\t\t\t\ttriggered = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// 2. Registered custom key bindings\n\t\tif( triggered === false ) {\n\n\t\t\tfor( key in this.bindings ) {\n\n\t\t\t\t// Check if this binding matches the pressed key\n\t\t\t\tif( parseInt( key, 10 ) === keyCode ) {\n\n\t\t\t\t\tlet action = this.bindings[ key ].callback;\n\n\t\t\t\t\t// Callback function\n\t\t\t\t\tif( typeof action === 'function' ) {\n\t\t\t\t\t\taction.apply( null, [ event ] );\n\t\t\t\t\t}\n\t\t\t\t\t// String shortcuts to reveal.js API\n\t\t\t\t\telse if( typeof action === 'string' && typeof this.Reveal[ action ] === 'function' ) {\n\t\t\t\t\t\tthis.Reveal[ action ].call();\n\t\t\t\t\t}\n\n\t\t\t\t\ttriggered = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// 3. System defined key bindings\n\t\tif( triggered === false ) {\n\n\t\t\t// Assume true and try to prove false\n\t\t\ttriggered = true;\n\n\t\t\t// P, PAGE UP\n\t\t\tif( keyCode === 80 || keyCode === 33 ) {\n\t\t\t\tthis.Reveal.prev({skipFragments: event.altKey});\n\t\t\t}\n\t\t\t// N, PAGE DOWN\n\t\t\telse if( keyCode === 78 || keyCode === 34 ) {\n\t\t\t\tthis.Reveal.next({skipFragments: event.altKey});\n\t\t\t}\n\t\t\t// H, LEFT\n\t\t\telse if( keyCode === 72 || keyCode === 37 ) {\n\t\t\t\tif( event.shiftKey ) {\n\t\t\t\t\tthis.Reveal.slide( 0 );\n\t\t\t\t}\n\t\t\t\telse if( !this.Reveal.overview.isActive() && useLinearMode ) {\n\t\t\t\t\tthis.Reveal.prev({skipFragments: event.altKey});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.Reveal.left({skipFragments: event.altKey});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// L, RIGHT\n\t\t\telse if( keyCode === 76 || keyCode === 39 ) {\n\t\t\t\tif( event.shiftKey ) {\n\t\t\t\t\tthis.Reveal.slide( this.Reveal.getHorizontalSlides().length - 1 );\n\t\t\t\t}\n\t\t\t\telse if( !this.Reveal.overview.isActive() && useLinearMode ) {\n\t\t\t\t\tthis.Reveal.next({skipFragments: event.altKey});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.Reveal.right({skipFragments: event.altKey});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// K, UP\n\t\t\telse if( keyCode === 75 || keyCode === 38 ) {\n\t\t\t\tif( event.shiftKey ) {\n\t\t\t\t\tthis.Reveal.slide( undefined, 0 );\n\t\t\t\t}\n\t\t\t\telse if( !this.Reveal.overview.isActive() && useLinearMode ) {\n\t\t\t\t\tthis.Reveal.prev({skipFragments: event.altKey});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.Reveal.up({skipFragments: event.altKey});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// J, DOWN\n\t\t\telse if( keyCode === 74 || keyCode === 40 ) {\n\t\t\t\tif( event.shiftKey ) {\n\t\t\t\t\tthis.Reveal.slide( undefined, Number.MAX_VALUE );\n\t\t\t\t}\n\t\t\t\telse if( !this.Reveal.overview.isActive() && useLinearMode ) {\n\t\t\t\t\tthis.Reveal.next({skipFragments: event.altKey});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.Reveal.down({skipFragments: event.altKey});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// HOME\n\t\t\telse if( keyCode === 36 ) {\n\t\t\t\tthis.Reveal.slide( 0 );\n\t\t\t}\n\t\t\t// END\n\t\t\telse if( keyCode === 35 ) {\n\t\t\t\tthis.Reveal.slide( this.Reveal.getHorizontalSlides().length - 1 );\n\t\t\t}\n\t\t\t// SPACE\n\t\t\telse if( keyCode === 32 ) {\n\t\t\t\tif( this.Reveal.overview.isActive() ) {\n\t\t\t\t\tthis.Reveal.overview.deactivate();\n\t\t\t\t}\n\t\t\t\tif( event.shiftKey ) {\n\t\t\t\t\tthis.Reveal.prev({skipFragments: event.altKey});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.Reveal.next({skipFragments: event.altKey});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// TWO-SPOT, SEMICOLON, B, V, PERIOD, LOGITECH PRESENTER TOOLS \"BLACK SCREEN\" BUTTON\n\t\t\telse if( keyCode === 58 || keyCode === 59 || keyCode === 66 || keyCode === 86 || keyCode === 190 || keyCode === 191 ) {\n\t\t\t\tthis.Reveal.togglePause();\n\t\t\t}\n\t\t\t// F\n\t\t\telse if( keyCode === 70 ) {\n\t\t\t\tenterFullscreen( config.embedded ? this.Reveal.getViewportElement() : document.documentElement );\n\t\t\t}\n\t\t\t// A\n\t\t\telse if( keyCode === 65 ) {\n\t\t\t\tif ( config.autoSlideStoppable ) {\n\t\t\t\t\tthis.Reveal.toggleAutoSlide( autoSlideWasPaused );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttriggered = false;\n\t\t\t}\n\n\t\t}\n\n\t\t// If the input resulted in a triggered action we should prevent\n\t\t// the browsers default behavior\n\t\tif( triggered ) {\n\t\t\tevent.preventDefault && event.preventDefault();\n\t\t}\n\t\t// ESC or O key\n\t\telse if( keyCode === 27 || keyCode === 79 ) {\n\t\t\tif( this.Reveal.closeOverlay() === false ) {\n\t\t\t\tthis.Reveal.overview.toggle();\n\t\t\t}\n\n\t\t\tevent.preventDefault && event.preventDefault();\n\t\t}\n\n\t\t// If auto-sliding is enabled we need to cue up\n\t\t// another timeout\n\t\tthis.Reveal.cueAutoSlide();\n\n\t}\n\n}","/**\n * Reads and writes the URL based on reveal.js' current state.\n */\nexport default class Location {\n\n\t// The minimum number of milliseconds that must pass between\n\t// calls to history.replaceState\n\tMAX_REPLACE_STATE_FREQUENCY = 1000\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t\t// Delays updates to the URL due to a Chrome thumbnailer bug\n\t\tthis.writeURLTimeout = 0;\n\n\t\tthis.replaceStateTimestamp = 0;\n\n\t\tthis.onWindowHashChange = this.onWindowHashChange.bind( this );\n\n\t}\n\n\tbind() {\n\n\t\twindow.addEventListener( 'hashchange', this.onWindowHashChange, false );\n\n\t}\n\n\tunbind() {\n\n\t\twindow.removeEventListener( 'hashchange', this.onWindowHashChange, false );\n\n\t}\n\n\t/**\n\t * Returns the slide indices for the given hash link.\n\t *\n\t * @param {string} [hash] the hash string that we want to\n\t * find the indices for\n\t *\n\t * @returns slide indices or null\n\t */\n\tgetIndicesFromHash( hash=window.location.hash ) {\n\n\t\t// Attempt to parse the hash as either an index or name\n\t\tlet name = hash.replace( /^#\\/?/, '' );\n\t\tlet bits = name.split( '/' );\n\n\t\t// If the first bit is not fully numeric and there is a name we\n\t\t// can assume that this is a named link\n\t\tif( !/^[0-9]*$/.test( bits[0] ) && name.length ) {\n\t\t\tlet element;\n\n\t\t\tlet f;\n\n\t\t\t// Parse named links with fragments (#/named-link/2)\n\t\t\tif( /\\/[-\\d]+$/g.test( name ) ) {\n\t\t\t\tf = parseInt( name.split( '/' ).pop(), 10 );\n\t\t\t\tf = isNaN(f) ? undefined : f;\n\t\t\t\tname = name.split( '/' ).shift();\n\t\t\t}\n\n\t\t\t// Ensure the named link is a valid HTML ID attribute\n\t\t\ttry {\n\t\t\t\telement = document.getElementById( decodeURIComponent( name ) );\n\t\t\t}\n\t\t\tcatch ( error ) { }\n\n\t\t\tif( element ) {\n\t\t\t\treturn { ...this.Reveal.getIndices( element ), f };\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tconst config = this.Reveal.getConfig();\n\t\t\tlet hashIndexBase = config.hashOneBasedIndex ? 1 : 0;\n\n\t\t\t// Read the index components of the hash\n\t\t\tlet h = ( parseInt( bits[0], 10 ) - hashIndexBase ) || 0,\n\t\t\t\tv = ( parseInt( bits[1], 10 ) - hashIndexBase ) || 0,\n\t\t\t\tf;\n\n\t\t\tif( config.fragmentInURL ) {\n\t\t\t\tf = parseInt( bits[2], 10 );\n\t\t\t\tif( isNaN( f ) ) {\n\t\t\t\t\tf = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn { h, v, f };\n\t\t}\n\n\t\t// The hash couldn't be parsed or no matching named link was found\n\t\treturn null\n\n\t}\n\n\t/**\n\t * Reads the current URL (hash) and navigates accordingly.\n\t */\n\treadURL() {\n\n\t\tconst currentIndices = this.Reveal.getIndices();\n\t\tconst newIndices = this.getIndicesFromHash();\n\n\t\tif( newIndices ) {\n\t\t\tif( ( newIndices.h !== currentIndices.h || newIndices.v !== currentIndices.v || newIndices.f !== undefined ) ) {\n\t\t\t\t\tthis.Reveal.slide( newIndices.h, newIndices.v, newIndices.f );\n\t\t\t}\n\t\t}\n\t\t// If no new indices are available, we're trying to navigate to\n\t\t// a slide hash that does not exist\n\t\telse {\n\t\t\tthis.Reveal.slide( currentIndices.h || 0, currentIndices.v || 0 );\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates the page URL (hash) to reflect the current\n\t * state.\n\t *\n\t * @param {number} delay The time in ms to wait before\n\t * writing the hash\n\t */\n\twriteURL( delay ) {\n\n\t\tlet config = this.Reveal.getConfig();\n\t\tlet currentSlide = this.Reveal.getCurrentSlide();\n\n\t\t// Make sure there's never more than one timeout running\n\t\tclearTimeout( this.writeURLTimeout );\n\n\t\t// If a delay is specified, timeout this call\n\t\tif( typeof delay === 'number' ) {\n\t\t\tthis.writeURLTimeout = setTimeout( this.writeURL, delay );\n\t\t}\n\t\telse if( currentSlide ) {\n\n\t\t\tlet hash = this.getHash();\n\n\t\t\t// If we're configured to push to history OR the history\n\t\t\t// API is not avaialble.\n\t\t\tif( config.history ) {\n\t\t\t\twindow.location.hash = hash;\n\t\t\t}\n\t\t\t// If we're configured to reflect the current slide in the\n\t\t\t// URL without pushing to history.\n\t\t\telse if( config.hash ) {\n\t\t\t\t// If the hash is empty, don't add it to the URL\n\t\t\t\tif( hash === '/' ) {\n\t\t\t\t\tthis.debouncedReplaceState( window.location.pathname + window.location.search );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.debouncedReplaceState( '#' + hash );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// UPDATE: The below nuking of all hash changes breaks\n\t\t\t// anchors on pages where reveal.js is running. Removed\n\t\t\t// in 4.0. Why was it here in the first place? ¯\\_(ツ)_/¯\n\t\t\t//\n\t\t\t// If history and hash are both disabled, a hash may still\n\t\t\t// be added to the URL by clicking on a href with a hash\n\t\t\t// target. Counter this by always removing the hash.\n\t\t\t// else {\n\t\t\t// \twindow.history.replaceState( null, null, window.location.pathname + window.location.search );\n\t\t\t// }\n\n\t\t}\n\n\t}\n\n\treplaceState( url ) {\n\n\t\twindow.history.replaceState( null, null, url );\n\t\tthis.replaceStateTimestamp = Date.now();\n\n\t}\n\n\tdebouncedReplaceState( url ) {\n\n\t\tclearTimeout( this.replaceStateTimeout );\n\n\t\tif( Date.now() - this.replaceStateTimestamp > this.MAX_REPLACE_STATE_FREQUENCY ) {\n\t\t\tthis.replaceState( url );\n\t\t}\n\t\telse {\n\t\t\tthis.replaceStateTimeout = setTimeout( () => this.replaceState( url ), this.MAX_REPLACE_STATE_FREQUENCY );\n\t\t}\n\n\t}\n\n\t/**\n\t * Return a hash URL that will resolve to the given slide location.\n\t *\n\t * @param {HTMLElement} [slide=currentSlide] The slide to link to\n\t */\n\tgetHash( slide ) {\n\n\t\tlet url = '/';\n\n\t\t// Attempt to create a named link based on the slide's ID\n\t\tlet s = slide || this.Reveal.getCurrentSlide();\n\t\tlet id = s ? s.getAttribute( 'id' ) : null;\n\t\tif( id ) {\n\t\t\tid = encodeURIComponent( id );\n\t\t}\n\n\t\tlet index = this.Reveal.getIndices( slide );\n\t\tif( !this.Reveal.getConfig().fragmentInURL ) {\n\t\t\tindex.f = undefined;\n\t\t}\n\n\t\t// If the current slide has an ID, use that as a named link,\n\t\t// but we don't support named links with a fragment index\n\t\tif( typeof id === 'string' && id.length ) {\n\t\t\turl = '/' + id;\n\n\t\t\t// If there is also a fragment, append that at the end\n\t\t\t// of the named link, like: #/named-link/2\n\t\t\tif( index.f >= 0 ) url += '/' + index.f;\n\t\t}\n\t\t// Otherwise use the /h/v index\n\t\telse {\n\t\t\tlet hashIndexBase = this.Reveal.getConfig().hashOneBasedIndex ? 1 : 0;\n\t\t\tif( index.h > 0 || index.v > 0 || index.f >= 0 ) url += index.h + hashIndexBase;\n\t\t\tif( index.v > 0 || index.f >= 0 ) url += '/' + (index.v + hashIndexBase );\n\t\t\tif( index.f >= 0 ) url += '/' + index.f;\n\t\t}\n\n\t\treturn url;\n\n\t}\n\n\t/**\n\t * Handler for the window level 'hashchange' event.\n\t *\n\t * @param {object} [event]\n\t */\n\tonWindowHashChange( event ) {\n\n\t\tthis.readURL();\n\n\t}\n\n}","import { queryAll } from '../utils/util.js'\nimport { isAndroid } from '../utils/device.js'\n\n/**\n * Manages our presentation controls. This includes both\n * the built-in control arrows as well as event monitoring\n * of any elements within the presentation with either of the\n * following helper classes:\n * - .navigate-up\n * - .navigate-right\n * - .navigate-down\n * - .navigate-left\n * - .navigate-next\n * - .navigate-prev\n */\nexport default class Controls {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t\tthis.onNavigateLeftClicked = this.onNavigateLeftClicked.bind( this );\n\t\tthis.onNavigateRightClicked = this.onNavigateRightClicked.bind( this );\n\t\tthis.onNavigateUpClicked = this.onNavigateUpClicked.bind( this );\n\t\tthis.onNavigateDownClicked = this.onNavigateDownClicked.bind( this );\n\t\tthis.onNavigatePrevClicked = this.onNavigatePrevClicked.bind( this );\n\t\tthis.onNavigateNextClicked = this.onNavigateNextClicked.bind( this );\n\n\t}\n\n\trender() {\n\n\t\tconst rtl = this.Reveal.getConfig().rtl;\n\t\tconst revealElement = this.Reveal.getRevealElement();\n\n\t\tthis.element = document.createElement( 'aside' );\n\t\tthis.element.className = 'controls';\n\t\tthis.element.innerHTML =\n\t\t\t`\n\t\t\t\n\t\t\t\n\t\t\t`;\n\n\t\tthis.Reveal.getRevealElement().appendChild( this.element );\n\n\t\t// There can be multiple instances of controls throughout the page\n\t\tthis.controlsLeft = queryAll( revealElement, '.navigate-left' );\n\t\tthis.controlsRight = queryAll( revealElement, '.navigate-right' );\n\t\tthis.controlsUp = queryAll( revealElement, '.navigate-up' );\n\t\tthis.controlsDown = queryAll( revealElement, '.navigate-down' );\n\t\tthis.controlsPrev = queryAll( revealElement, '.navigate-prev' );\n\t\tthis.controlsNext = queryAll( revealElement, '.navigate-next' );\n\n\t\t// The left, right and down arrows in the standard reveal.js controls\n\t\tthis.controlsRightArrow = this.element.querySelector( '.navigate-right' );\n\t\tthis.controlsLeftArrow = this.element.querySelector( '.navigate-left' );\n\t\tthis.controlsDownArrow = this.element.querySelector( '.navigate-down' );\n\n\t}\n\n\t/**\n\t * Called when the reveal.js config is updated.\n\t */\n\tconfigure( config, oldConfig ) {\n\n\t\tthis.element.style.display = config.controls ? 'block' : 'none';\n\n\t\tthis.element.setAttribute( 'data-controls-layout', config.controlsLayout );\n\t\tthis.element.setAttribute( 'data-controls-back-arrows', config.controlsBackArrows );\n\n\t}\n\n\tbind() {\n\n\t\t// Listen to both touch and click events, in case the device\n\t\t// supports both\n\t\tlet pointerEvents = [ 'touchstart', 'click' ];\n\n\t\t// Only support touch for Android, fixes double navigations in\n\t\t// stock browser\n\t\tif( isAndroid ) {\n\t\t\tpointerEvents = [ 'touchstart' ];\n\t\t}\n\n\t\tpointerEvents.forEach( eventName => {\n\t\t\tthis.controlsLeft.forEach( el => el.addEventListener( eventName, this.onNavigateLeftClicked, false ) );\n\t\t\tthis.controlsRight.forEach( el => el.addEventListener( eventName, this.onNavigateRightClicked, false ) );\n\t\t\tthis.controlsUp.forEach( el => el.addEventListener( eventName, this.onNavigateUpClicked, false ) );\n\t\t\tthis.controlsDown.forEach( el => el.addEventListener( eventName, this.onNavigateDownClicked, false ) );\n\t\t\tthis.controlsPrev.forEach( el => el.addEventListener( eventName, this.onNavigatePrevClicked, false ) );\n\t\t\tthis.controlsNext.forEach( el => el.addEventListener( eventName, this.onNavigateNextClicked, false ) );\n\t\t} );\n\n\t}\n\n\tunbind() {\n\n\t\t[ 'touchstart', 'click' ].forEach( eventName => {\n\t\t\tthis.controlsLeft.forEach( el => el.removeEventListener( eventName, this.onNavigateLeftClicked, false ) );\n\t\t\tthis.controlsRight.forEach( el => el.removeEventListener( eventName, this.onNavigateRightClicked, false ) );\n\t\t\tthis.controlsUp.forEach( el => el.removeEventListener( eventName, this.onNavigateUpClicked, false ) );\n\t\t\tthis.controlsDown.forEach( el => el.removeEventListener( eventName, this.onNavigateDownClicked, false ) );\n\t\t\tthis.controlsPrev.forEach( el => el.removeEventListener( eventName, this.onNavigatePrevClicked, false ) );\n\t\t\tthis.controlsNext.forEach( el => el.removeEventListener( eventName, this.onNavigateNextClicked, false ) );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Updates the state of all control/navigation arrows.\n\t */\n\tupdate() {\n\n\t\tlet routes = this.Reveal.availableRoutes();\n\n\t\t// Remove the 'enabled' class from all directions\n\t\t[...this.controlsLeft, ...this.controlsRight, ...this.controlsUp, ...this.controlsDown, ...this.controlsPrev, ...this.controlsNext].forEach( node => {\n\t\t\tnode.classList.remove( 'enabled', 'fragmented' );\n\n\t\t\t// Set 'disabled' attribute on all directions\n\t\t\tnode.setAttribute( 'disabled', 'disabled' );\n\t\t} );\n\n\t\t// Add the 'enabled' class to the available routes; remove 'disabled' attribute to enable buttons\n\t\tif( routes.left ) this.controlsLeft.forEach( el => { el.classList.add( 'enabled' ); el.removeAttribute( 'disabled' ); } );\n\t\tif( routes.right ) this.controlsRight.forEach( el => { el.classList.add( 'enabled' ); el.removeAttribute( 'disabled' ); } );\n\t\tif( routes.up ) this.controlsUp.forEach( el => { el.classList.add( 'enabled' ); el.removeAttribute( 'disabled' ); } );\n\t\tif( routes.down ) this.controlsDown.forEach( el => { el.classList.add( 'enabled' ); el.removeAttribute( 'disabled' ); } );\n\n\t\t// Prev/next buttons\n\t\tif( routes.left || routes.up ) this.controlsPrev.forEach( el => { el.classList.add( 'enabled' ); el.removeAttribute( 'disabled' ); } );\n\t\tif( routes.right || routes.down ) this.controlsNext.forEach( el => { el.classList.add( 'enabled' ); el.removeAttribute( 'disabled' ); } );\n\n\t\t// Highlight fragment directions\n\t\tlet currentSlide = this.Reveal.getCurrentSlide();\n\t\tif( currentSlide ) {\n\n\t\t\tlet fragmentsRoutes = this.Reveal.fragments.availableRoutes();\n\n\t\t\t// Always apply fragment decorator to prev/next buttons\n\t\t\tif( fragmentsRoutes.prev ) this.controlsPrev.forEach( el => { el.classList.add( 'fragmented', 'enabled' ); el.removeAttribute( 'disabled' ); } );\n\t\t\tif( fragmentsRoutes.next ) this.controlsNext.forEach( el => { el.classList.add( 'fragmented', 'enabled' ); el.removeAttribute( 'disabled' ); } );\n\n\t\t\t// Apply fragment decorators to directional buttons based on\n\t\t\t// what slide axis they are in\n\t\t\tif( this.Reveal.isVerticalSlide( currentSlide ) ) {\n\t\t\t\tif( fragmentsRoutes.prev ) this.controlsUp.forEach( el => { el.classList.add( 'fragmented', 'enabled' ); el.removeAttribute( 'disabled' ); } );\n\t\t\t\tif( fragmentsRoutes.next ) this.controlsDown.forEach( el => { el.classList.add( 'fragmented', 'enabled' ); el.removeAttribute( 'disabled' ); } );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif( fragmentsRoutes.prev ) this.controlsLeft.forEach( el => { el.classList.add( 'fragmented', 'enabled' ); el.removeAttribute( 'disabled' ); } );\n\t\t\t\tif( fragmentsRoutes.next ) this.controlsRight.forEach( el => { el.classList.add( 'fragmented', 'enabled' ); el.removeAttribute( 'disabled' ); } );\n\t\t\t}\n\n\t\t}\n\n\t\tif( this.Reveal.getConfig().controlsTutorial ) {\n\n\t\t\tlet indices = this.Reveal.getIndices();\n\n\t\t\t// Highlight control arrows with an animation to ensure\n\t\t\t// that the viewer knows how to navigate\n\t\t\tif( !this.Reveal.hasNavigatedVertically() && routes.down ) {\n\t\t\t\tthis.controlsDownArrow.classList.add( 'highlight' );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.controlsDownArrow.classList.remove( 'highlight' );\n\n\t\t\t\tif( this.Reveal.getConfig().rtl ) {\n\n\t\t\t\t\tif( !this.Reveal.hasNavigatedHorizontally() && routes.left && indices.v === 0 ) {\n\t\t\t\t\t\tthis.controlsLeftArrow.classList.add( 'highlight' );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.controlsLeftArrow.classList.remove( 'highlight' );\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif( !this.Reveal.hasNavigatedHorizontally() && routes.right && indices.v === 0 ) {\n\t\t\t\t\t\tthis.controlsRightArrow.classList.add( 'highlight' );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.controlsRightArrow.classList.remove( 'highlight' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy() {\n\n\t\tthis.unbind();\n\t\tthis.element.remove();\n\n\t}\n\n\t/**\n\t * Event handlers for navigation control buttons.\n\t */\n\tonNavigateLeftClicked( event ) {\n\n\t\tevent.preventDefault();\n\t\tthis.Reveal.onUserInput();\n\n\t\tif( this.Reveal.getConfig().navigationMode === 'linear' ) {\n\t\t\tthis.Reveal.prev();\n\t\t}\n\t\telse {\n\t\t\tthis.Reveal.left();\n\t\t}\n\n\t}\n\n\tonNavigateRightClicked( event ) {\n\n\t\tevent.preventDefault();\n\t\tthis.Reveal.onUserInput();\n\n\t\tif( this.Reveal.getConfig().navigationMode === 'linear' ) {\n\t\t\tthis.Reveal.next();\n\t\t}\n\t\telse {\n\t\t\tthis.Reveal.right();\n\t\t}\n\n\t}\n\n\tonNavigateUpClicked( event ) {\n\n\t\tevent.preventDefault();\n\t\tthis.Reveal.onUserInput();\n\n\t\tthis.Reveal.up();\n\n\t}\n\n\tonNavigateDownClicked( event ) {\n\n\t\tevent.preventDefault();\n\t\tthis.Reveal.onUserInput();\n\n\t\tthis.Reveal.down();\n\n\t}\n\n\tonNavigatePrevClicked( event ) {\n\n\t\tevent.preventDefault();\n\t\tthis.Reveal.onUserInput();\n\n\t\tthis.Reveal.prev();\n\n\t}\n\n\tonNavigateNextClicked( event ) {\n\n\t\tevent.preventDefault();\n\t\tthis.Reveal.onUserInput();\n\n\t\tthis.Reveal.next();\n\n\t}\n\n\n}","/**\n * Creates a visual progress bar for the presentation.\n */\nexport default class Progress {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t\tthis.onProgressClicked = this.onProgressClicked.bind( this );\n\n\t}\n\n\trender() {\n\n\t\tthis.element = document.createElement( 'div' );\n\t\tthis.element.className = 'progress';\n\t\tthis.Reveal.getRevealElement().appendChild( this.element );\n\n\t\tthis.bar = document.createElement( 'span' );\n\t\tthis.element.appendChild( this.bar );\n\n\t}\n\n\t/**\n\t * Called when the reveal.js config is updated.\n\t */\n\tconfigure( config, oldConfig ) {\n\n\t\tthis.element.style.display = config.progress ? 'block' : 'none';\n\n\t}\n\n\tbind() {\n\n\t\tif( this.Reveal.getConfig().progress && this.element ) {\n\t\t\tthis.element.addEventListener( 'click', this.onProgressClicked, false );\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tif ( this.Reveal.getConfig().progress && this.element ) {\n\t\t\tthis.element.removeEventListener( 'click', this.onProgressClicked, false );\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates the progress bar to reflect the current slide.\n\t */\n\tupdate() {\n\n\t\t// Update progress if enabled\n\t\tif( this.Reveal.getConfig().progress && this.bar ) {\n\n\t\t\tlet scale = this.Reveal.getProgress();\n\n\t\t\t// Don't fill the progress bar if there's only one slide\n\t\t\tif( this.Reveal.getTotalSlides() < 2 ) {\n\t\t\t\tscale = 0;\n\t\t\t}\n\n\t\t\tthis.bar.style.transform = 'scaleX('+ scale +')';\n\n\t\t}\n\n\t}\n\n\tgetMaxWidth() {\n\n\t\treturn this.Reveal.getRevealElement().offsetWidth;\n\n\t}\n\n\t/**\n\t * Clicking on the progress bar results in a navigation to the\n\t * closest approximate horizontal slide using this equation:\n\t *\n\t * ( clickX / presentationWidth ) * numberOfSlides\n\t *\n\t * @param {object} event\n\t */\n\tonProgressClicked( event ) {\n\n\t\tthis.Reveal.onUserInput( event );\n\n\t\tevent.preventDefault();\n\n\t\tlet slides = this.Reveal.getSlides();\n\t\tlet slidesTotal = slides.length;\n\t\tlet slideIndex = Math.floor( ( event.clientX / this.getMaxWidth() ) * slidesTotal );\n\n\t\tif( this.Reveal.getConfig().rtl ) {\n\t\t\tslideIndex = slidesTotal - slideIndex;\n\t\t}\n\n\t\tlet targetIndices = this.Reveal.getIndices(slides[slideIndex]);\n\t\tthis.Reveal.slide( targetIndices.h, targetIndices.v );\n\n\t}\n\n\tdestroy() {\n\n\t\tthis.element.remove();\n\n\t}\n\n}","/**\n * Handles hiding of the pointer/cursor when inactive.\n */\nexport default class Pointer {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t\t// Throttles mouse wheel navigation\n\t\tthis.lastMouseWheelStep = 0;\n\n\t\t// Is the mouse pointer currently hidden from view\n\t\tthis.cursorHidden = false;\n\n\t\t// Timeout used to determine when the cursor is inactive\n\t\tthis.cursorInactiveTimeout = 0;\n\n\t\tthis.onDocumentCursorActive = this.onDocumentCursorActive.bind( this );\n\t\tthis.onDocumentMouseScroll = this.onDocumentMouseScroll.bind( this );\n\n\t}\n\n\t/**\n\t * Called when the reveal.js config is updated.\n\t */\n\tconfigure( config, oldConfig ) {\n\n\t\tif( config.mouseWheel ) {\n\t\t\tdocument.addEventListener( 'DOMMouseScroll', this.onDocumentMouseScroll, false ); // FF\n\t\t\tdocument.addEventListener( 'mousewheel', this.onDocumentMouseScroll, false );\n\t\t}\n\t\telse {\n\t\t\tdocument.removeEventListener( 'DOMMouseScroll', this.onDocumentMouseScroll, false ); // FF\n\t\t\tdocument.removeEventListener( 'mousewheel', this.onDocumentMouseScroll, false );\n\t\t}\n\n\t\t// Auto-hide the mouse pointer when its inactive\n\t\tif( config.hideInactiveCursor ) {\n\t\t\tdocument.addEventListener( 'mousemove', this.onDocumentCursorActive, false );\n\t\t\tdocument.addEventListener( 'mousedown', this.onDocumentCursorActive, false );\n\t\t}\n\t\telse {\n\t\t\tthis.showCursor();\n\n\t\t\tdocument.removeEventListener( 'mousemove', this.onDocumentCursorActive, false );\n\t\t\tdocument.removeEventListener( 'mousedown', this.onDocumentCursorActive, false );\n\t\t}\n\n\t}\n\n\t/**\n\t * Shows the mouse pointer after it has been hidden with\n\t * #hideCursor.\n\t */\n\tshowCursor() {\n\n\t\tif( this.cursorHidden ) {\n\t\t\tthis.cursorHidden = false;\n\t\t\tthis.Reveal.getRevealElement().style.cursor = '';\n\t\t}\n\n\t}\n\n\t/**\n\t * Hides the mouse pointer when it's on top of the .reveal\n\t * container.\n\t */\n\thideCursor() {\n\n\t\tif( this.cursorHidden === false ) {\n\t\t\tthis.cursorHidden = true;\n\t\t\tthis.Reveal.getRevealElement().style.cursor = 'none';\n\t\t}\n\n\t}\n\n\tdestroy() {\n\n\t\tthis.showCursor();\n\n\t\tdocument.removeEventListener( 'DOMMouseScroll', this.onDocumentMouseScroll, false );\n\t\tdocument.removeEventListener( 'mousewheel', this.onDocumentMouseScroll, false );\n\t\tdocument.removeEventListener( 'mousemove', this.onDocumentCursorActive, false );\n\t\tdocument.removeEventListener( 'mousedown', this.onDocumentCursorActive, false );\n\n\t}\n\n\t/**\n\t * Called whenever there is mouse input at the document level\n\t * to determine if the cursor is active or not.\n\t *\n\t * @param {object} event\n\t */\n\tonDocumentCursorActive( event ) {\n\n\t\tthis.showCursor();\n\n\t\tclearTimeout( this.cursorInactiveTimeout );\n\n\t\tthis.cursorInactiveTimeout = setTimeout( this.hideCursor.bind( this ), this.Reveal.getConfig().hideCursorTime );\n\n\t}\n\n\t/**\n\t * Handles mouse wheel scrolling, throttled to avoid skipping\n\t * multiple slides.\n\t *\n\t * @param {object} event\n\t */\n\tonDocumentMouseScroll( event ) {\n\n\t\tif( Date.now() - this.lastMouseWheelStep > 1000 ) {\n\n\t\t\tthis.lastMouseWheelStep = Date.now();\n\n\t\t\tlet delta = event.detail || -event.wheelDelta;\n\t\t\tif( delta > 0 ) {\n\t\t\t\tthis.Reveal.next();\n\t\t\t}\n\t\t\telse if( delta < 0 ) {\n\t\t\t\tthis.Reveal.prev();\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}","/**\n * Loads a JavaScript file from the given URL and executes it.\n *\n * @param {string} url Address of the .js file to load\n * @param {function} callback Method to invoke when the script\n * has loaded and executed\n */\nexport const loadScript = ( url, callback ) => {\n\n\tconst script = document.createElement( 'script' );\n\tscript.type = 'text/javascript';\n\tscript.async = false;\n\tscript.defer = false;\n\tscript.src = url;\n\n\tif( typeof callback === 'function' ) {\n\n\t\t// Success callback\n\t\tscript.onload = script.onreadystatechange = event => {\n\t\t\tif( event.type === 'load' || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t// Kill event listeners\n\t\t\t\tscript.onload = script.onreadystatechange = script.onerror = null;\n\n\t\t\t\tcallback();\n\n\t\t\t}\n\t\t};\n\n\t\t// Error callback\n\t\tscript.onerror = err => {\n\n\t\t\t// Kill event listeners\n\t\t\tscript.onload = script.onreadystatechange = script.onerror = null;\n\n\t\t\tcallback( new Error( 'Failed loading script: ' + script.src + '\\n' + err ) );\n\n\t\t};\n\n\t}\n\n\t// Append the script at the end of \n\tconst head = document.querySelector( 'head' );\n\thead.insertBefore( script, head.lastChild );\n\n}","import { loadScript } from '../utils/loader.js'\n\n/**\n * Manages loading and registering of reveal.js plugins.\n */\nexport default class Plugins {\n\n\tconstructor( reveal ) {\n\n\t\tthis.Reveal = reveal;\n\n\t\t// Flags our current state (idle -> loading -> loaded)\n\t\tthis.state = 'idle';\n\n\t\t// An id:instance map of currently registed plugins\n\t\tthis.registeredPlugins = {};\n\n\t\tthis.asyncDependencies = [];\n\n\t}\n\n\t/**\n\t * Loads reveal.js dependencies, registers and\n\t * initializes plugins.\n\t *\n\t * Plugins are direct references to a reveal.js plugin\n\t * object that we register and initialize after any\n\t * synchronous dependencies have loaded.\n\t *\n\t * Dependencies are defined via the 'dependencies' config\n\t * option and will be loaded prior to starting reveal.js.\n\t * Some dependencies may have an 'async' flag, if so they\n\t * will load after reveal.js has been started up.\n\t */\n\tload( plugins, dependencies ) {\n\n\t\tthis.state = 'loading';\n\n\t\tplugins.forEach( this.registerPlugin.bind( this ) );\n\n\t\treturn new Promise( resolve => {\n\n\t\t\tlet scripts = [],\n\t\t\t\tscriptsToLoad = 0;\n\n\t\t\tdependencies.forEach( s => {\n\t\t\t\t// Load if there's no condition or the condition is truthy\n\t\t\t\tif( !s.condition || s.condition() ) {\n\t\t\t\t\tif( s.async ) {\n\t\t\t\t\t\tthis.asyncDependencies.push( s );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tscripts.push( s );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif( scripts.length ) {\n\t\t\t\tscriptsToLoad = scripts.length;\n\n\t\t\t\tconst scriptLoadedCallback = (s) => {\n\t\t\t\t\tif( s && typeof s.callback === 'function' ) s.callback();\n\n\t\t\t\t\tif( --scriptsToLoad === 0 ) {\n\t\t\t\t\t\tthis.initPlugins().then( resolve );\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Load synchronous scripts\n\t\t\t\tscripts.forEach( s => {\n\t\t\t\t\tif( typeof s.id === 'string' ) {\n\t\t\t\t\t\tthis.registerPlugin( s );\n\t\t\t\t\t\tscriptLoadedCallback( s );\n\t\t\t\t\t}\n\t\t\t\t\telse if( typeof s.src === 'string' ) {\n\t\t\t\t\t\tloadScript( s.src, () => scriptLoadedCallback(s) );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tconsole.warn( 'Unrecognized plugin format', s );\n\t\t\t\t\t\tscriptLoadedCallback();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.initPlugins().then( resolve );\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Initializes our plugins and waits for them to be ready\n\t * before proceeding.\n\t */\n\tinitPlugins() {\n\n\t\treturn new Promise( resolve => {\n\n\t\t\tlet pluginValues = Object.values( this.registeredPlugins );\n\t\t\tlet pluginsToInitialize = pluginValues.length;\n\n\t\t\t// If there are no plugins, skip this step\n\t\t\tif( pluginsToInitialize === 0 ) {\n\t\t\t\tthis.loadAsync().then( resolve );\n\t\t\t}\n\t\t\t// ... otherwise initialize plugins\n\t\t\telse {\n\n\t\t\t\tlet initNextPlugin;\n\n\t\t\t\tlet afterPlugInitialized = () => {\n\t\t\t\t\tif( --pluginsToInitialize === 0 ) {\n\t\t\t\t\t\tthis.loadAsync().then( resolve );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tinitNextPlugin();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tlet i = 0;\n\n\t\t\t\t// Initialize plugins serially\n\t\t\t\tinitNextPlugin = () => {\n\n\t\t\t\t\tlet plugin = pluginValues[i++];\n\n\t\t\t\t\t// If the plugin has an 'init' method, invoke it\n\t\t\t\t\tif( typeof plugin.init === 'function' ) {\n\t\t\t\t\t\tlet promise = plugin.init( this.Reveal );\n\n\t\t\t\t\t\t// If the plugin returned a Promise, wait for it\n\t\t\t\t\t\tif( promise && typeof promise.then === 'function' ) {\n\t\t\t\t\t\t\tpromise.then( afterPlugInitialized );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tafterPlugInitialized();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tafterPlugInitialized();\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tinitNextPlugin();\n\n\t\t\t}\n\n\t\t} )\n\n\t}\n\n\t/**\n\t * Loads all async reveal.js dependencies.\n\t */\n\tloadAsync() {\n\n\t\tthis.state = 'loaded';\n\n\t\tif( this.asyncDependencies.length ) {\n\t\t\tthis.asyncDependencies.forEach( s => {\n\t\t\t\tloadScript( s.src, s.callback );\n\t\t\t} );\n\t\t}\n\n\t\treturn Promise.resolve();\n\n\t}\n\n\t/**\n\t * Registers a new plugin with this reveal.js instance.\n\t *\n\t * reveal.js waits for all regisered plugins to initialize\n\t * before considering itself ready, as long as the plugin\n\t * is registered before calling `Reveal.initialize()`.\n\t */\n\tregisterPlugin( plugin ) {\n\n\t\t// Backwards compatibility to make reveal.js ~3.9.0\n\t\t// plugins work with reveal.js 4.0.0\n\t\tif( arguments.length === 2 && typeof arguments[0] === 'string' ) {\n\t\t\tplugin = arguments[1];\n\t\t\tplugin.id = arguments[0];\n\t\t}\n\t\t// Plugin can optionally be a function which we call\n\t\t// to create an instance of the plugin\n\t\telse if( typeof plugin === 'function' ) {\n\t\t\tplugin = plugin();\n\t\t}\n\n\t\tlet id = plugin.id;\n\n\t\tif( typeof id !== 'string' ) {\n\t\t\tconsole.warn( 'Unrecognized plugin format; can\\'t find plugin.id', plugin );\n\t\t}\n\t\telse if( this.registeredPlugins[id] === undefined ) {\n\t\t\tthis.registeredPlugins[id] = plugin;\n\n\t\t\t// If a plugin is registered after reveal.js is loaded,\n\t\t\t// initialize it right away\n\t\t\tif( this.state === 'loaded' && typeof plugin.init === 'function' ) {\n\t\t\t\tplugin.init( this.Reveal );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tconsole.warn( 'reveal.js: \"'+ id +'\" plugin has already been registered' );\n\t\t}\n\n\t}\n\n\t/**\n\t * Checks if a specific plugin has been registered.\n\t *\n\t * @param {String} id Unique plugin identifier\n\t */\n\thasPlugin( id ) {\n\n\t\treturn !!this.registeredPlugins[id];\n\n\t}\n\n\t/**\n\t * Returns the specific plugin instance, if a plugin\n\t * with the given ID has been registered.\n\t *\n\t * @param {String} id Unique plugin identifier\n\t */\n\tgetPlugin( id ) {\n\n\t\treturn this.registeredPlugins[id];\n\n\t}\n\n\tgetRegisteredPlugins() {\n\n\t\treturn this.registeredPlugins;\n\n\t}\n\n\tdestroy() {\n\n\t\tObject.values( this.registeredPlugins ).forEach( plugin => {\n\t\t\tif( typeof plugin.destroy === 'function' ) {\n\t\t\t\tplugin.destroy();\n\t\t\t}\n\t\t} );\n\n\t\tthis.registeredPlugins = {};\n\t\tthis.asyncDependencies = [];\n\n\t}\n\n}\n","import { SLIDES_SELECTOR } from '../utils/constants.js'\nimport { queryAll, createStyleSheet } from '../utils/util.js'\n\n/**\n * Setups up our presentation for printing/exporting to PDF.\n */\nexport default class Print {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t}\n\n\t/**\n\t * Configures the presentation for printing to a static\n\t * PDF.\n\t */\n\tasync setupPDF() {\n\n\t\tconst config = this.Reveal.getConfig();\n\t\tconst slides = queryAll( this.Reveal.getRevealElement(), SLIDES_SELECTOR )\n\n\t\t// Compute slide numbers now, before we start duplicating slides\n\t\tconst doingSlideNumbers = config.slideNumber && /all|print/i.test( config.showSlideNumber );\n\n\t\tconst slideSize = this.Reveal.getComputedSlideSize( window.innerWidth, window.innerHeight );\n\n\t\t// Dimensions of the PDF pages\n\t\tconst pageWidth = Math.floor( slideSize.width * ( 1 + config.margin ) ),\n\t\t\tpageHeight = Math.floor( slideSize.height * ( 1 + config.margin ) );\n\n\t\t// Dimensions of slides within the pages\n\t\tconst slideWidth = slideSize.width,\n\t\t\tslideHeight = slideSize.height;\n\n\t\tawait new Promise( requestAnimationFrame );\n\n\t\t// Let the browser know what page size we want to print\n\t\tcreateStyleSheet( '@page{size:'+ pageWidth +'px '+ pageHeight +'px; margin: 0px;}' );\n\n\t\t// Limit the size of certain elements to the dimensions of the slide\n\t\tcreateStyleSheet( '.reveal section>img, .reveal section>video, .reveal section>iframe{max-width: '+ slideWidth +'px; max-height:'+ slideHeight +'px}' );\n\n\t\tdocument.documentElement.classList.add( 'print-pdf' );\n\t\tdocument.body.style.width = pageWidth + 'px';\n\t\tdocument.body.style.height = pageHeight + 'px';\n\n\t\tconst viewportElement = document.querySelector( '.reveal-viewport' );\n\t\tlet presentationBackground;\n\t\tif( viewportElement ) {\n\t\t\tconst viewportStyles = window.getComputedStyle( viewportElement );\n\t\t\tif( viewportStyles && viewportStyles.background ) {\n\t\t\t\tpresentationBackground = viewportStyles.background;\n\t\t\t}\n\t\t}\n\n\t\t// Make sure stretch elements fit on slide\n\t\tawait new Promise( requestAnimationFrame );\n\t\tthis.Reveal.layoutSlideContents( slideWidth, slideHeight );\n\n\t\t// Batch scrollHeight access to prevent layout thrashing\n\t\tawait new Promise( requestAnimationFrame );\n\n\t\tconst slideScrollHeights = slides.map( slide => slide.scrollHeight );\n\n\t\tconst pages = [];\n\t\tconst pageContainer = slides[0].parentNode;\n\n\t\t// Slide and slide background layout\n\t\tslides.forEach( function( slide, index ) {\n\n\t\t\t// Vertical stacks are not centred since their section\n\t\t\t// children will be\n\t\t\tif( slide.classList.contains( 'stack' ) === false ) {\n\t\t\t\t// Center the slide inside of the page, giving the slide some margin\n\t\t\t\tlet left = ( pageWidth - slideWidth ) / 2;\n\t\t\t\tlet top = ( pageHeight - slideHeight ) / 2;\n\n\t\t\t\tconst contentHeight = slideScrollHeights[ index ];\n\t\t\t\tlet numberOfPages = Math.max( Math.ceil( contentHeight / pageHeight ), 1 );\n\n\t\t\t\t// Adhere to configured pages per slide limit\n\t\t\t\tnumberOfPages = Math.min( numberOfPages, config.pdfMaxPagesPerSlide );\n\n\t\t\t\t// Center slides vertically\n\t\t\t\tif( numberOfPages === 1 && config.center || slide.classList.contains( 'center' ) ) {\n\t\t\t\t\ttop = Math.max( ( pageHeight - contentHeight ) / 2, 0 );\n\t\t\t\t}\n\n\t\t\t\t// Wrap the slide in a page element and hide its overflow\n\t\t\t\t// so that no page ever flows onto another\n\t\t\t\tconst page = document.createElement( 'div' );\n\t\t\t\tpages.push( page );\n\n\t\t\t\tpage.className = 'pdf-page';\n\t\t\t\tpage.style.height = ( ( pageHeight + config.pdfPageHeightOffset ) * numberOfPages ) + 'px';\n\n\t\t\t\t// Copy the presentation-wide background to each individual\n\t\t\t\t// page when printing\n\t\t\t\tif( presentationBackground ) {\n\t\t\t\t\tpage.style.background = presentationBackground;\n\t\t\t\t}\n\n\t\t\t\tpage.appendChild( slide );\n\n\t\t\t\t// Position the slide inside of the page\n\t\t\t\tslide.style.left = left + 'px';\n\t\t\t\tslide.style.top = top + 'px';\n\t\t\t\tslide.style.width = slideWidth + 'px';\n\n\t\t\t\t// Re-run the slide layout so that r-fit-text is applied based on\n\t\t\t\t// the printed slide size\n\t\t\t\tthis.Reveal.slideContent.layout( slide )\n\n\t\t\t\tif( slide.slideBackgroundElement ) {\n\t\t\t\t\tpage.insertBefore( slide.slideBackgroundElement, slide );\n\t\t\t\t}\n\n\t\t\t\t// Inject notes if `showNotes` is enabled\n\t\t\t\tif( config.showNotes ) {\n\n\t\t\t\t\t// Are there notes for this slide?\n\t\t\t\t\tconst notes = this.Reveal.getSlideNotes( slide );\n\t\t\t\t\tif( notes ) {\n\n\t\t\t\t\t\tconst notesSpacing = 8;\n\t\t\t\t\t\tconst notesLayout = typeof config.showNotes === 'string' ? config.showNotes : 'inline';\n\t\t\t\t\t\tconst notesElement = document.createElement( 'div' );\n\t\t\t\t\t\tnotesElement.classList.add( 'speaker-notes' );\n\t\t\t\t\t\tnotesElement.classList.add( 'speaker-notes-pdf' );\n\t\t\t\t\t\tnotesElement.setAttribute( 'data-layout', notesLayout );\n\t\t\t\t\t\tnotesElement.innerHTML = notes;\n\n\t\t\t\t\t\tif( notesLayout === 'separate-page' ) {\n\t\t\t\t\t\t\tpages.push( notesElement );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tnotesElement.style.left = notesSpacing + 'px';\n\t\t\t\t\t\t\tnotesElement.style.bottom = notesSpacing + 'px';\n\t\t\t\t\t\t\tnotesElement.style.width = ( pageWidth - notesSpacing*2 ) + 'px';\n\t\t\t\t\t\t\tpage.appendChild( notesElement );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// Inject slide numbers if `slideNumbers` are enabled\n\t\t\t\tif( doingSlideNumbers ) {\n\t\t\t\t\tconst slideNumber = index + 1;\n\t\t\t\t\tconst numberElement = document.createElement( 'div' );\n\t\t\t\t\tnumberElement.classList.add( 'slide-number' );\n\t\t\t\t\tnumberElement.classList.add( 'slide-number-pdf' );\n\t\t\t\t\tnumberElement.innerHTML = slideNumber;\n\t\t\t\t\tpage.appendChild( numberElement );\n\t\t\t\t}\n\n\t\t\t\t// Copy page and show fragments one after another\n\t\t\t\tif( config.pdfSeparateFragments ) {\n\n\t\t\t\t\t// Each fragment 'group' is an array containing one or more\n\t\t\t\t\t// fragments. Multiple fragments that appear at the same time\n\t\t\t\t\t// are part of the same group.\n\t\t\t\t\tconst fragmentGroups = this.Reveal.fragments.sort( page.querySelectorAll( '.fragment' ), true );\n\n\t\t\t\t\tlet previousFragmentStep;\n\n\t\t\t\t\tfragmentGroups.forEach( function( fragments ) {\n\n\t\t\t\t\t\t// Remove 'current-fragment' from the previous group\n\t\t\t\t\t\tif( previousFragmentStep ) {\n\t\t\t\t\t\t\tpreviousFragmentStep.forEach( function( fragment ) {\n\t\t\t\t\t\t\t\tfragment.classList.remove( 'current-fragment' );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Show the fragments for the current index\n\t\t\t\t\t\tfragments.forEach( function( fragment ) {\n\t\t\t\t\t\t\tfragment.classList.add( 'visible', 'current-fragment' );\n\t\t\t\t\t\t}, this );\n\n\t\t\t\t\t\t// Create a separate page for the current fragment state\n\t\t\t\t\t\tconst clonedPage = page.cloneNode( true );\n\t\t\t\t\t\tpages.push( clonedPage );\n\n\t\t\t\t\t\tpreviousFragmentStep = fragments;\n\n\t\t\t\t\t}, this );\n\n\t\t\t\t\t// Reset the first/original page so that all fragments are hidden\n\t\t\t\t\tfragmentGroups.forEach( function( fragments ) {\n\t\t\t\t\t\tfragments.forEach( function( fragment ) {\n\t\t\t\t\t\t\tfragment.classList.remove( 'visible', 'current-fragment' );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\t\t\t\t// Show all fragments\n\t\t\t\telse {\n\t\t\t\t\tqueryAll( page, '.fragment:not(.fade-out)' ).forEach( function( fragment ) {\n\t\t\t\t\t\tfragment.classList.add( 'visible' );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}, this );\n\n\t\tawait new Promise( requestAnimationFrame );\n\n\t\tpages.forEach( page => pageContainer.appendChild( page ) );\n\n\t\t// Notify subscribers that the PDF layout is good to go\n\t\tthis.Reveal.dispatchEvent({ type: 'pdf-ready' });\n\n\t}\n\n\t/**\n\t * Checks if this instance is being used to print a PDF.\n\t */\n\tisPrintingPDF() {\n\n\t\treturn ( /print-pdf/gi ).test( window.location.search );\n\n\t}\n\n}\n","import { isAndroid } from '../utils/device.js'\nimport { matches } from '../utils/util.js'\n\nconst SWIPE_THRESHOLD = 40;\n\n/**\n * Controls all touch interactions and navigations for\n * a presentation.\n */\nexport default class Touch {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t\t// Holds information about the currently ongoing touch interaction\n\t\tthis.touchStartX = 0;\n\t\tthis.touchStartY = 0;\n\t\tthis.touchStartCount = 0;\n\t\tthis.touchCaptured = false;\n\n\t\tthis.onPointerDown = this.onPointerDown.bind( this );\n\t\tthis.onPointerMove = this.onPointerMove.bind( this );\n\t\tthis.onPointerUp = this.onPointerUp.bind( this );\n\t\tthis.onTouchStart = this.onTouchStart.bind( this );\n\t\tthis.onTouchMove = this.onTouchMove.bind( this );\n\t\tthis.onTouchEnd = this.onTouchEnd.bind( this );\n\n\t}\n\n\t/**\n\t *\n\t */\n\tbind() {\n\n\t\tlet revealElement = this.Reveal.getRevealElement();\n\n\t\tif( 'onpointerdown' in window ) {\n\t\t\t// Use W3C pointer events\n\t\t\trevealElement.addEventListener( 'pointerdown', this.onPointerDown, false );\n\t\t\trevealElement.addEventListener( 'pointermove', this.onPointerMove, false );\n\t\t\trevealElement.addEventListener( 'pointerup', this.onPointerUp, false );\n\t\t}\n\t\telse if( window.navigator.msPointerEnabled ) {\n\t\t\t// IE 10 uses prefixed version of pointer events\n\t\t\trevealElement.addEventListener( 'MSPointerDown', this.onPointerDown, false );\n\t\t\trevealElement.addEventListener( 'MSPointerMove', this.onPointerMove, false );\n\t\t\trevealElement.addEventListener( 'MSPointerUp', this.onPointerUp, false );\n\t\t}\n\t\telse {\n\t\t\t// Fall back to touch events\n\t\t\trevealElement.addEventListener( 'touchstart', this.onTouchStart, false );\n\t\t\trevealElement.addEventListener( 'touchmove', this.onTouchMove, false );\n\t\t\trevealElement.addEventListener( 'touchend', this.onTouchEnd, false );\n\t\t}\n\n\t}\n\n\t/**\n\t *\n\t */\n\tunbind() {\n\n\t\tlet revealElement = this.Reveal.getRevealElement();\n\n\t\trevealElement.removeEventListener( 'pointerdown', this.onPointerDown, false );\n\t\trevealElement.removeEventListener( 'pointermove', this.onPointerMove, false );\n\t\trevealElement.removeEventListener( 'pointerup', this.onPointerUp, false );\n\n\t\trevealElement.removeEventListener( 'MSPointerDown', this.onPointerDown, false );\n\t\trevealElement.removeEventListener( 'MSPointerMove', this.onPointerMove, false );\n\t\trevealElement.removeEventListener( 'MSPointerUp', this.onPointerUp, false );\n\n\t\trevealElement.removeEventListener( 'touchstart', this.onTouchStart, false );\n\t\trevealElement.removeEventListener( 'touchmove', this.onTouchMove, false );\n\t\trevealElement.removeEventListener( 'touchend', this.onTouchEnd, false );\n\n\t}\n\n\t/**\n\t * Checks if the target element prevents the triggering of\n\t * swipe navigation.\n\t */\n\tisSwipePrevented( target ) {\n\n\t\t// Prevent accidental swipes when scrubbing timelines\n\t\tif( matches( target, 'video, audio' ) ) return true;\n\n\t\twhile( target && typeof target.hasAttribute === 'function' ) {\n\t\t\tif( target.hasAttribute( 'data-prevent-swipe' ) ) return true;\n\t\t\ttarget = target.parentNode;\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Handler for the 'touchstart' event, enables support for\n\t * swipe and pinch gestures.\n\t *\n\t * @param {object} event\n\t */\n\tonTouchStart( event ) {\n\n\t\tif( this.isSwipePrevented( event.target ) ) return true;\n\n\t\tthis.touchStartX = event.touches[0].clientX;\n\t\tthis.touchStartY = event.touches[0].clientY;\n\t\tthis.touchStartCount = event.touches.length;\n\n\t}\n\n\t/**\n\t * Handler for the 'touchmove' event.\n\t *\n\t * @param {object} event\n\t */\n\tonTouchMove( event ) {\n\n\t\tif( this.isSwipePrevented( event.target ) ) return true;\n\n\t\tlet config = this.Reveal.getConfig();\n\n\t\t// Each touch should only trigger one action\n\t\tif( !this.touchCaptured ) {\n\t\t\tthis.Reveal.onUserInput( event );\n\n\t\t\tlet currentX = event.touches[0].clientX;\n\t\t\tlet currentY = event.touches[0].clientY;\n\n\t\t\t// There was only one touch point, look for a swipe\n\t\t\tif( event.touches.length === 1 && this.touchStartCount !== 2 ) {\n\n\t\t\t\tlet availableRoutes = this.Reveal.availableRoutes({ includeFragments: true });\n\n\t\t\t\tlet deltaX = currentX - this.touchStartX,\n\t\t\t\t\tdeltaY = currentY - this.touchStartY;\n\n\t\t\t\tif( deltaX > SWIPE_THRESHOLD && Math.abs( deltaX ) > Math.abs( deltaY ) ) {\n\t\t\t\t\tthis.touchCaptured = true;\n\t\t\t\t\tif( config.navigationMode === 'linear' ) {\n\t\t\t\t\t\tif( config.rtl ) {\n\t\t\t\t\t\t\tthis.Reveal.next();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.Reveal.prev();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.Reveal.left();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if( deltaX < -SWIPE_THRESHOLD && Math.abs( deltaX ) > Math.abs( deltaY ) ) {\n\t\t\t\t\tthis.touchCaptured = true;\n\t\t\t\t\tif( config.navigationMode === 'linear' ) {\n\t\t\t\t\t\tif( config.rtl ) {\n\t\t\t\t\t\t\tthis.Reveal.prev();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.Reveal.next();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.Reveal.right();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if( deltaY > SWIPE_THRESHOLD && availableRoutes.up ) {\n\t\t\t\t\tthis.touchCaptured = true;\n\t\t\t\t\tif( config.navigationMode === 'linear' ) {\n\t\t\t\t\t\tthis.Reveal.prev();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.Reveal.up();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if( deltaY < -SWIPE_THRESHOLD && availableRoutes.down ) {\n\t\t\t\t\tthis.touchCaptured = true;\n\t\t\t\t\tif( config.navigationMode === 'linear' ) {\n\t\t\t\t\t\tthis.Reveal.next();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.Reveal.down();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If we're embedded, only block touch events if they have\n\t\t\t\t// triggered an action\n\t\t\t\tif( config.embedded ) {\n\t\t\t\t\tif( this.touchCaptured || this.Reveal.isVerticalSlide() ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Not embedded? Block them all to avoid needless tossing\n\t\t\t\t// around of the viewport in iOS\n\t\t\t\telse {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\t// There's a bug with swiping on some Android devices unless\n\t\t// the default action is always prevented\n\t\telse if( isAndroid ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t}\n\n\t/**\n\t * Handler for the 'touchend' event.\n\t *\n\t * @param {object} event\n\t */\n\tonTouchEnd( event ) {\n\n\t\tthis.touchCaptured = false;\n\n\t}\n\n\t/**\n\t * Convert pointer down to touch start.\n\t *\n\t * @param {object} event\n\t */\n\tonPointerDown( event ) {\n\n\t\tif( event.pointerType === event.MSPOINTER_TYPE_TOUCH || event.pointerType === \"touch\" ) {\n\t\t\tevent.touches = [{ clientX: event.clientX, clientY: event.clientY }];\n\t\t\tthis.onTouchStart( event );\n\t\t}\n\n\t}\n\n\t/**\n\t * Convert pointer move to touch move.\n\t *\n\t * @param {object} event\n\t */\n\tonPointerMove( event ) {\n\n\t\tif( event.pointerType === event.MSPOINTER_TYPE_TOUCH || event.pointerType === \"touch\" ) {\n\t\t\tevent.touches = [{ clientX: event.clientX, clientY: event.clientY }];\n\t\t\tthis.onTouchMove( event );\n\t\t}\n\n\t}\n\n\t/**\n\t * Convert pointer up to touch end.\n\t *\n\t * @param {object} event\n\t */\n\tonPointerUp( event ) {\n\n\t\tif( event.pointerType === event.MSPOINTER_TYPE_TOUCH || event.pointerType === \"touch\" ) {\n\t\t\tevent.touches = [{ clientX: event.clientX, clientY: event.clientY }];\n\t\t\tthis.onTouchEnd( event );\n\t\t}\n\n\t}\n\n}","import { closest } from '../utils/util.js'\n\n/**\n * Manages focus when a presentation is embedded. This\n * helps us only capture keyboard from the presentation\n * a user is currently interacting with in a page where\n * multiple presentations are embedded.\n */\n\nconst STATE_FOCUS = 'focus';\nconst STATE_BLUR = 'blur';\n\nexport default class Focus {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t\tthis.onRevealPointerDown = this.onRevealPointerDown.bind( this );\n\t\tthis.onDocumentPointerDown = this.onDocumentPointerDown.bind( this );\n\n\t}\n\n\t/**\n\t * Called when the reveal.js config is updated.\n\t */\n\tconfigure( config, oldConfig ) {\n\n\t\tif( config.embedded ) {\n\t\t\tthis.blur();\n\t\t}\n\t\telse {\n\t\t\tthis.focus();\n\t\t\tthis.unbind();\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tif( this.Reveal.getConfig().embedded ) {\n\t\t\tthis.Reveal.getRevealElement().addEventListener( 'pointerdown', this.onRevealPointerDown, false );\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tthis.Reveal.getRevealElement().removeEventListener( 'pointerdown', this.onRevealPointerDown, false );\n\t\tdocument.removeEventListener( 'pointerdown', this.onDocumentPointerDown, false );\n\n\t}\n\n\tfocus() {\n\n\t\tif( this.state !== STATE_FOCUS ) {\n\t\t\tthis.Reveal.getRevealElement().classList.add( 'focused' );\n\t\t\tdocument.addEventListener( 'pointerdown', this.onDocumentPointerDown, false );\n\t\t}\n\n\t\tthis.state = STATE_FOCUS;\n\n\t}\n\n\tblur() {\n\n\t\tif( this.state !== STATE_BLUR ) {\n\t\t\tthis.Reveal.getRevealElement().classList.remove( 'focused' );\n\t\t\tdocument.removeEventListener( 'pointerdown', this.onDocumentPointerDown, false );\n\t\t}\n\n\t\tthis.state = STATE_BLUR;\n\n\t}\n\n\tisFocused() {\n\n\t\treturn this.state === STATE_FOCUS;\n\n\t}\n\n\tdestroy() {\n\n\t\tthis.Reveal.getRevealElement().classList.remove( 'focused' );\n\n\t}\n\n\tonRevealPointerDown( event ) {\n\n\t\tthis.focus();\n\n\t}\n\n\tonDocumentPointerDown( event ) {\n\n\t\tlet revealElement = closest( event.target, '.reveal' );\n\t\tif( !revealElement || revealElement !== this.Reveal.getRevealElement() ) {\n\t\t\tthis.blur();\n\t\t}\n\n\t}\n\n}","/**\n * Handles the showing and \n */\nexport default class Notes {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t}\n\n\trender() {\n\n\t\tthis.element = document.createElement( 'div' );\n\t\tthis.element.className = 'speaker-notes';\n\t\tthis.element.setAttribute( 'data-prevent-swipe', '' );\n\t\tthis.element.setAttribute( 'tabindex', '0' );\n\t\tthis.Reveal.getRevealElement().appendChild( this.element );\n\n\t}\n\n\t/**\n\t * Called when the reveal.js config is updated.\n\t */\n\tconfigure( config, oldConfig ) {\n\n\t\tif( config.showNotes ) {\n\t\t\tthis.element.setAttribute( 'data-layout', typeof config.showNotes === 'string' ? config.showNotes : 'inline' );\n\t\t}\n\n\t}\n\n\t/**\n\t * Pick up notes from the current slide and display them\n\t * to the viewer.\n\t *\n\t * @see {@link config.showNotes}\n\t */\n\tupdate() {\n\n\t\tif( this.Reveal.getConfig().showNotes && this.element && this.Reveal.getCurrentSlide() && !this.Reveal.print.isPrintingPDF() ) {\n\n\t\t\tthis.element.innerHTML = this.getSlideNotes() || 'No notes on this slide.';\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates the visibility of the speaker notes sidebar that\n\t * is used to share annotated slides. The notes sidebar is\n\t * only visible if showNotes is true and there are notes on\n\t * one or more slides in the deck.\n\t */\n\tupdateVisibility() {\n\n\t\tif( this.Reveal.getConfig().showNotes && this.hasNotes() && !this.Reveal.print.isPrintingPDF() ) {\n\t\t\tthis.Reveal.getRevealElement().classList.add( 'show-notes' );\n\t\t}\n\t\telse {\n\t\t\tthis.Reveal.getRevealElement().classList.remove( 'show-notes' );\n\t\t}\n\n\t}\n\n\t/**\n\t * Checks if there are speaker notes for ANY slide in the\n\t * presentation.\n\t */\n\thasNotes() {\n\n\t\treturn this.Reveal.getSlidesElement().querySelectorAll( '[data-notes], aside.notes' ).length > 0;\n\n\t}\n\n\t/**\n\t * Checks if this presentation is running inside of the\n\t * speaker notes window.\n\t *\n\t * @return {boolean}\n\t */\n\tisSpeakerNotesWindow() {\n\n\t\treturn !!window.location.search.match( /receiver/gi );\n\n\t}\n\n\t/**\n\t * Retrieves the speaker notes from a slide. Notes can be\n\t * defined in two ways:\n\t * 1. As a data-notes attribute on the slide
\n\t * 2. As an