talks/homeserver.html

477 lines
149 KiB
HTML

<!DOCTYPE html><html lang="en-US"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0"><meta name="apple-mobile-web-app-capable" content="yes"><meta http-equiv="X-UA-Compatible" content="ie=edge"><meta property="og:type" content="website"><meta name="twitter:card" content="summary"><style>@media screen{body,html{background:#000;height:100%;margin:0;overflow:hidden}.bespoke-marp-osc{display:none;opacity:0}.bespoke-marp-parent{bottom:0;left:0;position:absolute;right:0;top:0}.bespoke-marp-parent>.bespoke-marp-osc{background:rgba(0,0,0,.65);border-radius:7px;bottom:50px;color:#fff;display:block;font-family:Helvetica,Arial,sans-serif;font-size:16px;left:50%;line-height:0;opacity:1;padding:12px;position:absolute;touch-action:manipulation;-webkit-transform:translateX(-50%);transform:translateX(-50%);transition:opacity .2s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;z-index:1}.bespoke-marp-parent>.bespoke-marp-osc>*{margin-left:6px}.bespoke-marp-parent>.bespoke-marp-osc>:first-child{margin-left:0}.bespoke-marp-parent>.bespoke-marp-osc>span{opacity:.8}.bespoke-marp-parent>.bespoke-marp-osc>span[data-bespoke-marp-osc=page]{display:inline-block;min-width:140px;text-align:center}.bespoke-marp-parent>.bespoke-marp-osc>button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;color:inherit;cursor:pointer;font-size:inherit;opacity:.8;outline:none;padding:0;transition:opacity .2s linear;-webkit-tap-highlight-color:transparent}.bespoke-marp-parent>.bespoke-marp-osc>button:disabled{cursor:not-allowed;opacity:.15!important}.bespoke-marp-parent>.bespoke-marp-osc>button:hover{opacity:1}.bespoke-marp-parent>.bespoke-marp-osc>button:hover:active{opacity:.6}.bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled){transition:none}.bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev]{background:transparent url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1IiBkPSJNNjggOTBMMjggNTBsNDAtNDAiLz48L3N2Zz4=") no-repeat 50%;background-size:contain;height:32px;overflow:hidden;text-indent:100%;white-space:nowrap;width:32px}.bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next]{background:transparent url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1IiBkPSJNMzIgOTBsNDAtNDAtNDAtNDAiLz48L3N2Zz4=") no-repeat 50%;background-size:contain;height:32px;overflow:hidden;text-indent:100%;white-space:nowrap;width:32px}.bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen]{background:transparent url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6NXB4fTwvc3R5bGU+PC9kZWZzPjxyZWN0IGNsYXNzPSJhIiB4PSIxMCIgeT0iMjAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI2MCIgcng9IjUuNjciLz48cGF0aCBjbGFzcz0iYSIgZD0iTTQwIDcwSDIwVjUwbTIwIDBMMjAgNzBtNDAtNDBoMjB2MjBtLTIwIDBsMjAtMjAiLz48L3N2Zz4=") no-repeat 50%;background-size:contain;height:32px;overflow:hidden;text-indent:100%;white-space:nowrap;width:32px}.bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen].exit{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6NXB4fTwvc3R5bGU+PC9kZWZzPjxyZWN0IGNsYXNzPSJhIiB4PSIxMCIgeT0iMjAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI2MCIgcng9IjUuNjciLz48cGF0aCBjbGFzcz0iYSIgZD0iTTIwIDUwaDIwdjIwbS0yMCAwbDIwLTIwbTQwIDBINjBWMzBtMjAgMEw2MCA1MCIvPjwvc3ZnPg==")}.bespoke-marp-parent.bespoke-marp-inactive{cursor:none}.bespoke-marp-parent.bespoke-marp-inactive>.bespoke-marp-osc{opacity:0;pointer-events:none}svg.bespoke-marp-slide{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}svg.bespoke-marp-slide.bespoke-marp-active{pointer-events:auto;z-index:0}.bespoke-progress-parent{background:#222;display:flex;height:5px;width:100%}.bespoke-progress-parent+.bespoke-marp-parent{top:5px}.bespoke-progress-parent .bespoke-progress-bar{flex:0 0 0;background:#0288d1;transition:flex-basis .2s cubic-bezier(0,1,1,1)}}@media print{.bespoke-marp-osc,.bespoke-progress-parent{display:none!important;transition:none!important}.bespoke-marp-parent{top:0}}</style><style>article#presentation > svg > foreignObject > section {
width: 1280px;
height: 720px;
box-sizing: border-box;
overflow: hidden;
position: relative;
scroll-snap-align: center center;
}article#presentation > svg > foreignObject > section::after {
bottom: 0;
content: attr(data-marpit-pagination);
padding: inherit;
pointer-events: none;
position: absolute;
right: 0;
}article#presentation > svg > foreignObject > section:not([data-marpit-pagination])::after {
display: none;
}/* Normalization */article#presentation > svg > foreignObject > section h1 {
font-size: 2em;
margin: 0.67em 0;
}@page {
size: 1280px 720px;
margin: 0;
}@media print {html, body {
background-color: #fff;
margin: 0;
page-break-inside: avoid;
break-inside: avoid-page;
}
article#presentation > svg > foreignObject > section {
page-break-before: always;
break-before: page;
}
article#presentation > svg > foreignObject > section, article#presentation > svg > foreignObject > section * {
-webkit-print-color-adjust: exact !important;
color-adjust: exact !important;
}
article#presentation > svg[data-marpit-svg] {
display: block;
height: 100vh;
width: 100vw;
}
}@font-face{font-family:KaTeX_AMS;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_AMS-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_AMS-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_AMS-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Caligraphic-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Caligraphic-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Caligraphic-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Caligraphic-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Caligraphic-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Caligraphic-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Fraktur-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Fraktur-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Fraktur-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Fraktur-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Fraktur-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Fraktur-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Main-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Main-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Main-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Main-BoldItalic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Main-BoldItalic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Main-BoldItalic.ttf') format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Main-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Main-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Main-Italic.ttf') format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Main-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Main-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Main-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Math-BoldItalic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Math-BoldItalic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Math-BoldItalic.ttf') format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Math-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Math-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Math-Italic.ttf') format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_SansSerif-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_SansSerif-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_SansSerif-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_SansSerif-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_SansSerif-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_SansSerif-Italic.ttf') format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_SansSerif-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_SansSerif-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_SansSerif-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Script-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Script-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Script-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Size1-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Size1-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Size1-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Size2-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Size2-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Size2-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Size3-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Size3-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Size3-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Size4-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Size4-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Size4-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Typewriter-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Typewriter-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/fonts/KaTeX_Typewriter-Regular.ttf') format("truetype");font-weight:400;font-style:normal}article#presentation > svg > foreignObject > section .katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}article#presentation > svg > foreignObject > section .katex *{-ms-high-contrast-adjust:none!important}article#presentation > svg > foreignObject > section .katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}article#presentation > svg > foreignObject > section .katex .katex-html>.newline{display:block}article#presentation > svg > foreignObject > section .katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}article#presentation > svg > foreignObject > section .katex .base,article#presentation > svg > foreignObject > section .katex .strut{display:inline-block}article#presentation > svg > foreignObject > section .katex .textbf{font-weight:700}article#presentation > svg > foreignObject > section .katex .textit{font-style:italic}article#presentation > svg > foreignObject > section .katex .textrm{font-family:KaTeX_Main}article#presentation > svg > foreignObject > section .katex .textsf{font-family:KaTeX_SansSerif}article#presentation > svg > foreignObject > section .katex .texttt{font-family:KaTeX_Typewriter}article#presentation > svg > foreignObject > section .katex .mathdefault{font-family:KaTeX_Math;font-style:italic}article#presentation > svg > foreignObject > section .katex .mathit{font-family:KaTeX_Main;font-style:italic}article#presentation > svg > foreignObject > section .katex .mathrm{font-style:normal}article#presentation > svg > foreignObject > section .katex .mathbf{font-family:KaTeX_Main;font-weight:700}article#presentation > svg > foreignObject > section .katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}article#presentation > svg > foreignObject > section .katex .amsrm,article#presentation > svg > foreignObject > section .katex .mathbb,article#presentation > svg > foreignObject > section .katex .textbb{font-family:KaTeX_AMS}article#presentation > svg > foreignObject > section .katex .mathcal{font-family:KaTeX_Caligraphic}article#presentation > svg > foreignObject > section .katex .mathfrak,article#presentation > svg > foreignObject > section .katex .textfrak{font-family:KaTeX_Fraktur}article#presentation > svg > foreignObject > section .katex .mathtt{font-family:KaTeX_Typewriter}article#presentation > svg > foreignObject > section .katex .mathscr,article#presentation > svg > foreignObject > section .katex .textscr{font-family:KaTeX_Script}article#presentation > svg > foreignObject > section .katex .mathsf,article#presentation > svg > foreignObject > section .katex .textsf{font-family:KaTeX_SansSerif}article#presentation > svg > foreignObject > section .katex .mathboldsf,article#presentation > svg > foreignObject > section .katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}article#presentation > svg > foreignObject > section .katex .mathitsf,article#presentation > svg > foreignObject > section .katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}article#presentation > svg > foreignObject > section .katex .mainrm{font-family:KaTeX_Main;font-style:normal}article#presentation > svg > foreignObject > section .katex .vlist-t{display:inline-table;table-layout:fixed}article#presentation > svg > foreignObject > section .katex .vlist-r{display:table-row}article#presentation > svg > foreignObject > section .katex .vlist{display:table-cell;vertical-align:bottom;position:relative}article#presentation > svg > foreignObject > section .katex .vlist>span{display:block;height:0;position:relative}article#presentation > svg > foreignObject > section .katex .vlist>span>span{display:inline-block}article#presentation > svg > foreignObject > section .katex .vlist>span>.pstrut{overflow:hidden;width:0}article#presentation > svg > foreignObject > section .katex .vlist-t2{margin-right:-2px}article#presentation > svg > foreignObject > section .katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}article#presentation > svg > foreignObject > section .katex .msupsub{text-align:left}article#presentation > svg > foreignObject > section .katex .mfrac>span>span{text-align:center}article#presentation > svg > foreignObject > section .katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}article#presentation > svg > foreignObject > section .katex .hdashline,article#presentation > svg > foreignObject > section .katex .hline,article#presentation > svg > foreignObject > section .katex .mfrac .frac-line,article#presentation > svg > foreignObject > section .katex .overline .overline-line,article#presentation > svg > foreignObject > section .katex .rule,article#presentation > svg > foreignObject > section .katex .underline .underline-line{min-height:1px}article#presentation > svg > foreignObject > section .katex .mspace{display:inline-block}article#presentation > svg > foreignObject > section .katex .clap,article#presentation > svg > foreignObject > section .katex .llap,article#presentation > svg > foreignObject > section .katex .rlap{width:0;position:relative}article#presentation > svg > foreignObject > section .katex .clap>.inner,article#presentation > svg > foreignObject > section .katex .llap>.inner,article#presentation > svg > foreignObject > section .katex .rlap>.inner{position:absolute}article#presentation > svg > foreignObject > section .katex .clap>.fix,article#presentation > svg > foreignObject > section .katex .llap>.fix,article#presentation > svg > foreignObject > section .katex .rlap>.fix{display:inline-block}article#presentation > svg > foreignObject > section .katex .llap>.inner{right:0}article#presentation > svg > foreignObject > section .katex .clap>.inner,article#presentation > svg > foreignObject > section .katex .rlap>.inner{left:0}article#presentation > svg > foreignObject > section .katex .clap>.inner>span{margin-left:-50%;margin-right:50%}article#presentation > svg > foreignObject > section .katex .rule{display:inline-block;border:0 solid;position:relative}article#presentation > svg > foreignObject > section .katex .hline,article#presentation > svg > foreignObject > section .katex .overline .overline-line,article#presentation > svg > foreignObject > section .katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}article#presentation > svg > foreignObject > section .katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}article#presentation > svg > foreignObject > section .katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer,article#presentation > svg > foreignObject > section .katex .sizing{display:inline-block}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size1.size1,article#presentation > svg > foreignObject > section .katex .sizing.reset-size1.size1{font-size:1em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size1.size2,article#presentation > svg > foreignObject > section .katex .sizing.reset-size1.size2{font-size:1.2em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size1.size3,article#presentation > svg > foreignObject > section .katex .sizing.reset-size1.size3{font-size:1.4em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size1.size4,article#presentation > svg > foreignObject > section .katex .sizing.reset-size1.size4{font-size:1.6em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size1.size5,article#presentation > svg > foreignObject > section .katex .sizing.reset-size1.size5{font-size:1.8em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size1.size6,article#presentation > svg > foreignObject > section .katex .sizing.reset-size1.size6{font-size:2em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size1.size7,article#presentation > svg > foreignObject > section .katex .sizing.reset-size1.size7{font-size:2.4em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size1.size8,article#presentation > svg > foreignObject > section .katex .sizing.reset-size1.size8{font-size:2.88em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size1.size9,article#presentation > svg > foreignObject > section .katex .sizing.reset-size1.size9{font-size:3.456em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size1.size10,article#presentation > svg > foreignObject > section .katex .sizing.reset-size1.size10{font-size:4.148em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size1.size11,article#presentation > svg > foreignObject > section .katex .sizing.reset-size1.size11{font-size:4.976em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size2.size1,article#presentation > svg > foreignObject > section .katex .sizing.reset-size2.size1{font-size:.83333333em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size2.size2,article#presentation > svg > foreignObject > section .katex .sizing.reset-size2.size2{font-size:1em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size2.size3,article#presentation > svg > foreignObject > section .katex .sizing.reset-size2.size3{font-size:1.16666667em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size2.size4,article#presentation > svg > foreignObject > section .katex .sizing.reset-size2.size4{font-size:1.33333333em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size2.size5,article#presentation > svg > foreignObject > section .katex .sizing.reset-size2.size5{font-size:1.5em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size2.size6,article#presentation > svg > foreignObject > section .katex .sizing.reset-size2.size6{font-size:1.66666667em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size2.size7,article#presentation > svg > foreignObject > section .katex .sizing.reset-size2.size7{font-size:2em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size2.size8,article#presentation > svg > foreignObject > section .katex .sizing.reset-size2.size8{font-size:2.4em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size2.size9,article#presentation > svg > foreignObject > section .katex .sizing.reset-size2.size9{font-size:2.88em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size2.size10,article#presentation > svg > foreignObject > section .katex .sizing.reset-size2.size10{font-size:3.45666667em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size2.size11,article#presentation > svg > foreignObject > section .katex .sizing.reset-size2.size11{font-size:4.14666667em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size3.size1,article#presentation > svg > foreignObject > section .katex .sizing.reset-size3.size1{font-size:.71428571em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size3.size2,article#presentation > svg > foreignObject > section .katex .sizing.reset-size3.size2{font-size:.85714286em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size3.size3,article#presentation > svg > foreignObject > section .katex .sizing.reset-size3.size3{font-size:1em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size3.size4,article#presentation > svg > foreignObject > section .katex .sizing.reset-size3.size4{font-size:1.14285714em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size3.size5,article#presentation > svg > foreignObject > section .katex .sizing.reset-size3.size5{font-size:1.28571429em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size3.size6,article#presentation > svg > foreignObject > section .katex .sizing.reset-size3.size6{font-size:1.42857143em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size3.size7,article#presentation > svg > foreignObject > section .katex .sizing.reset-size3.size7{font-size:1.71428571em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size3.size8,article#presentation > svg > foreignObject > section .katex .sizing.reset-size3.size8{font-size:2.05714286em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size3.size9,article#presentation > svg > foreignObject > section .katex .sizing.reset-size3.size9{font-size:2.46857143em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size3.size10,article#presentation > svg > foreignObject > section .katex .sizing.reset-size3.size10{font-size:2.96285714em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size3.size11,article#presentation > svg > foreignObject > section .katex .sizing.reset-size3.size11{font-size:3.55428571em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size4.size1,article#presentation > svg > foreignObject > section .katex .sizing.reset-size4.size1{font-size:.625em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size4.size2,article#presentation > svg > foreignObject > section .katex .sizing.reset-size4.size2{font-size:.75em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size4.size3,article#presentation > svg > foreignObject > section .katex .sizing.reset-size4.size3{font-size:.875em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size4.size4,article#presentation > svg > foreignObject > section .katex .sizing.reset-size4.size4{font-size:1em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size4.size5,article#presentation > svg > foreignObject > section .katex .sizing.reset-size4.size5{font-size:1.125em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size4.size6,article#presentation > svg > foreignObject > section .katex .sizing.reset-size4.size6{font-size:1.25em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size4.size7,article#presentation > svg > foreignObject > section .katex .sizing.reset-size4.size7{font-size:1.5em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size4.size8,article#presentation > svg > foreignObject > section .katex .sizing.reset-size4.size8{font-size:1.8em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size4.size9,article#presentation > svg > foreignObject > section .katex .sizing.reset-size4.size9{font-size:2.16em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size4.size10,article#presentation > svg > foreignObject > section .katex .sizing.reset-size4.size10{font-size:2.5925em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size4.size11,article#presentation > svg > foreignObject > section .katex .sizing.reset-size4.size11{font-size:3.11em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size5.size1,article#presentation > svg > foreignObject > section .katex .sizing.reset-size5.size1{font-size:.55555556em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size5.size2,article#presentation > svg > foreignObject > section .katex .sizing.reset-size5.size2{font-size:.66666667em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size5.size3,article#presentation > svg > foreignObject > section .katex .sizing.reset-size5.size3{font-size:.77777778em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size5.size4,article#presentation > svg > foreignObject > section .katex .sizing.reset-size5.size4{font-size:.88888889em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size5.size5,article#presentation > svg > foreignObject > section .katex .sizing.reset-size5.size5{font-size:1em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size5.size6,article#presentation > svg > foreignObject > section .katex .sizing.reset-size5.size6{font-size:1.11111111em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size5.size7,article#presentation > svg > foreignObject > section .katex .sizing.reset-size5.size7{font-size:1.33333333em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size5.size8,article#presentation > svg > foreignObject > section .katex .sizing.reset-size5.size8{font-size:1.6em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size5.size9,article#presentation > svg > foreignObject > section .katex .sizing.reset-size5.size9{font-size:1.92em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size5.size10,article#presentation > svg > foreignObject > section .katex .sizing.reset-size5.size10{font-size:2.30444444em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size5.size11,article#presentation > svg > foreignObject > section .katex .sizing.reset-size5.size11{font-size:2.76444444em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size6.size1,article#presentation > svg > foreignObject > section .katex .sizing.reset-size6.size1{font-size:.5em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size6.size2,article#presentation > svg > foreignObject > section .katex .sizing.reset-size6.size2{font-size:.6em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size6.size3,article#presentation > svg > foreignObject > section .katex .sizing.reset-size6.size3{font-size:.7em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size6.size4,article#presentation > svg > foreignObject > section .katex .sizing.reset-size6.size4{font-size:.8em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size6.size5,article#presentation > svg > foreignObject > section .katex .sizing.reset-size6.size5{font-size:.9em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size6.size6,article#presentation > svg > foreignObject > section .katex .sizing.reset-size6.size6{font-size:1em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size6.size7,article#presentation > svg > foreignObject > section .katex .sizing.reset-size6.size7{font-size:1.2em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size6.size8,article#presentation > svg > foreignObject > section .katex .sizing.reset-size6.size8{font-size:1.44em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size6.size9,article#presentation > svg > foreignObject > section .katex .sizing.reset-size6.size9{font-size:1.728em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size6.size10,article#presentation > svg > foreignObject > section .katex .sizing.reset-size6.size10{font-size:2.074em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size6.size11,article#presentation > svg > foreignObject > section .katex .sizing.reset-size6.size11{font-size:2.488em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size7.size1,article#presentation > svg > foreignObject > section .katex .sizing.reset-size7.size1{font-size:.41666667em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size7.size2,article#presentation > svg > foreignObject > section .katex .sizing.reset-size7.size2{font-size:.5em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size7.size3,article#presentation > svg > foreignObject > section .katex .sizing.reset-size7.size3{font-size:.58333333em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size7.size4,article#presentation > svg > foreignObject > section .katex .sizing.reset-size7.size4{font-size:.66666667em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size7.size5,article#presentation > svg > foreignObject > section .katex .sizing.reset-size7.size5{font-size:.75em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size7.size6,article#presentation > svg > foreignObject > section .katex .sizing.reset-size7.size6{font-size:.83333333em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size7.size7,article#presentation > svg > foreignObject > section .katex .sizing.reset-size7.size7{font-size:1em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size7.size8,article#presentation > svg > foreignObject > section .katex .sizing.reset-size7.size8{font-size:1.2em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size7.size9,article#presentation > svg > foreignObject > section .katex .sizing.reset-size7.size9{font-size:1.44em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size7.size10,article#presentation > svg > foreignObject > section .katex .sizing.reset-size7.size10{font-size:1.72833333em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size7.size11,article#presentation > svg > foreignObject > section .katex .sizing.reset-size7.size11{font-size:2.07333333em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size8.size1,article#presentation > svg > foreignObject > section .katex .sizing.reset-size8.size1{font-size:.34722222em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size8.size2,article#presentation > svg > foreignObject > section .katex .sizing.reset-size8.size2{font-size:.41666667em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size8.size3,article#presentation > svg > foreignObject > section .katex .sizing.reset-size8.size3{font-size:.48611111em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size8.size4,article#presentation > svg > foreignObject > section .katex .sizing.reset-size8.size4{font-size:.55555556em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size8.size5,article#presentation > svg > foreignObject > section .katex .sizing.reset-size8.size5{font-size:.625em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size8.size6,article#presentation > svg > foreignObject > section .katex .sizing.reset-size8.size6{font-size:.69444444em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size8.size7,article#presentation > svg > foreignObject > section .katex .sizing.reset-size8.size7{font-size:.83333333em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size8.size8,article#presentation > svg > foreignObject > section .katex .sizing.reset-size8.size8{font-size:1em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size8.size9,article#presentation > svg > foreignObject > section .katex .sizing.reset-size8.size9{font-size:1.2em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size8.size10,article#presentation > svg > foreignObject > section .katex .sizing.reset-size8.size10{font-size:1.44027778em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size8.size11,article#presentation > svg > foreignObject > section .katex .sizing.reset-size8.size11{font-size:1.72777778em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size9.size1,article#presentation > svg > foreignObject > section .katex .sizing.reset-size9.size1{font-size:.28935185em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size9.size2,article#presentation > svg > foreignObject > section .katex .sizing.reset-size9.size2{font-size:.34722222em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size9.size3,article#presentation > svg > foreignObject > section .katex .sizing.reset-size9.size3{font-size:.40509259em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size9.size4,article#presentation > svg > foreignObject > section .katex .sizing.reset-size9.size4{font-size:.46296296em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size9.size5,article#presentation > svg > foreignObject > section .katex .sizing.reset-size9.size5{font-size:.52083333em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size9.size6,article#presentation > svg > foreignObject > section .katex .sizing.reset-size9.size6{font-size:.5787037em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size9.size7,article#presentation > svg > foreignObject > section .katex .sizing.reset-size9.size7{font-size:.69444444em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size9.size8,article#presentation > svg > foreignObject > section .katex .sizing.reset-size9.size8{font-size:.83333333em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size9.size9,article#presentation > svg > foreignObject > section .katex .sizing.reset-size9.size9{font-size:1em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size9.size10,article#presentation > svg > foreignObject > section .katex .sizing.reset-size9.size10{font-size:1.20023148em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size9.size11,article#presentation > svg > foreignObject > section .katex .sizing.reset-size9.size11{font-size:1.43981481em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size10.size1,article#presentation > svg > foreignObject > section .katex .sizing.reset-size10.size1{font-size:.24108004em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size10.size2,article#presentation > svg > foreignObject > section .katex .sizing.reset-size10.size2{font-size:.28929605em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size10.size3,article#presentation > svg > foreignObject > section .katex .sizing.reset-size10.size3{font-size:.33751205em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size10.size4,article#presentation > svg > foreignObject > section .katex .sizing.reset-size10.size4{font-size:.38572806em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size10.size5,article#presentation > svg > foreignObject > section .katex .sizing.reset-size10.size5{font-size:.43394407em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size10.size6,article#presentation > svg > foreignObject > section .katex .sizing.reset-size10.size6{font-size:.48216008em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size10.size7,article#presentation > svg > foreignObject > section .katex .sizing.reset-size10.size7{font-size:.57859209em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size10.size8,article#presentation > svg > foreignObject > section .katex .sizing.reset-size10.size8{font-size:.69431051em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size10.size9,article#presentation > svg > foreignObject > section .katex .sizing.reset-size10.size9{font-size:.83317261em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size10.size10,article#presentation > svg > foreignObject > section .katex .sizing.reset-size10.size10{font-size:1em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size10.size11,article#presentation > svg > foreignObject > section .katex .sizing.reset-size10.size11{font-size:1.19961427em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size11.size1,article#presentation > svg > foreignObject > section .katex .sizing.reset-size11.size1{font-size:.20096463em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size11.size2,article#presentation > svg > foreignObject > section .katex .sizing.reset-size11.size2{font-size:.24115756em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size11.size3,article#presentation > svg > foreignObject > section .katex .sizing.reset-size11.size3{font-size:.28135048em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size11.size4,article#presentation > svg > foreignObject > section .katex .sizing.reset-size11.size4{font-size:.32154341em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size11.size5,article#presentation > svg > foreignObject > section .katex .sizing.reset-size11.size5{font-size:.36173633em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size11.size6,article#presentation > svg > foreignObject > section .katex .sizing.reset-size11.size6{font-size:.40192926em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size11.size7,article#presentation > svg > foreignObject > section .katex .sizing.reset-size11.size7{font-size:.48231511em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size11.size8,article#presentation > svg > foreignObject > section .katex .sizing.reset-size11.size8{font-size:.57877814em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size11.size9,article#presentation > svg > foreignObject > section .katex .sizing.reset-size11.size9{font-size:.69453376em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size11.size10,article#presentation > svg > foreignObject > section .katex .sizing.reset-size11.size10{font-size:.83360129em}article#presentation > svg > foreignObject > section .katex .fontsize-ensurer.reset-size11.size11,article#presentation > svg > foreignObject > section .katex .sizing.reset-size11.size11{font-size:1em}article#presentation > svg > foreignObject > section .katex .delimsizing.size1{font-family:KaTeX_Size1}article#presentation > svg > foreignObject > section .katex .delimsizing.size2{font-family:KaTeX_Size2}article#presentation > svg > foreignObject > section .katex .delimsizing.size3{font-family:KaTeX_Size3}article#presentation > svg > foreignObject > section .katex .delimsizing.size4{font-family:KaTeX_Size4}article#presentation > svg > foreignObject > section .katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}article#presentation > svg > foreignObject > section .katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}article#presentation > svg > foreignObject > section .katex .nulldelimiter{display:inline-block;width:.12em}article#presentation > svg > foreignObject > section .katex .delimcenter,article#presentation > svg > foreignObject > section .katex .op-symbol{position:relative}article#presentation > svg > foreignObject > section .katex .op-symbol.small-op{font-family:KaTeX_Size1}article#presentation > svg > foreignObject > section .katex .op-symbol.large-op{font-family:KaTeX_Size2}article#presentation > svg > foreignObject > section .katex .accent>.vlist-t,article#presentation > svg > foreignObject > section .katex .op-limits>.vlist-t{text-align:center}article#presentation > svg > foreignObject > section .katex .accent .accent-body{position:relative}article#presentation > svg > foreignObject > section .katex .accent .accent-body:not(.accent-full){width:0}article#presentation > svg > foreignObject > section .katex .overlay{display:block}article#presentation > svg > foreignObject > section .katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid;min-width:1px}article#presentation > svg > foreignObject > section .katex .mtable .vs-dashed{border-right:.05em dashed}article#presentation > svg > foreignObject > section .katex .mtable .arraycolsep{display:inline-block}article#presentation > svg > foreignObject > section .katex .mtable .col-align-c>.vlist-t{text-align:center}article#presentation > svg > foreignObject > section .katex .mtable .col-align-l>.vlist-t{text-align:left}article#presentation > svg > foreignObject > section .katex .mtable .col-align-r>.vlist-t{text-align:right}article#presentation > svg > foreignObject > section .katex .svg-align{text-align:left}article#presentation > svg > foreignObject > section .katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}article#presentation > svg > foreignObject > section .katex svg path{stroke:none}article#presentation > svg > foreignObject > section .katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}article#presentation > svg > foreignObject > section .katex .stretchy:after,article#presentation > svg > foreignObject > section .katex .stretchy:before{content:""}article#presentation > svg > foreignObject > section .katex .hide-tail{width:100%;position:relative;overflow:hidden}article#presentation > svg > foreignObject > section .katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}article#presentation > svg > foreignObject > section .katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}article#presentation > svg > foreignObject > section .katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}article#presentation > svg > foreignObject > section .katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}article#presentation > svg > foreignObject > section .katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}article#presentation > svg > foreignObject > section .katex .x-arrow-pad{padding:0 .5em}article#presentation > svg > foreignObject > section .katex .mover,article#presentation > svg > foreignObject > section .katex .munder,article#presentation > svg > foreignObject > section .katex .x-arrow{text-align:center}article#presentation > svg > foreignObject > section .katex .boxpad{padding:0 .3em}article#presentation > svg > foreignObject > section .katex .fbox,article#presentation > svg > foreignObject > section .katex .fcolorbox{box-sizing:border-box;border:.04em solid}article#presentation > svg > foreignObject > section .katex .cancel-pad{padding:0 .2em}article#presentation > svg > foreignObject > section .katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}article#presentation > svg > foreignObject > section .katex .sout{border-bottom-style:solid;border-bottom-width:.08em}article#presentation > svg > foreignObject > section .katex-display{display:block;margin:1em 0;text-align:center}article#presentation > svg > foreignObject > section .katex-display>.katex{display:block;text-align:center;white-space:nowrap}article#presentation > svg > foreignObject > section .katex-display>.katex>.katex-html{display:block;position:relative}article#presentation > svg > foreignObject > section .katex-display>.katex>.katex-html>.tag{position:absolute;right:0}article#presentation > svg > foreignObject > section .katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}article#presentation > svg > foreignObject > section .katex-display.fleqn>.katex{text-align:left}article#presentation > svg > foreignObject > section .katex-display{margin:0}article#presentation > svg > foreignObject > section svg[data-marp-fitting-math]{--preserve-aspect-ratio:xMidYMid meet}article#presentation > svg > foreignObject > section svg[data-marp-fitting-math] [data-marp-fitting-svg-content]{margin:0 auto}article#presentation > svg > foreignObject > section svg[data-marp-fitting=svg]{display:block;height:auto;width:100%}@supports (-ms-ime-align:auto){article#presentation > svg > foreignObject > section svg[data-marp-fitting=svg]{position:static}}article#presentation > svg > foreignObject > section svg[data-marp-fitting=svg].__reflow__{content:""}@supports (-ms-ime-align:auto){article#presentation > svg > foreignObject > section svg[data-marp-fitting=svg].__reflow__{position:relative}}article#presentation > svg > foreignObject > section [data-marp-fitting-svg-content]{display:table;white-space:nowrap}article#presentation > svg > foreignObject > section [data-marp-fitting-svg-content-wrap]{white-space:pre}article#presentation > svg > foreignObject > section img[data-marp-twemoji]{background:transparent;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em;width:1em}/*!
* Marp default theme.
*
* @theme default
*/@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format("woff")}article#presentation > svg > foreignObject > section .markdown-body .octicon,article#presentation > svg > foreignObject > section .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}article#presentation > svg > foreignObject > section .markdown-body .anchor,article#presentation > svg > foreignObject > section .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}article#presentation > svg > foreignObject > section .markdown-body .anchor:focus,article#presentation > svg > foreignObject > section .anchor:focus{outline:none}article#presentation > svg > foreignObject > section .markdown-body h1 .octicon-link,article#presentation > svg > foreignObject > section .markdown-body h2 .octicon-link,article#presentation > svg > foreignObject > section .markdown-body h3 .octicon-link,article#presentation > svg > foreignObject > section .markdown-body h4 .octicon-link,article#presentation > svg > foreignObject > section .markdown-body h5 .octicon-link,article#presentation > svg > foreignObject > section .markdown-body h6 .octicon-link,article#presentation > svg > foreignObject > section h1 .octicon-link,article#presentation > svg > foreignObject > section h2 .octicon-link,article#presentation > svg > foreignObject > section h3 .octicon-link,article#presentation > svg > foreignObject > section h4 .octicon-link,article#presentation > svg > foreignObject > section h5 .octicon-link,article#presentation > svg > foreignObject > section h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}article#presentation > svg > foreignObject > section .markdown-body h1:hover .anchor,article#presentation > svg > foreignObject > section .markdown-body h2:hover .anchor,article#presentation > svg > foreignObject > section .markdown-body h3:hover .anchor,article#presentation > svg > foreignObject > section .markdown-body h4:hover .anchor,article#presentation > svg > foreignObject > section .markdown-body h5:hover .anchor,article#presentation > svg > foreignObject > section .markdown-body h6:hover .anchor,article#presentation > svg > foreignObject > section h1:hover .anchor,article#presentation > svg > foreignObject > section h2:hover .anchor,article#presentation > svg > foreignObject > section h3:hover .anchor,article#presentation > svg > foreignObject > section h4:hover .anchor,article#presentation > svg > foreignObject > section h5:hover .anchor,article#presentation > svg > foreignObject > section h6:hover .anchor{text-decoration:none}article#presentation > svg > foreignObject > section .markdown-body h1:hover .anchor .octicon-link,article#presentation > svg > foreignObject > section .markdown-body h2:hover .anchor .octicon-link,article#presentation > svg > foreignObject > section .markdown-body h3:hover .anchor .octicon-link,article#presentation > svg > foreignObject > section .markdown-body h4:hover .anchor .octicon-link,article#presentation > svg > foreignObject > section .markdown-body h5:hover .anchor .octicon-link,article#presentation > svg > foreignObject > section .markdown-body h6:hover .anchor .octicon-link,article#presentation > svg > foreignObject > section h1:hover .anchor .octicon-link,article#presentation > svg > foreignObject > section h2:hover .anchor .octicon-link,article#presentation > svg > foreignObject > section h3:hover .anchor .octicon-link,article#presentation > svg > foreignObject > section h4:hover .anchor .octicon-link,article#presentation > svg > foreignObject > section h5:hover .anchor .octicon-link,article#presentation > svg > foreignObject > section h6:hover .anchor .octicon-link{visibility:visible}article#presentation > svg > foreignObject > section .markdown-body,article#presentation > svg > foreignObject > section{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#24292e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5;word-wrap:break-word}article#presentation > svg > foreignObject > section .markdown-body .pl-c,article#presentation > svg > foreignObject > section .pl-c{color:#6a737d}article#presentation > svg > foreignObject > section .markdown-body .pl-c1,article#presentation > svg > foreignObject > section .markdown-body .pl-s .pl-v,article#presentation > svg > foreignObject > section .pl-c1,article#presentation > svg > foreignObject > section .pl-s .pl-v{color:#005cc5}article#presentation > svg > foreignObject > section .markdown-body .pl-e,article#presentation > svg > foreignObject > section .markdown-body .pl-en,article#presentation > svg > foreignObject > section .pl-e,article#presentation > svg > foreignObject > section .pl-en{color:#6f42c1}article#presentation > svg > foreignObject > section .markdown-body .pl-s .pl-s1,article#presentation > svg > foreignObject > section .markdown-body .pl-smi,article#presentation > svg > foreignObject > section .pl-s .pl-s1,article#presentation > svg > foreignObject > section .pl-smi{color:#24292e}article#presentation > svg > foreignObject > section .markdown-body .pl-ent,article#presentation > svg > foreignObject > section .pl-ent{color:#22863a}article#presentation > svg > foreignObject > section .markdown-body .pl-k,article#presentation > svg > foreignObject > section .pl-k{color:#d73a49}article#presentation > svg > foreignObject > section .markdown-body .pl-pds,article#presentation > svg > foreignObject > section .markdown-body .pl-s,article#presentation > svg > foreignObject > section .markdown-body .pl-s .pl-pse .pl-s1,article#presentation > svg > foreignObject > section .markdown-body .pl-sr,article#presentation > svg > foreignObject > section .markdown-body .pl-sr .pl-cce,article#presentation > svg > foreignObject > section .markdown-body .pl-sr .pl-sra,article#presentation > svg > foreignObject > section .markdown-body .pl-sr .pl-sre,article#presentation > svg > foreignObject > section .pl-pds,article#presentation > svg > foreignObject > section .pl-s,article#presentation > svg > foreignObject > section .pl-s .pl-pse .pl-s1,article#presentation > svg > foreignObject > section .pl-sr,article#presentation > svg > foreignObject > section .pl-sr .pl-cce,article#presentation > svg > foreignObject > section .pl-sr .pl-sra,article#presentation > svg > foreignObject > section .pl-sr .pl-sre{color:#032f62}article#presentation > svg > foreignObject > section .markdown-body .pl-smw,article#presentation > svg > foreignObject > section .markdown-body .pl-v,article#presentation > svg > foreignObject > section .pl-smw,article#presentation > svg > foreignObject > section .pl-v{color:#e36209}article#presentation > svg > foreignObject > section .markdown-body .pl-bu,article#presentation > svg > foreignObject > section .pl-bu{color:#b31d28}article#presentation > svg > foreignObject > section .markdown-body .pl-ii,article#presentation > svg > foreignObject > section .pl-ii{background-color:#b31d28;color:#fafbfc}article#presentation > svg > foreignObject > section .markdown-body .pl-c2,article#presentation > svg > foreignObject > section .pl-c2{background-color:#d73a49;color:#fafbfc}article#presentation > svg > foreignObject > section .markdown-body .pl-c2:before,article#presentation > svg > foreignObject > section .pl-c2:before{content:"^M"}article#presentation > svg > foreignObject > section .markdown-body .pl-sr .pl-cce,article#presentation > svg > foreignObject > section .pl-sr .pl-cce{color:#22863a;font-weight:700}article#presentation > svg > foreignObject > section .markdown-body .pl-ml,article#presentation > svg > foreignObject > section .pl-ml{color:#735c0f}article#presentation > svg > foreignObject > section .markdown-body .pl-mh,article#presentation > svg > foreignObject > section .markdown-body .pl-mh .pl-en,article#presentation > svg > foreignObject > section .markdown-body .pl-ms,article#presentation > svg > foreignObject > section .pl-mh,article#presentation > svg > foreignObject > section .pl-mh .pl-en,article#presentation > svg > foreignObject > section .pl-ms{color:#005cc5;font-weight:700}article#presentation > svg > foreignObject > section .markdown-body .pl-mi,article#presentation > svg > foreignObject > section .pl-mi{color:#24292e;font-style:italic}article#presentation > svg > foreignObject > section .markdown-body .pl-mb,article#presentation > svg > foreignObject > section .pl-mb{color:#24292e;font-weight:700}article#presentation > svg > foreignObject > section .markdown-body .pl-md,article#presentation > svg > foreignObject > section .pl-md{background-color:#ffeef0;color:#b31d28}article#presentation > svg > foreignObject > section .markdown-body .pl-mi1,article#presentation > svg > foreignObject > section .pl-mi1{background-color:#f0fff4;color:#22863a}article#presentation > svg > foreignObject > section .markdown-body .pl-mc,article#presentation > svg > foreignObject > section .pl-mc{background-color:#ffebda;color:#e36209}article#presentation > svg > foreignObject > section .markdown-body .pl-mi2,article#presentation > svg > foreignObject > section .pl-mi2{background-color:#005cc5;color:#f6f8fa}article#presentation > svg > foreignObject > section .markdown-body .pl-mdr,article#presentation > svg > foreignObject > section .pl-mdr{color:#6f42c1;font-weight:700}article#presentation > svg > foreignObject > section .markdown-body .pl-ba,article#presentation > svg > foreignObject > section .pl-ba{color:#586069}article#presentation > svg > foreignObject > section .markdown-body .pl-sg,article#presentation > svg > foreignObject > section .pl-sg{color:#959da5}article#presentation > svg > foreignObject > section .markdown-body .pl-corl,article#presentation > svg > foreignObject > section .pl-corl{color:#032f62;text-decoration:underline}article#presentation > svg > foreignObject > section .markdown-body details,article#presentation > svg > foreignObject > section details{display:block}article#presentation > svg > foreignObject > section .markdown-body summary,article#presentation > svg > foreignObject > section summary{display:list-item}article#presentation > svg > foreignObject > section .markdown-body a,article#presentation > svg > foreignObject > section a{background-color:transparent}article#presentation > svg > foreignObject > section .markdown-body a:active,article#presentation > svg > foreignObject > section .markdown-body a:hover,article#presentation > svg > foreignObject > section a:active,article#presentation > svg > foreignObject > section a:hover{outline-width:0}article#presentation > svg > foreignObject > section .markdown-body strong,article#presentation > svg > foreignObject > section strong{font-weight:inherit;font-weight:bolder}article#presentation > svg > foreignObject > section .markdown-body h1,article#presentation > svg > foreignObject > section h1{margin:.67em 0}article#presentation > svg > foreignObject > section .markdown-body img,article#presentation > svg > foreignObject > section img{border-style:none}article#presentation > svg > foreignObject > section .markdown-body code,article#presentation > svg > foreignObject > section .markdown-body kbd,article#presentation > svg > foreignObject > section .markdown-body pre,article#presentation > svg > foreignObject > section code,article#presentation > svg > foreignObject > section kbd,article#presentation > svg > foreignObject > section pre{font-family:monospace,monospace;font-size:1em}article#presentation > svg > foreignObject > section .markdown-body hr,article#presentation > svg > foreignObject > section hr{box-sizing:content-box;overflow:visible}article#presentation > svg > foreignObject > section .markdown-body input,article#presentation > svg > foreignObject > section input{font:inherit;margin:0;overflow:visible}article#presentation > svg > foreignObject > section .markdown-body [type=checkbox],article#presentation > svg > foreignObject > section [type=checkbox]{box-sizing:border-box;padding:0}article#presentation > svg > foreignObject > section .markdown-body *,article#presentation > svg > foreignObject > section *{box-sizing:border-box}article#presentation > svg > foreignObject > section .markdown-body input,article#presentation > svg > foreignObject > section input{font-family:inherit;font-size:inherit;line-height:inherit}article#presentation > svg > foreignObject > section .markdown-body a,article#presentation > svg > foreignObject > section a{color:#0366d6;text-decoration:none}article#presentation > svg > foreignObject > section .markdown-body a:hover,article#presentation > svg > foreignObject > section a:hover{text-decoration:underline}article#presentation > svg > foreignObject > section .markdown-body strong,article#presentation > svg > foreignObject > section strong{font-weight:600}article#presentation > svg > foreignObject > section .markdown-body hr,article#presentation > svg > foreignObject > section hr{background:transparent;border-bottom:1px solid #dfe2e5;height:0;margin:15px 0;overflow:hidden}article#presentation > svg > foreignObject > section .markdown-body hr:before,article#presentation > svg > foreignObject > section hr:before{content:"";display:table}article#presentation > svg > foreignObject > section .markdown-body hr:after,article#presentation > svg > foreignObject > section hr:after{clear:both;content:"";display:table}article#presentation > svg > foreignObject > section .markdown-body table,article#presentation > svg > foreignObject > section table{border-collapse:collapse;border-spacing:0}article#presentation > svg > foreignObject > section .markdown-body td,article#presentation > svg > foreignObject > section .markdown-body th,article#presentation > svg > foreignObject > section td,article#presentation > svg > foreignObject > section th{padding:0}article#presentation > svg > foreignObject > section .markdown-body details summary,article#presentation > svg > foreignObject > section details summary{cursor:pointer}article#presentation > svg > foreignObject > section .markdown-body h1,article#presentation > svg > foreignObject > section .markdown-body h2,article#presentation > svg > foreignObject > section .markdown-body h3,article#presentation > svg > foreignObject > section .markdown-body h4,article#presentation > svg > foreignObject > section .markdown-body h5,article#presentation > svg > foreignObject > section .markdown-body h6,article#presentation > svg > foreignObject > section h1,article#presentation > svg > foreignObject > section h2,article#presentation > svg > foreignObject > section h3,article#presentation > svg > foreignObject > section h4,article#presentation > svg > foreignObject > section h5,article#presentation > svg > foreignObject > section h6{margin-bottom:0;margin-top:0}article#presentation > svg > foreignObject > section .markdown-body h1,article#presentation > svg > foreignObject > section h1{font-size:32px}article#presentation > svg > foreignObject > section .markdown-body h1,article#presentation > svg > foreignObject > section .markdown-body h2,article#presentation > svg > foreignObject > section h1,article#presentation > svg > foreignObject > section h2{font-weight:600}article#presentation > svg > foreignObject > section .markdown-body h2,article#presentation > svg > foreignObject > section h2{font-size:24px}article#presentation > svg > foreignObject > section .markdown-body h3,article#presentation > svg > foreignObject > section h3{font-size:20px}article#presentation > svg > foreignObject > section .markdown-body h3,article#presentation > svg > foreignObject > section .markdown-body h4,article#presentation > svg > foreignObject > section h3,article#presentation > svg > foreignObject > section h4{font-weight:600}article#presentation > svg > foreignObject > section .markdown-body h4,article#presentation > svg > foreignObject > section h4{font-size:16px}article#presentation > svg > foreignObject > section .markdown-body h5,article#presentation > svg > foreignObject > section h5{font-size:14px}article#presentation > svg > foreignObject > section .markdown-body h5,article#presentation > svg > foreignObject > section .markdown-body h6,article#presentation > svg > foreignObject > section h5,article#presentation > svg > foreignObject > section h6{font-weight:600}article#presentation > svg > foreignObject > section .markdown-body h6,article#presentation > svg > foreignObject > section h6{font-size:12px}article#presentation > svg > foreignObject > section .markdown-body p,article#presentation > svg > foreignObject > section p{margin-bottom:10px;margin-top:0}article#presentation > svg > foreignObject > section .markdown-body blockquote,article#presentation > svg > foreignObject > section blockquote{margin:0}article#presentation > svg > foreignObject > section .markdown-body ol,article#presentation > svg > foreignObject > section .markdown-body ul,article#presentation > svg > foreignObject > section ol,article#presentation > svg > foreignObject > section ul{margin-bottom:0;margin-top:0;padding-left:0}article#presentation > svg > foreignObject > section .markdown-body ol ol,article#presentation > svg > foreignObject > section .markdown-body ul ol,article#presentation > svg > foreignObject > section ol ol,article#presentation > svg > foreignObject > section ul ol{list-style-type:lower-roman}article#presentation > svg > foreignObject > section .markdown-body ol ol ol,article#presentation > svg > foreignObject > section .markdown-body ol ul ol,article#presentation > svg > foreignObject > section .markdown-body ul ol ol,article#presentation > svg > foreignObject > section .markdown-body ul ul ol,article#presentation > svg > foreignObject > section ol ol ol,article#presentation > svg > foreignObject > section ol ul ol,article#presentation > svg > foreignObject > section ul ol ol,article#presentation > svg > foreignObject > section ul ul ol{list-style-type:lower-alpha}article#presentation > svg > foreignObject > section .markdown-body dd,article#presentation > svg > foreignObject > section dd{margin-left:0}article#presentation > svg > foreignObject > section .markdown-body code,article#presentation > svg > foreignObject > section .markdown-body pre,article#presentation > svg > foreignObject > section code,article#presentation > svg > foreignObject > section pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}article#presentation > svg > foreignObject > section .markdown-body pre,article#presentation > svg > foreignObject > section pre{margin-bottom:0;margin-top:0}article#presentation > svg > foreignObject > section .markdown-body input::-webkit-inner-spin-button,article#presentation > svg > foreignObject > section .markdown-body input::-webkit-outer-spin-button,article#presentation > svg > foreignObject > section input::-webkit-inner-spin-button,article#presentation > svg > foreignObject > section input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}article#presentation > svg > foreignObject > section .markdown-body .border,article#presentation > svg > foreignObject > section .border{border:1px solid #e1e4e8!important}article#presentation > svg > foreignObject > section .markdown-body .border-0,article#presentation > svg > foreignObject > section .border-0{border:0!important}article#presentation > svg > foreignObject > section .markdown-body .border-bottom,article#presentation > svg > foreignObject > section .border-bottom{border-bottom:1px solid #e1e4e8!important}article#presentation > svg > foreignObject > section .markdown-body .rounded-1,article#presentation > svg > foreignObject > section .rounded-1{border-radius:3px!important}article#presentation > svg > foreignObject > section .markdown-body .bg-white,article#presentation > svg > foreignObject > section .bg-white{background-color:#fff!important}article#presentation > svg > foreignObject > section .markdown-body .bg-gray-light,article#presentation > svg > foreignObject > section .bg-gray-light{background-color:#fafbfc!important}article#presentation > svg > foreignObject > section .markdown-body .text-gray-light,article#presentation > svg > foreignObject > section .text-gray-light{color:#6a737d!important}article#presentation > svg > foreignObject > section .markdown-body .mb-0,article#presentation > svg > foreignObject > section .mb-0{margin-bottom:0!important}article#presentation > svg > foreignObject > section .markdown-body .my-2,article#presentation > svg > foreignObject > section .my-2{margin-bottom:8px!important;margin-top:8px!important}article#presentation > svg > foreignObject > section .markdown-body .py-0,article#presentation > svg > foreignObject > section .py-0{padding-bottom:0!important;padding-top:0!important}article#presentation > svg > foreignObject > section .markdown-body .py-2,article#presentation > svg > foreignObject > section .py-2{padding-bottom:8px!important;padding-top:8px!important}article#presentation > svg > foreignObject > section .markdown-body .pl-3,article#presentation > svg > foreignObject > section .markdown-body .px-3,article#presentation > svg > foreignObject > section .pl-3,article#presentation > svg > foreignObject > section .px-3{padding-left:16px!important}article#presentation > svg > foreignObject > section .markdown-body .px-3,article#presentation > svg > foreignObject > section .px-3{padding-right:16px!important}article#presentation > svg > foreignObject > section .markdown-body .f6,article#presentation > svg > foreignObject > section .f6{font-size:12px!important}article#presentation > svg > foreignObject > section .markdown-body .lh-condensed,article#presentation > svg > foreignObject > section .lh-condensed{line-height:1.25!important}article#presentation > svg > foreignObject > section .markdown-body .text-bold,article#presentation > svg > foreignObject > section .text-bold{font-weight:600!important}article#presentation > svg > foreignObject > section .markdown-body:before,article#presentation > svg > foreignObject > section:before{content:"";display:table}article#presentation > svg > foreignObject > section .markdown-body:after,article#presentation > svg > foreignObject > section:after{clear:both;/* content:""; */display:table}article#presentation > svg > foreignObject > section .markdown-body>:first-child,article#presentation > svg > foreignObject > section>:first-child{margin-top:0!important}article#presentation > svg > foreignObject > section .markdown-body>:last-child,article#presentation > svg > foreignObject > section>:last-child{margin-bottom:0!important}article#presentation > svg > foreignObject > section .markdown-body a:not([href]),article#presentation > svg > foreignObject > section a:not([href]){color:inherit;text-decoration:none}article#presentation > svg > foreignObject > section .markdown-body blockquote,article#presentation > svg > foreignObject > section .markdown-body dl,article#presentation > svg > foreignObject > section .markdown-body ol,article#presentation > svg > foreignObject > section .markdown-body p,article#presentation > svg > foreignObject > section .markdown-body pre,article#presentation > svg > foreignObject > section .markdown-body table,article#presentation > svg > foreignObject > section .markdown-body ul,article#presentation > svg > foreignObject > section blockquote,article#presentation > svg > foreignObject > section dl,article#presentation > svg > foreignObject > section ol,article#presentation > svg > foreignObject > section p,article#presentation > svg > foreignObject > section pre,article#presentation > svg > foreignObject > section table,article#presentation > svg > foreignObject > section ul{margin-bottom:16px;margin-top:0}article#presentation > svg > foreignObject > section .markdown-body hr,article#presentation > svg > foreignObject > section hr{background-color:#e1e4e8;border:0;height:.25em;margin:24px 0;padding:0}article#presentation > svg > foreignObject > section .markdown-body blockquote,article#presentation > svg > foreignObject > section blockquote{border-left:.25em solid #dfe2e5;color:#6a737d;padding:0 1em}article#presentation > svg > foreignObject > section .markdown-body blockquote>:first-child,article#presentation > svg > foreignObject > section blockquote>:first-child{margin-top:0}article#presentation > svg > foreignObject > section .markdown-body blockquote>:last-child,article#presentation > svg > foreignObject > section blockquote>:last-child{margin-bottom:0}article#presentation > svg > foreignObject > section .markdown-body kbd,article#presentation > svg > foreignObject > section kbd{border:1px solid #c6cbd1;border-bottom-color:#959da5;box-shadow:inset 0 -1px 0 #959da5;font-size:11px}article#presentation > svg > foreignObject > section .markdown-body h1,article#presentation > svg > foreignObject > section .markdown-body h2,article#presentation > svg > foreignObject > section .markdown-body h3,article#presentation > svg > foreignObject > section .markdown-body h4,article#presentation > svg > foreignObject > section .markdown-body h5,article#presentation > svg > foreignObject > section .markdown-body h6,article#presentation > svg > foreignObject > section h1,article#presentation > svg > foreignObject > section h2,article#presentation > svg > foreignObject > section h3,article#presentation > svg > foreignObject > section h4,article#presentation > svg > foreignObject > section h5,article#presentation > svg > foreignObject > section h6{font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:24px}article#presentation > svg > foreignObject > section .markdown-body h1,article#presentation > svg > foreignObject > section h1{font-size:2em}article#presentation > svg > foreignObject > section .markdown-body h1,article#presentation > svg > foreignObject > section .markdown-body h2,article#presentation > svg > foreignObject > section h1,article#presentation > svg > foreignObject > section h2{border-bottom:1px solid #eaecef;padding-bottom:.3em}article#presentation > svg > foreignObject > section .markdown-body h2,article#presentation > svg > foreignObject > section h2{font-size:1.5em}article#presentation > svg > foreignObject > section .markdown-body h3,article#presentation > svg > foreignObject > section h3{font-size:1.25em}article#presentation > svg > foreignObject > section .markdown-body h4,article#presentation > svg > foreignObject > section h4{font-size:1em}article#presentation > svg > foreignObject > section .markdown-body h5,article#presentation > svg > foreignObject > section h5{font-size:.875em}article#presentation > svg > foreignObject > section .markdown-body h6,article#presentation > svg > foreignObject > section h6{color:#6a737d;font-size:.85em}article#presentation > svg > foreignObject > section .markdown-body ol,article#presentation > svg > foreignObject > section .markdown-body ul,article#presentation > svg > foreignObject > section ol,article#presentation > svg > foreignObject > section ul{padding-left:2em}article#presentation > svg > foreignObject > section .markdown-body ol ol,article#presentation > svg > foreignObject > section .markdown-body ol ul,article#presentation > svg > foreignObject > section .markdown-body ul ol,article#presentation > svg > foreignObject > section .markdown-body ul ul,article#presentation > svg > foreignObject > section ol ol,article#presentation > svg > foreignObject > section ol ul,article#presentation > svg > foreignObject > section ul ol,article#presentation > svg > foreignObject > section ul ul{margin-bottom:0;margin-top:0}article#presentation > svg > foreignObject > section .markdown-body li,article#presentation > svg > foreignObject > section li{word-wrap:break-all}article#presentation > svg > foreignObject > section .markdown-body li>p,article#presentation > svg > foreignObject > section li>p{margin-top:16px}article#presentation > svg > foreignObject > section .markdown-body li+li,article#presentation > svg > foreignObject > section li+li{margin-top:.25em}article#presentation > svg > foreignObject > section .markdown-body dl,article#presentation > svg > foreignObject > section dl{padding:0}article#presentation > svg > foreignObject > section .markdown-body dl dt,article#presentation > svg > foreignObject > section dl dt{font-size:1em;font-style:italic;font-weight:600;margin-top:16px;padding:0}article#presentation > svg > foreignObject > section .markdown-body dl dd,article#presentation > svg > foreignObject > section dl dd{margin-bottom:16px;padding:0 16px}article#presentation > svg > foreignObject > section .markdown-body table,article#presentation > svg > foreignObject > section table{display:block;overflow:auto;width:100%}article#presentation > svg > foreignObject > section .markdown-body table th,article#presentation > svg > foreignObject > section table th{font-weight:600}article#presentation > svg > foreignObject > section .markdown-body table td,article#presentation > svg > foreignObject > section .markdown-body table th,article#presentation > svg > foreignObject > section table td,article#presentation > svg > foreignObject > section table th{border:1px solid #dfe2e5;padding:6px 13px}article#presentation > svg > foreignObject > section .markdown-body table tr,article#presentation > svg > foreignObject > section table tr{background-color:#fff;border-top:1px solid #c6cbd1}article#presentation > svg > foreignObject > section .markdown-body table tr:nth-child(2n),article#presentation > svg > foreignObject > section table tr:nth-child(2n){background-color:#f6f8fa}article#presentation > svg > foreignObject > section .markdown-body img,article#presentation > svg > foreignObject > section img{background-color:#fff;box-sizing:content-box;max-width:100%}article#presentation > svg > foreignObject > section .markdown-body img[align=right],article#presentation > svg > foreignObject > section img[align=right]{padding-left:20px}article#presentation > svg > foreignObject > section .markdown-body img[align=left],article#presentation > svg > foreignObject > section img[align=left]{padding-right:20px}article#presentation > svg > foreignObject > section .markdown-body code,article#presentation > svg > foreignObject > section code{background-color:rgba(27,31,35,.05);border-radius:3px;font-size:85%;margin:0;padding:.2em .4em}article#presentation > svg > foreignObject > section .markdown-body pre,article#presentation > svg > foreignObject > section pre{word-wrap:normal}article#presentation > svg > foreignObject > section .markdown-body pre>code,article#presentation > svg > foreignObject > section pre>code{background:transparent;border:0;font-size:100%;margin:0;padding:0;white-space:pre;word-break:normal}article#presentation > svg > foreignObject > section .markdown-body .highlight,article#presentation > svg > foreignObject > section .highlight{margin-bottom:16px}article#presentation > svg > foreignObject > section .markdown-body .highlight pre,article#presentation > svg > foreignObject > section .highlight pre{margin-bottom:0;word-break:normal}article#presentation > svg > foreignObject > section .markdown-body .highlight pre,article#presentation > svg > foreignObject > section .markdown-body pre,article#presentation > svg > foreignObject > section .highlight pre,article#presentation > svg > foreignObject > section pre{background-color:#f6f8fa;border-radius:3px;font-size:85%;line-height:1.45;overflow:auto;padding:16px}article#presentation > svg > foreignObject > section .markdown-body pre code,article#presentation > svg > foreignObject > section pre code{background-color:transparent;border:0;display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;word-wrap:normal}article#presentation > svg > foreignObject > section .markdown-body .commit-tease-sha,article#presentation > svg > foreignObject > section .commit-tease-sha{color:#444d56;display:inline-block;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:90%}article#presentation > svg > foreignObject > section .markdown-body .blob-wrapper,article#presentation > svg > foreignObject > section .blob-wrapper{border-bottom-left-radius:3px;border-bottom-right-radius:3px;overflow-x:auto;overflow-y:hidden}article#presentation > svg > foreignObject > section .markdown-body .blob-wrapper-embedded,article#presentation > svg > foreignObject > section .blob-wrapper-embedded{max-height:240px;overflow-y:auto}article#presentation > svg > foreignObject > section .markdown-body .blob-num,article#presentation > svg > foreignObject > section .blob-num{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;color:rgba(27,31,35,.3);cursor:pointer;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;line-height:20px;min-width:50px;padding-left:10px;padding-right:10px;text-align:right;user-select:none;vertical-align:top;white-space:nowrap;width:1%}article#presentation > svg > foreignObject > section .markdown-body .blob-num:hover,article#presentation > svg > foreignObject > section .blob-num:hover{color:rgba(27,31,35,.6)}article#presentation > svg > foreignObject > section .markdown-body .blob-num:before,article#presentation > svg > foreignObject > section .blob-num:before{content:attr(data-line-number)}article#presentation > svg > foreignObject > section .markdown-body .blob-code,article#presentation > svg > foreignObject > section .blob-code{line-height:20px;padding-left:10px;padding-right:10px;position:relative;vertical-align:top}article#presentation > svg > foreignObject > section .markdown-body .blob-code-inner,article#presentation > svg > foreignObject > section .blob-code-inner{color:#24292e;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;overflow:visible;white-space:pre;word-wrap:normal}article#presentation > svg > foreignObject > section .markdown-body .pl-token.active,article#presentation > svg > foreignObject > section .markdown-body .pl-token:hover,article#presentation > svg > foreignObject > section .pl-token.active,article#presentation > svg > foreignObject > section .pl-token:hover{background:#ffea7f;cursor:pointer}article#presentation > svg > foreignObject > section .markdown-body kbd,article#presentation > svg > foreignObject > section kbd{background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font:11px SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}article#presentation > svg > foreignObject > section .markdown-body :checked+.radio-label,article#presentation > svg > foreignObject > section :checked+.radio-label{border-color:#0366d6;position:relative;z-index:1}article#presentation > svg > foreignObject > section .markdown-body .tab-size[data-tab-size="1"],article#presentation > svg > foreignObject > section .tab-size[data-tab-size="1"]{-moz-tab-size:1;-o-tab-size:1;tab-size:1}article#presentation > svg > foreignObject > section .markdown-body .tab-size[data-tab-size="2"],article#presentation > svg > foreignObject > section .tab-size[data-tab-size="2"]{-moz-tab-size:2;-o-tab-size:2;tab-size:2}article#presentation > svg > foreignObject > section .markdown-body .tab-size[data-tab-size="3"],article#presentation > svg > foreignObject > section .tab-size[data-tab-size="3"]{-moz-tab-size:3;-o-tab-size:3;tab-size:3}article#presentation > svg > foreignObject > section .markdown-body .tab-size[data-tab-size="4"],article#presentation > svg > foreignObject > section .tab-size[data-tab-size="4"]{-moz-tab-size:4;-o-tab-size:4;tab-size:4}article#presentation > svg > foreignObject > section .markdown-body .tab-size[data-tab-size="5"],article#presentation > svg > foreignObject > section .tab-size[data-tab-size="5"]{-moz-tab-size:5;-o-tab-size:5;tab-size:5}article#presentation > svg > foreignObject > section .markdown-body .tab-size[data-tab-size="6"],article#presentation > svg > foreignObject > section .tab-size[data-tab-size="6"]{-moz-tab-size:6;-o-tab-size:6;tab-size:6}article#presentation > svg > foreignObject > section .markdown-body .tab-size[data-tab-size="7"],article#presentation > svg > foreignObject > section .tab-size[data-tab-size="7"]{-moz-tab-size:7;-o-tab-size:7;tab-size:7}article#presentation > svg > foreignObject > section .markdown-body .tab-size[data-tab-size="8"],article#presentation > svg > foreignObject > section .tab-size[data-tab-size="8"]{-moz-tab-size:8;-o-tab-size:8;tab-size:8}article#presentation > svg > foreignObject > section .markdown-body .tab-size[data-tab-size="9"],article#presentation > svg > foreignObject > section .tab-size[data-tab-size="9"]{-moz-tab-size:9;-o-tab-size:9;tab-size:9}article#presentation > svg > foreignObject > section .markdown-body .tab-size[data-tab-size="10"],article#presentation > svg > foreignObject > section .tab-size[data-tab-size="10"]{-moz-tab-size:10;-o-tab-size:10;tab-size:10}article#presentation > svg > foreignObject > section .markdown-body .tab-size[data-tab-size="11"],article#presentation > svg > foreignObject > section .tab-size[data-tab-size="11"]{-moz-tab-size:11;-o-tab-size:11;tab-size:11}article#presentation > svg > foreignObject > section .markdown-body .tab-size[data-tab-size="12"],article#presentation > svg > foreignObject > section .tab-size[data-tab-size="12"]{-moz-tab-size:12;-o-tab-size:12;tab-size:12}article#presentation > svg > foreignObject > section .markdown-body .task-list-item,article#presentation > svg > foreignObject > section .task-list-item{list-style-type:none}article#presentation > svg > foreignObject > section .markdown-body .task-list-item+.task-list-item,article#presentation > svg > foreignObject > section .task-list-item+.task-list-item{margin-top:3px}article#presentation > svg > foreignObject > section .markdown-body .task-list-item input,article#presentation > svg > foreignObject > section .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}article#presentation > svg > foreignObject > section .markdown-body hr,article#presentation > svg > foreignObject > section hr{border-bottom-color:#eee}article#presentation > svg > foreignObject > section .markdown-body .pl-0,article#presentation > svg > foreignObject > section .pl-0{padding-left:0!important}article#presentation > svg > foreignObject > section .markdown-body .pl-1,article#presentation > svg > foreignObject > section .pl-1{padding-left:4px!important}article#presentation > svg > foreignObject > section .markdown-body .pl-2,article#presentation > svg > foreignObject > section .pl-2{padding-left:8px!important}article#presentation > svg > foreignObject > section .markdown-body .pl-3,article#presentation > svg > foreignObject > section .pl-3{padding-left:16px!important}article#presentation > svg > foreignObject > section .markdown-body .pl-4,article#presentation > svg > foreignObject > section .pl-4{padding-left:24px!important}article#presentation > svg > foreignObject > section .markdown-body .pl-5,article#presentation > svg > foreignObject > section .pl-5{padding-left:32px!important}article#presentation > svg > foreignObject > section .markdown-body .pl-6,article#presentation > svg > foreignObject > section .pl-6{padding-left:40px!important}article#presentation > svg > foreignObject > section .markdown-body .pl-7,article#presentation > svg > foreignObject > section .pl-7{padding-left:48px!important}article#presentation > svg > foreignObject > section .markdown-body .pl-8,article#presentation > svg > foreignObject > section .pl-8{padding-left:64px!important}article#presentation > svg > foreignObject > section .markdown-body .pl-9,article#presentation > svg > foreignObject > section .pl-9{padding-left:80px!important}article#presentation > svg > foreignObject > section .markdown-body .pl-10,article#presentation > svg > foreignObject > section .pl-10{padding-left:96px!important}article#presentation > svg > foreignObject > section .markdown-body .pl-11,article#presentation > svg > foreignObject > section .pl-11{padding-left:112px!important}article#presentation > svg > foreignObject > section .markdown-body .pl-12,article#presentation > svg > foreignObject > section .pl-12{padding-left:128px!important}article#presentation > svg > foreignObject > section .hljs{display:block;background:#fff;padding:.5em;color:#333;overflow-x:auto}article#presentation > svg > foreignObject > section .hljs-comment,article#presentation > svg > foreignObject > section .hljs-meta{color:#969896}article#presentation > svg > foreignObject > section .hljs-emphasis,article#presentation > svg > foreignObject > section .hljs-quote,article#presentation > svg > foreignObject > section .hljs-string,article#presentation > svg > foreignObject > section .hljs-strong,article#presentation > svg > foreignObject > section .hljs-template-variable,article#presentation > svg > foreignObject > section .hljs-variable{color:#df5000}article#presentation > svg > foreignObject > section .hljs-keyword,article#presentation > svg > foreignObject > section .hljs-selector-tag,article#presentation > svg > foreignObject > section .hljs-type{color:#a71d5d}article#presentation > svg > foreignObject > section .hljs-attribute,article#presentation > svg > foreignObject > section .hljs-bullet,article#presentation > svg > foreignObject > section .hljs-literal,article#presentation > svg > foreignObject > section .hljs-symbol{color:#0086b3}article#presentation > svg > foreignObject > section .hljs-name,article#presentation > svg > foreignObject > section .hljs-section{color:#63a35c}article#presentation > svg > foreignObject > section .hljs-tag{color:#333}article#presentation > svg > foreignObject > section .hljs-attr,article#presentation > svg > foreignObject > section .hljs-selector-attr,article#presentation > svg > foreignObject > section .hljs-selector-class,article#presentation > svg > foreignObject > section .hljs-selector-id,article#presentation > svg > foreignObject > section .hljs-selector-pseudo,article#presentation > svg > foreignObject > section .hljs-title{color:#795da3}article#presentation > svg > foreignObject > section .hljs-addition{color:#55a532;background-color:#eaffea}article#presentation > svg > foreignObject > section .hljs-deletion{color:#bd2c00;background-color:#ffecec}article#presentation > svg > foreignObject > section .hljs-link{text-decoration:underline}article#presentation > svg > foreignObject > section svg[data-marp-fitting=svg]{max-height:563px}article#presentation > svg > foreignObject > section h1{color:#246;font-size:1.6em}article#presentation > svg > foreignObject > section h1,article#presentation > svg > foreignObject > section h2{border-bottom:none}article#presentation > svg > foreignObject > section h2{font-size:1.3em}article#presentation > svg > foreignObject > section h3{font-size:1.1em}article#presentation > svg > foreignObject > section h4{font-size:1.05em}article#presentation > svg > foreignObject > section h5{font-size:1em}article#presentation > svg > foreignObject > section h6{font-size:.9em}article#presentation > svg > foreignObject > section h1 strong,article#presentation > svg > foreignObject > section h2 strong,article#presentation > svg > foreignObject > section h3 strong,article#presentation > svg > foreignObject > section h4 strong,article#presentation > svg > foreignObject > section h5 strong,article#presentation > svg > foreignObject > section h6 strong{font-weight:inherit;color:#48c}article#presentation > svg > foreignObject > section hr{height:0;padding-top:.25em}article#presentation > svg > foreignObject > section pre{border:1px solid #999;line-height:1.15;overflow:visible}article#presentation > svg > foreignObject > section pre code svg[data-marp-fitting=svg]{max-height:529px}article#presentation > svg > foreignObject > section footer,article#presentation > svg > foreignObject > section header{margin:0;position:absolute;left:30px;color:hsla(0,0%,40%,.75);font-size:18px}article#presentation > svg > foreignObject > section header{top:21px}article#presentation > svg > foreignObject > section footer{bottom:21px}article#presentation > svg > foreignObject > section{align-items:stretch;background:#fff;display:flex;flex-direction:column;flex-wrap:nowrap;font-size:29px;height:720px;justify-content:center;padding:78.5px;width:1280px}article#presentation > svg > foreignObject > section>:last-child,article#presentation > svg > foreignObject > section[data-footer]>:nth-last-child(2){margin-bottom:0}article#presentation > svg > foreignObject > section>:first-child,article#presentation > svg > foreignObject > section>header:first-child+*{margin-top:0}article#presentation > svg > foreignObject > section:after{position:absolute;padding:0;right:30px;bottom:21px;font-size:24px;color:#777}article#presentation > svg > foreignObject > section.invert{background-color:#222;color:#e6eaf0}article#presentation > svg > foreignObject > section.invert:after{color:#999}article#presentation > svg > foreignObject > section.invert img{background-color:transparent}article#presentation > svg > foreignObject > section.invert a{color:#50b3ff}article#presentation > svg > foreignObject > section.invert h1{color:#a3c5e7}article#presentation > svg > foreignObject > section.invert h2,article#presentation > svg > foreignObject > section.invert h3,article#presentation > svg > foreignObject > section.invert h4,article#presentation > svg > foreignObject > section.invert h5{color:#ebeff5}article#presentation > svg > foreignObject > section.invert blockquote,article#presentation > svg > foreignObject > section.invert h6{border-color:#3d3f43;color:#939699}article#presentation > svg > foreignObject > section.invert h1 strong,article#presentation > svg > foreignObject > section.invert h2 strong,article#presentation > svg > foreignObject > section.invert h3 strong,article#presentation > svg > foreignObject > section.invert h4 strong,article#presentation > svg > foreignObject > section.invert h5 strong,article#presentation > svg > foreignObject > section.invert h6 strong{color:#7bf}article#presentation > svg > foreignObject > section.invert hr{background-color:#3d3f43}article#presentation > svg > foreignObject > section.invert footer,article#presentation > svg > foreignObject > section.invert header{color:hsla(0,0%,60%,.75)}article#presentation > svg > foreignObject > section.invert code,article#presentation > svg > foreignObject > section.invert kbd{background-color:#111}article#presentation > svg > foreignObject > section.invert kbd{border-color:#666;box-shadow:inset 0 -1px 0 #555;color:#e6eaf0}article#presentation > svg > foreignObject > section.invert table tr{background-color:#12181d;border-color:#60657b}article#presentation > svg > foreignObject > section.invert table tr:nth-child(2n){background-color:#1b2024}article#presentation > svg > foreignObject > section.invert table td,article#presentation > svg > foreignObject > section.invert table th{border-color:#5b5e61}article#presentation > svg > foreignObject > section.invert pre{background-color:#0a0e12;border-color:#777}article#presentation > svg > foreignObject > section.invert pre code{background-color:transparent}article#presentation > svg > foreignObject > section[data-color] h1,article#presentation > svg > foreignObject > section[data-color] h2,article#presentation > svg > foreignObject > section[data-color] h3,article#presentation > svg > foreignObject > section[data-color] h4,article#presentation > svg > foreignObject > section[data-color] h5,article#presentation > svg > foreignObject > section[data-color] h6{color:currentColor}article#presentation > svg > foreignObject > section.lead h1 {
text-align: center;
}article#presentation > svg > foreignObject > section.white h1 {
color: white !important;
}article#presentation > svg > foreignObject > section h1,article#presentation > svg > foreignObject > section h2,article#presentation > svg > foreignObject > section h3,article#presentation > svg > foreignObject > section h4,article#presentation > svg > foreignObject > section h5 {
font-weight: bold;
font-family: 'Yanone Kaffeesatz', sans-serif !important;
color: #2c3e50;
}article#presentation > svg > foreignObject > section h1 {
font-size: 3em;
}article#presentation > svg > foreignObject > section h2 {
font-size: 2em;
}article#presentation > svg > foreignObject > section h3 {
font-size: 1.3em;
}article#presentation > svg > foreignObject > section.bottom>*, article#presentation > svg > foreignObject > section.bottom {
text-align: center;
padding-top: 300px;
text-shadow: -1px -1px 0 #34495e, 1px -1px 0 #34495e, -1px 1px 0 #34495e, 1px 1px 0 #34495e;
}article#presentation > svg > foreignObject > section[data-marpit-advanced-background="background"] {
padding: 0 !important;
}article#presentation > svg > foreignObject > section[data-marpit-advanced-background="background"]::before,
article#presentation > svg > foreignObject > section[data-marpit-advanced-background="background"]::after,
article#presentation > svg > foreignObject > section[data-marpit-advanced-background="content"]::before,
article#presentation > svg > foreignObject > section[data-marpit-advanced-background="content"]::after {
display: none !important;
}article#presentation > svg > foreignObject > section[data-marpit-advanced-background="background"] > div[data-marpit-advanced-background-container] {
all: initial;
display: flex;
flex-direction: row;
height: 100%;
overflow: hidden;
width: 100%;
}article#presentation > svg > foreignObject > section[data-marpit-advanced-background="background"] > div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction="vertical"] {
flex-direction: column;
}article#presentation > svg > foreignObject > section[data-marpit-advanced-background="background"][data-marpit-advanced-background-split] > div[data-marpit-advanced-background-container] {
width: 50%;
}article#presentation > svg > foreignObject > section[data-marpit-advanced-background="background"][data-marpit-advanced-background-split="right"] > div[data-marpit-advanced-background-container] {
margin-left: 50%;
}article#presentation > svg > foreignObject > section[data-marpit-advanced-background="background"] > div[data-marpit-advanced-background-container] > figure {
all: initial;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
flex: auto;
margin: 0;
}article#presentation > svg > foreignObject > section[data-marpit-advanced-background="content"],
article#presentation > svg > foreignObject > section[data-marpit-advanced-background="pseudo"] {
background: transparent !important;
}article#presentation > svg > foreignObject > section[data-marpit-advanced-background="pseudo"],
article#presentation > svg[data-marpit-svg] > foreignObject[data-marpit-advanced-background="pseudo"] {
pointer-events: none !important;
}article#presentation > svg > foreignObject > section[data-marpit-advanced-background-split] {
width: 100%;
height: 100%;
}</style></head><body><div class="bespoke-marp-osc"><button data-bespoke-marp-osc="prev" tabindex="-1" title="Previous slide">Previous slide</button><span data-bespoke-marp-osc="page"></span><button data-bespoke-marp-osc="next" tabindex="-1" title="Next slide">Next slide</button><button data-bespoke-marp-osc="fullscreen" tabindex="-1" title="Toggle fullscreen (f)">Toggle fullscreen</button></div><article id="presentation"><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-class="lead white" class="lead white" data-marpit-pagination="1" style="--paginate:true;--class:lead white;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;https://fakeimg.pl/1920x800/8e44ad/fff/?text=+&amp;npsp;&quot;);"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="1" data-paginate="true" data-class="lead white" class="lead white" data-marpit-pagination="1" style="--paginate:true;--class:lead white;" data-marpit-advanced-background="content">
<h1><svg data-marp-fitting="svg"><foreignObject><span data-marp-fitting-svg-content>the homeserver talk</span></foreignObject></svg></h1>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section class="lead white" style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="1"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="2" data-paginate="true" data-marpit-pagination="2" style="--paginate:true;">
<h1><code>whoami</code></h1>
<ul>
<li>Nemo</li>
<li><a href="https://twitter.com/captn3m0">@captn3m0</a></li>
<li><a href="https://razorpay.com">@razorpay</a> (<img class="emoji" draggable="false" alt="💸" src="https://twemoji.maxcdn.com/2/svg/1f4b8.svg" data-marp-twemoji=""/> <img class="emoji" draggable="false" alt="💳" src="https://twemoji.maxcdn.com/2/svg/1f4b3.svg" data-marp-twemoji=""/>)</li>
<li><a href="mailto:me@captnemo.in">me@captnemo.in</a></li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="3" data-paginate="true" data-marpit-pagination="3" style="--paginate:true;">
<h1>agenda</h1>
<ol start="0">
<li>What counts as a homeserver?</li>
<li>Why you should run one?</li>
<li>How do you get started?</li>
<li>All the gotchas!</li>
<li>CTA</li>
</ol>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="4" data-paginate="true" data-marpit-pagination="4" style="--paginate:true;">
<h1>homeserver</h1>
<p>A <em>computer</em> which runs service(s) for personal use.</p>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-marpit-pagination="5" style="--paginate:true;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;https://fakeimg.pl/1920x800/8e44ad/fff/?text=why?&quot;);"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="5" data-paginate="true" data-marpit-pagination="5" style="--paginate:true;" data-marpit-advanced-background="content"></section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="5"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="6" data-paginate="true" data-marpit-pagination="6" style="--paginate:true;">
<h1>motivation?</h1>
<ol>
<li>owning your data</li>
</ol>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="7" data-paginate="true" data-marpit-pagination="7" style="--paginate:true;">
<h1>motivation?</h1>
<ol>
<li>owning your data</li>
<li>de-googling</li>
</ol>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="8" data-paginate="true" data-marpit-pagination="8" style="--paginate:true;">
<h1>motivation?</h1>
<ol>
<li>owning your data</li>
<li>de-googling</li>
<li>backing up your data locally</li>
</ol>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="9" data-paginate="true" data-marpit-pagination="9" style="--paginate:true;">
<h1>motivation?</h1>
<ol>
<li>owning your data</li>
<li>de-googling</li>
<li>backing up your data locally</li>
<li>learning/experimenting with tech</li>
</ol>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="10" data-paginate="true" data-marpit-pagination="10" style="--paginate:true;">
<h1>motivation?</h1>
<ol>
<li>owning your data</li>
<li>de-googling</li>
<li>backing up your data locally</li>
<li>learning/experimenting with tech</li>
<li>playing mario</li>
</ol>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="11" data-paginate="true" data-class="lead" class="lead" data-marpit-pagination="11" style="--paginate:true;--class:lead;">
<h1> <img src="./images/sideproject.jpg" alt="drop-shadow" style="filter:drop-shadow(0 5px 10px rgba(0,0,0,.4));" /></h1>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="12" data-paginate="true" data-marpit-pagination="12" style="--paginate:true;">
<h1>time?</h1>
<p><em>&lt;5 hr a month</em></p>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-marpit-pagination="13" style="--paginate:true;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;images/elite130.jpg&quot;);"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="13" data-paginate="true" data-marpit-pagination="13" style="--paginate:true;" data-marpit-advanced-background="content"></section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="13"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-marpit-pagination="14" style="--paginate:true;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;images/htpc.jpg&quot;);"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="14" data-paginate="true" data-marpit-pagination="14" style="--paginate:true;" data-marpit-advanced-background="content"></section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="14"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-marpit-pagination="15" style="--paginate:true;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="vertical"><figure style="background-image:url(&quot;https://fakeimg.pl/1920x800/8e44ad/fff/?text=software&quot;);"></figure><figure style="background-image:url(&quot;https://fakeimg.pl/1920x800/AE53D4/fff/?text=hardware&quot;);"></figure><figure style="background-image:url(&quot;https://fakeimg.pl/1920x800/B858E0/fff/?text=glue&quot;);"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="15" data-paginate="true" data-marpit-pagination="15" style="--paginate:true;" data-marpit-advanced-background="content"></section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="15"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="16" data-paginate="true" data-marpit-pagination="16" style="--paginate:true;">
<h1>what I run?</h1>
<h2>Monitoring</h2>
<ul>
<li>Prometheus</li>
<li>Grafana</li>
<li>speedtest-exporter</li>
<li><a href="https://git.captnemo.in/nemo/prometheus-act-exporter">ACT Exporter</a></li>
<li>CAdvisor</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-marpit-pagination="17" style="--paginate:true;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;images/act2.jpg&quot;);background-size:contain;"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="17" data-paginate="true" data-marpit-pagination="17" style="--paginate:true;" data-marpit-advanced-background="content"></section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="17"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-class="bottom" class="bottom" data-marpit-pagination="18" style="--paginate:true;--class:bottom;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;images/act-graph.png&quot;);background-size:contain;"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="18" data-paginate="true" data-class="bottom" class="bottom" data-marpit-pagination="18" style="--paginate:true;--class:bottom;" data-marpit-advanced-background="content"></section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section class="bottom" style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="18"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="19" data-paginate="true" data-marpit-pagination="19" style="--paginate:true;">
<h2>Media</h2>
<ul>
<li>Airsonic (<img class="emoji" draggable="false" alt="🎵" src="https://twemoji.maxcdn.com/2/svg/1f3b5.svg" data-marp-twemoji=""/>) (Google Play)</li>
<li>Jellyfin (<img class="emoji" draggable="false" alt="🎥" src="https://twemoji.maxcdn.com/2/svg/1f3a5.svg" data-marp-twemoji=""/>) (Netflix)</li>
<li>Kodi (<img class="emoji" draggable="false" alt="📺" src="https://twemoji.maxcdn.com/2/svg/1f4fa.svg" data-marp-twemoji=""/>) (Home Theater)</li>
<li>Audioserve (<img class="emoji" draggable="false" alt="🎙" src="https://twemoji.maxcdn.com/2/svg/1f399.svg" data-marp-twemoji=""/> <img class="emoji" draggable="false" alt="📖" src="https://twemoji.maxcdn.com/2/svg/1f4d6.svg" data-marp-twemoji=""/>) (Audible)</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="20" data-paginate="true" data-marpit-pagination="20" style="--paginate:true;">
<h2>Content</h2>
<ul>
<li><a href="https://nextcloud.com/">Nextcloud</a> <img class="emoji" draggable="false" alt="☁️" src="https://twemoji.maxcdn.com/2/svg/2601.svg" data-marp-twemoji=""/> <img class="emoji" draggable="false" alt="✅" src="https://twemoji.maxcdn.com/2/svg/2705.svg" data-marp-twemoji=""/> (Drive/Calendar/Contacts/Documents)</li>
<li><a href="https://github.com/miniflux/miniflux/">Miniflux</a> (<img class="emoji" draggable="false" alt="🗞" src="https://twemoji.maxcdn.com/2/svg/1f5de.svg" data-marp-twemoji=""/> <code>RSS</code>) (Feeds)</li>
<li><a href="https://github.com/odarriba/docker-timemachine/">Timemachine</a> (<img class="emoji" draggable="false" alt="💻" src="https://twemoji.maxcdn.com/2/svg/1f4bb.svg" data-marp-twemoji=""/> ⏮)</li>
<li><a href="https://docs.requarks.io/wiki/install/docker">wiki.js</a></li>
<li><a href="https://radicale.org/">Radicale</a> <img class="emoji" draggable="false" alt="📅" src="https://twemoji.maxcdn.com/2/svg/1f4c5.svg" data-marp-twemoji=""/> <img class="emoji" draggable="false" alt="🗂" src="https://twemoji.maxcdn.com/2/svg/1f5c2.svg" data-marp-twemoji=""/> (Contacts/Calendar)</li>
<li><a href="https://github.com/RSS-Bridge/rss-bridge">RSS Bridge</a></li>
<li><a href="https://gitea.io/">Gitea</a> (GitHub)</li>
<li><a href="https://wiki.znc.in/ZNC">ZNC</a> (IRC)</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-class="lead white" class="lead white" data-marpit-pagination="21" style="--paginate:true;--class:lead white;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;https://fakeimg.pl/1920x800/AE53D4/fff/?text=+&amp;npsp;&quot;);"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="21" data-paginate="true" data-class="lead white" class="lead white" data-marpit-pagination="21" style="--paginate:true;--class:lead white;" data-marpit-advanced-background="content">
<h1><svg data-marp-fitting="svg"><foreignObject><span data-marp-fitting-svg-content>hardware</span></foreignObject></svg></h1>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section class="lead white" style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="21"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="22" data-paginate="true" data-marpit-pagination="22" style="--paginate:true;">
<h2><a href="https://in.pcpartpicker.com/list/fZfp6s">Specs</a></h2>
<ul>
<li>Intel i5-7600 3.5GHz</li>
<li>Nvidia 1050 Ti 4GB</li>
<li>2x8GB DDR4 RAM</li>
<li>3x3TB Internal HDD</li>
<li>MSI B250I Motherboard</li>
</ul>
<h2><img class="emoji" draggable="false" alt="☁️" src="https://twemoji.maxcdn.com/2/svg/2601.svg" data-marp-twemoji=""/></h2>
<ul>
<li>DO 1vCPU / 2GB RAM / 30GB SSD ($10/mo) (BLR1 region)</li>
<li>+ 100GB disk</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="23" data-paginate="true" data-marpit-pagination="23" style="--paginate:true;">
<h1>A VM on the <img class="emoji" draggable="false" alt="☁️" src="https://twemoji.maxcdn.com/2/svg/2601.svg" data-marp-twemoji=""/></h1>
<ul>
<li>Scaleway: 4ARMv8/2GB/50GB - <strong>300 INR</strong></li>
<li>AWS Lightsail: 1vCPU/512MB/20GB - <strong>250 INR</strong></li>
<li>Digital Ocean: 1vCPU/1GB/25GB - <strong>350 INR</strong></li>
</ul>
<p><em>Beware of Persistent Storage cost</em></p>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="24" data-paginate="true" data-marpit-pagination="24" style="--paginate:true;">
<h1><img class="emoji" draggable="false" alt="☁️" src="https://twemoji.maxcdn.com/2/svg/2601.svg" data-marp-twemoji=""/></h1>
<ul>
<li>Security: Footgun</li>
<li>Batteries included</li>
<li>OpEx</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="25" data-paginate="true" data-marpit-pagination="25" style="--paginate:true;">
<h1>cloud storage</h1>
<table>
<thead>
<tr>
<th style="text-align:left">Storage</th>
<th>Cost/month</th>
<th>Retail</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">1TB-SSD</td>
<td>$100</td>
<td>$99</td>
</tr>
<tr>
<td style="text-align:left">3TB-SSD</td>
<td>$300</td>
<td>$224</td>
</tr>
<tr>
<td style="text-align:left">1TB</td>
<td>$25</td>
<td>$45</td>
</tr>
<tr>
<td style="text-align:left">3TB</td>
<td>$75</td>
<td>$84</td>
</tr>
</tbody>
</table>
<p><em>Indicative AWS:EBS Prices</em></p>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-marpit-pagination="26" style="--paginate:true;" data-marpit-advanced-background="background" data-marpit-advanced-background-split="right"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;https://cdn.shopify.com/s/files/1/0176/3274/products/Kit-game_1024x1024.jpg&quot;);"></figure></div></section></foreignObject><foreignObject width="50%" height="720"><section id="26" data-paginate="true" data-marpit-pagination="26" style="--paginate:true;" data-marpit-advanced-background="content" data-marpit-advanced-background-split="right">
<h1>Raspberry Pi 3</h1>
<ul>
<li><img class="emoji" draggable="false" alt="📝" src="https://twemoji.maxcdn.com/2/svg/1f4dd.svg" data-marp-twemoji=""/> 1GB RAM</li>
<li><img class="emoji" draggable="false" alt="🌐" src="https://twemoji.maxcdn.com/2/svg/1f310.svg" data-marp-twemoji=""/> Wireless/BLE/Ethernet</li>
<li><img class="emoji" draggable="false" alt="⛓" src="https://twemoji.maxcdn.com/2/svg/26d3.svg" data-marp-twemoji=""/> 4 USB ports</li>
<li><img class="emoji" draggable="false" alt="🎵" src="https://twemoji.maxcdn.com/2/svg/1f3b5.svg" data-marp-twemoji=""/> Audio/HDMI/Composite VGA</li>
<li><img class="emoji" draggable="false" alt="⚡️" src="https://twemoji.maxcdn.com/2/svg/26a1.svg" data-marp-twemoji=""/> 2.5A</li>
<li><img class="emoji" draggable="false" alt="💸" src="https://twemoji.maxcdn.com/2/svg/1f4b8.svg" data-marp-twemoji=""/> <strong>~3k INR</strong></li>
<li><img class="emoji" draggable="false" alt="📷" src="https://twemoji.maxcdn.com/2/svg/1f4f7.svg" data-marp-twemoji=""/>, GPIO</li>
</ul>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="26"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-class="white" class="white" data-marpit-pagination="27" style="--paginate:true;--class:white;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;https://d1vhcvzji58n1j.cloudfront.net/assets/products/meer4/hero_wide-7cf0ee6536_2560.jpg&quot;);"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="27" data-paginate="true" data-class="white" class="white" data-marpit-pagination="27" style="--paginate:true;--class:white;" data-marpit-advanced-background="content">
<h1>system76 Meerkat</h1>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section class="white" style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="27"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-marpit-pagination="28" style="--paginate:true;" data-marpit-advanced-background="background" data-marpit-advanced-background-split="right"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;images/nuc.jpg&quot;);"></figure></div></section></foreignObject><foreignObject width="50%" height="720"><section id="28" data-paginate="true" data-marpit-pagination="28" style="--paginate:true;" data-marpit-advanced-background="content" data-marpit-advanced-background-split="right">
<h1>Other Alternatives</h1>
<ol>
<li>Intel NUCs</li>
<li><a href="https://www.hetzner.com/sb">Hetzner Server Auctions</a> (20-50USD/mo).</li>
<li>NAS/Network device.</li>
<li>Gamer? <a href="https://www.reddit.com/r/pcmasterrace/wiki/builds"><code>r/pcmasterrace/wiki</code></a></li>
</ol>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="28"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-class="white bottom" class="white bottom" data-marpit-pagination="29" style="--paginate:true;--class:white bottom;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;images/homelab1.jpg&quot;);background-size:cover;"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="29" data-paginate="true" data-class="white bottom" class="white bottom" data-marpit-pagination="29" style="--paginate:true;--class:white bottom;" data-marpit-advanced-background="content">
<h1>have some old laptops?</h1>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section class="white bottom" style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="29"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-class="white bottom" class="white bottom" data-marpit-pagination="30" style="--paginate:true;--class:white bottom;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;images/homelab2.jpg&quot;);background-size:cover;"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="30" data-paginate="true" data-class="white bottom" class="white bottom" data-marpit-pagination="30" style="--paginate:true;--class:white bottom;" data-marpit-advanced-background="content">
<h1>really into networking?</h1>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section class="white bottom" style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="30"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-class="white bottom" class="white bottom" data-marpit-pagination="31" style="--paginate:true;--class:white bottom;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;images/cluster.jpg&quot;);background-size:cover;"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="31" data-paginate="true" data-class="white bottom" class="white bottom" data-marpit-pagination="31" style="--paginate:true;--class:white bottom;" data-marpit-advanced-background="content">
<h1>really want a cluster?</h1>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section class="white bottom" style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="31"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="32" data-paginate="true" data-marpit-pagination="32" style="--paginate:true;">
<h1>Hybrid</h1>
<ul>
<li>Local Disk, Cloud Compute</li>
</ul>
<p><img src="images/hybrid.jpg" alt="" /></p>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="33" data-paginate="true" data-marpit-pagination="33" style="--paginate:true;">
<table>
<thead>
<tr>
<th style="text-align:left"></th>
<th>Cloud</th>
<th>Pi</th>
<th>PC*</th>
<th>Hybrid</th>
<th>NAS</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Security</strong> <img class="emoji" draggable="false" alt="🔒" src="https://twemoji.maxcdn.com/2/svg/1f512.svg" data-marp-twemoji=""/></td>
<td>+</td>
<td>++</td>
<td>++</td>
<td>+</td>
<td>++</td>
</tr>
<tr>
<td style="text-align:left"><strong>Utility</strong></td>
<td>+++</td>
<td>-</td>
<td><img class="emoji" draggable="false" alt="💵" src="https://twemoji.maxcdn.com/2/svg/1f4b5.svg" data-marp-twemoji=""/></td>
<td>++</td>
<td>-</td>
</tr>
<tr>
<td style="text-align:left"><strong>Cost</strong></td>
<td><img class="emoji" draggable="false" alt="💸" src="https://twemoji.maxcdn.com/2/svg/1f4b8.svg" data-marp-twemoji=""/></td>
<td>+++</td>
<td>++</td>
<td>+</td>
<td>++</td>
</tr>
<tr>
<td style="text-align:left"><strong>Setup-Ease</strong></td>
<td>+</td>
<td>+</td>
<td>-</td>
<td>--</td>
<td>++</td>
</tr>
<tr>
<td style="text-align:left"><strong>Ops-Ease</strong></td>
<td>++</td>
<td>-</td>
<td>+</td>
<td>-</td>
<td>++</td>
</tr>
<tr>
<td style="text-align:left"><strong>Storage</strong></td>
<td>--</td>
<td>-</td>
<td>+</td>
<td>++</td>
<td>++</td>
</tr>
<tr>
<td style="text-align:left"><strong>Gaming</strong></td>
<td>--</td>
<td>-</td>
<td>++</td>
<td>++</td>
<td>--</td>
</tr>
<tr>
<td style="text-align:left"><strong>HTPC</strong></td>
<td><img class="emoji" draggable="false" alt="💵" src="https://twemoji.maxcdn.com/2/svg/1f4b5.svg" data-marp-twemoji=""/></td>
<td>+</td>
<td>++</td>
<td>++</td>
<td>+</td>
</tr>
</tbody>
</table>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-class="lead white" class="lead white" data-marpit-pagination="34" style="--paginate:true;--class:lead white;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;https://fakeimg.pl/1920x800/B858E0/fff/?text=+&amp;npsp;&quot;);"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="34" data-paginate="true" data-class="lead white" class="lead white" data-marpit-pagination="34" style="--paginate:true;--class:lead white;" data-marpit-advanced-background="content">
<h1><svg data-marp-fitting="svg"><foreignObject><span data-marp-fitting-svg-content>glue</span></foreignObject></svg></h1>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section class="lead white" style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="34"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="35" data-paginate="true" data-marpit-pagination="35" style="--paginate:true;">
<h1>software</h1>
<ol>
<li>docker <strong>*</strong></li>
<li>kubernetes</li>
<li>ansible/puppet/chef</li>
<li>helm?</li>
<li><a href="https://docs.google.com/spreadsheets/d/1FCgqz1Ci7_VCz_wdh8vBitZ3giBtac_H8SBw4uxnrsE/edit#gid=0">tool-of-your-choice</a></li>
<li><a href="https://www.unraid.net/">Unraid</a></li>
<li><a href="https://gitlab.com/NickBusey/HomelabOS">HomelabOS</a></li>
</ol>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-class="lead white" class="lead white" data-marpit-pagination="36" style="--paginate:true;--class:lead white;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;https://fakeimg.pl/1920x800/9b59b6/fff/?text=+&amp;npsp;&quot;);"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="36" data-paginate="true" data-class="lead white" class="lead white" data-marpit-pagination="36" style="--paginate:true;--class:lead white;" data-marpit-advanced-background="content">
<h1><svg data-marp-fitting="svg"><foreignObject><span data-marp-fitting-svg-content>pick something dumb</span></foreignObject></svg></h1>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section class="lead white" style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="36"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="37" data-paginate="true" data-marpit-pagination="37" style="--paginate:true;">
<h1>containers?</h1>
<ul>
<li>secure</li>
<li>declarative configuration</li>
<li>orchestration is 100x easier</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="38" data-paginate="true" data-marpit-pagination="38" style="--paginate:true;">
<h1>networking</h1>
<ul>
<li>Public + Static IP Address</li>
<li>Floating/Elastic IP</li>
<li>VPN</li>
<li>Wildcard DNS/TLS</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-marpit-pagination="39" style="--paginate:true;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;images/networking.jpg&quot;);background-size:cover;"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="39" data-paginate="true" data-marpit-pagination="39" style="--paginate:true;" data-marpit-advanced-background="content"></section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="39"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-class="lead white" class="lead white" data-marpit-pagination="40" style="--paginate:true;--class:lead white;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;https://fakeimg.pl/1920x800/27ae60/fff/?text=+&amp;npsp;&quot;);"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="40" data-paginate="true" data-class="lead white" class="lead white" data-marpit-pagination="40" style="--paginate:true;--class:lead white;" data-marpit-advanced-background="content">
<h1><svg data-marp-fitting="svg"><foreignObject><span data-marp-fitting-svg-content>security</span></foreignObject></svg></h1>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section class="lead white" style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="40"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="41" data-paginate="true" data-marpit-pagination="41" style="--paginate:true;">
<h1>security</h1>
<ol>
<li>Don't expose services</li>
<li>Expose services without auth over VPN only</li>
<li>Don't expose management services over Internet</li>
<li>Keep services behind Auth (even Basic Auth works)</li>
<li>Go Hybrid</li>
</ol>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-class="lead white" class="lead white" data-marpit-pagination="42" style="--paginate:true;--class:lead white;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;https://fakeimg.pl/1920x800/27ae60/fff/?text=+&amp;npsp;&quot;);"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="42" data-paginate="true" data-class="lead white" class="lead white" data-marpit-pagination="42" style="--paginate:true;--class:lead white;" data-marpit-advanced-background="content">
<h1><svg data-marp-fitting="svg"><foreignObject><span data-marp-fitting-svg-content>buy a raspberry pi today</span></foreignObject></svg></h1>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section class="lead white" style="" data-marpit-advanced-background="pseudo" data-marpit-pagination="42"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="43" data-paginate="true" data-marpit-pagination="43" style="--paginate:true;">
<h1>self-hosting references</h1>
<ul>
<li><a href="https://github.com/Kickball/awesome-selfhosted">kickball/awesome-selfhosted</a></li>
<li><a href="https://www.linuxserver.io/">linuxserver.io</a></li>
<li><a href="https://reddit.com/r/selfhosted">r/selfhosted</a></li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="44" data-paginate="true" data-marpit-pagination="44" style="--paginate:true;">
<h1>questions?</h1>
<ul>
<li><a href="mailto:me@captnemo.in">me@captnemo.in</a></li>
<li><a href="https://twitter.com/captn3m0">@captn3m0</a></li>
<li><a href="https://captnemo.in/archive.html">captnemo.in/archive.html</a></li>
</ul>
</section>
</foreignObject></svg></article><script>!function(){"use strict";var e,t,o=(function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var o=function(e,t,o){this.name=e,this.version=t,this.os=o};t.BrowserInfo=o;var n=function(e){this.version=e,this.name="node",this.os=process.platform};t.NodeInfo=n;var r=function(){this.bot=!0,this.name="bot",this.version=null,this.os=null};t.BotInfo=r;var i=3,s=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["vivaldi",/Vivaldi\/([0-9\.]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)$/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FBAV\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["searchbot",/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/]],a=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/],["Search Bot",/(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves\/Teoma)|(ia_archiver)/]];function l(e){var t=""!==e&&s.reduce(function(t,o){var n=o[0],r=o[1];if(t)return t;var i=r.exec(e);return!!i&&[n,i]},!1);if(!t)return null;var n=t[0],a=t[1];if("searchbot"===n)return new r;var l=a[1]&&a[1].split(/[._]/).slice(0,3);return l?l.length<i&&(l=l.concat(function(e){for(var t=[],o=0;o<e;o++)t.push("0");return t}(i-l.length))):l=[],new o(n,l.join("."),d(e))}function d(e){for(var t=0,o=a.length;t<o;t++){var n=a[t],r=n[0];if(n[1].test(e))return r}return null}function c(){return"undefined"!=typeof process&&process.version?new n(process.version.slice(1)):null}t.detect=function(){return"undefined"!=typeof navigator?l(navigator.userAgent):c()},t.parseUserAgent=l,t.detectOS=d,t.getNodeVersion=c}(e={exports:{}},e.exports),e.exports);(t=o)&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")&&t.default,o.BrowserInfo,o.NodeInfo,o.BotInfo;var n=o.detect;let r;o.parseUserAgent,o.detectOS,o.getNodeVersion;const i=["android","bb10","crios","facebook","fxios","instagram","ios-webview","ios","phantomjs","safari"];function s(e){Array.from(document.getElementsByTagName("svg"),t=>{if(t.hasAttribute("data-marpit-svg")){const{clientHeight:o,clientWidth:n}=t;t.style.transform||(t.style.transform="translateZ(0)");const r=e||t.currentScale||1,i=t.viewBox.baseVal.width/r,s=t.viewBox.baseVal.height/r,a=Math.min(o/s,n/i);Array.from(t.querySelectorAll(":scope > foreignObject"),e=>{const t=e.x.baseVal.value,r=e.y.baseVal.value;Array.from(e.querySelectorAll(":scope > section"),e=>{e.style.transformOrigin||(e.style.transformOrigin="0 0");const l=(n-a*i)/2-t,d=(o-a*s)/2-r;e.style.transform=`translate3d(${l}px,${d}px,0) scale(${a}) translate(${t}px,${r}px)`})})}})}const a="data-marp-fitting",l="data-marp-fitting-code",d="data-marp-fitting-math",c=(e,t,o)=>{if(e.getAttribute(t)!==o)return e.setAttribute(t,o),!0};!function(e=!0){const t=()=>{for(const e of function(){if(!r){r=[];const{name:e}=n()||{};i.includes(e)&&r.push(s)}return r}())e();Array.from(document.querySelectorAll(`svg[${a}="svg"]`),e=>{const t=e.firstChild,o=t.firstChild,{scrollWidth:n,scrollHeight:r}=o;let i,s=1;if(e.hasAttribute(l)&&(i=e.parentElement.parentElement),e.hasAttribute(d)&&(i=e.parentElement),i){const e=getComputedStyle(i),t=Math.ceil(i.clientWidth-parseFloat(e.paddingLeft)-parseFloat(e.paddingRight));t&&(s=t)}const a=Math.max(n,s),u=Math.max(r,1),f=`0 0 ${a} ${u}`;c(t,"width",`${a}`),c(t,"height",`${u}`),c(e,"preserveAspectRatio",getComputedStyle(e).getPropertyValue("--preserve-aspect-ratio")||"xMinYMin meet"),c(e,"viewBox",f)&&e.classList.toggle("__reflow__")}),e&&window.requestAnimationFrame(t)};t()}()}();
</script><script>!function(){"use strict";var e={from:function(e,n){var t=1===(e.parent||e).nodeType?e.parent||e:document.querySelector(e.parent||e),r=[].filter.call("string"==typeof e.slides?t.querySelectorAll(e.slides):e.slides||t.children,function(e){return"SCRIPT"!==e.nodeName}),i=r[0],l={},o=function(e,n){r[e]&&(a("deactivate",u(i,n)),i=r[e],a("activate",u(i,n)))},s=function(e,n){var t=r.indexOf(i)+e;a(e>0?"next":"prev",u(i,n))&&o(t,n)},c=function(e,n){l[e]=(l[e]||[]).filter(function(e){return e!==n})},a=function(e,n){return(l[e]||[]).reduce(function(e,t){return e&&!1!==t(n)},!0)},u=function(e,n){return(n=n||{}).index=r.indexOf(e),n.slide=e,n},d={on:function(e,n){return(l[e]||(l[e]=[])).push(n),c.bind(null,e,n)},off:c,fire:a,slide:function(e,n){if(!arguments.length)return r.indexOf(i);a("slide",u(r[e],n))&&o(e,n)},next:s.bind(null,1),prev:s.bind(null,-1),parent:t,slides:r};return(n||[]).forEach(function(e){e(d)}),o(0),d}},n=function(){return function(e){e.slides.forEach(function(e){e.addEventListener("keydown",function(e){(/INPUT|TEXTAREA|SELECT/.test(e.target.nodeName)||"true"===e.target.contentEditable)&&e.stopPropagation()})})}};function t(e){e.parent.classList.add("bespoke-marp-parent"),e.slides.map(e=>e.classList.add("bespoke-marp-slide")),e.on("activate",n=>{e.slides.map(e=>e.classList.remove("bespoke-marp-active")),n.slide.classList.add("bespoke-marp-active")})}function r(e=2e3){return n=>{let t;function r(){t&&clearTimeout(t),t=setTimeout(()=>{n.parent.classList.add("bespoke-marp-inactive")},e),n.parent.classList.remove("bespoke-marp-inactive")}document.addEventListener("mousedown",r),document.addEventListener("mousemove",r),document.addEventListener("touchend",r),setTimeout(r,0)}}var i,l=(function(e){var n,t,r,i,l,o;n="undefined"!=typeof window&&void 0!==window.document?window.document:{},t=e.exports,r="undefined"!=typeof Element&&"ALLOW_KEYBOARD_INPUT"in Element,i=function(){for(var e,t=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,i=t.length,l={};r<i;r++)if((e=t[r])&&e[1]in n){for(r=0;r<e.length;r++)l[t[0][r]]=e[r];return l}return!1}(),l={change:i.fullscreenchange,error:i.fullscreenerror},o={request:function(e){return new Promise(function(t){var l=i.requestFullscreen,o=function(){this.off("change",o),t()}.bind(this);e=e||n.documentElement,/ Version\/5\.1(?:\.\d+)? Safari\//.test(navigator.userAgent)?e[l]():e[l](r?Element.ALLOW_KEYBOARD_INPUT:{}),this.on("change",o)}.bind(this))},exit:function(){return new Promise(function(e){if(this.isFullscreen){var t=function(){this.off("change",t),e()}.bind(this);n[i.exitFullscreen](),this.on("change",t)}else e()}.bind(this))},toggle:function(e){return this.isFullscreen?this.exit():this.request(e)},onchange:function(e){this.on("change",e)},onerror:function(e){this.on("error",e)},on:function(e,t){var r=l[e];r&&n.addEventListener(r,t,!1)},off:function(e,t){var r=l[e];r&&n.removeEventListener(r,t,!1)},raw:i},i?(Object.defineProperties(o,{isFullscreen:{get:function(){return Boolean(n[i.fullscreenElement])}},element:{enumerable:!0,get:function(){return n[i.fullscreenElement]}},enabled:{enumerable:!0,get:function(){return Boolean(n[i.fullscreenEnabled])}}}),t?e.exports=o:window.screenfull=o):t?e.exports=!1:window.screenfull=!1}(i={exports:{}},i.exports),i.exports);function o(e){e.fullscreen=(()=>l.toggle(document.body)),document.addEventListener("keydown",n=>{70!==n.which&&122!==n.which||n.altKey||n.ctrlKey||n.metaKey||!l.enabled||(e.fullscreen(),n.preventDefault())})}function s(e={}){const n=Object.assign({history:!0},e);return e=>{function t(){const n=parseInt(window.location.hash.slice(1),10);Number.isNaN(n)||function(n){const t=Math.max(0,Math.min(n,e.slides.length-1));t!==e.slide()&&e.slide(t)}(n-1)}setTimeout(()=>{t(),e.on("activate",e=>{n.history?window.location.hash=e.index+1:window.location.replace(`#${e.index+1}`)}),window.addEventListener("hashchange",t)},0)}}var c,a=function(e){return function(n){var t="vertical"!==e;document.addEventListener("keydown",function(e){(34==e.which||32==e.which&&!e.shiftKey||t&&39==e.which||!t&&40==e.which)&&n.next(),(33==e.which||32==e.which&&e.shiftKey||t&&37==e.which||!t&&38==e.which)&&n.prev()})}};function u(e={}){const n=Object.assign({interval:200},e);return e=>{a()(e),document.addEventListener("keydown",n=>{35===n.which&&e.slide(e.slides.length-1),36===n.which&&e.slide(0),38===n.which&&e.prev(),40===n.which&&e.next()});let t,r,i=0;e.parent.addEventListener("wheel",l=>{let o=!1;const s=(e,n)=>{e&&(o=o||function(e,n){return function(e,n){const t=n===c.X?"Width":"Height";return e[`client${t}`]<e[`scroll${t}`]}(e,n)&&function(e,n){const{overflow:t}=e,r=e[`overflow${n}`];return"auto"===t||"scroll"===t||"auto"===r||"scroll"===r}(getComputedStyle(e),n)}(e,n)),e&&e.parentElement&&s(e.parentElement,n)};if(0!==l.deltaX&&s(l.target,c.X),0!==l.deltaY&&s(l.target,c.Y),o)return;l.preventDefault(),r&&clearTimeout(r),r=setTimeout(()=>{t=0},n.interval);const a=Date.now()-i<n.interval,u=Math.sqrt(Math.pow(l.deltaX,2)+Math.pow(l.deltaY,2)),d=u<=t;if(t=u,a||d)return;let f;(l.deltaX>0||l.deltaY>0)&&(f="next"),(l.deltaX<0||l.deltaY<0)&&(f="prev"),f&&(e[f](),i=Date.now())})}}function d(e=".bespoke-marp-osc"){const n=document.querySelector(e);if(!n)return()=>{};const t=(e,t)=>{n.querySelectorAll(`[data-bespoke-marp-osc=${JSON.stringify(e)}]`).forEach(t)};return l.enabled||t("fullscreen",e=>e.style.display="none"),e=>{n.addEventListener("click",n=>{if(n.target instanceof HTMLElement)switch(n.target.dataset.bespokeMarpOsc){case"next":e.next();break;case"prev":e.prev();break;case"fullscreen":"function"==typeof e.fullscreen&&l.enabled&&e.fullscreen()}}),e.parent.appendChild(n),e.on("activate",({index:n})=>{t("page",t=>t.textContent=`Page ${n+1} of ${e.slides.length}`),t("prev",e=>e.disabled=0===n),t("next",t=>t.disabled=n===e.slides.length-1)}),l.onchange(()=>t("fullscreen",e=>e.classList.toggle("exit",l.isFullscreen)))}}!function(e){e.X="X",e.Y="Y"}(c||(c={}));const f=".bespoke-progress-bar";function h(e){e.on("activate",n=>{document.querySelectorAll(f).forEach(t=>{t.style.flexBasis=`${100*n.index/(e.slides.length-1)}%`})})}function p(e={}){const n=Object.assign({slope:Math.tan(-35*Math.PI/180),swipeThreshold:30},e);return e=>{let t;const r=e.parent,i=e=>{const n=r.getBoundingClientRect();return{x:e.pageX-(n.left+n.right)/2,y:e.pageY-(n.top+n.bottom)/2}};r.addEventListener("touchstart",e=>{t=1===e.touches.length?i(e.touches[0]):void 0}),r.addEventListener("touchmove",e=>{if(t)if(1===e.touches.length){e.preventDefault();const n=i(e.touches[0]),r=n.x-t.x,l=n.y-t.y;t.delta=Math.sqrt(Math.pow(Math.abs(r),2)+Math.pow(Math.abs(l),2)),t.radian=Math.atan2(r,l)}else t=void 0}),r.addEventListener("touchend",r=>{if(t){if(t.delta&&t.delta>=n.swipeThreshold){let i=t.radian-n.slope;i=(i+Math.PI)%(2*Math.PI)-Math.PI,e[i<0?"next":"prev"](),r.stopPropagation()}t=void 0}})}}e.from(document.getElementById("presentation"),[n(),t,r(),s({history:!1}),u(),o,h,p(),d()])}();
</script></body></html>