PageSourceSearch

https://santas-slides.netlify.app/assets/index-DCfA-xrU.js

js santas-slides.netlify.app collected 2026-10-03 11:22:08 UTC 146,886 bytes, 143 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/slidev/md-DM9MfKEH.js","assets/modules/unplugin-icons-D3Nw-66L.js","assets/modules/vue-CynRjMpH.js","assets/slidev/context-zDDIoJ0W.js","assets/modules/shiki-CCaIuvDs.js","assets/modules/shiki-Do831mNu.css","assets/md-DDtLkL1z.js","assets/slidev/VClicks-B_GkBXTf.js","assets/md-IKsfToj7.css","assets/md-CTeBK489.js","assets/cat-santa-BQI1n3Td.js","assets/slidev/center-Dc5hjA4e.js","assets/md-F5zNweQ4.js","assets/md-DcIozxbl.js","assets/slidev/two-cols.vue_vue_type_script_setup_true_lang-CIVsCQnk.js","assets/md-BoQ93kiU.js","assets/slidev/default-X5cGuVg9.js","assets/md-C0m1ViQu.js","assets/md-Ejm78NvH.js","assets/slidev/CodeBlockWrapper.vue_vue_type_script_setup_true_lang-DyrBJD3c.js","assets/md-Bb8OcwnO.js","assets/md-DzlphjFU.js","assets/md-YXZTNuSh.js","assets/md-N-F4R6yd.js","assets/md-BhVfUNEA.js","assets/md-CsPn_UHC.js","assets/md-Bzof8czY.js","assets/md-W6qskxc1.js","assets/md-tj9zPeOd.js","assets/md-Cbm2IgAl.js","assets/md-B8tUs1MG.js","assets/md-ckMb5XMk.js","assets/cat-elf-CLK1pxuA.js","assets/md-Datn1VUC.js","assets/md-D5anl49x.js","assets/modules/file-saver-B7oFTzqn.js","assets/md-B1pRPPtM.js","assets/md-CoYQEybl.js","assets/md-Uvy9MyNH.js","assets/md-CVCjxt3W.js","assets/md-CzNF-R4-.js","assets/md-BxaXwo2U.js","assets/md-DSHtG0y_.js","assets/md-B6n3_cbj.js","assets/md-Dqg6PpvC.js","assets/md-CGHnRJa4.js","assets/md-DOofO1k8.js","assets/md-B6b2UQ8w.js","assets/md-B9o_clK1.js","assets/slidev/entry-vhKDdtTW.js","assets/entry-WTKb-Tzs.css","assets/slidev/overview-B5oL_qKA.js","assets/slidev/NoteDisplay.vue_vue_type_style_index_0_lang-DJw28j03.js","assets/NoteDisplay-CGLi2MBg.css","assets/slidev/SlideWrapper-C4WqSzbE.js","assets/SlideWrapper-u5Yi-Kwa.css","assets/slidev/IconButton.vue_vue_type_script_setup_true_lang-DXa3lt18.js","assets/slidev/useSlideInfo-CZAt3se8.js","assets/slidev/notes-fU3AuZMD.js","assets/slidev/TimerBar.vue_vue_type_script_setup_true_lang-DlHg0DE8.js","assets/slidev/Modal.vue_vue_type_script_setup_true_lang-DvLtp5bY.js","assets/slidev/notes-edit-Dbwswh9t.js","assets/slidev/presenter-LZke9Ie1.js","assets/slidev/shortcuts-DGlntWQJ.js","assets/shortcuts-BM-0M-MH.css","assets/slidev/DrawingControls.vue_vue_type_style_index_0_lang-BSPLCj4a.js","assets/DrawingControls-Cxk9a9ub.css","assets/presenter-CGlTAJf1.css","assets/slidev/play-DJfLnnZ4.js","assets/play-D_7yfuao.css","assets/slidev/404-Dq_izksy.js","assets/404-BkWrzBXz.css"])))=>i.map(i=>d[i]);
2import{C as _,av as vn,a8 as Jo,aw as Ko,W as no,r as $,U as at,X as Qo,ax as Yo,ay as Zo,ag as so,N as ee,Q as oo,az as O,aA as Xo,R as er,f as bn,o as jt,t as tr,d as ro,i as nr,F as sr,g as Zn,_ as T,$ as In,aB as or,a3 as Jt,p as rr,A as ar,aC as ir,aD as lr,aE as cr,aF as ur,M as B,aG as fr,aH as ao,aI as Kt,aJ as dr,ac as io,aK as hr,aL as pr,aM as gr,aN as lo,b as mr,a as yr,ak as vr,Z as br,J as wr,a9 as _r,aO as kr,aP as Sr,aQ as Mr,c as Tr}from"./modules/vue-CynRjMpH.js";import{T as Or}from"./modules/shiki-CCaIuvDs.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const a of r.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&s(a)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();const N={theme:"seriph",title:"Santa's Lost Present - Multiplayer Xmas Geospatial Edition",titleTemplate:"%s - Slidev",addons:[],remoteAssets:!1,monaco:!0,monacoTypesSource:"local",monacoTypesAdditionalPackages:[],monacoTypesIgnorePackages:[],monacoRunAdditionalDeps:[],monacoRunUseStrict:!0,download:!1,export:{},info:`<h2>Multiplayer Xmas (Geo)-spatial Supabase Edition</h2>
3<p>Building real-time geospatial games with Supabase &amp; Google Maps Platform</p>
4<p>
4Presented by Katerina Skroumpelou</p>
5`,highlighter:"shiki",twoslash:!0,lineNumbers:!1,colorSchema:"auto",routerMode:"history",aspectRatio:1.7777777777777777,canvasWidth:980,exportFilename:"",selectable:!1,themeConfig:{},fonts:{sans:['"PT Serif"',"ui-sans-serif","system-ui","-apple-system","BlinkMacSystemFont",'"Segoe UI"',"Roboto",'"Helvetica Neue"',"Arial",'"Noto Sans"',"sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'],serif:['"PT Serif"',"ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"],mono:['"PT Mono"',"ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"],webfonts:["PT Serif","PT Mono"],provider:"google",local:[],italic:!0,weights:["400","700"]},favicon:"https://cdn.jsdelivr.net/gh/slidevjs/slidev/assets/favicon.png",drawings:{enabled:!0,persist:!1,presenterOnly:!1,syncAll:!0},plantUmlServer:"https://www.plantuml.com/plantuml",codeCopy:!0,magicMoveCopy:!0,author:"",record:"dev",css:"unocss",presenter:!0,browserExporter:"dev",htmlAttrs:{},transition:"slide-left",editor:!0,contextMenu:null,wakeLock:!0,mdc:!0,seoMeta:{},notesAutoRuby:{},duration:"30min",timer:"stopwatch",magicMoveDuration:800,background:"https://images.unsplash.com/photo-1482517967863-00e15c9b44be?w=1920",class:"text-center",slidesTitle:"Santa's Lost Present - Multiplayer Xmas Geospatial Edition - Slidev"};function wn(t,e,n){return Math.min(n,Math.max(e,t))}function Er(...t){return Cr(t).reduce((e,n)=>e+n,0)}function Pr(t){return t=t??[],Array.isArray(t)?t:[t]}function Cr(t){return Pr(t).flat(1)}function Lr(t){return Array.from(new Set(t))}function Xn(...t){let e,n,s;t.length===1?(e=0,s=1,[n]=t):[e,n,s=1]=t;const o=[];let r=e;for(;r<n;)o.push(r),r+=s||1;return o}function $r(t){return t!=null}function Ar(t,e){return Object.fromEntries(Object.entries(t).map(([n,s])=>e(n,s)).filter($r))}function Hc(t){return Object.keys(t).forEach(e=>t[e]===void 0?delete t[e]:{}),t}function Fc(t){let e;function n(){return e||(e=t()),e}return n.reset=async()=>{const s=e;e=void 0,s&&await s},n}const Vc="build",co=_(()=>N.aspectRatio),uo=_(()=>N.canvasWidth),xr=_(()=>Math.ceil(uo.value/co.value)),Dr=_(()=>Ar(N.themeConfig||{},(t,e)=>[`--slidev-theme-${t}`,e])),on=N.slidesTitle,Wc="/",Ir=[Object.values([])[0],Object.values([])[0]].filter(Boolean),Rr=new Set(["link","style","script","noscript"]),Nr=new Set(["title","titleTemplate","script","style","noscript"]),es=new Set(["base","meta","link","style","script","noscript"]),jr=new Set(["title","base","htmlAttrs","bodyAttrs","meta","link","style","script","noscript"]),Hr=new Set(["base","title","titleTemplate","bodyAttrs","htmlAttrs","templateParams"]),Fr=new Set(["key","tagPosition","tagPriority","tagDuplicateStrategy","innerHTML","textContent","processTemplateParams"]),Vr=new Set(["templateParams","htmlAttrs","bodyAttrs"]),Wr=new Set(["theme-color","google-site-verification","og","article","book","profile","twitter","author"]);function _n(t,e={},n){for(const s in t){const o=t[s],r=n?`${n}:${s}`:s;typeof o=="object"&&o!==null?_n(o,e,r):typeof o=="function"&&(e[r]=o)}return e}const zr={run:t=>t()},Br=()=>zr,fo=typeof console.createTask<"u"?console.createTask:Br;function Gr(t,e){const n=e.shift(),s=fo(n);return t.reduce((o,r)=>o.then(()=>s.run(()=>r(...e))),Promise.resolve())}function qr(t,e){const n=e.shift(),s=fo(n);return Promise.all(t.map(o=>s.run(()=>o(...e))))}function rn(t,e){for(const n of[...t])n(e)}class Ur{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(e,n,s={}){if(!e||typeof n!="function")return()=>{};const o=e;let r;for(;this._deprecatedHooks[e];)r=this._deprecatedHooks[e],e=r.to;if(r&&!s.allowDeprecated){let a=r.message;a||(a=`${o} hook has been deprecated`+(r.to?`, please use ${r.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(a)||(console.warn(a),this._deprecatedMessages.add(a))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+e.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[e]=this._hooks[e]||[],this._hooks[e].push(n),()=>{n&&(this.removeHook(e,n),n=void 0)}}hookOnce(e,n){let s,o=(...r)=>(typeof s=="function"&&s(),s=void 0,o=void 0,n(...r));return s=this.hook(e,o),s}removeHook(e,n){if(this._hooks[e]){const s=this._hooks[e].indexOf(n);s!==-1&&this._hooks[e].splice(s,1),this._hooks[e].length===0&&delete this._hooks[e]}}deprecateHook(e,n){this._deprecatedHooks[e]=typeof n=="string"?{to:n}:n;const s=this._hooks[e]||[];delete this._hooks[e];for(const o of s)this.hook(e,o)}deprecateHooks(e){Object.assign(this._deprecatedHooks,e);for(const n in e)this.deprecateHook(n,e[n])}addHooks(e){const n=_n(e),s=Object.keys(n).map(o=>this.hook(o,n[o]));return()=>{for(const o of s.splice(0,s.length))o()}}removeHooks(e){const n=_n(e);for(const s in n)this.removeHook(s,n[s])}removeAllHooks(){for(const e in this._hooks)delete this._hooks[e]}callHook(e,...n){return n.unshift(e),this.callHookWith(Gr,e,...n)}callHookParallel(e,...n){return n.unshift(e),this.callHookWith(qr,e,...n)}callHookWith(e,n,...s){const o=this._before||this._after?{name:n,args:s,context:{}}:void 0;this._before&&rn(this._before,o);const r=e(n in this._hooks?[...this._hooks[n]]:[],s);return r instanceof Promise?r.finally(()=>{this._after&&o&&rn(this._after,o)}):(this._after&&o&&rn(this._after,o),r)}beforeEach(e){return this._before=this._before||[],this._before.push(e),()=>{if(this._before!==void 0){const n=this._before.indexOf(e);n!==-1&&this._before.splice(n,1)}}}afterEach(e){return this._after=this._after||[],this._after.push(e),()=>{if(this._after!==void 0){const n=this._after.indexOf(e);n!==-1&&this._after.splice(n,1)}}}}function Jr(){return new Ur}const Kr=["name","property","http-equiv"],Qr=new Set(["viewport","description","keywords","robots"]);function ho(t){const e=t.split(":");return e.length?Wr.has(e[1]):!1}function kn(t){const{props:e,tag:n}=t;if(Hr.has(n))return n;if(n==="link"&&e.rel==="canonical")return"canonical";if(e.charset)return"charset";if(t.tag==="meta"){for(const s of Kr)if(e[s]!==void 0){const o=e[s],r=o.includes(":"),a=Qr.has(o),l=!(r||a)&&t.key?`:key:${t.key}`:"";return`${n}:${o}${l}`}}if(t.key)return`${n}:key:${t.key}`;if(e.id)return`${n}:id:${e.id}`;if(Nr.has(n)){const s=t.textContent||t.innerHTML;if(s)return`${n}:content:${s}`}}function ts(t){const e=t._h||t._d;if(e)return e;const n=t.textContent||t.innerHTML;return n||`${t.tag}:${Object.entries(t.props).map(([s,o])=>`${s}:${String(o)}`).join(",")}`}function Ht(t,e,n){typeof t==="function"&&(!n||n!=="titleTemplate"&&!(n[0]==="o"&&n[1]==="n"))&&(t=t());let o;if(e&&(o=e(n,t)),Array.isArray(o))return o.map(r=>Ht(r,e));if(o?.constructor===Object){const r={};for(const a of Object.keys(o))r[a]=Ht(o[a],e,a);return r}return o}function Yr(t,e){const n=t==="style"?new Map:new Set;function s(o){const r=o.trim();if(r)if(t==="style"){const[a,...i]=r.split(":").map(l=>l.trim());a&&i.length&&n.set(a,i.join(":"))}
5else r.split(" ").filter(Boolean).forEach(a=>n.add(a))}return typeof e=="string"?t==="style"?e.split(";").forEach(s):s(e):Array.isArray(e)?e.forEach(o=>s(o)):e&&typeof e=="object"&&Object.entries(e).forEach(([o,r])=>{r&&r!=="false"&&(t==="style"?n.set(o.trim(),r):s(o))}),n}function po(t,e){return t.props=t.props||{},e?t.tag==="templateParams"?(t.props=e,t):(Object.entries(e).forEach(([n,s])=>{if(s===null){t.props[n]=null;return}if(n==="class"||n==="style"){t.props[n]=Yr(n,s);return}if(Fr.has(n)){if(["textContent","innerHTML"].includes(n)&&typeof s=="object"){let a=e.type;if(e.type||(a="application/json"),!a?.endsWith("json")&&a!=="speculationrules")return;e.type=a,t.props.type=a,t[n]=JSON.stringify(s)}else t[n]=s;return}const o=String(s),r=n.startsWith("data-");o==="true"||o===""?t.props[n]=r?o:!0:!s&&r&&o==="false"?t.props[n]="false":s!==void 0&&(t.props[n]=s)}),t):t}function Zr(t,e){const n=typeof e=="object"&&typeof e!="function"?e:{[t==="script"||t==="noscript"||t==="style"?"innerHTML":"textContent"]:e},s=po({tag:t,props:{}},n);return s.key&&Rr.has(s.tag)&&(s.props["data-hid"]=s._h=s.key),s.tag==="script"&&typeof s.innerHTML=="object"&&(s.innerHTML=JSON.stringify(s.innerHTML),s.props.type=s.props.type||"application/json"),Array.isArray(s.props.content)?s.props.content.map(o=>({...s,props:{...s.props,content:o}})):s}function Xr(t,e){if(!t)return[];typeof t=="function"&&(t=t());const n=(o,r)=>{for(let a=0;a<e.length;a++)r=e[a](o,r);return r};t=n(void 0,t);const s=[];return t=Ht(t,n),Object.entries(t||{}).forEach(([o,r])=>{if(r!==void 0)for(const a of Array.isArray(r)?r:[r])s.push(Zr(o,a))}),s.flat()}const ns=(t,e)=>t._w===e._w?t._p-e._p:t._w-e._w,ss={base:-10,title:10},ea={critical:-8,high:-1,low:2},os={meta:{"content-security-policy":-30,charset:-20,viewport:-15},link:{preconnect:20,stylesheet:60,preload:70,modulepreload:70,prefetch:90,"dns-prefetch":90,prerender:90},script:{async:30,defer:80,sync:50},style:{imported:40,sync:60}},ta=/@import/,ut=t=>t===""||t===!0;function na(t,e){if(typeof e.tagPriority=="number")return e.tagPriority;let n=100;const s=ea[e.tagPriority]||0,o=t.resolvedOptions.disableCapoSorting?{link:{},script:{},style:{}}:os;if(e.tag in ss)n=ss[e.tag];else if(e.tag==="meta"){const r=e.props["http-equiv"]==="content-security-policy"?"content-security-policy":e.props.charset?"charset":e.props.name==="viewport"?"viewport":null;r&&(n=os.meta[r])}else e.tag==="link"&&e.props.rel?n=o.link[e.props.rel]:e.tag==="script"?ut(e.props.async)?n=o.script.async:e.props.src&&!ut(e.props.defer)&&!ut(e.props.async)&&e.props.type!=="module"&&!e.props.type?.endsWith("json")?n=o.script.sync:ut(e.props.defer)&&e.props.src&&!ut(e.props.async)&&(n=o.script.defer):e.tag==="style"&&(n=e.innerHTML&&ta.test(e.innerHTML)?o.style.imported:o.style.sync);return(n||100)+s}function rs(t,e){const n=typeof e=="function"?e(t):e,s=n.key||String(t.plugins.size+1);t.plugins.get(s)||(t.plugins.set(s,n),t.hooks.addHooks(n.hooks||{}))}function sa(t={}){const e=Jr();e.addHooks(t.hooks||{});const n=!t.document,s=new Map,o=new Map,r=new Set,a={_entryCount:1,plugins:o,dirty:!1,resolvedOptions:t,hooks:e,ssr:n,entries:s,headEntries(){return[...s.values()]},use:i=>rs(a,i),push(i,l){const c={...l||{}};delete c.head;const f=c._index??a._entryCount++,h={_i:f,input:i,options:c},d={_poll(u=!1){a.dirty=!0,!u&&r.add(f),e.callHook("entries:updated",a)},dispose(){s.delete(f)&&a.invalidate()},patch(u){(!c.mode||c.mode==="server"&&n||c.mode==="client"&&!n)&&(h.input=u,s.set(f,h),d._poll())}};return d.patch(i),d},async resolveTags(){const i={tagMap:new Map,tags:[],entries:[...a.entries.values()]};for(await e.callHook("entries:resolve",i);r.size;){const d=r.values().next().value;r.delete(d);const u=s.get(d);if(u){const g={tags:Xr(u.input,t.propResolvers||[]).map(p=>Object.assign(p,u.options)),entry:u};await e.callHook("entries:normalize",g),u._tags=g.tags.map((p,m)=>(p._w=na(a,p),p._p=(u._i<<10)+m,p._d=kn(p),p))}}let l=!1;i.entries.flatMap(d=>(d._tags||[]).map(u=>({...u,props:{...u.props}}))).sort(ns).reduce((d,u)=>{const g=String(u._d||u._p);if(!d.has(g))return d.set(g,u);const p=d.get(g);if((u?.tagDuplicateStrategy||(Vr.has(u.tag)?"merge":null)||(u.key&&u.key===p.key?"merge":null))==="merge"){const y={...p.props};
5Object.entries(u.props).forEach(([v,b])=>y[v]=v==="style"?new Map([...p.props.style||new Map,...b]):v==="class"?new Set([...p.props.class||new Set,...b]):b),d.set(g,{...u,props:y})}else u._p>>10===p._p>>10&&u.tag==="meta"&&ho(g)?(d.set(g,Object.assign([...Array.isArray(p)?p:[p],u],u)),l=!0):(u._w===p._w?u._p>p._p:u?._w<p?._w)&&d.set(g,u);return d},i.tagMap);const c=i.tagMap.get("title"),f=i.tagMap.get("titleTemplate");if(a._title=c?.textContent,f){const d=f?.textContent;if(a._titleTemplate=d,d){let u=typeof d=="function"?d(c?.textContent):d;typeof u=="string"&&!a.plugins.has("template-params")&&(u=u.replace("%s",c?.textContent||"")),c?u===null?i.tagMap.delete("title"):i.tagMap.set("title",{...c,textContent:u}):(f.tag="title",f.textContent=u)}}i.tags=Array.from(i.tagMap.values()),l&&(i.tags=i.tags.flat().sort(ns)),await e.callHook("tags:beforeResolve",i),await e.callHook("tags:resolve",i),await e.callHook("tags:afterResolve",i);const h=[];for(const d of i.tags){const{innerHTML:u,tag:g,props:p}=d;if(jr.has(g)&&!(Object.keys(p).length===0&&!d.innerHTML&&!d.textContent)&&!(g==="meta"&&!p.content&&!p["http-equiv"]&&!p.charset)){if(g==="script"&&u){if(p.type?.endsWith("json")){const m=typeof u=="string"?u:JSON.stringify(u);d.innerHTML=m.replace(/</g,"\\u003C")}else typeof u=="string"&&(d.innerHTML=u.replace(new RegExp(`</${g}`,"g"),`<\\/${g}`));d._d=kn(d)}h.push(d)}}return h},invalidate(){for(const i of s.values())r.add(i._i);a.dirty=!0,e.callHook("entries:updated",a)}};return(t?.plugins||[]).forEach(i=>rs(a,i)),a.hooks.callHook("init",a),t.init?.forEach(i=>i&&a.push(i)),a}const oa=(t,e)=>Jo(e)?vn(e):e,go="usehead";function ra(t){return{install(n){n.config.globalProperties.$unhead=t,n.config.globalProperties.$head=t,n.provide(go,t)}}.install}function aa(){if(Ko()){const t=no(go);if(!t)throw new Error("useHead() was called without provide context, ensure you call it through the setup() function.");return t}throw new Error("useHead() was called without provide context, ensure you call it through the setup() function.")}function ia(t,e={}){const n=e.head||aa();return n.ssr?n.push(t||{},e):la(n,t,e)}function la(t,e,n={}){const s=$(!1);let o;return at(()=>{const a=s.value?{}:Ht(e,oa);o?o.patch(a):o=t.push(a,n)}),so()&&(Qo(()=>{o.dispose()}),Yo(()=>{s.value=!0}),Zo(()=>{s.value=!1})),o}function Sn(t){if(t===!1||t==="false")return null;if(t==null||t===!0||t==="true")return"+1";if(typeof t=="string"&&"+-".includes(t[0]))return t;const e=+t;return Number.isNaN(e)?(console.error(`Invalid "at" prop value: ${t}`),null):e<=0?(console.warn(`[Slidev] "at" prop value must be greater than 0, but got ${t}, has been set to 1`),1):e}function ca(t){return Array.isArray(t)?[Sn(t[0]),Sn(t[1])]:null}function mo(t,e=0,n){const s=$(!1);let o=new Map,r=new Map;const a={get current(){return wn(+t.value,e,a.total)},set current(i){t.value=s.value?wn(i,e,a.total):i},clicksStart:e,get relativeSizeMap(){return o},get maxMap(){return r},get isMounted(){return s.value},setup(){oo(()=>{s.value=!0,r=O(r),Xo(t)||(a.current=t.value)}),er(()=>{s.value=!1,o=new Map,r=new Map})},calculateSince(i,l=1){const c=Sn(i);if(c==null)return null;let f,h,d;if(typeof c=="string"){const u=a.currentOffset,g=+c;f=u+g,h=u+g+l-1,d=g+l-1}else f=c,h=c+l-1,d=0;return{start:f,end:+Number.POSITIVE_INFINITY,max:h,delta:d,currentOffset:_(()=>a.current-f),isCurrent:_(()=>a.current===f),isActive:_(()=>a.current>=f)}},calculateRange(i){const l=ca(i);if(l==null)return null;const[c,f]=l;let h,d,u;return typeof c=="string"?(h=a.currentOffset+ +c,u=+c):(h=c,u=0),typeof f=="string"?(d=h+ +f,u+=+f):d=f,{start:h,end:d,max:d,delta:u,currentOffset:_(()=>a.current-h),isCurrent:_(()=>a.current===h),isActive:_(()=>h<=a.current&&a.current<d)}},calculate(i){return Array.isArray(i)?a.calculateRange(i):a.calculateSince(i)},register(i,l){if(!l)return;const{delta:c,max:f}=l;o.set(i,c),r.set(i,f)},unregister(i){o.delete(i),r.delete(i)},get currentOffset(){return Er(...o.values())},get total(){return n??(s.value?Math.max(0,...r.values()):0)}};return a}function ua(t,e=0){const n=t?.meta.slide?.frontmatter.clicksStart??0,s=$(Math.max(vn(e),n));return ee(()=>vn(e),o=>{s.value=Math.max(o,n)}),mo(s,n,t?.meta?.clicks)}const fa="modulepreload",da=function(t){return"/"+t},as={}
5,M=function(e,n,s){let o=Promise.resolve();if(n&&n.length>0){let l=function(c){return Promise.all(c.map(f=>Promise.resolve(f).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),i=a?.nonce||a?.getAttribute("nonce");o=l(n.map(c=>{if(c=da(c),c in as)return;as[c]=!0;const f=c.endsWith(".css"),h=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${h}`))return;const d=document.createElement("link");if(d.rel=f?"stylesheet":fa,f||(d.as="script"),d.crossOrigin="",d.href=c,i&&d.setAttribute("nonce",i),document.head.appendChild(d),f)return new Promise((u,g)=>{d.addEventListener("load",u),d.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${c}`)))})}))}function r(a){const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=a,window.dispatchEvent(i),!i.defaultPrevented)throw a}return o.then(a=>{for(const i of a||[])i.status==="rejected"&&r(i.reason);return e().catch(r)})},ha=(t,e)=>{const n=t.__vccOpts||t;for(const[s,o]of e)n[s]=o;return n},pa={},ga={class:"px-4 py-10 text-center text-red-700 dark:text-red-500 font-bold font-mono"};function ma(t,e){return jt(),bn("div",ga,tr("Failed to fetch this slide. Please check your network connection."))}const E=ha(pa,[["render",ma]]),ya={class:"h-full w-full flex items-center justify-center gap-2 slidev-slide-loading"},va=ro({__name:"SlideLoading",setup(t){const e=$(!1);return oo(()=>{setTimeout(()=>{e.value=!0},200)}),(n,s)=>(jt(),bn("div",ya,[e.value?(jt(),bn(sr,{key:0},[s[0]||(s[0]=Zn("div",{class:"i-svg-spinners-90-ring-with-bg text-xl"},null,-1)),s[1]||(s[1]=Zn("div",null,"Loading slide...",-1))],64)):nr("v-if",!0)]))}}),ba={theme:"seriph",background:"https://images.unsplash.com/photo-1482517967863-00e15c9b44be?w=1920",title:"Santa's Lost Present - Multiplayer Xmas Geospatial Edition",info:`## Multiplayer Xmas (Geo)-spatial Supabase Edition
6Building real-time geospatial games with Supabase & Google Maps Platform
7
8Presented by Katerina Skroumpelou
9`,class:"text-center",drawings:{persist:!1},transition:"slide-left",mdc:!0},de=T(ba),wa=O({get layout(){return de.layout},get transition(){return de.transition},get class(){return de.class},get clicks(){return de.clicks},get name(){return de.name},get preload(){return de.preload},slide:{content:"",revision:"7lbs90",frontmatterRaw:`theme: seriph
10background: https://images.unsplash.com/photo-1482517967863-00e15c9b44be?w=1920
11title: "Santa's Lost Present - Multiplayer Xmas Geospatial Edition"
12info: |
13  ## Multiplayer Xmas (Geo)-spatial Supabase Edition
14  Building real-time geospatial games with Supabase & Google Maps Platform
15
16  Presented by Katerina Skroumpelou
17class: text-center
18drawings:
19  persist: false
20transition: slide-left
21mdc: true
22`,note:"",title:"Santa's Lost Present - Multiplayer Xmas Geospatial Edition",index:0,noteHTML:`<p>Quick intro - I'm Katerina, working at Supabase, and I'm a GDE for both Angular and Google Maps. Today we're combining two of my favorite technologies to build something festive and fun - a real-time Christmas treasure hunt game!</p>
23`,raw:"",frontmatter:de,filepath:"",start:0,id:0,no:1},__clicksContext:null,__preloaded:!1}),_a={layout:"image-right",image:"/images/cats.jpg",class:"my-cool-content-on-the-left"},he=T(_a),ka=O({get layout(){return he.layout},get transition(){return he.transition},get class(){return he.class},get clicks(){return he.clicks},get name(){return he.name},get preload(){return he.preload},slide:{content:"",revision:"-1dvkv6",frontmatterRaw:`layout: image-right
24image: /images/cats.jpg
25class: my-cool-content-on-the-left
26`,note:"",title:"About Me",level:1,index:1,noteHTML:`<p>Quick intro - I'm Katerina, working at Supabase, and I'm a GDE for both Angular and Google Maps. Today we're combining two of my favorite technologies to build something festive and fun - a real-time Christmas treasure hunt game!</p>
27`,raw:"",frontmatter:he,filepath:"",start:40,id:1,no:2},__clicksContext:null,__preloaded:!1}),Sa={layout:"center",class:"text-center"},pe=T(Sa),Ma=O({get layout(){return pe.layout},get transition(){return pe.transition},get class(){return pe.class},get clicks(){return pe.clicks},get name(){return pe.name},get preload(){return pe.preload},slide:{content:"",revision:"-mth85t",frontmatterRaw:`layout: center
28class: text-center
29`,note:"",title:"What We're Building Today",level:1,index:2,noteHTML:`<p>Before we dive into the tech, let me show you what we're building. It's a multiplayer game where everyone in this room can play simultaneously. You'll see how Supabase and Google Maps work together to create a smooth, real-time experience.</p>
30`,raw:"",frontmatter:pe,filepath:"",start:81,id:2,no:3},__clicksContext:null,__preloaded:!1}),Ta={layout:"center",class:"text-center"},ge=T(Ta),Oa=O({get layout(){return ge.layout},get transition(){return ge.transition},get class(){return ge.class},get clicks(){return ge.clicks},get name(){return ge.name},get preload(){return ge.preload},slide:{content:"",revision:"6gizq2",frontmatterRaw:`layout: center
31class: text-center
32`,note:"",index:3,noteHTML:"",raw:"",frontmatter:ge,filepath:"",start:126,id:3,no:4},__clicksContext:null,__preloaded:!1}),Ea={layout:"two-cols",layoutClass:"gap-8"},me=T(Ea),Pa=O({get layout(){return me.layout},get transition(){return me.transition},get class(){return me.class},get clicks(){return me.clicks},get name(){return me.name},get preload(){return me.preload},slide:{content:"",revision:"qafxxi",frontmatterRaw:`layout: two-cols
33layoutClass: gap-8
34`,note:"",title:'The Power of <span class="text-green-400">Supabase</span>',level:1,index:4,noteHTML:`<p>For those new to Supabase - it's everything you need for a backend, built on top of Postgres. The key difference from other platforms? It's all open source, which means you can self-host or migrate anytime. No lock-in. And because it uses standard Postgres, you get 30+ years of database stability and all the extensions you could want.</p>
35`,raw:"",frontmatter:me,filepath:"",start:133,id:4,no:5},__clicksContext:null,__preloaded:!1}),Ca={},ye=T(Ca),La=O({get layout(){return ye.layout},get transition(){return ye.transition},get class(){return ye.class},get clicks(){return ye.clicks},get name(){return ye.name},get preload(){return ye.preload},slide:{content:"",revision:"-wrep0p",note:"",title:`Supabase: What's Inside? <carbon-box class="inline text-green-400"></carbon-box>`,level:1,index:5,noteHTML:`<p>Here's what you get with Supabase. For our game today, we're using three key features: Realtime for live updates, Edge Functions for game logic validation, and PostGIS for geospatial queries. But the beauty is - all of this runs locally too. Same Docker images. That's production parity you can trust.</p>
36`,raw:"",frontmatter:ye,filepath:"",start:190,id:5,no:6},__clicksContext:null,__preloaded:!1}),$a={},ve=T($a),Aa=O({get layout(){return ve.layout},get transition(){return ve.transition},get class(){return ve.class},get clicks(){return ve.clicks},get name(){return ve.name},get preload(){return ve.preload},slide:{content:"",revision:"-epizc7",note:"",title:`The Supabase Features We're Using <sp
36an class="text-red-400">🎯</span>`,level:1,index:6,noteHTML:`<p>Let me break down the three Supabase features powering our game. Realtime gives us instant updates - when anyone drops a pin, everyone sees it immediately. Edge Functions handle the game logic - we can't trust the client to calculate distances fairly! And PostGIS is Postgres's geospatial extension - it's incredibly efficient for location-based queries.</p>
37`,raw:"",frontmatter:ve,filepath:"",start:252,id:6,no:7},__clicksContext:null,__preloaded:!1}),xa={layout:"two-cols",layoutClass:"gap-8"},be=T(xa),Da=O({get layout(){return be.layout},get transition(){return be.transition},get class(){return be.class},get clicks(){return be.clicks},get name(){return be.name},get preload(){return be.preload},slide:{content:"",revision:"ty1jib",frontmatterRaw:`layout: two-cols
38layoutClass: gap-8
39`,note:"",title:'Realtime in Action <carbon-lightning class="inline text-yellow-400"></carbon-lightning>',level:1,index:7,noteHTML:`<p>Here's how simple Realtime is. You subscribe to changes on your database tables, and Supabase streams them to you via WebSockets. Under the hood, it's using Postgres logical replication - the same technology that powers database replicas. When a player submits a guess, it hits our Edge Function, gets stored in Postgres, and Realtime broadcasts it to everyone instantly.</p>
40`,raw:"",frontmatter:be,filepath:"",start:308,id:7,no:8},__clicksContext:null,__preloaded:!1}),Ia={},we=T(Ia),Ra=O({get layout(){return we.layout},get transition(){return we.transition},get class(){return we.class},get clicks(){return we.clicks},get name(){return we.name},get preload(){return we.preload},slide:{content:"",revision:"-z3ji3v",note:"",title:'PostGIS: Geospatial Superpowers <carbon-earth-filled class="inline text-green-400"></carbon-earth-filled>',level:1,index:8,noteHTML:`<p>PostGIS is a game-changer for location-based apps. Instead of storing lat/long as two decimal fields, you store them as a geography type. PostGIS can then use spatial indexes to query millions of points efficiently. For our game, we use it to calculate distances from the target and check if points fall within a polygon.</p>
41`,raw:"",frontmatter:we,filepath:"",start:389,id:8,no:9},__clicksContext:null,__preloaded:!1}),Na={layout:"center",class:"text-center",background:"https://images.unsplash.com/photo-1569336415962-a4bd9f69cd83?w=1920"},_e=T(Na),ja=O({get layout(){return _e.layout},get transition(){return _e.transition},get class(){return _e.class},get clicks(){return _e.clicks},get name(){return _e.name},get preload(){return _e.preload},slide:{content:"",revision:"-lcmdv4",frontmatterRaw:`layout: center
42class: text-center
43background: https://images.unsplash.com/photo-1569336415962-a4bd9f69cd83?w=1920
44`,note:"",title:"Now... Let's Talk About",level:1,index:9,noteHTML:`<p>Okay, now for the fun part - Google Maps Platform! Most developers know Google Maps for basic map display, but it's evolved into an incredibly powerful platform. Let me show you what's possible.</p>
45`,raw:"",frontmatter:_e,filepath:"",start:445,id:9,no:10},__clicksContext:null,__preloaded:!1}),Ha={},ke=T(Ha),Fa=O({get layout(){return ke.layout},get transition(){return ke.transition},get class(){return ke.class},get clicks(){return ke.clicks},get name(){return ke.name},get preload(){return ke.preload},slide:{content:"",revision:"-30hpbc",note:"",title:'What Can You Do With Google Maps Platform? <logos-google-maps class="inline"></logos-google-maps>',level:1,index:10,noteHTML:`<p>Google Maps Platform has evolved dramatically. You can render photorealistic 3D cities, create custom styled maps that match your brand, add interactive 3D objects with WebGL, and now even integrate with AI through Vertex AI and Model Context Protocol. Let's dive into the features we're using in the game.</p>
46`,raw:"",frontmatter:ke,filepath:"",start:474,id:10,no:11},__clicksContext:null,__preloaded:!1}),Va={layout:"two-cols",layoutClass:"gap-8"},Se=T(Va),Wa=O({get layout(){return Se.layout},get transition(){return Se.transition},get class(){return Se.class},get clicks(){return Se.clicks},get name(){return Se.name},get preload(){return Se.preload},slide:{content:"",revision:"mqvtm9",frontmatterRaw:`layout: two-cols
47layoutClass: gap-8
48`,note:"",title:"Feature #1: Advanced Markers",level:1,index:11,noteHTML:`<p>Advanced Markers let you use HTML and CSS for your map markers. In our game, each player gets a marker with their nickname, and the background color changes from blue to red based on how close they are to the target. It's all hardware-accelerated, so even with 100 players, it stays smooth.</p>
49`,raw:"",frontmatter:Se,filepath:"",start:525,id:11,no:12},__clicksContext:null,__preloaded:!1}),za={},Me=T(za),Ba=O({get layout(){return Me.layout},get transition(){return Me.transition},get class(){return Me.class},get clicks(){return Me.clicks},get name(){return Me.name},get preload(){return Me.preload}
49,slide:{content:"",revision:"-av9ubp",note:"",title:'Feature #2: Geometry Library <carbon-rule class="inline text-yellow-400"></carbon-rule>',level:1,index:12,noteHTML:`<p>The Geometry library handles the math so you don't have to. For distance-based gameplay, we use computeDistanceBetween which uses the Haversine formula - it accounts for Earth's curvature. For Polygon Hunt mode, containsLocation checks if a point is inside our gift-shaped polygon. Both are incredibly fast and accurate.</p>
50`,raw:"",frontmatter:Me,filepath:"",start:607,id:12,no:13},__clicksContext:null,__preloaded:!1}),Ga={},Te=T(Ga),qa=O({get layout(){return Te.layout},get transition(){return Te.transition},get class(){return Te.class},get clicks(){return Te.clicks},get name(){return Te.name},get preload(){return Te.preload},slide:{content:"",revision:"fjqu5l",note:"",title:'Feature #3: WebGL Overlay View <carbon-cube class="inline text-purple-400"></carbon-cube>',level:1,index:13,noteHTML:`<p>This is where it gets really cool. WebGL Overlay View lets you add custom 3D graphics to your map. When someone wins our game, we show a 3D rotating present at the target location using Three.js. The transformer function georegister your 3D objects so they stay locked to map coordinates as users pan and zoom.</p>
51`,raw:"",frontmatter:Te,filepath:"",start:670,id:13,no:14},__clicksContext:null,__preloaded:!1}),Ua={layout:"two-cols",layoutClass:"gap-8"},Oe=T(Ua),Ja=O({get layout(){return Oe.layout},get transition(){return Oe.transition},get class(){return Oe.class},get clicks(){return Oe.clicks},get name(){return Oe.name},get preload(){return Oe.preload},slide:{content:"",revision:"dphxre",frontmatterRaw:`layout: two-cols
52layoutClass: gap-8
53`,note:"",title:"Feature #4: Map Styling with Map IDs",level:1,index:14,noteHTML:`<p>Map IDs let you create custom styled maps in the Cloud Console and reference them by ID. Want a Christmas theme? Change colors to red and green, add snow effect - all visual, no code. The best part? You can update the style and every app using that Map ID picks up the changes automatically. No redeployment needed.</p>
54`,raw:"",frontmatter:Oe,filepath:"",start:714,id:14,no:15},__clicksContext:null,__preloaded:!1}),Ka={},Ee=T(Ka),Qa=O({get layout(){return Ee.layout},get transition(){return Ee.transition},get class(){return Ee.class},get clicks(){return Ee.clicks},get name(){return Ee.name},get preload(){return Ee.preload},slide:{content:"",revision:"l3dskx",note:"",title:'Feature #5: 3D Maps (Photorealistic Tiles) <carbon-3d-mpr-toggle class="inline text-cyan-400"></carbon-3d-mpr-toggle>',level:1,index:15,noteHTML:`<p>3D Maps use Google's photorealistic 3D tiles - actual imagery draped over 3D building models. You can fly through cities, tilt and rotate the camera, and create cinematic experiences. I'm using this for a bonus demo where we fly around Spitalfields Market in London. It's the same technology behind Google Earth, now available in your web apps.</p>
55`,raw:"",frontmatter:Ee,filepath:"",start:792,id:15,no:16},__clicksContext:null,__preloaded:!1}),Ya={},Pe=T(Ya),Za=O({get layout(){return Pe.layout},get transition(){return Pe.transition},get class(){return Pe.class},get clicks(){return Pe.clicks},get name(){return Pe.name},get preload(){return Pe.preload},slide:{content:"",revision:"-gqflxl",note:"",title:'The Magic: Google Maps + AI <carbon-machine-learning class="inline text-cyan-400"></carbon-machine-learning>',level:1,index:16,noteHTML:`<p>This is the future of development. Google Maps now has MCP integration - that's Model Context Protocol - which lets AI assistants like Claude access official Google Maps documentation in real-time. Instead of hoping the AI's training data is current, it can fetch the latest docs. Combined with Vertex AI grounding, you can build AI apps that understand geography and location context.</p>
56`,raw:"",frontmatter:Pe,filepath:"",start:848,id:16,no:17},__clicksContext:null,__preloaded:!1}),Xa={layout:"two-cols",layoutClass:"gap-8"},Ce=T(Xa),ei=O({get layout(){return Ce.layout},get transition(){return Ce.transition},get class(){return Ce.class},get clicks(){return Ce.clicks},get name(){return Ce.name},get preload(){return Ce.preload},slide:{content:"",revision:"-9gs709",frontmatterRaw:`layout: two-cols
57layoutClass: gap-8
58`,note:"",title:"Google Maps MCP in Action",level:1,index:17,noteHTML:`<p>Full disclosure - I actually used the Google Maps MCP to help prepare this presentation! Instead of digging through docs, I asked Claude to retrieve information about specific features, and it pulled the latest documentation, complete with code samples. It's like having a Google Maps expert sitting next to you while you code.</p>
59`,raw:"",frontmatter:Ce,filepath:"",start:898,id:17,no:18},__clicksContext:null,__preloaded:!1}),ti={layout:"center",class:"text-center"},Le=T(ti),ni=O({get layout(){return Le.layout},get transition(){return Le.transition},get class(){return Le.class},get clicks(){return Le.clicks},get name(){return Le.name},get preload(){return Le.preload},slide:{content:"",revision:"-yu67hh",frontmatterRaw:`layout: center
60class: text-center
61`,note:"",title:`Let's See It In Action! <span class="animate-bounce inline-block">🎮</span>`,level:1,index:18,noteHTML:"",raw:"",frontmatter:Le,filepath:"",start:952,id:18,no:19},__clicksContext:null,__preloaded:!1}),si={layout:"center",class:"text-center"},$e=T(si),oi=O({get layout(){return $e.layout},get transition(){return $e.transition},get class(){return $e.class},get clicks(){return $e.clicks}
61,get name(){return $e.name},get preload(){return $e.preload},slide:{content:"",revision:"17szn0",frontmatterRaw:`layout: center
62class: text-center
63`,note:"",index:19,noteHTML:"",raw:"",frontmatter:$e,filepath:"",start:992,id:19,no:20},__clicksContext:null,__preloaded:!1}),ri={layout:"center",class:"text-center"},Ae=T(ri),ai=O({get layout(){return Ae.layout},get transition(){return Ae.transition},get class(){return Ae.class},get clicks(){return Ae.clicks},get name(){return Ae.name},get preload(){return Ae.preload},slide:{content:"",revision:"-1y9lcy",frontmatterRaw:`layout: center
64class: text-center
65`,note:"",title:'Scan to Play! <span class="animate-pulse inline-block">📱</span>',level:1,index:20,noteHTML:`<p>Alright, let's play! Everyone grab your phones and scan this QR code. You'll be assigned a festive nickname - something like JollyElfHunter or FrostyGiftSeeker. Once you're in, tap anywhere on the map to place your guess. Your marker will change color - blue means cold, red means hot. The target is somewhere in London. Who can find it first?</p>
66`,raw:"",frontmatter:Ae,filepath:"",start:999,id:20,no:21},__clicksContext:null,__preloaded:!1}),ii={},xe=T(ii),li=O({get layout(){return xe.layout},get transition(){return xe.transition},get class(){return xe.class},get clicks(){return xe.clicks},get name(){return xe.name},get preload(){return xe.preload},slide:{content:"",revision:"gaq14r",note:"",title:'Behind the Scenes: How It Works <carbon-flow class="inline text-blue-400"></carbon-flow>',level:1,index:21,noteHTML:`<p>Let me show you what's happening under the hood. When you tap the map, your guess goes to a Supabase Edge Function that validates it and calculates the distance using PostGIS. That gets stored in Postgres, and Realtime broadcasts the update to everyone - including the admin dashboard I'm showing on the big screen. Google Maps renders all the markers with their color-coded distances.</p>
67`,raw:"",frontmatter:xe,filepath:"",start:1020,id:21,no:22},__clicksContext:null,__preloaded:!1}),ci={},De=T(ci),ui=O({get layout(){return De.layout},get transition(){return De.transition},get class(){return De.class},get clicks(){return De.clicks},get name(){return De.name},get preload(){return De.preload},slide:{content:"",revision:"iveiiq",note:"",title:'Three Game Modes Explained <carbon-game-console class="inline text-purple-400"></carbon-game-console>',level:1,index:22,noteHTML:`<p>We have three game modes. Normal is straightforward - find the fixed location. Elf Mode is chaos - the target randomly moves every 20 seconds using a pg_cron job in Postgres. And Polygon Hunt is collaborative - there's a hidden gift-shaped polygon, and when 10 players get inside it, everyone wins together. The polygon gradually becomes visible as more players find it.</p>
68`,raw:"",frontmatter:De,filepath:"",start:1090,id:22,no:23},__clicksContext:null,__preloaded:!1}),fi={},Ie=T(fi),di=O({get layout(){return Ie.layout},get transition(){return Ie.transition},get class(){return Ie.class},get clicks(){return Ie.clicks},get name(){return Ie.name},get preload(){return Ie.preload},slide:{content:"",revision:"9dz32x",note:"",title:'Code Deep Dive: Distance Calculation <carbon-code class="inline text-green-400"></carbon-code>',level:1,index:23,noteHTML:`<p>Here's how we calculate distances. Google Maps Geometry library does the heavy lifting with computeDistanceBetween - it uses spherical geometry to get accurate distances on Earth's surface. Then we map that to a color gradient: close = 0 degrees (red), far = 240 degrees (blue). Simple HSL color math gives us a smooth transition.</p>
69`,raw:"",frontmatter:Ie,filepath:"",start:1138,id:23,no:24},__clicksContext:null,__preloaded:!1}),hi={},Re=T(hi),pi=O({get layout(){return Re.layout},get transition(){return Re.transition},get class(){return Re.class},get clicks(){return Re.clicks},get name(){return Re.name},get preload(){return Re.preload},slide:{content:"",revision:"t0pglg",note:"",title:'Code Deep Dive: Polygon Containment <carbon-area class="inline text-purple-400"></carbon-area>',level:1,index:24,noteHTML:`<p>For Polygon Hunt mode, we use the geometry library's containsLocation function. It implements the ray casting algorithm - draws a ray from your point to infinity and counts how many times it crosses the polygon edges. Odd number = inside. We generate a gift-box shape with a decorative bow programmatically from a center point.</p>
70`,raw:"",frontmatter:Re,filepath:"",start:1183,id:24,no:25},__clicksContext:null,__preloaded:!1}),gi={},Ne=T(gi),mi=O({get layout(){return Ne.layout},get transition(){return Ne.transition},get class(){return Ne.class},get clicks(){return Ne.clicks},get name(){return Ne.name},get preload(){return Ne.preload},slide:{content:"",revision:"6w1xo2",note:"",title:'Code Deep Dive: WebGL Present Overlay <carbon-cube class="inline text-cyan-400"></carbon-cube>',level:1,index:25,noteHTML:`<p>The winner celebration uses WebGL Overlay View with Three.js. When someone wins, we spawn a 3D present model at the target location. The key is the transformer.fromLatLngAltitude function - it returns a projection matrix that maps 3D world coordinates to lat/lng/altitude. This keeps the present locked to the map location as you pan and zoom.</p>
71`,raw:"",frontmatter:Ne,filepath:"",start:1245,id:25,no:26},__clicksContext:null,__preloaded:!1}),yi={},je=T(yi),vi=O({get layout(){return je.layout},get transition(){return je.transition},get class(){return je.class},get clicks(){return je.clicks},get name(){return je.name},get preload(){return je.preload},slide:{content:"",revision:"d2be2y",note:"",title:'Code Deep Dive: Realtime Subscriptions <carbon-lightning class="inline text-yellow-400"></carbon-lightning>',level:1,index:26,noteHTML:`<p>Supabase Realtime is dead simple. Subscribe to table changes, get callbacks with the new data. The beauty is cleanup - when your React component unmounts, you remove the channel, and Supabase handles tearing down the WebSocket. Under the hood, it's using Postgres logical replication and replication slots to stream changes.</p>
72`,raw:"",frontmatter:je,filepath:"",start:1286,id:26,no:27},__clicksContext:null,__preloaded:!1}),bi={},He=T(bi),wi=O({get layout(){return He.layout},get transition(){return He.transition},get class(){return He.class},get clicks(){return He.clicks},get name(){return He.name},get preload(){return He.preload},slide:{content:"",revision:"-vqw9on",note:"",title:'The Edge Functions Magic <carbon-function class="inline text-purple-400"></carbon-function>',level:1,index:27,noteHTML:`<p>Edge Functions run on Deno at the edge, close to your users. This one validates guesses, calculates distances server-side (so players can't cheat), and stores the result. The upsert triggers a Realtime broadcast to all connected clients. It's TypeScript, it's fast, and it scales automatically.</p>
73`,raw:"",frontmatter:He,filepath:"",start:1324,id:27,no:28},__clicksContext:null,__preloaded:!1}),_i={},Fe=T(_i),ki=O({get layout(){return Fe.layout},get transition(){return Fe.transition},get class(){return Fe.class},get clicks(){return Fe.clicks},get name(){return Fe.name},get preload(){return Fe.preload},slide:{content:"",revision:"91b2y4",note:"",title:'Performance at Scale <carbon-rocket class="inline text-green-400"></carbon-rocket>',level:1,index:28,noteHTML:`<p>Performance was a key concern. PostGIS spatial indexes let us query thousands of guesses instantly. Advanced Markers use the GPU for rendering. Realtime uses a binary protocol over WebSocket, not JSON over HTTP polling. And Edge Functions run in 15+ global regions, so there's always one close to your users. The result? We can handle a full conference room playing simultaneously.</p>
74`,raw:"",frontmatter:Fe,filepath:"",start:1364,id:28,no:29},__clicksContext:null,__preloaded:!1}),Si={},Ve=T(Si),Mi=O({get layout(){return Ve.layout},get transition(){return Ve.transition},get class(){return Ve.class},get clicks(){return Ve.clicks},get name(){return Ve.name},get preload(){return Ve.preload},slide:{content:"",revision:"2wdl2s",note:"",title:'Real-World Use Cases <carbon-industry class="inline text-blue-400"></carbon-industry>',level:1,index:29,noteHTML:`<p>Everything we built today applies to real production apps. Delivery companies use this exact stack for live driver tracking. Real estate platforms use PostGIS for &quot;search by map&quot; features. Field service companies dispatch techs using the same Realtime + geospatial combo. The game is just a fun way to demonstrate the capabilities.</p>
75`,raw:"",frontmatter:Ve,filepath:"",start:1432,id:29,no:30},__clicksContext:null,__preloaded:!1}),Ti={layout:"center"},We=T(Ti),Oi=O({get layout(){return We.layout},get transition(){return We.transition},get class(){return We.class},get clicks(){return We.clicks},get name(){return We.name},get preload(){return We.preload},slide:{content:"",revision:"1gkwff",frontmatterRaw:`layout: center
76`,note:"",title:'Key Takeaways <carbon-bookmark class="inline text-yellow-400"></carbon-bookmark>',level:1,index:30,noteHTML:`<p>Let's wrap up with the big picture. Supabase gives you a complete backend that's production-ready from day one. Google Maps Platform is way more than just displaying a map - it's 3D rendering, custom graphics, accurate geometry. Together, they let you build multiplayer geospatial experiences that just work. And you can start building today!</p>
77`,raw:"",frontmatter:We,filepath:"",start:1482,id:30,no:31},__clicksContext:null,__preloaded:!1}),Ei={},ze=T(Ei),Pi=O({get layout(){return ze.layout},get transition(){return ze.transition},get class(){return ze.class},get clicks(){return ze.clicks},get name(){return ze.name},get preload(){return ze.preload},slide:{content:"",revision:"j48gp7",note:"",title:'Resources & Links <carbon-link class="inline text-blue-400"></carbon-link>',level:1,index:31,noteHTML:`<p>All the docs are linked here. The Google Maps MCP toolkit is open source on GitHub - you can use it with Claude, Cursor, or any MCP-compatible tool. And I'll share the code for this game so you can learn from it or build your own variant. Questions?</p>
78`,raw:"",frontmatter:ze,filepath:"",start:1535,id:31,no:32},__clicksContext:null,__preloaded:!1}),Ci={layout:"center",class:"text-center",background:"https://images.unsplash.com/photo-1482517967863-00e15c9b44be?w=1920"},Be=T(Ci),Li=O({get layout(){return Be.layout},get transition(){return Be.transition},get class(){return Be.class},get clicks(){return Be.clicks},get name(){return Be.name},get preload(){return Be.preload},slide:{content:"",revision:"4dnjuu",frontmatterRaw:`layout: center
79class: text-center
80background: https://images.unsplash.com/photo-1482517967863-00e15c9b44be?w=1920
81`,note:"",title:'Thank You! <span class="text-red-400">🎄</span>',level:1,index:32,noteHTML:`<p>That's it! Thank you for playing along and being such a great audience. The combination of Supabase and Google Maps Platform opens up so many possibilities - multiplayer games, real-time tracking, collaborative mapping, and more. I'd love to answer any questions you have about the tech, the architecture, or how to get started building something similar!</p>
82`,raw:"",frontmatter:Be,filepath:"",start:1587,id:32,no:33},__clicksContext:null,__preloaded:!1}),$i={},Ge=T($i),Ai=O({get layout(){return Ge.layout},get transition(){return Ge.transition},get class(){return Ge.class},get clicks(){return Ge.clicks}
82,get name(){return Ge.name},get preload(){return Ge.preload},slide:{content:"",revision:"c9zpw9",note:"",title:'Bonus: Cost Optimization Tips <carbon-piggy-bank class="inline text-green-400"></carbon-piggy-bank>',level:1,index:33,noteHTML:`<p>Important to talk about cost. Supabase's free tier is generous - perfect for demos and small apps. For Google Maps, you get $200 credit monthly which covers ~28,000 map loads. Advanced Markers don't have a separate charge, and the Geometry library is free. Using Map IDs enables caching which reduces billable map loads. Both platforms are designed to keep hobbyists and startups building without breaking the bank.</p>
83`,raw:"",frontmatter:Ge,filepath:"",start:1650,id:33,no:34},__clicksContext:null,__preloaded:!1}),xi={},qe=T(xi),Di=O({get layout(){return qe.layout},get transition(){return qe.transition},get class(){return qe.class},get clicks(){return qe.clicks},get name(){return qe.name},get preload(){return qe.preload},slide:{content:"",revision:"-6bwsd",note:"",title:'Bonus: Development Workflow Tips <carbon-terminal class="inline text-cyan-400"></carbon-terminal>',level:1,index:34,noteHTML:`<p>Pro tips from building this. Run Supabase locally with their CLI - it's the same Docker images as production. Use TypeScript everywhere for type safety. The Google Maps MCP in Claude was a lifesaver for finding current docs. And with Vite for the frontend and Supabase's dev mode, you get instant hot reload across your entire stack. Makes development incredibly smooth.</p>
84`,raw:"",frontmatter:qe,filepath:"",start:1716,id:34,no:35},__clicksContext:null,__preloaded:!1}),L=new Array(35),C=(t,e)=>or({loader:e,delay:300,loadingComponent:va,errorComponent:E,onError:n=>console.error("Failed to load slide "+(t+1),n)}),is=async()=>{try{return L[0]??=await M(()=>import("./slidev/md-DM9MfKEH.js"),__vite__mapDeps([0,1,2,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},ls=async()=>{try{return L[1]??=await M(()=>import("./md-DDtLkL1z.js"),__vite__mapDeps([6,1,2,7,3,4,5,8]))}catch(t){return console.error("slide failed to load",t),E}},cs=async()=>{try{return L[2]??=await M(()=>import("./md-CTeBK489.js"),__vite__mapDeps([9,1,2,10,11,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},us=async()=>{try{return L[3]??=await M(()=>import("./md-F5zNweQ4.js"),__vite__mapDeps([12,2,10,11,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},fs=async()=>{try{return L[4]??=await M(()=>import("./md-DcIozxbl.js"),__vite__mapDeps([13,1,2,14,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},ds=async()=>{try{return L[5]??=await M(()=>import("./md-BoQ93kiU.js"),__vite__mapDeps([15,1,2,16,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},hs=async()=>{try{return L[6]??=await M(()=>import("./md-C0m1ViQu.js"),__vite__mapDeps([17,1,2,16,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},ps=async()=>{try{return L[7]??=await M(()=>import("./md-Ejm78NvH.js"),__vite__mapDeps([18,1,2,19,3,14,4,5]))}catch(t){return console.error("slide failed to load",t),E}},gs=async()=>{try{return L[8]??=await M(()=>import("./md-Bb8OcwnO.js"),__vite__mapDeps([20,1,2,19,3,7,16,4,5]))}catch(t){return console.error("slide failed to load",t),E}},ms=async()=>{try{return L[9]??=await M(()=>import("./md-DzlphjFU.js"),__vite__mapDeps([21,1,2,11,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},ys=async()=>{try{return L[10]??=await M(()=>import("./md-YXZTNuSh.js"),__vite__mapDeps([22,1,2,16,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},vs=async()=>{try{return L[11]??=await M(()=>import("./md-N-F4R6yd.js"),__vite__mapDeps([23,1,2,19,3,14,4,5]))}catch(t){return console.error("slide failed to load",t),E}},bs=async()=>{try{return L[12]??=await M(()=>import("./md-BhVfUNEA.js"),__vite__mapDeps([24,1,2,19,3,16,4,5]))}catch(t){return console.error("slide failed to load",t),E}},ws=async()=>{try{return L[13]??=await M(()=>import("./md-CsPn_UHC.js"),__vite__mapDeps([25,1,2,19,3,16,4,5]))}catch(t){return console.error("slide failed to load",t),E}},_s=async()=>{try{return L[14]??=await M(()=>import("./md-Bzof8czY.js"),__vite__mapDeps([26,1,2,19,3,14,4,5]))}catch(t){return console.error("slide failed to load",t),E}},ks=async()=>{try{return L[15]??=await M(()=>import("./md-W6qskxc1.js"),__vite__mapDeps([27,1,2,19,3,16,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Ss=async()=>{try{return L[16]??=await M(()=>import("./md-tj9zPeOd.js"),__vite__mapDeps([28,1,2,16,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Ms=async()=>{try{return L[17]??=await M(()=>import("./md-Cbm2IgAl.js"),__vite__mapDeps([29,1,2,19,3,14,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Ts=async()=>{try{return L[18]??=await M(()=>import("./md-B8tUs1MG.js"),__vite__mapDeps([30,1,2,11,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Os=async()=>{try{return L[19]??=await M(()=>import("./md-ckMb5XMk.js"),__vite__mapDeps([31,2,32,11,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Es=async()=>{try{return L[20]??=await M(()=>import("./md-Datn1VUC.js"),__vite__mapDeps([33,2,11,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Ps=async()=>{try{return L[21]??=await M(()=>import("./md-D5anl49x.js").then(t=>t.bG),__vite__mapDeps([34,1,2,35,16,3]))}catch(t){return console.error("slide failed to load",t),E}},Cs=async()=>{try{return L[22]??=await M(()=>import("./md-B1pRPPtM.js"),__vite__mapDeps([36,1,2,32,16,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Ls=async()=>{try{return L[23]??=await M(()=>import("./md-CoYQEybl.js"),__vite__mapDeps([37,19,1,2,3,16,4,5]))}catch(t){return console.error("slide failed to load",t),E}},$s=async()=>{try{return L[24]??=await M(()=>import("./md-Uvy9MyNH.js"),__vite__mapDeps([38,1,2,19,3,16,4,5]))}catch(t){return console.error("slide failed to load",t),E}},As=async()=>{try{return L[25]??=await M(()=>import("./md-CVCjxt3W.js"),__vite__mapDeps([39,19,1,2,3,16,4,5]))}catch(t){return console.error("slide failed to load",t),E}},xs=async()=>{try{return L[26]??=await M(()=>import("./md-CzNF-R4-.js"),__vite__mapDeps([40,1,2,19,3,16,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Ds=async()=>{try{return L[27]??=await M(()=>import("./md-BxaXwo2U.js"),__vite__mapDeps([41,1,2,19,3,16,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Is=async()=>{try{return L[28]??=await M(()=>import("./md-DSHtG0y_.js"),__vite__mapDeps([42,1,2,16,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Rs=async()=>{try{return L[29]??=await M(()=>import("./md-B6n3_cbj.js"),__vite__mapDeps([43,1,2,16,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Ns=async()=>{try{return L[30]??=await M(()=>import("./md-Dqg6PpvC.js"),__vite__mapDeps([44,1,2,11,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},js=async()=>{try{return L[31]??=await M(()=>import("./md-CGHnRJa4.js"),__vite__mapDeps([45,1,2,16,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Hs=async()=>{try{return L[32]??=await M(()=>import("./md-DOofO1k8.js"),__vite__mapDeps([46,1,2,11,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Fs=async()=>{try{return L[33]??=await M(()=>import("./md-B6b2UQ8w.js"),__vite__mapDeps([47,1,2,16,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Vs=async()=>{try{return L[34]??=await M(()=>import("./md-B9o_clK1.js"),__vite__mapDeps([48,1,2,16,3,4,5]))}catch(t){return console.error("slide failed to load",t),E}},Ii=[{no:1,meta:wa,load:is,component:C(0,is)},{no:2,meta:ka,load:ls,component:C(1,ls)},{no:3,meta:Ma,load:cs,component:C(2,cs)},{no:4,meta:Oa,load:us,component:C(3,us)},{no:5,meta:Pa,load:fs,component:C(4,fs)},{no:6,meta:La,load:ds,component:C(5,ds)},{no:7,meta:Aa,load:hs,component:C(6,hs)},{no:8,meta:Da,load:ps,component:C(7,ps)},{no:9,meta:Ra,load:gs,component:C(8,gs)},{no:10,meta:ja,load:ms,component:C(9,ms)},{no:11,meta:Fa,load:ys,component:C(10,ys)},{no:12,meta:Wa,load:vs,component:C(11,vs)},{no:13,meta:Ba,load:bs,component:C(12,bs)},{no:14,meta:qa,load:ws,component:C(13,ws)},{no:15,meta:Ja,load:_s,component:C(14,_s)},{no:16,meta:Qa,load:ks,component:C(15,ks)},{no:17,meta:Za,load:Ss,component:C(16,Ss)},{no:18,meta:ei,load:Ms,component:C(17,Ms)},{no:19,meta:ni,load:Ts,component:C(18,Ts)},{no:20,meta:oi,load:Os,component:C(19,Os)},{no:21,meta:ai,load:Es,component:C(20,Es)},{no:22,meta:li,load:Ps,component:C(21,Ps)},{no:23,meta:ui,load:Cs,component:C(22,Cs)},{no:24,meta:di,load:Ls,component:C(23,Ls)},{no:25,meta:pi,load:$s,component:C(24,$s)},{no:26,meta:mi,load:As,component:C(25,As)},{no:27,meta:vi,load:xs,component:C(26,xs)},{no:28,meta:wi,load:Ds,component:C(27,Ds)}
84,{no:29,meta:ki,load:Is,component:C(28,Is)},{no:30,meta:Mi,load:Rs,component:C(29,Rs)},{no:31,meta:Oi,load:Ns,component:C(30,Ns)},{no:32,meta:Pi,load:js,component:C(31,js)},{no:33,meta:Li,load:Hs,component:C(32,Hs)},{no:34,meta:Ai,load:Fs,component:C(33,Fs)},{no:35,meta:Di,load:Vs,component:C(34,Vs)}],se=In(Ii);function zc(t){if(typeof t=="number")return{seconds:t,relative:!1};const e=t.startsWith("+");e&&(t=t.slice(1));let n=0;if(t.includes(":")){const s=t.split(":").map(Number);let o=0,r=0,a=0;if(s.length===3)o=s[0],r=s[1],a=s[2];else if(s.length===2)r=s[0],a=s[1];else if(s.length===1)a=s[0];else throw new TypeError("Invalid timestamp format");if(Number.isNaN(o)||Number.isNaN(r)||Number.isNaN(a))throw new TypeError("Invalid timestamp format");n=(o||0)*3600+(r||0)*60+(a||0)}else if(!t.match(/[a-z]/i))n=Number(t);else{const s={s:1,sec:1,secs:1,m:60,min:60,mins:60,h:3600,hr:3600,hrs:3600,hour:3600,hours:3600,day:86400,days:86400,week:604800,weeks:604800,month:2629746,months:2629746,year:31556952,years:31556952},o=/([\d.]+)([a-z]+)/gi,r=t.matchAll(o);if(r)for(const i of r){const l=Number(i[1]);if(Number.isNaN(l))throw new TypeError(`Invalid timestamp value: ${i[1]}`);const c=i[2].toLowerCase();if(!(c in s))throw new TypeError(`Invalid timestamp unit: ${c}`);n+=l*s[c]}const a=t.replace(o,"").trim();if(a)throw new TypeError(`Unknown timestamp remaining: ${a}`)}return{seconds:n,relative:e}}function yo(t,e){if(!e||e==="all"||e==="*")return Xn(1,t+1);if(e==="none")return[];const n=[];for(const s of e.split(/[,;]/g))if(!s.includes("-"))n.push(+s);else{const[o,r]=s.split("-",2);n.push(...Xn(+o,r?+r+1:t+1))}return Lr(n).filter(s=>s<=t).sort((s,o)=>s-o)}const Qt="$$slidev-clicks-context",Rn="$$slidev-page",vo="$$slidev-slide-element",Ri="$$slidev-slide-scale",Ni="$$slidev-context",Bc="$$slidev-route",Nn="$$slidev-render-context",ji="$$slidev-fontmatter",Hi="$$slidev-slide-zoom",$t="slidev-vclick-target",ft="slidev-vclick-hidden",dt="slidev-vclick-fade",an="slidev-vclick-hidden-explicitly",ln="slidev-vclick-current",cn="slidev-vclick-prior",At=999999,Fi=["localhost","127.0.0.1"],Vi=["clicks","clicksStart","disabled","hide","hideInToc","layout","level","preload","routeAlias","src","title","transition","zoom","dragPos","lang"],Gc=[...Vi,"theme","titleTemplate","info","author","keywords","presenter","browserExporter","download","exportFilename","export","highlighter","lineNumbers","monaco","monacoTypesSource","monacoTypesAdditionalPackages","monacoRunAdditionalDeps","monacoRunUseStrict","remoteAssets","selectable","record","colorSchema","routerMode","aspectRatio","canvasWidth","themeConfig","favicon","plantUmlServer","fonts","defaults","drawings","htmlAttrs","mdc","contextMenu","wakeLock","seoMeta","notesAutoRuby","magicMoveDuration"];function Wi(t,e,{mode:n="replace"}={}){const s=Jt();return _({get(){const o=s.currentRoute.value.query[t];
84return o==null?e:Array.isArray(o)?o.filter(Boolean):o},set(o){rr(()=>{(s.currentRoute.value.query[t]??e?.toString())!==o.toString()&&s[ar(n)]({query:{...s.currentRoute.value.query,[t]:`${o}`===e?void 0:o}})})}})}function Yt(t){return se.value.find(e=>e.no===+t||e.meta.slide?.frontmatter.routeAlias===t)}function nt(t,e,n=!1){(typeof t=="number"||typeof t=="string")&&(t=Yt(t));const s=t.meta.slide?.frontmatter.routeAlias??t.no;return n?`/export/${s}`:e?`/presenter/${s}`:`/${s}`}const zi={"slide-left":"slide-left | slide-right","slide-right":"slide-right | slide-left","slide-up":"slide-up | slide-down","slide-down":"slide-down | slide-up"};function Bi(t,e=!1){if(!t||(typeof t=="string"&&(t={name:t}),!t.name))return;let n=t.name.includes("|")?t.name:zi[t.name]||t.name;if(n.includes("|")){const[s,o]=n.split("|").map(r=>r.trim());n=e?o:s}if(n)return{...t,name:n}}function Gi(t,e,n){let s=t>0?n?.meta?.transition:e?.meta?.transition;return s||(s=N.transition||void 0),Bi(s,t<0)}const qc=$(!1),Uc=$(!1),Jc=$(!1),qi=$(!1),jn=$(!1),Kc=$(!1),Qc=$(!0),Ui=T(new Set),Yc=_(()=>Ui.size>0),Zc=fr({xs:460,...dr}),Ft=lr(),Xc=ir(),eu=_(()=>Ft.height.value-Ft.width.value/co.value>120),tu=cr(Kt?document.body:null),bo=ur(),nu=_(()=>["INPUT","TEXTAREA"].includes(bo.value?.tagName||"")),su=_(()=>["BUTTON","A"].includes(bo.value?.tagName||""));B("slidev-camera","default",{listenToStorageChanges:!1});B("slidev-mic","default",{listenToStorageChanges:!1});const Ji=B("slidev-scale",0),ou=B("slidev-wake-lock",!0),ru=B("slidev-hide-cursor-idle",!0);B("slidev-skip-export-pdf-tip",!1);B("slidev-export-capture-delay",400,{listenToStorageChanges:!1});const au=B("slidev-presenter-cursor",!0,{listenToStorageChanges:!1}),Ki=B("slidev-show-editor",!1,{listenToStorageChanges:!1}),Qi=B("slidev-editor-vertical",!1,{listenToStorageChanges:!1}),Yi=B("slidev-editor-width",Kt?window.innerWidth*.4:318,{listenToStorageChanges:!1}),Zi=B("slidev-editor-height",Kt?window.innerHeight*.4:300,{listenToStorageChanges:!1}),St=In(null),Vt=B("slidev-presenter-font-size",1,{listenToStorageChanges:!1}),Mt=B("slidev-presenter-layout",1,{listenToStorageChanges:!1}),Mn={invert:!1,contrast:1,brightness:1,hueRotate:0,saturate:1,sepia:0},Xi=B("slidev-viewer-css-filter",Mn,{listenToStorageChanges:!1,mergeDefaults:!0,deep:!0}),iu=_(()=>Object.keys(Mn).some(t=>Xi.value[t]!==Mn[t]));function lu(){Mt.value=Mt.value+1,Mt.value>3&&(Mt.value=1)}function cu(){Vt.value=Math.min(2,Vt.value+.1)}function uu(){Vt.value=Math.max(.5,Vt.value-.1)}const fu=ao(qi),Tt=B("slidev-sync-directions",{viewerSend:!0,viewerReceive:!0,presenterSend:!0,presenterReceive:!0},{listenToStorageChanges:!1,mergeDefaults:!0});function wo(t,e,n=1){const s=e.meta.slide.level??n;s&&s>n&&t.length>0?wo(t[t.length-1].children,e,n+1):t.push({no:e.no,children:[],level:n,titleLevel:s,path:nt(e.meta.slide?.frontmatter?.routeAlias??e.no,!1),hideInToc:!!e.meta?.slide?.frontmatter?.hideInToc,title:e.meta?.slide?.title})}function _o(t,e,n=!1,s,o){return t.map(r=>{const a={...r,active:r.no===o?.value,hasActiveParent:n};return a.children.length>0&&(a.children=_o(a.children,e,a.active||a.hasActiveParent,a,o)),s&&(a.active||a.activeParent)&&(s.activeParent=!0),a})}function ko(t,e=1){return t.filter(n=>!n.hideInToc).map(n=>({...n,children:ko(n.children,e+1)}))}function el(t,e,n){const s=_(()=>t.value.filter(r=>r.meta?.slide?.title).reduce((r,a)=>(wo(r,a),r),[])),o=_(()=>_o(s.value,n.value,void 0,void 0,e));return _(()=>ko(o.value))}function tl(t,e,n=$(0),s,o,r){const a=_(()=>se.value.length),i=$(0),l=$(0),c=_(()=>nt(t.value,s.value)),f=_(()=>t.value.no),h=_(()=>t.value.meta?.layout||(f.value===1?"cover":"default")),d=_(()=>e.value.current),u=_(()=>e.value.clicksStart),g=_(()=>e.value.total),p=_(()=>se.value[Math.min(se.value.length,f.value+1)-1]),m=_(()=>se.value[Math.max(1,f.value-1)-1]),y=_(()=>f.value<se.value.length||d.value<g.value),v=_(()=>f.value>1||d.value>0),b=_(()=>o.value?void 0:Gi(i.value,t.value,m.value));ee(t,(H,I)=>{i.value=H.no-I.no});async function w(H){return!1}const k=el(se,f,t);async function A(){l.value=1,g.value<=n.value?await V():n.value+=1}async function D(){l.value=-1,n.value<=u.value?await q(!0):n.value-=1}async function V(H=!1){l.value=1,f.value<se.value.length&&await P(f.value+1,H&&!o.value?At:void 0)}async function q(H=!1){l.value=-1,f.value>1&&await P(f.value-1,H&&!o.value?At:void 0)}function le(){return P(1)}function Z(){return P(a.value)}async function P(H,I=0,ae=!1){jn.value=!1;const ce=f.value!==H,ct=I!==n.value,K=Yt(H)?.meta,j=K?.slide?.frontmatter.clicksStart??0;I=wn(I,j,K?.__clicksContext?.total??At),(ae||ce||ct)&&await r?.push({path:nt(H,s.value,r.currentRoute.value.name==="export"),query:{...r.currentRoute.value.query,clicks:I===0?void 0:I.toString(),embedded:location.search.includes("embedded")?"true":void 0}})}function x(){r?.push({path:nt(f.value,!0),query:{...r.currentRoute.value.query}})}function W(){r?.push({path:nt(f.value,!1),query:{...r.currentRoute.value.query}})}return{slides:se,total:a,currentPath:c,currentSlideNo:f,currentPage:f,currentSlideRoute:t,currentLayout:h,currentTransition:b,clicksDirection:l,nextRoute:p,prevRoute:m,clicksContext:e,clicks:d,clicksStart:u,clicksTotal:g,hasNext:y,hasPrev:v,tocTree:k,navDirection:i,openInEditor:w,next:A,prev:D,go:P,goLast:Z,goFirst:le,nextSlide:V,prevSlide:q,enterPresenter:x,exitPresenter:W}}const nl=io(()=>{const t=Jt(),e=hr(),n=_(()=>(t?.currentRoute?.value?.query,new URLSearchParams(location.search))),s=_(()=>n.value.has("print")||e.name==="export"),o=$(n.value.get("print")==="clicks"),r=_(()=>n.value.has("embedded")),a=_(()=>e.name==="play"),i=_(()=>e.name==="presenter"),l=_(()=>e.name==="notes"),c=_(()=>!i.value&&(!N.remote||n.value.get("password")===N.remote)),f=_(()=>!!e.params.no),h=_(()=>f.value?Yt(e.params.no)?.no??1:1),d=_(()=>se.value[h.value-1]),u=$(yo(se.value.length,e?.query?.range)),g=Wi("clicks","0"),p=_(()=>y(d.value)),m=_({get(){let v=+(g.value||0);return Number.isNaN(v)&&(v=0),v},set(v){jn.value=!1,g.value=v.toString()}});function y(v){if(v?.meta?.__clicksContext)return v.meta.__clicksContext;const b=v.no,w=mo(_({get(){return h.value===b?Math.max(+(g.value??0),w.clicksStart):h.value>b?At:w.clicksStart},set(k){h.value===b&&(g.value=k.toString())}}),v?.meta.slide?.frontmatter.clicksStart??0,v?.meta.clicks);return v?.meta&&(v.meta.__clicksContext=w),w}return{router:t,currentRoute:_(()=>e),isPrintMode:s,isPrintWithClicks:o,isEmbedded:r,isPlaying:a,isPresenter:i,isNotesViewer:l,isPresenterAvailable:c,hasPrimarySlide:f,currentSlideNo:h,currentSlideRoute:d,clicksContext:p,queryClicksRaw:g,queryClicks:m,printRange:u,getPrimaryClicks:y}}),lt=io(()=>{const t=nl(),e=Jt(),n=tl(t.currentSlideRoute,t.clicksContext,t.queryClicks,t.isPresenter,t.isPrintMode,e);return ee([n.total,t.currentRoute],async()=>{const s=t.currentRoute.value.params.no;t.hasPrimarySlide.value&&!Yt(s)&&(s&&s!=="index.html"?await n.go(n.total.value,0,!0):await n.go(1,0,!0))},{flush:"pre",immediate:!0}),{...n,...t}}),Ws=pr(),un=B("slidev-color-schema","auto"),zs=_(()=>N.colorSchema!=="auto"),So=_({get(){return zs.value?N.colorSchema==="dark":un.value==="auto"?Ws.value:un.value==="dark"},set(t){zs.value||(un.value=t===Ws.value?"auto":t?"dark":"light")}}
84),du=ao(So);if(Kt){const t="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";ee(So,e=>{const n=window.document.createElement("style");n.appendChild(document.createTextNode(t)),window.document.head.appendChild(n);const s=document.querySelector("html");s.classList.toggle("dark",e),s.classList.toggle("light",!e),window.getComputedStyle(n).opacity,document.head.removeChild(n)},{immediate:!0})}function sl(){const{isPrintMode:t}=lt();gr(_(()=>t.value?`
85@page {
86  size: ${uo.value}px ${xr.value}px;
87  margin: 0px;
88}
89
90* {
91  transition: none !important;
92  transition-duration: 0s !important;
93}`:""))}const Hn=Symbol.for("yaml.alias"),ol=Symbol.for("yaml.document"),Qe=Symbol.for("yaml.map"),Mo=Symbol.for("yaml.pair"),Fn=Symbol.for("yaml.scalar"),wt=Symbol.for("yaml.seq"),re=Symbol.for("yaml.node.type"),Ye=t=>!!t&&typeof t=="object"&&t[re]===Hn,Zt=t=>!!t&&typeof t=="object"&&t[re]===ol,To=t=>!!t&&typeof t=="object"&&t[re]===Qe,z=t=>!!t&&typeof t=="object"&&t[re]===Mo,F=t=>!!t&&typeof t=="object"&&t[re]===Fn,Vn=t=>!!t&&typeof t=="object"&&t[re]===wt;function Y(t){if(t&&typeof t=="object")switch(t[re]){case Qe:case wt:return!0}return!1}function G(t){if(t&&typeof t=="object")switch(t[re]){case Hn:case Qe:case Fn:case wt:return!0}return!1}const Oo=t=>(F(t)||Y(t))&&!!t.anchor,Ue=Symbol("break visit"),rl=Symbol("skip children"),mt=Symbol("remove node");function Xt(t,e){const n=al(e);Zt(t)?st(null,t.contents,n,Object.freeze([t]))===mt&&(t.contents=null):st(null,t,n,Object.freeze([]))}Xt.BREAK=Ue;Xt.SKIP=rl;Xt.REMOVE=mt;function st(t,e,n,s){const o=il(t,e,n,s);if(G(o)||z(o))return ll(t,s,o),st(t,o,n,s);if(typeof o!="symbol"){if(Y(e)){s=Object.freeze(s.concat(e));for(let r=0;r<e.items.length;++r){const a=st(r,e.items[r],n,s);if(typeof a=="number")r=a-1;else{if(a===Ue)return Ue;a===mt&&(e.items.splice(r,1),r-=1)}}}else if(z(e)){s=Object.freeze(s.concat(e));const r=st("key",e.key,n,s);if(r===Ue)return Ue;r===mt&&(e.key=null);const a=st("value",e.value,n,s);if(a===Ue)return Ue;a===mt&&(e.value=null)}}return o}function al(t){return typeof t=="object"&&(t.Collection||t.Node||t.Value)?Object.assign({Alias:t.Node,Map:t.Node,Scalar:t.Node,Seq:t.Node},t.Value&&{Map:t.Value,Scalar:t.Value,Seq:t.Value},t.Collection&&{Map:t.Collection,Seq:t.Collection},t):t}function il(t,e,n,s){if(typeof n=="function")return n(t,e,s);if(To(e))return n.Map?.(t,e,s);if(Vn(e))return n.Seq?.(t,e,s);if(z(e))return n.Pair?.(t,e,s);if(F(e))return n.Scalar?.(t,e,s);if(Ye(e))return n.Alias?.(t,e,s)}function ll(t,e,n){const s=e[e.length-1];if(Y(s))s.items[t]=n;else if(z(s))t==="key"?s.key=n:s.value=n;else if(Zt(s))s.contents=n;else{const o=Ye(s)?"alias":"scalar";throw new Error(`Cannot replace node with ${o} parent`)}}function Eo(t){if(/[\x00-\x19\s,[\]{}]/.test(t)){const n=`Anchor must not contain whitespace or control characters: ${JSON.stringify(t)}`;throw new Error(n)}return!0}function gt(t,e,n,s){if(s&&typeof s=="object")if(Array.isArray(s))for(let o=0,r=s.length;o<r;++o){const a=s[o],i=gt(t,s,String(o),a);i===void 0?delete s[o]:i!==a&&(s[o]=i)}else if(s instanceof Map)for(const o of Array.from(s.keys())){const r=s.get(o),a=gt(t,s,o,r);a===void 0?s.delete(o):a!==r&&s.set(o,a)}else if(s instanceof Set)for(const o of Array.from(s)){const r=gt(t,s,o,o);r===void 0?s.delete(o):r!==o&&(s.delete(o),s.add(r))}else for(const[o,r]of Object.entries(s)){const a=gt(t,s,o,r);a===void 0?delete s[o]:a!==r&&(s[o]=a)}return t.call(e,n,s)}function oe(t,e,n){if(Array.isArray(t))return t.map((s,o)=>oe(s,String(o),n));if(t&&typeof t.toJSON=="function"){if(!n||!Oo(t))return t.toJSON(e,n);const s={aliasCount:0,count:1,res:void 0};n.anchors.set(t,s),n.onCreate=r=>{s.res=r,delete n.onCreate};const o=t.toJSON(e,n);return n.onCreate&&n.onCreate(o),o}return typeof t=="bigint"&&!n?.keep?Number(t):t}class Wn{constructor(e){Object.defineProperty(this,re,{value:e})}clone(){const e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:n,maxAliasCount:s,onAnchor:o,reviver:r}={}){if(!Zt(e))throw new TypeError("A document argument is required");const a={anchors:new Map,doc:e,keep:!0,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof s=="number"?s:100},i=oe(this,"",a);if(typeof o=="function")for(const{count:l,res:c}
93of a.anchors.values())o(c,l);return typeof r=="function"?gt(r,{"":i},"",i):i}}class cl extends Wn{constructor(e){super(Hn),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e,n){let s;n?.aliasResolveCache?s=n.aliasResolveCache:(s=[],Xt(e,{Node:(r,a)=>{(Ye(a)||Oo(a))&&s.push(a)}}),n&&(n.aliasResolveCache=s));let o;for(const r of s){if(r===this)break;r.anchor===this.source&&(o=r)}return o}toJSON(e,n){if(!n)return{source:this.source};const{anchors:s,doc:o,maxAliasCount:r}=n,a=this.resolve(o,n);if(!a){const l=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(l)}let i=s.get(a);if(i||(oe(a,null,n),i=s.get(a)),i?.res===void 0){const l="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(l)}if(r>=0&&(i.count+=1,i.aliasCount===0&&(i.aliasCount=xt(o,a,s)),i.count*i.aliasCount>r)){const l="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(l)}return i.res}toString(e,n,s){const o=`*${this.source}`;if(e){if(Eo(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){const r=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(r)}if(e.implicitKey)return`${o} `}return o}}function xt(t,e,n){if(Ye(e)){const s=e.resolve(t),o=n&&s&&n.get(s);return o?o.count*o.aliasCount:0}else if(Y(e)){let s=0;for(const o of e.items){const r=xt(t,o,n);r>s&&(s=r)}return s}else if(z(e)){const s=xt(t,e.key,n),o=xt(t,e.value,n);return Math.max(s,o)}return 1}const Po=t=>!t||typeof t!="function"&&typeof t!="object";class R extends Wn{constructor(e){super(Fn),this.value=e}toJSON(e,n){return n?.keep?this.value:oe(this.value,e,n)}toString(){return String(this.value)}}R.BLOCK_FOLDED="BLOCK_FOLDED";R.BLOCK_LITERAL="BLOCK_LITERAL";R.PLAIN="PLAIN";R.QUOTE_DOUBLE="QUOTE_DOUBLE";R.QUOTE_SINGLE="QUOTE_SINGLE";function ul(t,e,n){return n.find(s=>s.identify?.(t)&&!s.format)}function Wt(t,e,n){if(Zt(t)&&(t=t.contents),G(t))return t;
93if(z(t)){const h=n.schema[Qe].createNode?.(n.schema,null,n);return h.items.push(t),h}(t instanceof String||t instanceof Number||t instanceof Boolean||typeof BigInt<"u"&&t instanceof BigInt)&&(t=t.valueOf());const{aliasDuplicateObjects:s,onAnchor:o,onTagObj:r,schema:a,sourceObjects:i}=n;let l;if(s&&t&&typeof t=="object"){if(l=i.get(t),l)return l.anchor??(l.anchor=o(t)),new cl(l.anchor);l={anchor:null,node:null},i.set(t,l)}let c=ul(t,e,a.tags);if(!c){if(t&&typeof t.toJSON=="function"&&(t=t.toJSON()),!t||typeof t!="object"){const h=new R(t);return l&&(l.node=h),h}c=t instanceof Map?a[Qe]:Symbol.iterator in Object(t)?a[wt]:a[Qe]}r&&(r(c),delete n.onTagObj);const f=c?.createNode?c.createNode(n.schema,t,n):typeof c?.nodeClass?.from=="function"?c.nodeClass.from(n.schema,t,n):new R(t);return c.default||(f.tag=c.tag),l&&(l.node=f),f}function Bs(t,e,n){let s=n;for(let o=e.length-1;o>=0;--o){const r=e[o];if(typeof r=="number"&&Number.isInteger(r)&&r>=0){const a=[];a[r]=s,s=a}else s=new Map([[r,s]])}return Wt(s,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:t,sourceObjects:new Map})}const fl=t=>t==null||typeof t=="object"&&!!t[Symbol.iterator]().next().done;class Co extends Wn{constructor(e,n){super(e),Object.defineProperty(this,"schema",{value:n,configurable:!0,enumerable:!1,writable:!0})}clone(e){const n=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(n.schema=e),n.items=n.items.map(s=>G(s)||z(s)?s.clone(e):s),this.range&&(n.range=this.range.slice()),n}addIn(e,n){if(fl(e))this.add(n);else{const[s,...o]=e,r=this.get(s,!0);if(Y(r))r.addIn(o,n);else if(r===void 0&&this.schema)this.set(s,Bs(this.schema,o,n));else throw new Error(`Expected YAML collection at ${s}. Remaining path: ${o}`)}}deleteIn(e){const[n,...s]=e;if(s.length===0)return this.delete(n);const o=this.get(n,!0);if(Y(o))return o.deleteIn(s);throw new Error(`Expected YAML collection at ${n}. Remaining path: ${s}`)}getIn(e,n){const[s,...o]=e,r=this.get(s,!0);return o.length===0?!n&&F(r)?r.value:r:Y(r)?r.getIn(o,n):void 0}hasAllNullValues(e){return this.items.every(n=>{if(!z(n))return!1;const s=n.value;return s==null||e&&F(s)&&s.value==null&&!s.commentBefore&&!s.comment&&!s.tag})}hasIn(e){const[n,...s]=e;if(s.length===0)return this.has(n);const o=this.get(n,!0);return Y(o)?o.hasIn(s):!1}setIn(e,n){const[s,...o]=e;if(o.length===0)this.set(s,n);else{const r=this.get(s,!0);if(Y(r))r.setIn(o,n);else if(r===void 0&&this.schema)this.set(s,Bs(this.schema,o,n));else throw new Error(`Expected YAML collection at ${s}. Remaining path: ${o}`)}}}const dl=t=>t.replace(/^(?!$)(?: $)?/gm,"#");function bt(t,e){return/^\n+$/.test(t)?t.substring(1):e?t.replace(/^(?! *$)/gm,e):t}const ot=(t,e,n)=>t.endsWith(`
94`)?bt(n,e):n.includes(`
95`)?`
96`+bt(n,e):(t.endsWith(" ")?"":" ")+n,Lo="flow",Tn="block",Dt="quoted";function en(t,e,n="flow",{indentAtStart:s,lineWidth:o=80,minContentWidth:r=20,onFold:a,onOverflow:i}={}){if(!o||o<0)return t;o<r&&(r=0);const l=Math.max(1+r,1+o-e.length);if(t.length<=l)return t;const c=[],f={};let h=o-e.length;typeof s=="number"&&(s>o-Math.max(2,r)?c.push(0):h=o-s);let d,u,g=!1,p=-1,m=-1,y=-1;n===Tn&&(p=Gs(t,p,e.length),p!==-1&&(h=p+l));for(let b;b=t[p+=1];){if(n===Dt&&b==="\\"){switch(m=p,t[p+1]){case"x":p+=3;break;case"u":p+=5;break;case"U":p+=9;break;default:p+=1}y=p}if(b===`
97`)n===Tn&&(p=Gs(t,p,e.length)),h=p+e.length+l,d=void 0;else{if(b===" "&&u&&u!==" "&&u!==`
98`&&u!=="	"){const w=t[p+1];w&&w!==" "&&w!==`
99`&&w!=="	"&&(d=p)}if(p>=h)if(d)c.push(d),h=d+l,d=void 0;else if(n===Dt){for(;u===" "||u==="	";)u=b,b=t[p+=1],g=!0;const w=p>y+1?p-2:m-1;if(f[w])return t;c.push(w),f[w]=!0,h=w+l,d=void 0}else g=!0}u=b}if(g&&i&&i(),c.length===0)return t;a&&a();let v=t.slice(0,c[0]);for(let b=0;b<c.length;++b){const w=c[b],k=c[b+1]||t.length;w===0?v=`
100${e}${t.slice(0,k)}`:(n===Dt&&f[w]&&(v+=`${t[w]}\\`),v+=`
101${e}${t.slice(w+1,k)}`)}return v}function Gs(t,e,n){let s=e,o=e+1,r=t[o];for(;r===" "||r==="	";)if(e<o+n)r=t[++e];else{do r=t[++e];while(r&&r!==`
102`);s=e,o=e+1,r=t[o]}return s}const tn=(t,e)=>({indentAtStart:e?t.indent.length:t.indentAtStart,lineWidth:t.options.lineWidth,minContentWidth:t.options.minContentWidth}
102),nn=t=>/^(%|---|\.\.\.)/m.test(t);function hl(t,e,n){if(!e||e<0)return!1;const s=e-n,o=t.length;if(o<=s)return!1;for(let r=0,a=0;r<o;++r)if(t[r]===`
103`){if(r-a>s)return!0;if(a=r+1,o-a<=s)return!1}return!0}function yt(t,e){const n=JSON.stringify(t);if(e.options.doubleQuotedAsJSON)return n;const{implicitKey:s}=e,o=e.options.doubleQuotedMinMultiLineLength,r=e.indent||(nn(t)?"  ":"");let a="",i=0;for(let l=0,c=n[l];c;c=n[++l])if(c===" "&&n[l+1]==="\\"&&n[l+2]==="n"&&(a+=n.slice(i,l)+"\\ ",l+=1,i=l,c="\\"),c==="\\")switch(n[l+1]){case"u":{a+=n.slice(i,l);const f=n.substr(l+2,4);switch(f){case"0000":a+="\\0";break;case"0007":a+="\\a";break;case"000b":a+="\\v";break;case"001b":a+="\\e";break;case"0085":a+="\\N";break;case"00a0":a+="\\_";break;case"2028":a+="\\L";break;case"2029":a+="\\P";break;default:f.substr(0,2)==="00"?a+="\\x"+f.substr(2):a+=n.substr(l,6)}l+=5,i=l+1}break;case"n":if(s||n[l+2]==='"'||n.length<o)l+=1;else{for(a+=n.slice(i,l)+`
104
105`;n[l+2]==="\\"&&n[l+3]==="n"&&n[l+4]!=='"';)a+=`
106`,l+=2;a+=r,n[l+2]===" "&&(a+="\\"),l+=1,i=l+1}break;default:l+=1}return a=i?a+n.slice(i):n,s?a:en(a,r,Dt,tn(e,!1))}function On(t,e){if(e.options.singleQuote===!1||e.implicitKey&&t.includes(`
107`)||/[ \t]\n|\n[ \t]/.test(t))return yt(t,e);const n=e.indent||(nn(t)?"  ":""),s="'"+t.replace(/'/g,"''").replace(/\n+/g,`$&
108${n}`)+"'";return e.implicitKey?s:en(s,n,Lo,tn(e,!1))}function rt(t,e){const{singleQuote:n}=e.options;let s;if(n===!1)s=yt;else{const o=t.includes('"'),r=t.includes("'");o&&!r?s=On:r&&!o?s=yt:s=n?On:yt}return s(t,e)}let En;try{En=new RegExp(`(^|(?<!
109))
110+(?!
111|$)`,"g")}catch{En=/\n+(?!\n|$)/g}function It({comment:t,type:e,value:n},s,o,r){const{blockQuote:a,commentString:i,lineWidth:l}=s.options;if(!a||/\n[\t ]+$/.test(n))return rt(n,s);const c=s.indent||(s.forceBlockIndent||nn(n)?"  ":""),f=a==="literal"?!0:a==="folded"||e===R.BLOCK_FOLDED?!1:e===R.BLOCK_LITERAL?!0:!hl(n,l,c.length);if(!n)return f?`|
112`:`>
113`;let h,d;for(d=n.length;d>0;--d){const k=n[d-1];if(k!==`
114`&&k!=="	"&&k!==" ")break}let u=n.substring(d);const g=u.indexOf(`
115`);g===-1?h="-":n===u||g!==u.length-1?(h="+",r&&r()):h="",u&&(n=n.slice(0,-u.length),u[u.length-1]===`
116`&&(u=u.slice(0,-1)),u=u.replace(En,`$&${c}`));let p=!1,m,y=-1;for(m=0;m<n.length;++m){const k=n[m];if(k===" ")p=!0;else if(k===`
117`)y=m;else break}let v=n.substring(0,y<m?y+1:m);v&&(n=n.substring(v.length),v=v.replace(/\n+/g,`$&${c}`));let w=(p?c?"2":"1":"")+h;if(t&&(w+=" "+i(t.replace(/ ?[\r\n]+/g," ")),o&&o()),!f){const k=n.replace(/\n+/g,`
118$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${c}`);let A=!1;const D=tn(s,!0);a!=="folded"&&e!==R.BLOCK_FOLDED&&(D.onOverflow=()=>{A=!0});const V=en(`${v}${k}${u}`,c,Tn,D);if(!A)return`>${w}
119${c}${V}`}return n=n.replace(/\n+/g,`$&${c}`),`|${w}
120${c}${v}${n}${u}`}function pl(t,e,n,s){const{type:o,value:r}=t,{actualString:a,implicitKey:i,indent:l,indentStep:c,inFlow:f}=e;if(i&&r.includes(`
121`)||f&&/[[\]{},]/.test(r))return rt(r,e);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(r))return i||f||!r.includes(`
122`)?rt(r,e):It(t,e,n,s);if(!i&&!f&&o!==R.PLAIN&&r.includes(`
123`))return It(t,e,n,s);if(nn(r)){if(l==="")return e.forceBlockIndent=!0,It(t,e,n,s);if(i&&l===c)return rt(r,e)}const h=r.replace(/\n+/g,`$&
124${l}`);if(a){const d=p=>p.default&&p.tag!=="tag:yaml.org,2002:str"&&p.test?.test(h),{compat:u,tags:g}=e.doc.schema;if(g.some(d)||u?.some(d))return rt(r,e)}return i?h:en(h,l,Lo,tn(e,!1))}function gl(t,e,n,s){const{implicitKey:o,inFlow:r}=e,a=typeof t.value=="string"?t:Object.assign({},t,{value:String(t.value)});let{type:i}=t;i!==R.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(a.value)&&(i=R.QUOTE_DOUBLE);const l=f=>{switch(f){case R.BLOCK_FOLDED:case R.BLOCK_LITERAL:return o||r?rt(a.value,e):It(a,e,n,s);case R.QUOTE_DOUBLE:return yt(a.value,e);case R.QUOTE_SINGLE:return On(a.value,e);case R.PLAIN:return pl(a,e,n,s);default:return null}};let c=l(i);if(c===null){const{defaultKeyType:f,defaultStringType:h}=e.options,d=o&&f||h;if(c=l(d),c===null)throw new Error(`Unsupported default string type ${d}`)}return c}function ml(t,e){const n=Object.assign({blockQuote:!0,commentString:dl,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},t.schema.toStringOptions,e);let s;switch(n.collectionStyle){case"block":s=!1;break;case"flow":s=!0;break;default:s=null}return{anchors:new Set,doc:t,flowCollectionPadding:n.flowCollectionPadding?" ":"",indent:"",indentStep:typeof n.indent=="number"?" ".repeat(n.indent):"  ",inFlow:s,options:n}}function yl(t,e){if(e.tag){const o=t.filter(r=>r.tag===e.tag);if(o.length>0)return o.find(r=>r.format===e.format)??o[0]}let n,s;if(F(e)){s=e.value;let o=t.filter(r=>r.identify?.(s));if(o.length>1){const r=o.filter(a=>a.test);r.length>0&&(o=r)}n=o.find(r=>r.format===e.format)??o.find(r=>!r.format)}else s=e,n=t.find(o=>o.nodeClass&&s instanceof o.nodeClass);if(!n){const o=s?.constructor?.name??(s===null?"null":typeof s);throw new Error(`Tag not resolved for ${o} value`)}return n}function vl(t,e,{anchors:n,doc:s}){if(!s.directives)return"";const o=[],r=(F(t)||Y(t))&&t.anchor;r&&Eo(r)&&(n.add(r),o.push(`&${r}`));const a=t.tag??(e.default?null:e.tag);return a&&o.push(s.directives.tagString(a)),o.join(" ")}function zt(t,e,n,s){if(z(t))return t.toString(e,n,s);if(Ye(t)){if(e.doc.directives)return t.toString(e);if(e.resolvedAliases?.has(t))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(t):e.resolvedAliases=new Set([t]),t=t.resolve(e.doc)}let o;const r=G(t)?t:e.doc.createNode(t,{onTagObj:l=>o=l});o??(o=yl(e.doc.schema.tags,r));const a=vl(r,o,e);a.length>0&&(e.indentAtStart=(e.indentAtStart??0)+a.length+1);const i=typeof o.stringify=="function"?o.stringify(r,e,n,s):F(r)?gl
124(r,e,n,s):r.toString(e,n,s);return a?F(r)||i[0]==="{"||i[0]==="["?`${a} ${i}`:`${a}
125${e.indent}${i}`:i}function bl({key:t,value:e},n,s,o){const{allNullValues:r,doc:a,indent:i,indentStep:l,options:{commentString:c,indentSeq:f,simpleKeys:h}}=n;let d=G(t)&&t.comment||null;if(h){if(d)throw new Error("With simple keys, key nodes cannot have comments");if(Y(t)||!G(t)&&typeof t=="object"){const D="With simple keys, collection cannot be used as a key value";throw new Error(D)}}let u=!h&&(!t||d&&e==null&&!n.inFlow||Y(t)||(F(t)?t.type===R.BLOCK_FOLDED||t.type===R.BLOCK_LITERAL:typeof t=="object"));n=Object.assign({},n,{allNullValues:!1,implicitKey:!u&&(h||!r),indent:i+l});let g=!1,p=!1,m=zt(t,n,()=>g=!0,()=>p=!0);if(!u&&!n.inFlow&&m.length>1024){if(h)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");u=!0}if(n.inFlow){if(r||e==null)return g&&s&&s(),m===""?"?":u?`? ${m}`:m}else if(r&&!h||e==null&&u)return m=`? ${m}`,d&&!g?m+=ot(m,n.indent,c(d)):p&&o&&o(),m;g&&(d=null),u?(d&&(m+=ot(m,n.indent,c(d))),m=`? ${m}
126${i}:`):(m=`${m}:`,d&&(m+=ot(m,n.indent,c(d))));let y,v,b;G(e)?(y=!!e.spaceBefore,v=e.commentBefore,b=e.comment):(y=!1,v=null,b=null,e&&typeof e=="object"&&(e=a.createNode(e))),n.implicitKey=!1,!u&&!d&&F(e)&&(n.indentAtStart=m.length+1),p=!1,!f&&l.length>=2&&!n.inFlow&&!u&&Vn(e)&&!e.flow&&!e.tag&&!e.anchor&&(n.indent=n.indent.substring(2));let w=!1;const k=zt(e,n,()=>w=!0,()=>p=!0);let A=" ";if(d||y||v){if(A=y?`
127`:"",v){const D=c(v);A+=`
128${bt(D,n.indent)}`}k===""&&!n.inFlow?A===`
129`&&b&&(A=`
130
131`):A+=`
132${n.indent}`}else if(!u&&Y(e)){const D=k[0],V=k.indexOf(`
133`),q=V!==-1,le=n.inFlow??e.flow??e.items.length===0;if(q||!le){let Z=!1;if(q&&(D==="&"||D==="!")){let P=k.indexOf(" ");D==="&"&&P!==-1&&P<V&&k[P+1]==="!"&&(P=k.indexOf(" ",P+1)),(P===-1||V<P)&&(Z=!0)}Z||(A=`
134${n.indent}`)}}else(k===""||k[0]===`
135`)&&(A="");return m+=A+k,n.inFlow?w&&s&&s():b&&!w?m+=ot(m,n.indent,c(b)):p&&o&&o(),m}function wl(t,e){(t==="debug"||t==="warn")&&console.warn(e)}const Ot="<<",fn={identify:t=>t===Ot||typeof t=="symbol"&&t.description===Ot,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new R(Symbol(Ot)),{addToJSMap:$o}),stringify:()=>Ot},_l=(t,e)=>(fn.identify(e)||F(e)&&(!e.type||e.type===R.PLAIN)&&fn.identify(e.value))&&t?.doc.schema.tags.some(n=>n.tag===fn.tag&&n.default);function $o(t,e,n){if(n=t&&Ye(n)?n.resolve(t.doc):n,Vn(n))for(const s of n.items)dn(t,e,s);else if(Array.isArray(n))for(const s of n)dn(t,e,s);else dn(t,e,n)}function dn(t,e,n){const s=t&&Ye(n)?n.resolve(t.doc):n;if(!To(s))throw new Error("Merge sources must be maps or map aliases");const o=s.toJSON(null,t,Map);for(const[r,a]of o)e instanceof Map?e.has(r)||e.set(r,a):e instanceof Set?e.add(r):Object.prototype.hasOwnProperty.call(e,r)||Object.defineProperty(e,r,{value:a,writable:!0,enumerable:!0,configurable:!0});return e}function Ao(t,e,{key:n,value:s}){if(G(n)&&n.addToJSMap)n.addToJSMap(t,e,s);else if(_l(t,n))$o(t,e,s);else{const o=oe(n,"",t);if(e instanceof Map)e.set(o,oe(s,o,t));else if(e instanceof Set)e.add(o);else{const r=kl(n,o,t),a=oe(s,r,t);r in e?Object.defineProperty(e,r,{value:a,writable:!0,enumerable:!0,configurable:!0}):e[r]=a}}return e}function kl(t,e,n){if(e===null)return"";if(typeof e!="object")return String(e);if(G(t)&&n?.doc){const s=ml(n.doc,{});s.anchors=new Set;for(const r of n.anchors.keys())s.anchors.add(r.anchor);s.inFlow=!0,s.inStringifyKey=!0;const o=t.toString(s);if(!n.mapKeyWarned){let r=JSON.stringify(o);r.length>40&&(r=r.substring(0,36)+'..."'),wl(n.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${r}. Set mapAsMap: true to use object keys.`),n.mapKeyWarned=!0}return o}return JSON.stringify(e)}function zn(t,e,n){const s=Wt(t,void 0,n),o=Wt(e,void 0,n);return new ie(s,o)}class ie{constructor(e,n=null){Object.defineProperty(this,re,{value:Mo}),this.key=e,this.value=n}clone(e){let{key:n,value:s}=this;return G(n)&&(n=n.clone(e)),G(s)&&(s=s.clone(e)),new ie(n,s)}toJSON(e,n){const s=n?.mapAsMap?new Map:{};return Ao(n,s,this)}toString(e,n,s){return e?.doc?bl(this,e,n,s):JSON.stringify(this)}}function xo(t,e,n){return(e.inFlow??t.flow?Ml:Sl)(t,e,n)}function Sl({comment:t,items:e},n,{blockItemPrefix:s,flowChars:o,itemIndent:r,onChompKeep:a,onComment:i}){const{indent:l,options:{commentString:c}}=n,f=Object.assign({},n,{indent:r,type:null});let h=!1;const d=[];for(let g=0;g<e.length;++g){const p=e[g];let m=null;if(G(p))!h&&p.spaceBefore&&d.push(""),Bt(n,d,p.commentBefore,h),p.comment&&(m=p.comment);else if(z(p)){const v=G(p.key)?p.key:null;v&&(!h&&v.spaceBefore&&d.push(""),Bt(n,d,v.commentBefore,h))}h=!1;let y=zt(p,f,()=>m=null,()=>h=!0);m&&(y+=ot(y,r,c(m))),h&&m&&(h=!1),d.push(s+y)}let u;if(d.length===0)u=o.start+o.end;else{u=d[0];for(let g=1;g<d.length;++g){const p=d[g];u+=p?`
136${l}${p}`:`
137`}}return t?(u+=`
138`+bt(c(t),l),i&&i()):h&&a&&a(),u}function Ml({items:t},e,{flowChars:n,itemIndent:s}){const{indent:o,indentStep:r,flowCollectionPadding:a,options:{commentString:i}}=e;s+=r;const l=Object.assign({},e,{indent:s,inFlow:!0,type:null});let c=!1,f=0;const h=[];for(let g=0;g<t.length;++g){const p=t[g];let m=null;if(G(p))p.spaceBefore&&h.push(""),Bt(e,h,p.commentBefore,!1),p.comment&&(m=p.comment);else if(z(p)){const v=G(p.key)?p.key:null;v&&(v.spaceBefore&&h.push(""),Bt(e,h,v.commentBefore,!1),v.comment&&(c=!0));const b=G(p.value)?p.value:null;b?(b.comment&&(m=b.comment),b.commentBefore&&(c=!0)):p.value==null&&v?.comment&&(m=v.comment)}m&&(c=!0);let y=zt(p,l,()=>m=null);g<t.length-1&&(y+=","),m&&(y+=ot(y,s,i(m))),!c&&(h.length>f||y.includes(`
139`))&&(c=!0),h.push(y),f=h.length}const{start:d,end:u}=n;if(h.length===0)return d+u;if(!c){const g=h.reduce((p,m)=>p+m.length+2,2);c=e.options.lineWidth>0&&g>e.options.lineWidth}if(c){let g=d;for(const p of h)g+=p?`
140${r}${o}${p}`:`
141`;return`${g}
142${o}${u}`}else return`${d}${a}${h.join(" ")}${a}${u}`}function Bt({indent:t,options:{commentString:e}},n,s,o){if(s&&o&&(s=s.replace(/^\n+/,"")),s){const r=bt(e(s),t);n.push(r.trimStart())}}function Ke(t,e){const n=F(e)?e.value:e;for(const s of t)if(z(s)&&(s.key===e||s.key===n||F(s.key)&&s.key.value===n))return s}class et extends Co{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(Qe,e),this.items=[]}static from(e,n,s){const{keepUndefined:o,replacer:r}=s,a=new this(e),i=(l,c)=>{if(typeof r=="function")c=r.call(n,l,c);else if(Array.isArray(r)&&!r.includes(l))return;(c!==void 0||o)&&a.items.push(zn(l,c,s))};if(n instanceof Map)for(const[l,c]of n)i(l,c);else if(n&&typeof n=="object")for(const l of Object.keys(n))i(l,n[l]);return typeof e.sortMapEntries=="function"&&a.items.sort(e.sortMapEntries),a}add(e,n){let s;z(e)?s=e:!e||typeof e!="object"||!("key"in e)?s=new ie(e,e?.value):s=new ie(e.key,e.value);const o=Ke(this.items,s.key),r=this.schema?.sortMapEntries;if(o){if(!n)throw new Error(`Key ${s.key} already set`);F(o.value)&&Po(s.value)?o.value.value=s.value:o.value=s.value}else if(r){const a=this.items.findIndex(i=>r(s,i)<0);a===-1?this.items.push(s):this.items.splice(a,0,s)}else this.items.push(s)}delete(e){const n=Ke(this.items,e);return n?this.items.splice(this.items.indexOf(n),1).length>0:!1}get(e,n){const o=Ke(this.items,e)?.value;return(!n&&F(o)?o.value:o)??void 0}has(e){return!!Ke(this.items,e)}set(e,n){this.add(new ie(e,n),!0)}toJSON(e,n,s){const o=s?new s:n?.mapAsMap?new Map:{};n?.onCreate&&n.onCreate(o);for(const r of this.items)Ao(n,o,r);return o}toString(e,n,s){if(!e)return JSON.stringify(this);for(const o of this.items)if(!z(o))throw new Error(`Map items must all be pairs; found ${JSON.stringify(o)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),xo(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:s,onComment:n})}}class Do extends Co{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(wt,e),this.items=[]}add(e){this.items.push(e)}delete(e){const n=Et(e);return typeof n!="number"?!1:this.items.splice(n,1).length>0}get(e,n){const s=Et(e);if(typeof s!="number")return;const o=this.items[s];return!n&&F(o)?o.value:o}has(e){const n=Et(e);return typeof n=="number"&&n<this.items.length}set(e,n){const s=Et(e);if(typeof s!="number")throw new Error(`Expected a valid index, not ${e}.`);const o=this.items[s];F(o)&&Po(n)?o.value=n:this.items[s]=n}toJSON(e,n){const s=[];n?.onCreate&&n.onCreate(s);let o=0;for(const r of this.items)s.push(oe(r,String(o++),n));return s}toString(e,n,s){return e?xo(this,e,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:(e.indent||"")+"  ",onChompKeep:s,onComment:n}):JSON.stringify(this)}static from(e,n,s){const{replacer:o}=s,r=new this(e);if(n&&Symbol.iterator in Object(n)){let a=0;for(let i of n){if(typeof o=="function"){const l=n instanceof Set?i:String(a++);i=o.call(n,l,i)}r.items.push(Wt(i,void 0,s))}}return r}}function Et(t){let e=F(t)?t.value:t;return e&&typeof e=="string"&&(e=Number(e)),typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}function Tl(t,e,n){const{replacer:s}=n,o=new Do(t);o.tag="tag:yaml.org,2002:pairs";let r=0;if(e&&Symbol.iterator in Object(e))for(let a of e){typeof s=="function"&&(a=s.
142call(e,String(r++),a));let i,l;if(Array.isArray(a))if(a.length===2)i=a[0],l=a[1];else throw new TypeError(`Expected [key, value] tuple: ${a}`);else if(a&&a instanceof Object){const c=Object.keys(a);if(c.length===1)i=c[0],l=a[i];else throw new TypeError(`Expected tuple with one key, not ${c.length} keys`)}else i=a;o.items.push(zn(i,l,n))}return o}class Bn extends Do{constructor(){super(),this.add=et.prototype.add.bind(this),this.delete=et.prototype.delete.bind(this),this.get=et.prototype.get.bind(this),this.has=et.prototype.has.bind(this),this.set=et.prototype.set.bind(this),this.tag=Bn.tag}toJSON(e,n){if(!n)return super.toJSON(e);const s=new Map;n?.onCreate&&n.onCreate(s);for(const o of this.items){let r,a;if(z(o)?(r=oe(o.key,"",n),a=oe(o.value,r,n)):r=oe(o,"",n),s.has(r))throw new Error("Ordered maps must not include duplicate keys");s.set(r,a)}return s}static from(e,n,s){const o=Tl(e,n,s),r=new this;return r.items=o.items,r}}Bn.tag="tag:yaml.org,2002:omap";class Gn extends et{constructor(e){super(e),this.tag=Gn.tag}add(e){let n;z(e)?n=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?n=new ie(e.key,null):n=new ie(e,null),Ke(this.items,n.key)||this.items.push(n)}get(e,n){const s=Ke(this.items,e);return!n&&z(s)?F(s.key)?s.key.value:s.key:s}set(e,n){if(typeof n!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof n}`);const s=Ke(this.items,e);s&&!n?this.items.splice(this.items.indexOf(s),1):!s&&n&&this.items.push(new ie(e))}toJSON(e,n){return super.toJSON(e,n,Set)}toString(e,n,s){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),n,s);throw new Error("Set items must all have null values")}static from(e,n,s){const{replacer:o}=s,r=new this(e);if(n&&Symbol.iterator in Object(n))for(let a of n)typeof o=="function"&&(a=o.call(n,a,a)),r.items.push(zn(a,null,s));return r}}Gn.tag="tag:yaml.org,2002:set";new Set("0123456789ABCDEFabcdef");new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()");new Set(",[]{}");new Set(` ,[]{}
143\r	`);function qn(t=5){const e=[],n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",s=n.length;for(let o=0;o<t;o++)e.push(n.charAt(Math.floor(Math.random()*s)));return e.join("")}function hu(t,e,n,s){const o=yo(e+n-1,t);for(let r=0;r<e;r++){const a=s(r),i=o.includes(r+n);for(const l of a)l.classList.toggle("slidev-code-highlighted",i),l.classList.toggle("slidev-code-dishonored",!i),l.classList.toggle("highlighted",i),l.classList.toggle("dishonored",!i)}}function Io(){return Math.random().toString(36).replace(/[^a-z]+/g,"").substr(2,10)}function te(t,e,n){Object.defineProperty(t,e,{value:n,writable:!0,enumerable:!1})}const ue=T({});let Ol=[],El=[];te(ue,"$syncUp",!0);te(ue,"$syncDown",!0);te(ue,"$paused",!1);te(ue,"$onSet",t=>Ol.push(t));te(ue,"$onPatch",t=>El.push(t));Io();te(ue,"$patch",async()=>!1);const Pl={channels:[],enabled:!0,init(t,e,n,s=!1){let o;if(!s)o=new BroadcastChannel(t),o.addEventListener("message",r=>e(r.data)),this.channels.push(o);else if(s){this.listener=function(a){a&&a.key===t&&a.newValue&&e(JSON.parse(a.newValue))},window.addEventListener("storage",this.listener);const r=window.localStorage.getItem(t);r&&e(JSON.parse(r))}return(r,a=!1)=>{this.enabled&&(!s&&o&&!a&&o.postMessage(lo(r)),s&&!a&&window.localStorage.setItem(t,JSON.stringify(r)))}},disable(){this.enabled=!1,this.channels.forEach(t=>t.close()),this.listener&&window.removeEventListener("storage",this.listener)}},Cl=T([Pl]),Ll=new Map,qs=$({});function Ro(t,e,n=!1){const s=[];let o=!1,r=!1,a,i;const l=T(e);function c(u){s.push(u)}function f(u,g){l[u]!==g&&(clearTimeout(a),o=!0,l[u]=g,a=setTimeout(()=>o=!1,0))}function h(u){o||(clearTimeout(i),r=!0,Object.entries(u).forEach(([g,p])=>{l[g]=p}),i=setTimeout(()=>r=!1,0))}function d(u){Ll.set(u,{onUpdate:h,persist:n,state:l}),qs.value[u]=Cl.map(p=>p.init(u,h,l,n)).filter(p=>!!p);function g(){qs.value[u].forEach(p=>p?.(lo(l),r)),o||s.forEach(p=>p(l))}ee(l,g,{deep:!0})}return{init:d,onPatch:c,onUpdate:h,patch:f,state:l}}const{init:$l,onPatch:pu,patch:gu,state:mu}
143=Ro(ue,ue,!1),Ze=T({page:0,clicks:0,timer:{status:"stopped",slides:{},startedAt:0,pausedAt:0}});let Al=[],xl=[];te(Ze,"$syncUp",!0);te(Ze,"$syncDown",!0);te(Ze,"$paused",!1);te(Ze,"$onSet",t=>Al.push(t));te(Ze,"$onPatch",t=>xl.push(t));Io();te(Ze,"$patch",async()=>!1);const{init:Dl,onPatch:Il,patch:Pt,state:yu}=Ro(Ze,{page:1,clicks:0,clicksTotal:0,timer:{status:"stopped",slides:{},startedAt:0,pausedAt:0}});function Rl(){const t=so().appContext.app,e=T({nav:lt(),configs:N,themeConfigs:_(()=>N.themeConfig)});t.provide(Nn,$("none")),t.provide(Ni,e),t.provide(Rn,_(()=>e.nav.currentSlideNo)),t.provide(Qt,In(ua()));for(const d of Ir)d();const{clicksContext:n,currentSlideNo:s,hasPrimarySlide:o,isNotesViewer:r,isPresenter:a,isPrintMode:i}=lt();ia({title:on,htmlAttrs:N.htmlAttrs}),sl(),Dl(`${on} - shared`),$l(`${on} - drawings`);const l=`${location.origin}_${qn()}`,c=_(()=>a.value?"presenter":"viewer");function f(){(a.value?Tt.value.presenterSend:Tt.value.viewerSend)&&(r.value||i.value||!a.value&&!Fi.includes(location.host.split(":")[0])||(Pt("page",+s.value),Pt("clicks",n.value.current),Pt("clicksTotal",n.value.total),Pt("lastUpdate",{id:l,type:c.value,time:new Date().getTime()})))}const h=Jt();h.afterEach(f),ee(n,f),Il(d=>{(a.value?Tt.value.presenterReceive:Tt.value.viewerReceive)&&(!o.value||i.value||d.lastUpdate?.type!==c.value&&(+d.page==+s.value&&+n.value.current==+d.clicks||(jn.value=!1,h.replace({path:nt(d.page,a.value),query:{...h.currentRoute.value.query,clicks:d.clicks||0}}))))})}const Nl=ro({__name:"App",setup(t){return Rl(),at(()=>{for(const[e,n]of Object.entries(Dr.value))document.body.style.setProperty(e,n.toString())}),(e,n)=>{const s=yr("RouterView");return jt(),mr(s)}}}),jl=[Object.values([])[0],Object.values([])[0]].filter(Boolean);async function No(t,e={}){const n=e.document||t.resolvedOptions.document;if(!n||!t.dirty)return;const s={shouldRender:!0,tags:[]};if(await t.hooks.callHook("dom:beforeRender",s),!!s.shouldRender)return t._domUpdatePromise||(t._domUpdatePromise=new Promise(async o=>{const r=new Map,a=new Promise(u=>{t.resolveTags().then(g=>{u(g.map(p=>{const m=r.get(p._d)||0,y={tag:p,id:(m?`${p._d}:${m}`:p._d)||ts(p),shouldRender:!0};return p._d&&ho(p._d)&&r.set(p._d,m+1),y}))})});let i=t._dom;if(!i){i={title:n.title,elMap:new Map().set("htmlAttrs",n.documentElement).set("bodyAttrs",n.body)};for(const u of["body","head"]){const g=n[u]?.children;for(const p of g){const m=p.tagName.toLowerCase();if(!es.has(m))continue;const y=po({tag:m,props:{}},{innerHTML:p.innerHTML,...p.getAttributeNames().reduce((v,b)=>(v[b]=p.getAttribute(b),v),{})||{}});if(y.key=p.getAttribute("data-hid")||void 0,y._d=kn(y)||ts(y),i.elMap.has(y._d)){let v=1,b=y._d;for(;i.elMap.has(b);)b=`${y._d}:${v++}`;i.elMap.set(b,p)}else i.elMap.set(y._d,p)}}}i.pendingSideEffects={...i.sideEffects},i.sideEffects={};function l(u,g,p){const m=`${u}:${g}`;i.sideEffects[m]=p,delete i.pendingSideEffects[m]}function c({id:u,$el:g,tag:p}){const m=p.tag.endsWith("Attrs");i.elMap.set(u,g),m||(p.textContent&&p.textContent!==g.textContent&&(g.textContent=p.textContent),p.innerHTML&&p.innerHTML!==g.innerHTML&&(g.innerHTML=p.innerHTML),l(u,"el",()=>{g?.remove(),i.elMap.delete(u)}));for(const y in p.props){if(!Object.prototype.hasOwnProperty.call(p.props,y))continue;const v=p.props[y];if(y.startsWith("on")&&typeof v=="function"){const w=g?.dataset;if(w&&w[`${y}fired`]){const k=y.slice(0,-5);v.call(g,new Event(k.substring(2)))}g.getAttribute(`data-${y}`)!==""&&((p.tag==="bodyAttrs"?n.defaultView:g).addEventListener(y.substring(2),v.bind(g)),g.setAttribute(`data-${y}`,""));continue}const b=`attr:${y}`;if(y==="class"){if(!v)continue;for(const w of v)m&&l(u,`${b}:${w}`,()=>g.classList.remove(w)),!g.classList.contains(w)&&g.classList.add(w)}else if(y==="style"){if(!v)continue;for(const[w,k]of v)l(u,`${b}:${w}`,()=>{g.style.removeProperty(w)}),g.style.setProperty(w,k)}else v!==!1&&v!==null&&(g.getAttribute(y)!==v&&g.setAttribute(y,v===!0?"":String(v)),m&&l(u,b,()=>g.removeAttribute(y)))}}const f=[],h={bodyClose:void 0,bodyOpen:void 0,head:void 0},d=await a;for(const u of d){const{tag:g,shouldRender:p,id:m}=u;if(p){if(g.tag==="title"){n.title=g.textContent,l("title","",()=>n.title=i.title);continue}
143u.$el=u.$el||i.elMap.get(m),u.$el?c(u):es.has(g.tag)&&f.push(u)}}for(const u of f){const g=u.tag.tagPosition||"head";u.$el=n.createElement(u.tag.tag),c(u),h[g]=h[g]||n.createDocumentFragment(),h[g].appendChild(u.$el)}for(const u of d)await t.hooks.callHook("dom:renderTag",u,n,l);h.head&&n.head.appendChild(h.head),h.bodyOpen&&n.body.insertBefore(h.bodyOpen,n.body.firstChild),h.bodyClose&&n.body.appendChild(h.bodyClose);for(const u in i.pendingSideEffects)i.pendingSideEffects[u]();t._dom=i,await t.hooks.callHook("dom:rendered",{renders:d}),o()}).finally(()=>{t._domUpdatePromise=void 0,t.dirty=!1})),t._domUpdatePromise}function Hl(t={}){const e=t.domOptions?.render||No;t.document=t.document||(typeof window<"u"?document:void 0);const n=t.document?.head.querySelector('script[id="unhead:payload"]')?.innerHTML||!1;return sa({...t,plugins:[...t.plugins||[],{key:"client",hooks:{"entries:updated":e}}],init:[n?JSON.parse(n):!1,...t.init||[]]})}function Fl(t,e){let n=0;return()=>{const s=++n;e(()=>{n===s&&t()})}}function Vl(t={}){const e=Hl({domOptions:{render:Fl(()=>No(e),n=>setTimeout(n,0))},...t});return e.install=ra(e),e}function vu(t,e=""){const n=["slidev-page",e],s=t?.meta?.slide?.no;return s!=null&&n.push(`slidev-page-${s}`),n.filter(Boolean).join(" ")}async function bu(){const{saveAs:t}=await M(async()=>{const{saveAs:e}=await import("./modules/file-saver-B7oFTzqn.js").then(n=>n.F);return{saveAs:e}},[]);t(typeof N.download=="string"?N.download:N.exportFilename?`${N.exportFilename}.pdf`:"/slidev-exported.pdf",`${N.title}.pdf`)}function it(t,e,n){return(t.instance?.$).provides[e]??n}function Wl(){return{install(t){t.directive("click",{name:"v-click",mounted(e,n){const s=Rt(e,n,n.value);s!=null&&(e.classList.toggle($t,!0),e.dataset.slidevClicksStart=String(s.start),Number.isFinite(s.end)&&(e.dataset.slidevClicksEnd=String(s.end)),e.watchStopHandle=at(()=>{const o=s.isActive.value,r=s.isCurrent.value,a=o&&!r;s.flagHide?(e.classList.toggle(s.flagFade?dt:ft,o),e.classList.toggle(an,o)):e.classList.toggle(s.flagFade?dt:ft,!o),e.classList.toggle(ln,r),e.classList.toggle(cn,a)}))},unmounted:hn}),t.directive("after",{name:"v-after",mounted(e,n){const s=Rt(e,n,"+0");s!=null&&(e.classList.toggle($t,!0),e.watchStopHandle=at(()=>{const o=s.isActive.value,r=s.isCurrent.value,a=o&&!r;s.flagHide?(e.classList.toggle(s.flagFade?dt:ft,o),e.classList.toggle(an,o)):e.classList.toggle(s.flagFade?dt:ft,!o),e.classList.toggle(ln,r),e.classList.toggle(cn,a)}))},unmounted:hn}),t.directive("click-hide",{name:"v-click-hide",mounted(e,n){const s=Rt(e,n,n.value,!0);s!=null&&(e.classList.toggle($t,!0),e.watchStopHandle=at(()=>{const o=s.isActive.value,r=s.isCurrent.value,a=o&&!r;e.classList.toggle(s.flagFade?dt:ft,o),e.classList.toggle(an,o),e.classList.toggle(ln,r),e.classList.toggle(cn,a)}))},unmounted:hn})}}}const jo=new Map;function Rt(t,e,n,s=!1){const o=it(e,Qt)?.value;if(!t||!o)return null;const r=s||e.modifiers.hide!==!1&&e.modifiers.hide!=null,a=e.modifiers.fade!==!1&&e.modifiers.fade!=null,i=o.calculate(n);if(!i)return null;o.register(t,i);const l=_(()=>r?!i.isActive.value:i.isActive.value),c=_(()=>l.value?"shown":Number.isFinite(i.end)?o.current<i.start?"before":"after":r?"after":"before"),f={...i,isShown:l,visibilityState:c,flagFade:a,flagHide:r};return jo.set(t,f),f}function hn(t,e){t.classList.toggle($t,!1),it(e,Qt)?.value?.unregister(t),t.watchStopHandle?.()}function zl(t=no(vo,$())){const e=vr(t),n=ee([Ki,Qi,Yi,Zi,Ji,Ft.width,Ft.height],()=>{setTimeout(e.update,300)},{flush:"post",immediate:!0});return{...e,stop:n}}function Bl(t){return()=>{}}function Gl(t,e,n,s=!1){function o(j){return t?it(t,j):wr(j)}const r=o(Nn),a=o(ji)??{},i=o(Rn),l=_(()=>Bl(i.value)),c=o(Ri)??$(1),f=o(Hi)??$(1),{left:h,top:d,stop:u}=zl(o(vo)??$()),{isPrintMode:g}=lt(),p=["slide","presenter"].includes(r.value)&&!g.value;let m=t?"directive":"prop",y=qn(),v;if(Array.isArray(e)?v=e:typeof e=="string"&&e.includes(",")?v=e.split(",").map(Number):e!=null&&(m="frontmatter",y=`${e}`,e=a?.dragPos?.[y],v=e?.split(",").map(Number)),m!=="frontmatter"&&!n)throw new Error("[Slidev] Can not identify the source position of the v-drag element, please provide an explicit `id` prop.");const b=[u],w=!s&&e!=null&&!Number.isFinite(v?.[3]);v??=[Number.NaN,Number.NaN,0];const k=$(v[2]),A=$(v[0]+v[2]/2),D=$(s?0:v[4]??0),V=_(()=>D.value*Math.PI/180),q=_(()=>Math.sin(V.value)),le=_(()=>Math.cos(V.value)),Z=$(),P=$({left:0,top:0,width:0,height:0}),x=$(0);function W(){if(!Z.value)return;const j=Z.value.getBoundingClientRect();P.value={left:j.left/f.value,top:j.top/f.value,width:j.width/f.value,height:j.height/f.value},x.value=(P.value.width+P.value.height)/c.value/(Math.abs(q.value)+Math.abs(le.value))-k.value}b.push(ee(k,W,{flush:"post"}));const H=$(v[3]??0),I=w?_({get:()=>(w?x.value:H.value)||0,set:j=>!w&&(H.value=j)}):H,ae=w?$(v[1]):$(v[1]+v[3]/2),ce=w?_({get:()=>ae.value+I.value/2,set:j=>ae.value=j-I.value/2}):ae,ct=_(()=>Number.isFinite(A.value)?{position:"absolute",zIndex:100,left:`${A.value-k.value/2}px`,top:`${ce.value-I.value/2}px`,width:`${k.value}px`,height:w?void 0:`${I.value}px`,transformOrigin:"center center",transform:`rotate(${D.value}deg)`}:{position:"absolute",zIndex:100});b.push(ee([A,ce,k,I,D],([j,kt,Kn,Qn,Yn])=>{let Xe=[j-Kn/2,kt-Qn/2,Kn].map(Math.round).join();w?Xe+=m==="directive"?",NaN":",_":Xe+=`,${Math.round(Qn)}`,Math.round(Yn)!==0&&(Xe+=`,${Math.round(Yn)}`),m==="directive"&&(Xe=`[${Xe}]`),l.value(y,Xe,m,n)}
143));const K={dragId:y,dataSource:m,markdownSource:n,isArrow:s,zoom:f,autoHeight:w,x0:A,y0:ce,width:k,height:I,rotate:D,container:Z,containerStyle:ct,watchStopHandles:b,dragging:_(()=>St.value===K),mounted(){p&&(W(),e||setTimeout(()=>{W(),A.value=(P.value.left+P.value.width/2-h.value)/c.value,ce.value=(P.value.top-d.value)/c.value,k.value=P.value.width/c.value,I.value=P.value.height/c.value},100))},unmounted(){p&&K.stopDragging()},startDragging(){p&&(W(),St.value=K)},stopDragging(){p&&St.value===K&&(St.value=null)}};return b.push(br(Z,j=>{const kt=document.querySelector("#drag-control-container");kt&&j.target&&kt.contains(j.target)||K.stopDragging()}),ee(_r(),j=>{j||K.stopDragging()})),K}function ql(){return{install(t){t.directive("drag",{name:"v-drag",created(e,n,s){const o=Gl(n,n.value,s.props?.markdownSource);s.props&&(s.props={...s.props},delete s.props.markdownSource),o.container.value=e,e.draggingState=o,e.dataset.dragId=o.dragId,o.watchStopHandles.push(ee(o.containerStyle,r=>{for(const[a,i]of Object.entries(r))i&&(e.style[a]=i)},{immediate:!0})),e.addEventListener("dblclick",o.startDragging)},mounted(e){e.draggingState.mounted()},unmounted(e){const n=e.draggingState;n.unmounted(),e.removeEventListener("dblclick",n.startDragging),n.watchStopHandles.forEach(s=>s())}})}}}function Ho(){return Math.floor(Math.random()*2**31)}class Ul{constructor(e){this.seed=e}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}function Pn(t,e,n){if(t&&t.length){const[s,o]=e,r=Math.PI/180*n,a=Math.cos(r),i=Math.sin(r);for(const l of t){const[c,f]=l;l[0]=(c-s)*a-(f-o)*i+s,l[1]=(c-s)*i+(f-o)*a+o}}}function Jl(t,e,n){const s=[];t.forEach(o=>s.push(...o)),Pn(s,e,n)}function Kl(t,e){return t[0]===e[0]&&t[1]===e[1]}function Ql(t,e,n,s=1){const o=n,r=Math.max(e,.1),a=t[0]&&t[0][0]&&typeof t[0][0]=="number"?[t]:t,i=[0,0];if(o)for(const c of a)Pn(c,i,o);const l=Yl(a,r,s);if(o){for(const c of a)Pn(c,i,-o);Jl(l,i,-o)}return l}function Yl(t,e,n){const s=[];for(const c of t){const f=[...c];Kl(f[0],f[f.length-1])||f.push([f[0][0],f[0][1]]),f.length>2&&s.push(f)}const o=[];e=Math.max(e,.1);const r=[];for(const c of s)for(let f=0;f<c.length-1;f++){const h=c[f],d=c[f+1];if(h[1]!==d[1]){const u=Math.min(h[1],d[1]);r.push({ymin:u,ymax:Math.max(h[1],d[1]),x:u===h[1]?h[0]:d[0],islope:(d[0]-h[0])/(d[1]-h[1])})}}if(r.sort((c,f)=>c.ymin<f.ymin?-1:c.ymin>f.ymin?1:c.x<f.x?-1:c.x>f.x?1:c.ymax===f.ymax?0:(c.ymax-f.ymax)/Math.abs(c.ymax-f.ymax)),!r.length)return o;let a=[],i=r[0].ymin,l=0;for(;a.length||r.length;){if(r.length){let c=-1;for(let h=0;h<r.length&&!(r[h].ymin>i);h++)c=h;r.splice(0,c+1).forEach(h=>{a.push({s:i,edge:h})})}if(a=a.filter(c=>!(c.edge.ymax<=i)),a.sort((c,f)=>c.edge.x===f.edge.x?0:(c.edge.x-f.edge.x)/Math.abs(c.edge.x-f.edge.x)),(n!==1||l%e===0)&&a.length>1)for(let c=0;c<a.length;c=c+2){const f=c+1;if(f>=a.length)break;const h=a[c].edge,d=a[f].edge;o.push([[Math.round(h.x),i],[Math.round(d.x),i]])}i+=n,a.forEach(c=>{c.edge.x=c.edge.x+n*c.edge.islope}),l++}return o}function _t(t,e){var n;const s=e.hachureAngle+90;let o=e.hachureGap;o<0&&(o=e.strokeWidth*4),o=Math.round(Math.max(o,.1));let r=1;return e.roughness>=1&&(((n=e.randomizer)===null||n===void 0?void 0:n.next())||Math.random())>.7&&(r=o),Ql(t,o,s,r||1)}class Un{constructor(e){this.helper=e}fillPolygons(e,n){return this._fillPolygons(e,n)}_fillPolygons(e,n){const s=_t(e,n);return{type:"fillSketch",ops:this.renderLines(s,n)}}renderLines(e,n){const s=[];for(const o of e)s.push(...this.helper.doubleLineOps(o[0][0],o[0][1],o[1][0],o[1][1],n));return s}}function sn(t){const e=t[0],n=t[1];return Math.sqrt(Math.pow(e[0]-n[0],2)+Math.pow(e[1]-n[1],2))}class Zl extends Un{fillPolygons(e,n){let s=n.hachureGap;s<0&&(s=n.strokeWidth*4),s=Math.max(s,.1);const o=Object.assign({},n,{hachureGap:s}),r=_t(e,o),a=Math.PI/180*n.hachureAngle,i=[],l=s*.5*Math.cos(a),c=s*.5*Math.sin(a);for(const[h,d]of r)sn([h,d])&&i.push([[h[0]-l,h[1]+c],[...d]],[[h[0]+l,h[1]-c],[...d]]);return{type:"fillSketch",ops:this.renderLines(i,n)}}}class Xl extends Un{fillPolygons(e,n){const s=this._fillPolygons(e,n),o=Object.assign({},n,{hachureAngle:n.hachureAngle+90}),r=this._fillPolygons(e,o);return s.ops=s.ops.concat(r.ops),s}}class ec{constructor(e){this.helper=e}fillPolygons(e,n){n=Object.assign({},n,{hachureAngle:0});const s=_t(e,n);return this.dotsOnLines(s,n)}dotsOnLines(e,n){const s=[];let o=n.hachureGap;o<0&&(o=n.strokeWidth*4),o=Math.max(o,.1);let r=n.fillWeight;r<0&&(r=n.strokeWidth/2);const a=o/4;for(const i of e){const l=sn(i),c=l/o,f=Math.ceil(c)-1,h=l-f*o,d=(i[0][0]+i[1][0])/2-o/4,u=Math.min(i[0][1],i[1][1]);for(let g=0;g<f;g++){const p=u+h+g*o,m=d-a+Math.random()*2*a,y=p-a+Math.random()*2*a,v=this.helper.ellipse(m,y,r,r,n);s.push(...v.ops)}}return{type:"fillSketch",ops:s}}}class tc{constructor(e){this.helper=e}fillPolygons(e,n){const s=_t(e,n);return{type:"fillSketch",ops:this.dashedLine(s,n)}}dashedLine(e,n){const s=n.dashOffset<0?n.hachureGap<0?n.strokeWidth*4:n.hachureGap:n.dashOffset,o=n.dashGap<0?n.hachureGap<0?n.strokeWidth*4:n.hachureGap:n.dashGap,r=[];return e.forEach(a=>{const i=sn(a),l=Math.floor(i/(s+o)),c=(i+o-l*(s+o))/2;let f=a[0],h=a[1];f[0]>h[0]&&(f=a[1],h=a[0]);
143const d=Math.atan((h[1]-f[1])/(h[0]-f[0]));for(let u=0;u<l;u++){const g=u*(s+o),p=g+s,m=[f[0]+g*Math.cos(d)+c*Math.cos(d),f[1]+g*Math.sin(d)+c*Math.sin(d)],y=[f[0]+p*Math.cos(d)+c*Math.cos(d),f[1]+p*Math.sin(d)+c*Math.sin(d)];r.push(...this.helper.doubleLineOps(m[0],m[1],y[0],y[1],n))}}),r}}class nc{constructor(e){this.helper=e}fillPolygons(e,n){const s=n.hachureGap<0?n.strokeWidth*4:n.hachureGap,o=n.zigzagOffset<0?s:n.zigzagOffset;n=Object.assign({},n,{hachureGap:s+o});const r=_t(e,n);return{type:"fillSketch",ops:this.zigzagLines(r,o,n)}}zigzagLines(e,n,s){const o=[];return e.forEach(r=>{const a=sn(r),i=Math.round(a/(2*n));let l=r[0],c=r[1];l[0]>c[0]&&(l=r[1],c=r[0]);const f=Math.atan((c[1]-l[1])/(c[0]-l[0]));for(let h=0;h<i;h++){const d=h*2*n,u=(h+1)*2*n,g=Math.sqrt(2*Math.pow(n,2)),p=[l[0]+d*Math.cos(f),l[1]+d*Math.sin(f)],m=[l[0]+u*Math.cos(f),l[1]+u*Math.sin(f)],y=[p[0]+g*Math.cos(f+Math.PI/4),p[1]+g*Math.sin(f+Math.PI/4)];o.push(...this.helper.doubleLineOps(p[0],p[1],y[0],y[1],s),...this.helper.doubleLineOps(y[0],y[1],m[0],m[1],s))}}),o}}const U={};function sc(t,e){let n=t.fillStyle||"hachure";if(!U[n])switch(n){case"zigzag":U[n]||(U[n]=new Zl(e));break;case"cross-hatch":U[n]||(U[n]=new Xl(e));break;case"dots":U[n]||(U[n]=new ec(e));break;case"dashed":U[n]||(U[n]=new tc(e));break;case"zigzag-line":U[n]||(U[n]=new nc(e));break;case"hachure":default:n="hachure",U[n]||(U[n]=new Un(e));break}return U[n]}const oc=0,Cn=1,Fo=2,Ct={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function rc(t){const e=new Array;for(;t!=="";)if(t.match(/^([ \t\r\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:oc,text:RegExp.$1},t=t.substr(RegExp.$1.length);else if(t.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))e[e.length]={type:Cn,text:`${parseFloat(RegExp.$1)}`},t=t.substr(RegExp.$1.length);else return[];return e[e.length]={type:Fo,text:""},e}function pn(t,e){return t.type===e}function Jn(t){const e=[],n=rc(t);let s="BOD",o=0,r=n[o];for(;!pn(r,Fo);){let a=0;const i=[];if(s==="BOD")if(r.text==="M"||r.text==="m")o++,a=Ct[r.text],s=r.text;else return Jn("M0,0"+t);else pn(r,Cn)?a=Ct[s]:(o++,a=Ct[r.text],s=r.text);if(o+a<n.length){for(let l=o;l<o+a;l++){const c=n[l];if(pn(c,Cn))i[i.length]=+c.text;else throw new Error("Param not a number: "+s+","+c.text)}if(typeof Ct[s]=="number"){const l={key:s,data:i};e.push(l),o+=a,r=n[o],s==="M"&&(s="L"),s==="m"&&(s="l")}else throw new Error("Bad segment: "+s)}else throw new Error("Path data ended short")}return e}function Vo(t){let e=0,n=0,s=0,o=0;const r=[];for(const{key:a,data:i}of t)switch(a){case"M":r.push({key:"M",data:[...i]}),[e,n]=i,[s,o]=i;break;case"m":e+=i[0],n+=i[1],r.push({key:"M",data:[e,n]}),s=e,o=n;break;case"L":r.push({key:"L",data:[...i]}),[e,n]=i;break;case"l":e+=i[0],n+=i[1],r.push({key:"L",data:[e,n]});break;case"C":r.push({key:"C",data:[...i]}),e=i[4],n=i[5];break;case"c":{const l=i.map((c,f)=>f%2?c+n:c+e);r.push({key:"C",data:l}),e=l[4],n=l[5];break}case"Q":r.push({key:"Q",data:[...i]}),e=i[2],n=i[3];break;case"q":{const l=i.map((c,f)=>f%2?c+n:c+e);r.push({key:"Q",data:l}),e=l[2],n=l[3];break}case"A":r.push({key:"A",data:[...i]}),e=i[5],n=i[6];break;case"a":e+=i[5],n+=i[6],r.push({key:"A",data:[i[0],i[1],i[2],i[3],i[4],e,
143n]});break;case"H":r.push({key:"H",data:[...i]}),e=i[0];break;case"h":e+=i[0],r.push({key:"H",data:[e]});break;case"V":r.push({key:"V",data:[...i]}),n=i[0];break;case"v":n+=i[0],r.push({key:"V",data:[n]});break;case"S":r.push({key:"S",data:[...i]}),e=i[2],n=i[3];break;case"s":{const l=i.map((c,f)=>f%2?c+n:c+e);r.push({key:"S",data:l}),e=l[2],n=l[3];break}case"T":r.push({key:"T",data:[...i]}),e=i[0],n=i[1];break;case"t":e+=i[0],n+=i[1],r.push({key:"T",data:[e,n]});break;case"Z":case"z":r.push({key:"Z",data:[]}),e=s,n=o;break}return r}function Wo(t){const e=[];let n="",s=0,o=0,r=0,a=0,i=0,l=0;for(const{key:c,data:f}of t){switch(c){case"M":e.push({key:"M",data:[...f]}),[s,o]=f,[r,a]=f;break;case"C":e.push({key:"C",data:[...f]}),s=f[4],o=f[5],i=f[2],l=f[3];break;case"L":e.push({key:"L",data:[...f]}),[s,o]=f;break;case"H":s=f[0],e.push({key:"L",data:[s,o]});break;case"V":o=f[0],e.push({key:"L",data:[s,o]});break;case"S":{let h=0,d=0;n==="C"||n==="S"?(h=s+(s-i),d=o+(o-l)):(h=s,d=o),e.push({key:"C",data:[h,d,...f]}),i=f[0],l=f[1],s=f[2],o=f[3];break}case"T":{const[h,d]=f;let u=0,g=0;n==="Q"||n==="T"?(u=s+(s-i),g=o+(o-l)):(u=s,g=o);const p=s+2*(u-s)/3,m=o+2*(g-o)/3,y=h+2*(u-h)/3,v=d+2*(g-d)/3;e.push({key:"C",data:[p,m,y,v,h,d]}),i=u,l=g,s=h,o=d;break}case"Q":{const[h,d,u,g]=f,p=s+2*(h-s)/3,m=o+2*(d-o)/3,y=u+2*(h-u)/3,v=g+2*(d-g)/3;e.push({key:"C",data:[p,m,y,v,u,g]}),i=h,l=d,s=u,o=g;break}case"A":{const h=Math.abs(f[0]),d=Math.abs(f[1]),u=f[2],g=f[3],p=f[4],m=f[5],y=f[6];h===0||d===0?(e.push({key:"C",data:[s,o,m,y,m,y]}),s=m,o=y):(s!==m||o!==y)&&(zo(s,o,m,y,h,d,u,g,p).forEach(function(b){e.push({key:"C",data:b})}),s=m,o=y);break}case"Z":e.push({key:"Z",data:[]}),s=r,o=a;break}n=c}return e}function ac(t){return Math.PI*t/180}function ht(t,e,n){const s=t*Math.cos(n)-e*Math.sin(n),o=t*Math.sin(n)+e*Math.cos(n);return[s,o]}function zo(t,e,n,s,o,r,a,i,l,c){const f=ac(a);let h=[],d=0,u=0,g=0,p=0;if(c)[d,u,g,p]=c;else{[t,e]=ht(t,e,-f),[n,s]=ht(n,s,-f);const P=(t-n)/2,x=(e-s)/2;let W=P*P/(o*o)+x*x/(r*r);W>1&&(W=Math.sqrt(W),o=W*o,r=W*r);const H=i===l?-1:1,I=o*o,ae=r*r,ce=I*ae-I*x*x-ae*P*P,ct=I*x*x+ae*P*P,K=H*Math.sqrt(Math.abs(ce/ct));g=K*o*x/r+(t+n)/2,p=K*-r*P/o+(e+s)/2,d=Math.asin(parseFloat(((e-p)/r).toFixed(9))),u=Math.asin(parseFloat(((s-p)/r).toFixed(9))),t<g&&(d=Math.PI-d),n<g&&(u=Math.PI-u),d<0&&(d=Math.PI*2+d),u<0&&(u=Math.PI*2+u),l&&d>u&&(d=d-Math.PI*2),!l&&u>d&&(u=u-Math.PI*2)}let m=u-d;if(Math.abs(m)>Math.PI*120/180){const P=u,x=n,W=s;l&&u>d?u=d+Math.PI*120/180*1:u=d+Math.PI*120/180*-1,n=g+o*Math.cos(u),s=p+r*Math.sin(u),h=zo(n,s,x,W,o,r,a,0,l,[u,P,g,p])}m=u-d;const y=Math.cos(d),v=Math.sin(d),b=Math.cos(u),w=Math.sin(u),k=Math.tan(m/4),A=4/3*o*k,D=4/3*r*k,V=[t,e],q=[t+A*v,e-D*y],le=[n+A*w,s-D*b],Z=[n,s];if(q[0]=2*V[0]-q[0],q[1]=2*V[1]-q[1],c)return[q,le,Z].concat(h);{h=[q,le,Z].concat(h);const P=[];for(let x=0;x<h.length;x+=3){const W=ht(h[x][0],h[x][1],f),H=ht(h[x+1][0],h[x+1][1],f),I=ht(h[x+2][0],h[x+2][1],f);P.push([W[0],W[1],H[0],H[1],I[0],I[1]])}return P}}const ic={randOffset:uc,randOffsetWithRange:fc,ellipse:Ln,doubleLineOps:dc};function X(t,e,n,s,o){return{type:"path",ops:fe(t,e,n,s,o)}}function vt(t,e,n){const s=(t||[]).length;if(s>2){const o=[];for(let r=0;r<s-1;r++)o.push(...fe(t[r][0],t[r][1],t[r+1][0],t[r+1][1],n));return e&&o.push(...fe(t[s-1][0],t[s-1][1],t[0][0],t[0][1],n)),{type:"path",ops:o}}else if(s===2)return X(t[0][0],t[0][1],t[1][0],t[1][1],n);return{type:"path",ops:[]}}function lc(t,e){return vt(t,!0,e)}function Bo(t,e,n,s,o){const r=[[t,e],[t+n,e],[t+n,e+s],[t,e+s]];return lc(r,o)}function Us(t,e){if(t.length){const s=typeof t[0][0]=="number"?[t]:t,o=Lt(s[0],1*(1+e.roughness*.2),e),r=e.disableMultiStroke?[]:Lt(s[0],1.5*(1+e.roughness*.22),Qs(e));for(let a=1;a<s.length;a++){const i=s[a];if(i.length){const l=Lt(i,1*(1+e.roughness*.2),e),c=e.disableMultiStroke?[]:Lt(i,1.5*(1+e.roughness*.22),Qs(e));for(const f of l)f.op!=="move"&&o.push(f);for(const f of c)f.op!=="move"&&r.push(f)}}return{type:"path",ops:o.concat(r)}}return{type:"path",ops:[]}}function Ln(t,e,n,s,o){const r=Go(n,s,o);return $n(t,e,o,r).opset}function Go(t,e,n){const s=Math.sqrt(Math.PI*2*Math.sqrt((Math.pow(t/2,2)+Math.pow(e/2,2))/2)),o=Math.ceil(Math.max(n.curveStepCount,n.curveStepCount/Math.sqrt(200)*s)),r=Math.PI*2/o;let a=Math.abs(t/2),i=Math.abs(e/2);const l=1-n.curveFitting;return a+=S(a*l,n),i+=S(i*l,n),{increment:r,rx:a,ry:i}}function $n(t,e,n,s){const[o,r]=Ys(s.increment,t,e,s.rx,s.ry,1,s.increment*Gt(.1,Gt(.4,1,n),n),n);let a=qt(o,null,n);if(!n.disableMultiStroke&&n.roughness!==0){const[i]=Ys(s.increment,t,e,s.rx,s.ry,1.5,0,n),l=qt(i,null,
143n);a=a.concat(l)}return{estimatedPoints:r,opset:{type:"path",ops:a}}}function Js(t,e,n,s,o,r,a,i,l){const c=t,f=e;let h=Math.abs(n/2),d=Math.abs(s/2);h+=S(h*.01,l),d+=S(d*.01,l);let u=o,g=r;for(;u<0;)u+=Math.PI*2,g+=Math.PI*2;g-u>Math.PI*2&&(u=0,g=Math.PI*2);const p=Math.PI*2/l.curveStepCount,m=Math.min(p/2,(g-u)/2),y=Zs(m,c,f,h,d,u,g,1,l);if(!l.disableMultiStroke){const v=Zs(m,c,f,h,d,u,g,1.5,l);y.push(...v)}return a&&(i?y.push(...fe(c,f,c+h*Math.cos(u),f+d*Math.sin(u),l),...fe(c,f,c+h*Math.cos(g),f+d*Math.sin(g),l)):y.push({op:"lineTo",data:[c,f]},{op:"lineTo",data:[c+h*Math.cos(u),f+d*Math.sin(u)]})),{type:"path",ops:y}}function Ks(t,e){const n=Wo(Vo(Jn(t))),s=[];let o=[0,0],r=[0,0];for(const{key:a,data:i}of n)switch(a){case"M":{r=[i[0],i[1]],o=[i[0],i[1]];break}case"L":s.push(...fe(r[0],r[1],i[0],i[1],e)),r=[i[0],i[1]];break;case"C":{const[l,c,f,h,d,u]=i;s.push(...hc(l,c,f,h,d,u,r,e)),r=[d,u];break}case"Z":s.push(...fe(r[0],r[1],o[0],o[1],e)),r=[o[0],o[1]];break}return{type:"path",ops:s}}function gn(t,e){const n=[];for(const s of t)if(s.length){const o=e.maxRandomnessOffset||0,r=s.length;if(r>2){n.push({op:"move",data:[s[0][0]+S(o,e),s[0][1]+S(o,e)]});for(let a=1;a<r;a++)n.push({op:"lineTo",data:[s[a][0]+S(o,e),s[a][1]+S(o,e)]})}}return{type:"fillPath",ops:n}}function tt(t,e){return sc(e,ic).fillPolygons(t,e)}function cc(t,e,n,s,o,r,a){const i=t,l=e;let c=Math.abs(n/2),f=Math.abs(s/2);c+=S(c*.01,a),f+=S(f*.01,a);let h=o,d=r;for(;h<0;)h+=Math.PI*2,d+=Math.PI*2;d-h>Math.PI*2&&(h=0,d=Math.PI*2);const u=(d-h)/a.curveStepCount,g=[];for(let p=h;p<=d;p=p+u)g.push([i+c*Math.cos(p),l+f*Math.sin(p)]);
143return g.push([i+c*Math.cos(d),l+f*Math.sin(d)]),g.push([i,l]),tt([g],a)}function uc(t,e){return S(t,e)}function fc(t,e,n){return Gt(t,e,n)}function dc(t,e,n,s,o){return fe(t,e,n,s,o,!0)}function Qs(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function qo(t){return t.randomizer||(t.randomizer=new Ul(t.seed||0)),t.randomizer.next()}function Gt(t,e,n,s=1){return n.roughness*s*(qo(n)*(e-t)+t)}function S(t,e,n=1){return Gt(-t,t,e,n)}function fe(t,e,n,s,o,r=!1){const a=r?o.disableMultiStrokeFill:o.disableMultiStroke,i=An(t,e,n,s,o,!0,!1);if(a)return i;const l=An(t,e,n,s,o,!0,!0);return i.concat(l)}function An(t,e,n,s,o,r,a){const i=Math.pow(t-n,2)+Math.pow(e-s,2),l=Math.sqrt(i);let c=1;l<200?c=1:l>500?c=.4:c=-.0016668*l+1.233334;let f=o.maxRandomnessOffset||0;f*f*100>i&&(f=l/10);const h=f/2,d=.2+qo(o)*.2;let u=o.bowing*o.maxRandomnessOffset*(s-e)/200,g=o.bowing*o.maxRandomnessOffset*(t-n)/200;u=S(u,o,c),g=S(g,o,c);const p=[],m=()=>S(h,o,c),y=()=>S(f,o,c),v=o.preserveVertices;return a?p.push({op:"move",data:[t+(v?0:m()),e+(v?0:m())]}):p.push({op:"move",data:[t+(v?0:S(f,o,c)),e+(v?0:S(f,o,c))]}),a?p.push({op:"bcurveTo",data:[u+t+(n-t)*d+m(),g+e+(s-e)*d+m(),u+t+2*(n-t)*d+m(),g+e+2*(s-e)*d+m(),n+(v?0:m()),s+(v?0:m())]}):p.push({op:"bcurveTo",data:[u+t+(n-t)*d+y(),g+e+(s-e)*d+y(),u+t+2*(n-t)*d+y(),g+e+2*(s-e)*d+y(),n+(v?0:y()),s+(v?0:y())]}),p}function Lt(t,e,n){if(!t.length)return[];const s=[];
vendor: 6,380 bytes, line 143
143s.push([t[0][0]+S(e,n),t[0][1]+S(e,n)]),s.push([t[0][0]+S(e,n),t[0][1]+S(e,n)]);for(let o=1;o<t.length;o++)s.push([t[o][0]+S(e,n),t[o][1]+S(e,n)]),o===t.length-1&&s.push([t[o][0]+S(e,n),t[o][1]+S(e,n)]);return qt(s,null,n)}function qt(t,e,n){const s=t.length,o=[];if(s>3){const r=[],a=1-n.curveTightness;o.push({op:"move",data:[t[1][0],t[1][1]]});for(let i=1;i+2<s;i++){const l=t[i];r[0]=[l[0],l[1]],r[1]=[l[0]+(a*t[i+1][0]-a*t[i-1][0])/6,l[1]+(a*t[i+1][1]-a*t[i-1][1])/6],r[2]=[t[i+1][0]+(a*t[i][0]-a*t[i+2][0])/6,t[i+1][1]+(a*t[i][1]-a*t[i+2][1])/6],r[3]=[t[i+1][0],t[i+1][1]],o.push({op:"bcurveTo",data:[r[1][0],r[1][1],r[2][0],r[2][1],r[3][0],r[3][1]]})}}else s===3?(o.push({op:"move",data:[t[1][0],t[1][1]]}),o.push({op:"bcurveTo",data:[t[1][0],t[1][1],t[2][0],t[2][1],t[2][0],t[2][1]]})):s===2&&o.push(...An(t[0][0],t[0][1],t[1][0],t[1][1],n,!0,!0));return o}function Ys(t,e,n,s,o,r,a,i){const l=i.roughness===0,c=[],f=[];if(l){t=t/4,f.push([e+s*Math.cos(-t),n+o*Math.sin(-t)]);for(let h=0;h<=Math.PI*2;h=h+t){const d=[e+s*Math.cos(h),n+o*Math.sin(h)];c.push(d),f.push(d)}f.push([e+s*Math.cos(0),n+o*Math.sin(0)]),f.push([e+s*Math.cos(t),n+o*Math.sin(t)])}else{const h=S(.5,i)-Math.PI/2;f.push([S(r,i)+e+.9*s*Math.cos(h-t),S(r,i)+n+.9*o*Math.sin(h-t)]);const d=Math.PI*2+h-.01;for(let u=h;u<d;u=u+t){const g=[S(r,i)+e+s*Math.cos(u),S(r,i)+n+o*Math.sin(u)];c.push(g),f.push(g)}f.push([S(r,i)+e+s*Math.cos(h+Math.PI*2+a*.5),S(r,i)+n+o*Math.sin(h+Math.PI*2+a*.5)]),f.push([S(r,i)+e+.98*s*Math.cos(h+a),S(r,i)+n+.98*o*Math.sin(h+a)]),f.push([S(r,i)+e+.9*s*Math.cos(h+a*.5),S(r,i)+n+.9*o*Math.sin(h+a*.5)])}return[f,c]}function Zs(t,e,n,s,o,r,a,i,l){const c=r+S(.1,l),f=[];f.push([S(i,l)+e+.9*s*Math.cos(c-t),S(i,l)+n+.9*o*Math.sin(c-t)]);for(let h=c;h<=a;h=h+t)f.push([S(i,l)+e+s*Math.cos(h),S(i,l)+n+o*Math.sin(h)]);return f.push([e+s*Math.cos(a),n+o*Math.sin(a)]),f.push([e+s*Math.cos(a),n+o*Math.sin(a)]),qt(f,null,l)}function hc(t,e,n,s,o,r,a,i){const l=[],c=[i.maxRandomnessOffset||1,(i.maxRandomnessOffset||1)+.3];let f=[0,0];const h=i.disableMultiStroke?1:2,d=i.preserveVertices;for(let u=0;u<h;u++)u===0?l.push({op:"move",data:[a[0],a[1]]}):l.push({op:"move",data:[a[0]+(d?0:S(c[0],i)),a[1]+(d?0:S(c[0],i))]}),f=d?[o,r]:[o+S(c[u],i),r+S(c[u],i)],l.push({op:"bcurveTo",data:[t+S(c[u],i),e+S(c[u],i),n+S(c[u],i),s+S(c[u],i),f[0],f[1]]});return l}function pt(t){return[...t]}function Xs(t,e=0){const n=t.length;if(n<3)throw new Error("A curve must have at least three points.");const s=[];if(n===3)s.push(pt(t[0]),pt(t[1]),pt(t[2]),pt(t[2]));else{const o=[];o.push(t[0],t[0]);for(let i=1;i<t.length;i++)o.push(t[i]),i===t.length-1&&o.push(t[i]);const r=[],a=1-e;s.push(pt(o[0]));for(let i=1;i+2<o.length;i++){const l=o[i];r[0]=[l[0],l[1]],r[1]=[l[0]+(a*o[i+1][0]-a*o[i-1][0])/6,l[1]+(a*o[i+1][1]-a*o[i-1][1])/6],r[2]=[o[i+1][0]+(a*o[i][0]-a*o[i+2][0])/6,o[i+1][1]+(a*o[i][1]-a*o[i+2][1])/6],r[3]=[o[i+1][0],o[i+1][1]],s.push(r[1],r[2],r[3])}}return s}function pc(t,e){return Math.sqrt(Nt(t,e))}function Nt(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function gc(t,e,n){const s=Nt(e,n);if(s===0)return Nt(t,e);let o=((t[0]-e[0])*(n[0]-e[0])+(t[1]-e[1])*(n[1]-e[1]))/s;return o=Math.max(0,Math.min(1,o)),Nt(t,Je(e,n,o))}function Je(t,e,n){return[t[0]+(e[0]-t[0])*n,t[1]+(e[1]-t[1])*n]}function mc(t,e){const n=t[e+0],s=t[e+1],o=t[e+2],r=t[e+3];let a=3*s[0]-2*n[0]-r[0];a*=a;let i=3*s[1]-2*n[1]-r[1];i*=i;let l=3*o[0]-2*r[0]-n[0];l*=l;let c=3*o[1]-2*r[1]-n[1];return c*=c,a<l&&(a=l),i<c&&(i=c),a+i}function xn(t,e,n,s){const o=s||[];if(mc(t,e)<n){const r=t[e+0];o.length?pc(o[o.length-1],r)>1&&o.push(r):o.push(r),o.push(t[e+3])}else{const a=t[e+0],i=t[e+1],l=t[e+2],c=t[e+3],f=Je(a,i,.5),h=Je(i,l,.5),d=Je(l,c,.5),u=Je(f,h,.5),g=Je(h,d,.5),p=Je(u,g,.5);xn([a,f,u,p],0,n,o),xn([p,g,d,c],0,n,o)}return o}function yc(t,e){return Ut(t,0,t.length,e)}function Ut(t,e,n,s,o){const r=o||[],a=t[e],i=t[n-1];let l=0,c=1;for(let f=e+1;f<n-1;++f){const h=gc(t[f],a,i);h>l&&(l=h,c=f)}return Math.sqrt(l)>s?(Ut(t,e,c+1,s,r),Ut(t,c,n,s,r)):(r.length||r.push(a),r.push(i)),r}function Dn(t,e=.15,n){const s=[],o=(t.length-1)/3;for(let r=0;r<o;r++){const a=r*3;xn(t,a,e,s)}return n&&n>0?Ut(s,0,s.length,n):s}function vc(t,e,n){const s=Jn(t),o=Wo(Vo(s)),r=[];let a=[],i=[0,0],l=[];const c=()=>{l.length>=4&&a.push(...Dn(l,e)),l=[]},f=()=>{c(),a.length&&(r.push(a),a=[])};for(const{key:d,data:u}of o)switch(d){case"M":f(),i=[u[0],u[1]],a.push(i);break;case"L":c(),a.push([u[0],u[1]]);break;case"C":if(!l.length){const g=a.length?a[a.length-1]:i;l.push([g[0],g[1]])}l.push([u[0],u[1]]),l.push([u[2],u[3]]),l.push([u[4],u[5]]);break;case"Z":c(),a.push([i[0],i[1]]);break}if(f(),!n)return r;const h=[];for(const d of r){const u=yc(d,n);u.length&&h.push(u)}return h}const Q="none";class bc{constructor(e){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=e||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Ho()}_o(e){return e?Object.assign({},this.defaultOptions,e):this.defaultOptions}_d(e,n,s){return{shape:e,sets:n||[],options:s||this.defaultOptions}}line(e,n,s,o,r){const a=this._o(r);return this._d("line",[X(e,n,s,o,a)],a)}rectangle(e,n,s,o,r){const a=this._o(r),i=[],l=Bo(e,n,s,o,a);if(a.fill){const c=[[e,n],[e+s,n],[e+s,n+o],[e,n+o]];a.fillStyle==="solid"?i.push(gn([c],a)):i.push(tt([c],a))}return a.stroke!==Q&&i.push(l),this._d("rectangle",i,a)}ellipse(e,n,s,o,r){const a=this._o(r),i=[],l=Go(s,o,a),c=$n(e,n,a,l);if(a.fill)if(a.fillStyle==="solid"){const f=$n(e,n,a,l).opset;f.type="fillPath",i.push(f)}else i.push(tt([c.estimatedPoints],a));return a.stroke!==Q&&i.push(c.opset),this._d("ellipse",i,a)}circle(e,n,s,o){const r=this.ellipse(e,n,s,s,o);return r.shape="circle",r}linearPath(e,n){const s=this._o(n);return this._d("linearPath",[vt(e,!1,s)],s)}arc(e,n,s,o,r,a,i=!1,l){const c=this._o(l),f=[],h=Js(e,n,s,o,r,a,i,!0,c);if(i&&c.fill)if(c.fillStyle==="solid"){const d=Object.assign({},c);d.disableMultiStroke=!0;const u=Js(e,n,s,o,r,a,!0,!1,d);u.type="fillPath",f.push(u)}else f.push(cc(e,n,s,o,r,a,c));
143return c.stroke!==Q&&f.push(h),this._d("arc",f,c)}curve(e,n){const s=this._o(n),o=[],r=Us(e,s);if(s.fill&&s.fill!==Q)if(s.fillStyle==="solid"){const a=Us(e,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));o.push({type:"fillPath",ops:this._mergedShape(a.ops)})}else{const a=[],i=e;if(i.length){const c=typeof i[0][0]=="number"?[i]:i;for(const f of c)f.length<3?a.push(...f):f.length===3?a.push(...Dn(Xs([f[0],f[0],f[1],f[2]]),10,(1+s.roughness)/2)):a.push(...Dn(Xs(f),10,(1+s.roughness)/2))}a.length&&o.push(tt([a],s))}return s.stroke!==Q&&o.push(r),this._d("curve",o,s)}polygon(e,n){const s=this._o(n),o=[],r=vt(e,!0,s);return s.fill&&(s.fillStyle==="solid"?o.push(gn([e],s)):o.push(tt([e],s))),s.stroke!==Q&&o.push(r),this._d("polygon",o,s)}path(e,n){const s=this._o(n),o=[];if(!e)return this._d("path",o,s);e=(e||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");const r=s.fill&&s.fill!=="transparent"&&s.fill!==Q,a=s.stroke!==Q,i=!!(s.simplification&&s.simplification<1),l=i?4-4*(s.simplification||1):(1+s.roughness)/2,c=vc(e,1,l),f=Ks(e,s);if(r)if(s.fillStyle==="solid")if(c.length===1){const h=Ks(e,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));o.push({type:"fillPath",ops:this._mergedShape(h.ops)})}else o.push(gn(c,s));else o.push(tt(c,s));return a&&(i?c.forEach(h=>{o.push(vt(h,!1,s))}):o.push(f)),this._d("path",o,s)}opsToPath(e,n){let s="";for(const o of e.ops){const r=typeof n=="number"&&n>=0?o.data.map(a=>+a.toFixed(n)):o.data;switch(o.op){case"move":s+=`M${r[0]} ${r[1]} `;break;case"bcurveTo":s+=`C${r[0]} ${r[1]}, ${r[2]} ${r[3]}, ${r[4]} ${r[5]} `;break;case"lineTo":s+=`L${r[0]} ${r[1]} `;break}}return s.trim()}toPaths(e){const n=e.sets||[],s=e.options||this.defaultOptions,o=[];for(const r of n){let a=null;switch(r.type){case"path":a={d:this.opsToPath(r),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:Q};break;case"fillPath":a={d:this.opsToPath(r),stroke:Q,strokeWidth:0,fill:s.fill||Q};break;case"fillSketch":a=this.fillSketch(r,s);break}a&&o.push(a)}return o}fillSketch(e,n){let s=n.fillWeight;return s<0&&(s=n.strokeWidth/2),{d:this.opsToPath(e),stroke:n.fill||Q,strokeWidth:s,fill:Q}}_mergedShape(e){return e.filter((n,s)=>s===0?!0:n.op!=="move")}}const Uo="http://www.w3.org/2000/svg",wc=800;let mn=null;function _c(){return mn||(mn=new bc().defaultOptions),mn}function yn(t,e,n){return{..._c(),maxRandomnessOffset:2,roughness:t==="highlight"?3:1.5,bowing:1,stroke:"#000",strokeWidth:1.5,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,disableMultiStroke:t!=="double",disableMultiStrokeFill:!1,seed:e,...n}}function kc(t){const e=t.padding;if(e||e===0){if(typeof e=="number")return[e,e,e,e];if(Array.isArray(e)){const n=e;if(n.length)switch(n.length){case 4:return[...n];case 1:return[n[0],n[0],n[0],n[0]];case 2:return[...n,...n];case 3:return[...n,n[1]];default:return[n[0],n[1],n[2],n[3]]}}}return[5,5,5,5]}function Sc(t,e,n,s,o,r){const a=[];let i=n.strokeWidth||2;const l=kc(n),c=n.animate===void 0?!0:!!n.animate,f=n.iterations||2,h=n.rtl?1:0,d=yn("single",r,n);switch(n.type){case"underline":{const u=e.y+e.h+l[2];for(let g=h;g<f+h;g++)g%2?a.push(X(e.x+e.w,u,e.x,u,d)):a.push(X(e.x,u,e.x+e.w,u,d));break}case"strike-through":{const u=e.y+e.h/2;for(let g=h;g<f+h;g++)g%2?a.push(X(e.x+e.w,u,e.x,u,d)):a.push(X(e.x,u,e.x+e.w,u,d));break}case"box":{const u=e.x-l[3],g=e.y-l[0],p=e.w+(l[1]+l[3]),m=e.h+(l[0]+l[2]);for(let y=0;y<f;y++)a.push(Bo(u,g,p,m,d));break}case"bracket":{const u=Array.isArray(n.brackets)?n.brackets:n.brackets?[n.brackets]:["right"],g=e.x-l[3]*2,p=e.x+e.w+l[1]*2,m=e.y-l[0]*2,y=e.y+e.h+l[2]*2;for(const v of u){let b;switch(v){case"bottom":b=[[g,e.y+e.h],[g,y],[p,y],[p,e.y+e.h]];break;case"top":b=[[g,e.y],[g,m],[p,m],[p,e.y]];break;case"left":b=[[e.x,m],[g,m],[g,y],[e.x,y]];break;case"right":b=[[e.x+e.w,m],[p,m],[p,y],[e.x+e.w,y]];break}b&&a.push(vt(b,!1,d))}break}case"crossed-off":{const u=e.x,g=e.y,p=u+e.w,m=g+e.h;for(let y=h;y<f+h;y++)y%2?a.push(X(p,m,u,g,d)):a.push(X(u,g,p,m,d));for(let y=h;y<f+h;y++)y%2?a.push(X(u,m,p,g,d)):a.push(X(p,g,u,m,d));break}case"circle":{const u=yn("double",r,n),g=e.w+(l[1]+l[3]),p=e.h+(l[0]+l[2]),m=e.x-l[3]+g/2,y=e.y-l[0]+p/2,v=Math.floor(f/2),b=f-v*2;for(let w=0;w<v;w++)a.push(Ln(m,y,g,p,u));for(let w=0;w<b;w++)a.push(Ln(m,y,g,p,d));break}case"highlight":{const u=yn("highlight",r,n);i=e.h*.95;const g=e.y+e.h/2;for(let p=h;p<f+h;p++)p%2?a.push(X(e.x+e.w,g,e.x,g,u)):a.push(X(e.x,g,e.x+e.w,g,u));break}}if(a.length){const u=Mc(a),g=[],p=[];let m=0;const y=(v,b,w)=>v.setAttribute(b,w);for(const v of u){const b=document.createElementNS(Uo,"path");
143if(y(b,"d",v),y(b,"fill","none"),y(b,"stroke",n.color||"currentColor"),y(b,"stroke-width",`${i}`),n.opacity!==void 0&&y(b,"style",`opacity:${n.opacity}`),c){const w=b.getTotalLength();g.push(w),m+=w}t.appendChild(b),p.push(b)}if(c){let v=0;for(let b=0;b<p.length;b++){const w=p[b],k=g[b],A=m?o*(k/m):0,D=s+v,V=w.style;V.strokeDashoffset=`${k}`,V.strokeDasharray=`${k}`,V.animation=`rough-notation-dash ${A}ms ease-out ${D}ms forwards`,v+=A}return eo(o+s)}}return eo(0)}function eo(t){return new Promise(e=>setTimeout(e,t))}function Mc(t){const e=[];for(const n of t){let s="";for(const o of n.ops){const r=o.data;switch(o.op){case"move":s.trim()&&e.push(s.trim()),s=`M${r[0]} ${r[1]} `;break;case"bcurveTo":s+=`C${r[0]} ${r[1]}, ${r[2]} ${r[3]}, ${r[4]} ${r[5]} `;break;case"lineTo":s+=`L${r[0]} ${r[1]} `;break}}s.trim()&&e.push(s.trim())}return e}function Tc(){if(!window.__rno_kf_s){const t=window.__rno_kf_s=document.createElement("style");t.textContent="@keyframes rough-notation-dash { to { stroke-dashoffset: 0; } }",document.head.appendChild(t)}}var Oc=Object.defineProperty,Ec=(t,e,n)=>e in t?Oc(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,ne=(t,e,n)=>(Ec(t,typeof e!="symbol"?e+"":e,n),n);class Pc{constructor(e,n){ne(this,"_state","unattached"),ne(this,"_config"),ne(this,"_resizing",!1),ne(this,"_ro"),ne(this,"_seed",Ho()),ne(this,"_e"),ne(this,"_svg"),ne(this,"_lastSizes",[]),ne(this,"_animationDelay",0),ne(this,"_resizeListener",()=>{this._resizing||(this._resizing=!0,setTimeout(()=>{this._resizing=!1,this._state==="showing"&&this.haveRectsChanged()&&this.show()},400))}),ne(this,"pendingRefresh"),this._e=e,this._config=JSON.parse(JSON.stringify(n)),this.attach()}getConfig(e){return this._config[e]}setConfig(e,n){this._config[e]!==n&&(this._config[e]=n,this.refresh())}get animate(){return this._config.animate}set animate(e){this._config.animate=e}get animationDuration(){return this._config.animationDuration}set animationDuration(e){this._config.animationDuration=e}get iterations(){return this._config.iterations}set iterations(e){this._config.iterations=e}get color(){return this._config.color}set color(e){this._config.color!==e&&(this._config.color=e,this.refresh())}get class(){return this._config.class}set class(e){this._config.class!==e&&(this._config.class=e,this._svg&&this._svg.setAttribute("class",["rough-annotation",this._config.class||""].filter(Boolean).join(" ")))}get strokeWidth(){return this._config.strokeWidth}set strokeWidth(e){this._config.strokeWidth!==e&&(this._config.strokeWidth=e,this.refresh())}get padding(){return this._config.padding}set padding(e){this._config.padding!==e&&(this._config.padding=e,this.refresh())}attach(){if(this._state==="unattached"&&this._e.parentElement){Tc();const e=this._svg=document.createElementNS(Uo,"svg");e.setAttribute("class",["rough-annotation",this._config.class||""].filter(Boolean).join(" "));const n=e.style;n.position="absolute",n.top="0",n.left="0",n.overflow="visible",n.pointerEvents="none",n.width="100px",n.height="100px";const s=this._config.type==="highlight";if(this._e.insertAdjacentElement(s?"beforebegin":"afterend",e),this._state="not-showing",s){const o=window.getComputedStyle(this._e).position;(!o||o==="static")&&(this._e.style.position="relative")}this.attachListeners()}}detachListeners(){window.removeEventListener("resize",this._resizeListener),this._ro&&this._ro.unobserve(this._e)}attachListeners(){this.detachListeners(),window.addEventListener("resize",this._resizeListener,{passive:!0}),!this._ro&&"ResizeObserver"in window&&(this._ro=new window.ResizeObserver(e=>{for(const n of e)n.contentRect&&this._resizeListener()})),this._ro&&this._ro.observe(this._e)}haveRectsChanged(){if(this._lastSizes.length){const e=this.rects();if(e.length===this._lastSizes.length){for(let n=0;n<e.length;n++)if(!this.isSameRect(e[n],this._lastSizes[n]))return!0}else return!0}return!1}isSameRect(e,n){const s=(o,r)=>Math.round(o)===Math.round(r);return s(e.x,n.x)&&s(e.y,n.y)&&s(e.w,n.w)&&s(e.h,n.h)}isShowing(){return this._state!=="not-showing"}refresh(){this.isShowing()&&!this.pendingRefresh&&(this.pendingRefresh=Promise.resolve().then(()=>{this.isShowing()&&this.show(),delete this.pendingRefresh}))}async show(){switch(this._state){case"unattached":break;case"showing":this.hide(),this._svg&&await this.render(this._svg,!0);break;case"not-showing":this.attach(),this._svg&&await this.render(this._svg,!1);break}}
143hide(){if(this._svg)for(;this._svg.lastChild;)this._svg.removeChild(this._svg.lastChild);this._state="not-showing"}remove(){this._svg&&this._svg.parentElement&&this._svg.parentElement.removeChild(this._svg),this._svg=void 0,this._state="unattached",this.detachListeners()}async render(e,n){let s=this._config;n&&(s=JSON.parse(JSON.stringify(this._config)),s.animate=!1);const o=this.rects();let r=0;o.forEach(c=>r+=c.w);const a=s.animationDuration||wc;let i=0;const l=[];for(let c=0;c<o.length;c++){const f=o[c],h=a*(f.w/r);l.push(Sc(e,o[c],s,i+this._animationDelay+(this._config.delay||0),h,this._seed)),i+=h}return this._lastSizes=o,this._state="showing",await Promise.all(l)}rects(){const e=[];if(this._svg)if(this._config.multiline){const n=this._e.getClientRects();for(let s=0;s<n.length;s++)e.push(this.svgRect(this._svg,n[s]))}else e.push(this.svgRect(this._svg,this._e.getBoundingClientRect()));return e}svgRect(e,n){const s=e.getBoundingClientRect(),o=n;return{x:(o.x||o.left)-(s.x||s.left),y:(o.y||o.top)-(s.y||s.top),w:o.width,h:o.height}}}function Cc(t,e){return new Pc(t,e)}function J(t,e){return t.class=[t.class,e].filter(Boolean).join(" "),t}const to={box:t=>Object.assign(t,{type:"box"}),circle:t=>Object.assign(t,{type:"circle"}),underline:t=>Object.assign(t,{type:"underline"}),highlight:t=>Object.assign(t,{type:"highlight"}),"strike-through":t=>Object.assign(t,{type:"strike-through"}),"crossed-off":t=>Object.assign(t,{type:"crossed-off"}),bracket:t=>Object.assign(t,{type:"bracket"}),strike:t=>Object.assign(t,{type:"strike-through"}),cross:t=>Object.assign(t,{type:"crossed-off"}),crossed:t=>Object.assign(t,{type:"crossed-off"}),linethrough:t=>Object.assign(t,{type:"strike-through"}),"line-through":t=>Object.assign(t,{type:"strike-through"}),black:t=>J(t,"text-black"),blue:t=>J(t,"text-blue"),cyan:t=>J(t,"text-cyan"),gray:t=>J(t,"text-gray"),green:t=>J(t,"text-green"),indigo:t=>J(t,"text-indigo"),lime:t=>J(t,"text-lime"),orange:t=>J(t,"text-orange"),pink:t=>J(t,"text-pink"),purple:t=>J(t,"text-purple"),red:t=>J(t,"text-red"),teal:t=>J(t,"text-teal"),white:t=>J(t,"text-white"),yellow:t=>J(t,"text-yellow")},Lc=[[/^delay-?(\d+)?$/,(t,e,n)=>{const s=(t[1]?Number.parseInt(t[1]):n)||300;return e.delay=s,e}],[/^(?:op|opacity)-?(\d+)?$/,(t,e,n)=>{const s=(t[1]?Number.parseInt(t[1]):n)||100;return e.opacity=s/100,e}]];function $c(){return{install(t){t.directive("mark",{name:"v-mark",mounted:(e,n)=>{const{isPrintMode:s}=lt(),o=_(()=>{const i=typeof n.value=="object"&&!Array.isArray(n.value)?{...n.value}:{at:n.value};let l={at:i.at};const c=Object.entries(n.modifiers).filter(([h,d])=>{if(to[h])return l=to[h](l,d),!1;for(const[u,g]of Lc){const p=h.match(u);if(p)return l=g(p,l,d),!1}return!0});c.length&&console.warn("[Slidev] Invalid modifiers for v-mark:",c);const f={...l,...i};return f.type||="underline",s.value&&(f.animationDuration=1),f}),r=Cc(e,o.value),a=Rt(e,n,o.value.at);if(!a){r.show();return}e.watchStopHandle=at(()=>{let i;o.value.class&&(r.class=o.value.class),o.value.color&&(r.color=o.value.color);const l=o.value.at;l===!0?i=!0:l===!1?i=!1:i=a.isActive.value,i!=null&&(i?r.show():r.hide())})},unmounted:e=>{e.watchStopHandle?.()}})}}}function Ac(){return{install(t){const e=kr();t.directive("motion",{name:"v-motion",mounted(n,s,o,r){const a=it(s,Qt),i=it(s,Rn),l=it(s,Nn),{currentPage:c,clicks:f,isPrintMode:h}=lt(),d=o.props={...o.props},u={...d.initial,...d.variants?.["slidev-initial"]},g={...d.enter,...d.variants?.["slidev-enter"]},p={...d.leave,...d.variants?.["slidev-leave"]};delete d.initial,delete d.enter,delete d.leave;const m=`${qn()}-`,y=[];for(const b of Object.keys(d))if(b.startsWith("click-")){const w=b.slice(6),k=w.includes("-")?w.split("-").map(Number):+w,A=m+w;y.push({id:A,at:k,variant:{...d[b]},info:a?.value.calculate(k)}),delete d[b]}y.sort((b,w)=>(Array.isArray(b.at)?b.at[0]:b.at)-(Array.isArray(w.at)?w.at[0]:w.at)),e.created(n,s,o,r),e.mounted(n,s,o,r);const v=n.motionInstance;v.clickIds=y.map(b=>b.id),v.set(u),v.watchStopHandle=ee([i,c,f].filter(Boolean),()=>{const b=jo.get(n)?.visibilityState.value??"shown";if(!a?.value||!["slide","presenter"].includes(l?.value??"")){const w={...u,...g};for(const{variant:k}of y)Object.assign(w,k);v.set(w)}else if(h.value||i?.value===c.value)if(b==="shown"){const w={...u,...g};for(const{variant:k,info:A}of y)(!A||A.isActive.value)&&Object.assign(w,k);h.value?v.set(w):v.apply(w)}else v.apply(b==="before"?u:p);else v.apply((i?.value??-1)>c.value?u:p)},{immediate:!0})},unmounted(n){n.motionInstance.watchStopHandle()}})}}}
143const xc=[Object.values([])[0],Object.values([])[0]].filter(Boolean);function Dc(){const t=[];function e(n){if(!N.remote||N.remote===n.query.password)return!0;if(N.remote&&n.query.password===void 0){const s=prompt("Enter password");if(N.remote===s)return!0}return n.params.no?{path:`/${n.params.no}`}:{path:""}}return t.push({name:"entry",path:"/entry",component:()=>M(()=>import("./slidev/entry-vhKDdtTW.js"),__vite__mapDeps([49,2,4,5,50])),beforeEnter:e},{name:"overview",path:"/overview",component:()=>M(()=>import("./slidev/overview-B5oL_qKA.js"),__vite__mapDeps([51,1,2,52,53,54,55,56,57,4,5])),beforeEnter:e},{name:"notes",path:"/notes",component:()=>M(()=>import("./slidev/notes-fU3AuZMD.js"),__vite__mapDeps([58,2,52,53,59,56,60,4,5])),beforeEnter:e},{name:"notes-edit",path:"/notes-edit",component:()=>M(()=>import("./slidev/notes-edit-Dbwswh9t.js"),__vite__mapDeps([61,2,57,56,60,4,5])),beforeEnter:e},{name:"presenter",path:"/presenter/:no",component:()=>M(()=>import("./slidev/presenter-LZke9Ie1.js"),__vite__mapDeps([62,2,54,55,63,57,1,3,56,4,5,64,52,53,59,65,66,67])),beforeEnter:e},{path:"/presenter",redirect:{path:"/presenter/1"}}),t.push({name:"play",path:"/:no",component:()=>M(()=>import("./slidev/play-DJfLnnZ4.js"),__vite__mapDeps([68,2,54,55,63,57,1,3,56,4,5,64,60,69]))},{path:"",redirect:{path:"/1"}},{path:"/:pathMatch(.*)*",name:"NotFound",component:()=>M(()=>import("./slidev/404-Dq_izksy.js"),__vite__mapDeps([70,2,4,5,71]))}),xc.reduce((n,s)=>s(n),t)}async function Ic(t){function e(){document.documentElement.style.setProperty("--vh",`${window.innerHeight*.01}px`)}e(),window.addEventListener("resize",e);const n=Sr({history:Mr("/"),routes:Dc()});t.use(n),t.use(Vl()),t.use(Wl()),t.use($c()),t.use(ql()),t.use(Ac()),t.use(Or,{container:"#twoslash-container"});const s={app:t,router:n};for(const o of jl)await o(s)}async function Rc(){const t=Tr(Nl);await Ic(t),t.mount("#app")}Rc();export{Io as $,Wc as A,zc as B,At as C,wn as D,Xn as E,Vi as F,Mt as G,Gc as H,Ki as I,Vt as J,cu as K,uu as L,au as M,ru as N,M as O,qc as P,Uc as Q,eu as R,Xi as S,Mn as T,Qi as U,mu as V,gu as W,nu as X,pu as Y,te as Z,ha as _,Ri as a,Ro as a0,co as a1,Ji as a2,uo as a3,xr as a4,vo as a5,vu as a6,Fc as a7,Hc as a8,ou as a9,fu as aa,Vc as ab,Ft as ac,Jc as ad,bo as ae,Tt as af,Zc as ag,bu as ah,lu as ai,iu as aj,se as ak,qi as al,zl as am,Xc as an,jn as ao,Kc as ap,St as aq,Yc as ar,Qc as as,su as at,Hi as b,Ni as c,ji as d,Nn as e,Bc as f,Yt as g,Rn as h,Qt as i,lt as j,mo as k,tu as l,on as m,qn as n,Sn as o,N as p,ft as q,hu as r,yu as s,Pr as t,ia as u,zs as v,So as w,du as x,nt as y,ua as z};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.