From e46dbdadd94f6d41ab6d34f0a7847830287b0db3 Mon Sep 17 00:00:00 2001 From: thisLight Date: Thu, 9 Jun 2022 09:14:16 +0800 Subject: [PATCH] remove magicbroad --- .../magicbroad/assets/Button.f5ab4cd7.js | 2 - .../magicbroad/assets/Button.f5ab4cd7.js.map | 1 - .../magicbroad/assets/ButtonBase.9bf595f5.js | 2 - .../assets/ButtonBase.9bf595f5.js.map | 1 - .../assets/ListItemText.52d31dfa.js | 2 - .../assets/ListItemText.52d31dfa.js.map | 1 - .../magicbroad/assets/Popover.e8cf0efd.js | 2 - .../magicbroad/assets/Popover.e8cf0efd.js.map | 1 - .../magicbroad/assets/SvgIcon.c425712b.js | 2 - .../magicbroad/assets/SvgIcon.c425712b.js.map | 1 - .../magicbroad/assets/TextField.2ea54ac2.js | 2 - .../assets/TextField.2ea54ac2.js.map | 1 - .../magicbroad/assets/getDeviceId.e8f3946a.js | 2 - .../assets/getDeviceId.e8f3946a.js.map | 1 - .../files/magicbroad/assets/index.016e8a17.js | 2 - .../magicbroad/assets/index.016e8a17.js.map | 1 - .../files/magicbroad/assets/index.13b310ab.js | 25 -------- .../magicbroad/assets/index.13b310ab.js.map | 1 - .../magicbroad/assets/index.146cb09e.css | 1 - .../magicbroad/assets/index.276fa080.css | 1 - .../files/magicbroad/assets/index.3e50c9ce.js | 2 - .../magicbroad/assets/index.3e50c9ce.js.map | 1 - .../files/magicbroad/assets/index.79b5287a.js | 2 - .../magicbroad/assets/index.79b5287a.js.map | 1 - .../files/magicbroad/assets/index.7d797b7f.js | 2 - .../magicbroad/assets/index.7d797b7f.js.map | 1 - .../files/magicbroad/assets/index.9a756780.js | 2 - .../magicbroad/assets/index.9a756780.js.map | 1 - .../files/magicbroad/assets/index.b2b53b3b.js | 2 - .../magicbroad/assets/index.b2b53b3b.js.map | 1 - .../files/magicbroad/assets/index.b61bf03f.js | 2 - .../magicbroad/assets/index.b61bf03f.js.map | 1 - .../files/magicbroad/assets/index.c1adcc6d.js | 57 ------------------ .../magicbroad/assets/index.c1adcc6d.js.map | 1 - .../assets/isHostComponent.9ebad583.js | 2 - .../assets/isHostComponent.9ebad583.js.map | 1 - .../roboto-all-400-normal.e41533d5.woff | Bin 65456 -> 0 bytes .../roboto-cyrillic-400-normal.495d38d4.woff2 | Bin 9628 -> 0 bytes ...oto-cyrillic-ext-400-normal.b7ef2cd1.woff2 | Bin 15344 -> 0 bytes .../roboto-greek-400-normal.daf51ab5.woff2 | Bin 7112 -> 0 bytes .../roboto-latin-400-normal.f6734f81.woff2 | Bin 15744 -> 0 bytes ...roboto-latin-ext-400-normal.3c23eb02.woff2 | Bin 11872 -> 0 bytes ...oboto-vietnamese-400-normal.77b24796.woff2 | Bin 5560 -> 0 bytes .../files/magicbroad/assets/solid.5ae8e60d.js | 2 - .../magicbroad/assets/solid.5ae8e60d.js.map | 1 - source/files/magicbroad/index.html | 16 ----- 46 files changed, 150 deletions(-) delete mode 100644 source/files/magicbroad/assets/Button.f5ab4cd7.js delete mode 100644 source/files/magicbroad/assets/Button.f5ab4cd7.js.map delete mode 100644 source/files/magicbroad/assets/ButtonBase.9bf595f5.js delete mode 100644 source/files/magicbroad/assets/ButtonBase.9bf595f5.js.map delete mode 100644 source/files/magicbroad/assets/ListItemText.52d31dfa.js delete mode 100644 source/files/magicbroad/assets/ListItemText.52d31dfa.js.map delete mode 100644 source/files/magicbroad/assets/Popover.e8cf0efd.js delete mode 100644 source/files/magicbroad/assets/Popover.e8cf0efd.js.map delete mode 100644 source/files/magicbroad/assets/SvgIcon.c425712b.js delete mode 100644 source/files/magicbroad/assets/SvgIcon.c425712b.js.map delete mode 100644 source/files/magicbroad/assets/TextField.2ea54ac2.js delete mode 100644 source/files/magicbroad/assets/TextField.2ea54ac2.js.map delete mode 100644 source/files/magicbroad/assets/getDeviceId.e8f3946a.js delete mode 100644 source/files/magicbroad/assets/getDeviceId.e8f3946a.js.map delete mode 100644 source/files/magicbroad/assets/index.016e8a17.js delete mode 100644 source/files/magicbroad/assets/index.016e8a17.js.map delete mode 100644 source/files/magicbroad/assets/index.13b310ab.js delete mode 100644 source/files/magicbroad/assets/index.13b310ab.js.map delete mode 100644 source/files/magicbroad/assets/index.146cb09e.css delete mode 100644 source/files/magicbroad/assets/index.276fa080.css delete mode 100644 source/files/magicbroad/assets/index.3e50c9ce.js delete mode 100644 source/files/magicbroad/assets/index.3e50c9ce.js.map delete mode 100644 source/files/magicbroad/assets/index.79b5287a.js delete mode 100644 source/files/magicbroad/assets/index.79b5287a.js.map delete mode 100644 source/files/magicbroad/assets/index.7d797b7f.js delete mode 100644 source/files/magicbroad/assets/index.7d797b7f.js.map delete mode 100644 source/files/magicbroad/assets/index.9a756780.js delete mode 100644 source/files/magicbroad/assets/index.9a756780.js.map delete mode 100644 source/files/magicbroad/assets/index.b2b53b3b.js delete mode 100644 source/files/magicbroad/assets/index.b2b53b3b.js.map delete mode 100644 source/files/magicbroad/assets/index.b61bf03f.js delete mode 100644 source/files/magicbroad/assets/index.b61bf03f.js.map delete mode 100644 source/files/magicbroad/assets/index.c1adcc6d.js delete mode 100644 source/files/magicbroad/assets/index.c1adcc6d.js.map delete mode 100644 source/files/magicbroad/assets/isHostComponent.9ebad583.js delete mode 100644 source/files/magicbroad/assets/isHostComponent.9ebad583.js.map delete mode 100644 source/files/magicbroad/assets/roboto-all-400-normal.e41533d5.woff delete mode 100644 source/files/magicbroad/assets/roboto-cyrillic-400-normal.495d38d4.woff2 delete mode 100644 source/files/magicbroad/assets/roboto-cyrillic-ext-400-normal.b7ef2cd1.woff2 delete mode 100644 source/files/magicbroad/assets/roboto-greek-400-normal.daf51ab5.woff2 delete mode 100644 source/files/magicbroad/assets/roboto-latin-400-normal.f6734f81.woff2 delete mode 100644 source/files/magicbroad/assets/roboto-latin-ext-400-normal.3c23eb02.woff2 delete mode 100644 source/files/magicbroad/assets/roboto-vietnamese-400-normal.77b24796.woff2 delete mode 100644 source/files/magicbroad/assets/solid.5ae8e60d.js delete mode 100644 source/files/magicbroad/assets/solid.5ae8e60d.js.map delete mode 100644 source/files/magicbroad/index.html diff --git a/source/files/magicbroad/assets/Button.f5ab4cd7.js b/source/files/magicbroad/assets/Button.f5ab4cd7.js deleted file mode 100644 index 0c65313..0000000 --- a/source/files/magicbroad/assets/Button.f5ab4cd7.js +++ /dev/null @@ -1,2 +0,0 @@ -var y=Object.defineProperty,C=Object.defineProperties;var I=Object.getOwnPropertyDescriptors;var p=Object.getOwnPropertySymbols;var $=Object.prototype.hasOwnProperty,R=Object.prototype.propertyIsEnumerable;var g=(o,i,a)=>i in o?y(o,i,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[i]=a,n=(o,i)=>{for(var a in i||(i={}))$.call(i,a)&&g(o,a,i[a]);if(p)for(var a of p(i))R.call(i,a)&&g(o,a,i[a]);return o},b=(o,i)=>C(o,I(i));import{C as k,c as B,B as z,A as l,d as e,m as E,S as x,e as M}from"./index.13b310ab.js";import{g as W,a as L,b as r,s as c,d as N,f as T,c as v}from"./ButtonBase.9bf595f5.js";const f=k({});function V(o){return L("MuiButton",o)}const d=W("MuiButton",["root","text","textInherit","textPrimary","textSecondary","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","contained","containedInherit","containedPrimary","containedSecondary","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]),F=B()({name:"MuiButton",selfPropNames:["children","classes","color","disableElevation","disableFocusRipple","disabled","endIcon","fullWidth","href","size","startIcon","variant"],propDefaults:({set:o})=>{const i=z(f);return o({get color(){var a;return(a=i.color)!=null?a:"primary"},component:"button",get disabled(){var a;return(a=i.disabled)!=null?a:!1},get disableElevation(){var a;return(a=i.disableElevation)!=null?a:!1},get disableFocusRipple(){var a;return(a=i.disableFocusRipple)!=null?a:!1},get fullWidth(){var a;return(a=i.fullWidth)!=null?a:!1},get size(){var a;return(a=i.size)!=null?a:"medium"},get variant(){var a;return(a=i.variant)!=null?a:"text"}})},utilityClass:V,slotClasses:o=>({root:["root",o.variant,`${o.variant}${r(o.color)}`,`size${r(o.size)}`,`${o.variant}Size${r(o.size)}`,o.color==="inherit"&&"colorInherit",o.disableElevation&&"disableElevation",o.fullWidth&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${r(o.size)}`],endIcon:["endIcon",`iconSize${r(o.size)}`]})}),h=o=>n(n(n({},o.size==="small"&&{"& > *:nth-of-type(1)":{fontSize:18}}),o.size==="medium"&&{"& > *:nth-of-type(1)":{fontSize:20}}),o.size==="large"&&{"& > *:nth-of-type(1)":{fontSize:22}}),P=c(N,{skipProps:T.filter(o=>o!=="classes"),name:"MuiButton",slot:"Root",overridesResolver:(o,i)=>{const{ownerState:a}=o;return[i.root,i[a.variant],i[`${a.variant}${r(a.color)}`],i[`size${r(a.size)}`],i[`${a.variant}Size${r(a.size)}`],a.color==="inherit"&&i.colorInherit,a.disableElevation&&i.disableElevation,a.fullWidth&&i.fullWidth]}})(({theme:o,ownerState:i})=>n(n(n(n(n(n(n(n(n(n(n(n(n(n(b(n({},o.typography.button),{minWidth:64,padding:"6px 16px",borderRadius:o.shape.borderRadius,transition:o.transitions.create(["background-color","box-shadow","border-color","color"],{duration:o.transitions.duration.short}),"&:hover":n(n(n(n({textDecoration:"none",backgroundColor:l(o.palette.text.primary,o.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},i.variant==="text"&&i.color!=="inherit"&&{backgroundColor:l(o.palette[i.color].main,o.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}),i.variant==="outlined"&&i.color!=="inherit"&&{border:`1px solid ${o.palette[i.color].main}`,backgroundColor:l(o.palette[i.color].main,o.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}),i.variant==="contained"&&{backgroundColor:o.palette.grey.A100,boxShadow:o.shadows[4],"@media (hover: none)":{boxShadow:o.shadows[2],backgroundColor:o.palette.grey[300]}}),i.variant==="contained"&&i.color!=="inherit"&&{backgroundColor:o.palette[i.color].dark,"@media (hover: none)":{backgroundColor:o.palette[i.color].main}}),"&:active":n({},i.variant==="contained"&&{boxShadow:o.shadows[8]}),[`&.${d.focusVisible}`]:n({},i.variant==="contained"&&{boxShadow:o.shadows[6]}),[`&.${d.disabled}`]:n(n(n({color:o.palette.action.disabled},i.variant==="outlined"&&{border:`1px solid ${o.palette.action.disabledBackground}`}),i.variant==="outlined"&&i.color==="secondary"&&{border:`1px solid ${o.palette.action.disabled}`}),i.variant==="contained"&&{color:o.palette.action.disabled,boxShadow:o.shadows[0],backgroundColor:o.palette.action.disabledBackground})}),i.variant==="text"&&{padding:"6px 8px"}),i.variant==="text"&&i.color!=="inherit"&&{color:o.palette[i.color].main}),i.variant==="outlined"&&{padding:"5px 15px",border:`1px solid ${o.palette.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"}`}),i.variant==="outlined"&&i.color!=="inherit"&&{color:o.palette[i.color].main,border:`1px solid ${l(o.palette[i.color].main,.5)}`}),i.variant==="contained"&&{color:o.palette.getContrastText(o.palette.grey[300]),backgroundColor:o.palette.grey[300],boxShadow:o.shadows[2]}),i.variant==="contained"&&i.color!=="inherit"&&{color:o.palette[i.color].contrastText,backgroundColor:o.palette[i.color].main}),i.color==="inherit"&&{color:"inherit",borderColor:"currentColor"}),i.size==="small"&&i.variant==="text"&&{padding:"4px 5px",fontSize:o.typography.pxToRem(13)}),i.size==="large"&&i.variant==="text"&&{padding:"8px 11px",fontSize:o.typography.pxToRem(15)}),i.size==="small"&&i.variant==="outlined"&&{padding:"3px 9px",fontSize:o.typography.pxToRem(13)}),i.size==="large"&&i.variant==="outlined"&&{padding:"7px 21px",fontSize:o.typography.pxToRem(15)}),i.size==="small"&&i.variant==="contained"&&{padding:"4px 10px",fontSize:o.typography.pxToRem(13)}),i.size==="large"&&i.variant==="contained"&&{padding:"8px 22px",fontSize:o.typography.pxToRem(15)}),i.fullWidth&&{width:"100%"}),({ownerState:o})=>n({},o.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${d.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${d.disabled}`]:{boxShadow:"none"}})),O=c("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(o,i)=>{const{ownerState:a}=o;return[i.startIcon,i[`iconSize${r(a.size)}`]]}})(({ownerState:o})=>n(n({display:"inherit",marginRight:8,marginLeft:-4},o.size==="small"&&{marginLeft:-2}),h(o))),U=c("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(o,i)=>{const{ownerState:a}=o;return[i.endIcon,i[`iconSize${r(a.size)}`]]}})(({ownerState:o})=>n(n({display:"inherit",marginRight:-4,marginLeft:8},o.size==="small"&&{marginRight:-2}),h(o))),j=F.component(function({allProps:i,otherProps:a,props:t,classes:s}){const m=z(f);return e(P,E({ownerState:i,get className(){return v(s.root,a.className,m.className)},get disabled(){return t.disabled},get focusRipple(){return!t.disableFocusRipple},get focusVisibleClassName(){var u;return v((u=t.classes)==null?void 0:u.focusVisible,a.focusVisibleClassName)},get type(){return a.type},get href(){return t.href}},a,{get classes(){return t.classes},get children(){return[e(x,{get when(){return!!t.startIcon},get children(){return e(O,{get className(){return s.startIcon},ownerState:i,get children(){return t.startIcon}})}}),M(()=>t.children),e(x,{get when(){return!!t.endIcon},get children(){return e(U,{get className(){return s.endIcon},ownerState:i,get children(){return t.endIcon}})}})]}}))});export{j as B}; -//# sourceMappingURL=Button.f5ab4cd7.js.map diff --git a/source/files/magicbroad/assets/Button.f5ab4cd7.js.map b/source/files/magicbroad/assets/Button.f5ab4cd7.js.map deleted file mode 100644 index 4274f49..0000000 --- a/source/files/magicbroad/assets/Button.f5ab4cd7.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Button.f5ab4cd7.js","sources":["../../node_modules/@suid/material/ButtonGroup/ButtonGroupContext.js","../../node_modules/@suid/material/Button/buttonClasses.js","../../node_modules/@suid/material/Button/Button.jsx"],"sourcesContent":["import { createContext } from \"solid-js\";\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupContext = createContext({});\nexport default ButtonGroupContext;\n","import { generateUtilityClass, generateUtilityClasses } from \"@suid/base\";\nexport function getButtonUtilityClass(slot) {\n return generateUtilityClass(\"MuiButton\", slot);\n}\nconst buttonClasses = generateUtilityClasses(\"MuiButton\", [\n \"root\",\n \"text\",\n \"textInherit\",\n \"textPrimary\",\n \"textSecondary\",\n \"outlined\",\n \"outlinedInherit\",\n \"outlinedPrimary\",\n \"outlinedSecondary\",\n \"contained\",\n \"containedInherit\",\n \"containedPrimary\",\n \"containedSecondary\",\n \"disableElevation\",\n \"focusVisible\",\n \"disabled\",\n \"colorInherit\",\n \"textSizeSmall\",\n \"textSizeMedium\",\n \"textSizeLarge\",\n \"outlinedSizeSmall\",\n \"outlinedSizeMedium\",\n \"outlinedSizeLarge\",\n \"containedSizeSmall\",\n \"containedSizeMedium\",\n \"containedSizeLarge\",\n \"sizeMedium\",\n \"sizeSmall\",\n \"sizeLarge\",\n \"fullWidth\",\n \"startIcon\",\n \"endIcon\",\n \"iconSizeSmall\",\n \"iconSizeMedium\",\n \"iconSizeLarge\",\n]);\nexport default buttonClasses;\n","import ButtonBase from \"../ButtonBase\";\nimport styled, { skipRootProps } from \"../styles/styled\";\nimport capitalize from \"../utils/capitalize\";\nimport ButtonGroupContext from \"./../ButtonGroup/ButtonGroupContext\";\nimport buttonClasses, { getButtonUtilityClass } from \"./buttonClasses\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nimport { alpha } from \"@suid/system\";\nimport clsx from \"clsx\";\nimport { Show, useContext } from \"solid-js\";\nconst $ = createComponentFactory()({\n name: \"MuiButton\",\n selfPropNames: [\n \"children\",\n \"classes\",\n \"color\",\n \"disableElevation\",\n \"disableFocusRipple\",\n \"disabled\",\n \"endIcon\",\n \"fullWidth\",\n \"href\",\n \"size\",\n \"startIcon\",\n \"variant\",\n ],\n propDefaults: ({ set }) => {\n const contextProps = useContext(ButtonGroupContext);\n return set({\n get color() {\n return contextProps.color ?? \"primary\";\n },\n component: \"button\",\n get disabled() {\n return contextProps.disabled ?? false;\n },\n get disableElevation() {\n return contextProps.disableElevation ?? false;\n },\n get disableFocusRipple() {\n return contextProps.disableFocusRipple ?? false;\n },\n get fullWidth() {\n return contextProps.fullWidth ?? false;\n },\n get size() {\n return contextProps.size ?? \"medium\";\n },\n get variant() {\n return contextProps.variant ?? \"text\";\n },\n });\n },\n utilityClass: getButtonUtilityClass,\n slotClasses: (ownerState) => ({\n root: [\n \"root\",\n ownerState.variant,\n `${ownerState.variant}${capitalize(ownerState.color)}`,\n `size${capitalize(ownerState.size)}`,\n `${ownerState.variant}Size${capitalize(ownerState.size)}`,\n ownerState.color === \"inherit\" && \"colorInherit\",\n ownerState.disableElevation && \"disableElevation\",\n ownerState.fullWidth && \"fullWidth\",\n ],\n label: [\"label\"],\n startIcon: [\"startIcon\", `iconSize${capitalize(ownerState.size)}`],\n endIcon: [\"endIcon\", `iconSize${capitalize(ownerState.size)}`],\n }),\n});\nconst commonIconStyles = (ownerState) => ({\n ...(ownerState.size === \"small\" && {\n \"& > *:nth-of-type(1)\": {\n fontSize: 18,\n },\n }),\n ...(ownerState.size === \"medium\" && {\n \"& > *:nth-of-type(1)\": {\n fontSize: 20,\n },\n }),\n ...(ownerState.size === \"large\" && {\n \"& > *:nth-of-type(1)\": {\n fontSize: 22,\n },\n }),\n});\nconst ButtonRoot = styled(ButtonBase, {\n skipProps: skipRootProps.filter((v) => v !== \"classes\"),\n name: \"MuiButton\",\n slot: \"Root\",\n overridesResolver: (props, styles) => {\n const { ownerState } = props;\n return [\n styles.root,\n styles[ownerState.variant],\n styles[`${ownerState.variant}${capitalize(ownerState.color)}`],\n styles[`size${capitalize(ownerState.size)}`],\n styles[`${ownerState.variant}Size${capitalize(ownerState.size)}`],\n ownerState.color === \"inherit\" && styles.colorInherit,\n ownerState.disableElevation && styles.disableElevation,\n ownerState.fullWidth && styles.fullWidth,\n ];\n },\n})(({ theme, ownerState }) => ({\n ...theme.typography.button,\n minWidth: 64,\n padding: \"6px 16px\",\n borderRadius: theme.shape.borderRadius,\n transition: theme.transitions.create([\"background-color\", \"box-shadow\", \"border-color\", \"color\"], {\n duration: theme.transitions.duration.short,\n }),\n \"&:hover\": {\n textDecoration: \"none\",\n backgroundColor: alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n \"@media (hover: none)\": {\n backgroundColor: \"transparent\",\n },\n ...(ownerState.variant === \"text\" &&\n ownerState.color !== \"inherit\" && {\n backgroundColor: alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n \"@media (hover: none)\": {\n backgroundColor: \"transparent\",\n },\n }),\n ...(ownerState.variant === \"outlined\" &&\n ownerState.color !== \"inherit\" && {\n border: `1px solid ${theme.palette[ownerState.color].main}`,\n backgroundColor: alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n \"@media (hover: none)\": {\n backgroundColor: \"transparent\",\n },\n }),\n ...(ownerState.variant === \"contained\" && {\n backgroundColor: theme.palette.grey.A100,\n boxShadow: theme.shadows[4],\n // Reset on touch devices, it doesn't add specificity\n \"@media (hover: none)\": {\n boxShadow: theme.shadows[2],\n backgroundColor: theme.palette.grey[300],\n },\n }),\n ...(ownerState.variant === \"contained\" &&\n ownerState.color !== \"inherit\" && {\n backgroundColor: theme.palette[ownerState.color].dark,\n // Reset on touch devices, it doesn't add specificity\n \"@media (hover: none)\": {\n backgroundColor: theme.palette[ownerState.color].main,\n },\n }),\n },\n \"&:active\": {\n ...(ownerState.variant === \"contained\" && {\n boxShadow: theme.shadows[8],\n }),\n },\n [`&.${buttonClasses.focusVisible}`]: {\n ...(ownerState.variant === \"contained\" && {\n boxShadow: theme.shadows[6],\n }),\n },\n [`&.${buttonClasses.disabled}`]: {\n color: theme.palette.action.disabled,\n ...(ownerState.variant === \"outlined\" && {\n border: `1px solid ${theme.palette.action.disabledBackground}`,\n }),\n ...(ownerState.variant === \"outlined\" &&\n ownerState.color === \"secondary\" && {\n border: `1px solid ${theme.palette.action.disabled}`,\n }),\n ...(ownerState.variant === \"contained\" && {\n color: theme.palette.action.disabled,\n boxShadow: theme.shadows[0],\n backgroundColor: theme.palette.action.disabledBackground,\n }),\n },\n ...(ownerState.variant === \"text\" && {\n padding: \"6px 8px\",\n }),\n ...(ownerState.variant === \"text\" &&\n ownerState.color !== \"inherit\" && {\n color: theme.palette[ownerState.color].main,\n }),\n ...(ownerState.variant === \"outlined\" && {\n padding: \"5px 15px\",\n border: `1px solid ${theme.palette.mode === \"light\"\n ? \"rgba(0, 0, 0, 0.23)\"\n : \"rgba(255, 255, 255, 0.23)\"}`,\n }),\n ...(ownerState.variant === \"outlined\" &&\n ownerState.color !== \"inherit\" && {\n color: theme.palette[ownerState.color].main,\n border: `1px solid ${alpha(theme.palette[ownerState.color].main, 0.5)}`,\n }),\n ...(ownerState.variant === \"contained\" && {\n color: theme.palette.getContrastText(theme.palette.grey[300]),\n backgroundColor: theme.palette.grey[300],\n boxShadow: theme.shadows[2],\n }),\n ...(ownerState.variant === \"contained\" &&\n ownerState.color !== \"inherit\" && {\n color: theme.palette[ownerState.color].contrastText,\n backgroundColor: theme.palette[ownerState.color].main,\n }),\n ...(ownerState.color === \"inherit\" && {\n color: \"inherit\",\n borderColor: \"currentColor\",\n }),\n ...(ownerState.size === \"small\" &&\n ownerState.variant === \"text\" && {\n padding: \"4px 5px\",\n fontSize: theme.typography.pxToRem(13),\n }),\n ...(ownerState.size === \"large\" &&\n ownerState.variant === \"text\" && {\n padding: \"8px 11px\",\n fontSize: theme.typography.pxToRem(15),\n }),\n ...(ownerState.size === \"small\" &&\n ownerState.variant === \"outlined\" && {\n padding: \"3px 9px\",\n fontSize: theme.typography.pxToRem(13),\n }),\n ...(ownerState.size === \"large\" &&\n ownerState.variant === \"outlined\" && {\n padding: \"7px 21px\",\n fontSize: theme.typography.pxToRem(15),\n }),\n ...(ownerState.size === \"small\" &&\n ownerState.variant === \"contained\" && {\n padding: \"4px 10px\",\n fontSize: theme.typography.pxToRem(13),\n }),\n ...(ownerState.size === \"large\" &&\n ownerState.variant === \"contained\" && {\n padding: \"8px 22px\",\n fontSize: theme.typography.pxToRem(15),\n }),\n ...(ownerState.fullWidth && {\n width: \"100%\",\n }),\n}), ({ ownerState }) => ({\n ...(ownerState.disableElevation && {\n boxShadow: \"none\",\n \"&:hover\": {\n boxShadow: \"none\",\n },\n [`&.${buttonClasses.focusVisible}`]: {\n boxShadow: \"none\",\n },\n \"&:active\": {\n boxShadow: \"none\",\n },\n [`&.${buttonClasses.disabled}`]: {\n boxShadow: \"none\",\n },\n }),\n}));\nconst ButtonStartIcon = styled(\"span\", {\n name: \"MuiButton\",\n slot: \"StartIcon\",\n overridesResolver: (props, styles) => {\n const { ownerState } = props;\n return [styles.startIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n },\n})(({ ownerState }) => ({\n display: \"inherit\",\n marginRight: 8,\n marginLeft: -4,\n ...(ownerState.size === \"small\" && {\n marginLeft: -2,\n }),\n ...commonIconStyles(ownerState),\n}));\nconst ButtonEndIcon = styled(\"span\", {\n name: \"MuiButton\",\n slot: \"EndIcon\",\n overridesResolver: (props, styles) => {\n const { ownerState } = props;\n return [styles.endIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n },\n})(({ ownerState }) => ({\n display: \"inherit\",\n marginRight: -4,\n marginLeft: 8,\n ...(ownerState.size === \"small\" && {\n marginRight: -2,\n }),\n ...commonIconStyles(ownerState),\n}));\n/**\n *\n * Demos:\n *\n * - [Button Group](https://mui.com/components/button-group/)\n * - [Buttons](https://mui.com/components/buttons/)\n *\n * API:\n *\n * - [Button API](https://mui.com/api/button/)\n * - inherits [ButtonBase API](https://mui.com/api/button-base/)\n */\nconst Button = $.component(function Button({ allProps, otherProps, props, classes, }) {\n const contextProps = useContext(ButtonGroupContext);\n return (\n \n \n {props.startIcon}\n \n \n {props.children}\n \n \n {props.endIcon}\n \n \n );\n});\nexport default Button;\n"],"names":["$","createComponentFactory","name","selfPropNames","propDefaults","set","contextProps","useContext","ButtonGroupContext","color","component","disabled","disableElevation","disableFocusRipple","fullWidth","size","variant","utilityClass","getButtonUtilityClass","slotClasses","ownerState","root","capitalize","label","startIcon","endIcon","commonIconStyles","fontSize","ButtonRoot","styled","ButtonBase","skipProps","skipRootProps","filter","v","slot","overridesResolver","props","styles","colorInherit","theme","typography","button","minWidth","padding","borderRadius","shape","transition","transitions","create","duration","short","textDecoration","backgroundColor","alpha","palette","text","primary","action","hoverOpacity","main","border","grey","A100","boxShadow","shadows","dark","buttonClasses","focusVisible","disabledBackground","mode","getContrastText","contrastText","borderColor","pxToRem","width","ButtonStartIcon","display","marginRight","marginLeft","ButtonEndIcon","Button","allProps","otherProps","classes","_$createComponent","_$mergeProps","clsx","className","focusVisibleClassName","type","href","_$memo","children"],"mappings":"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"} \ No newline at end of file diff --git a/source/files/magicbroad/assets/ButtonBase.9bf595f5.js b/source/files/magicbroad/assets/ButtonBase.9bf595f5.js deleted file mode 100644 index 980fa4a..0000000 --- a/source/files/magicbroad/assets/ButtonBase.9bf595f5.js +++ /dev/null @@ -1,2 +0,0 @@ -var Re=Object.defineProperty;var te=Object.getOwnPropertySymbols;var Ce=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable;var ne=(e,t,n)=>t in e?Re(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,C=(e,t)=>{for(var n in t||(t={}))Ce.call(t,n)&&ne(e,n,t[n]);if(te)for(var n of te(t))we.call(t,n)&&ne(e,n,t[n]);return e};import{d as w,D as Te,f as ke,h as Me,j as Be,k as $e,s as v,m as x,l as Ie,n as oe,o as Ne,c as G,p as se,a as E,q as F,r as A,v as ae,w as Ee,t as Le,x as De,y as Ve,z as Fe,e as Ae,S as ze}from"./index.13b310ab.js";const H="__resolved";const Oe=function(t){if(!t.component)throw new Error("Component prop is empty");return w(Te,t)};function L(e,t,n={}){for(const i in e){const o=e[i];if(ke(i))n[i]=L(o,t);else if(Me(i))n[i]=L(o,t);else if(Be(i)){n[i]={};for(const s in o)n[i][s]=L(o[s],t)}else if($e(i))n[i]=L(o,t);else{const s=t(i,o);s?Object.assign(n,s):n[i]=o}}return n}const Ue=new Set(["animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth"]);function le(e,t){if(typeof t=="number")return{[e]:Ue.has(e)?t.toString():`${t}px`}}function Ge(e){return L(e,le,{[H]:!0})}function U(e,t,n){if(typeof n!="string")return n;const i=n.split(".");let o=e[t];for(let s=0;sn&&n[i]?n[i]:null,e)}function We(e,t,n,i){const o=Ke(e,t)||n;return typeof o=="number"?s=>typeof s=="string"?s:o*s:Array.isArray(o)?s=>typeof s=="string"?s:o[s]:typeof o=="function"?o:()=>{}}const I={x:["Left","Right"],y:["Top","Bottom"]};function ue(e){return typeof e=="number"?`${e}px`:e}function ce(e,t){return(n,i)=>t(e,n,i)}function r(e,t){return t?(n,i)=>({[e]:t(e,n,i)}):n=>({[e]:n})}function V(e){return r(e,(t,n)=>ue(n))}function h(e,t,n){const i=t.map(o=>`${e}${o}`);return n?(o,s)=>i.reduce((l,c)=>(l[c]=n(c,o,s),l),{}):o=>i.reduce((s,l)=>(s[l]=o,s),{})}function Pe(){return C(C(C(C(C(C(C(C(C({},Xe()),Ye()),je()),ve()),He()),_e()),qe()),Je()),Qe())}function Xe(){return{displayPrint:ce("displayPrint",(e,t)=>({"@media print":{display:t}})),displayRaw:r("display"),overflow:r("overflow"),textOverflow:r("textOverflow"),visibility:r("visibility"),whiteSpace:r("whiteSpace")}}function Ye(){return{flexBasis:r("flexBasis"),flexDirection:r("flexDirection"),flexWrap:r("flexWrap"),justifyContent:r("justifyContent"),alignItems:r("alignItems"),alignContent:r("alignContent"),order:r("order"),flex:r("flex"),flexGrow:r("flexGrow"),flexShrink:r("flexShrink"),alignSelf:r("alignSelf"),justifyItems:r("justifyItems"),justifySelf:r("justifySelf")}}function je(){const e=(t,n,i)=>We(i,"spacing",8)(n);return{gap:r("gap",e),columnGap:r("columnGap",e),rowGap:r("rowGap",e),gridColumn:r("gridColumn"),gridRow:r("gridRow"),gridAutoFlow:r("gridAutoFlow"),gridAutoColumns:r("gridAutoColumns"),gridAutoRows:r("gridAutoRows"),gridTemplateColumns:r("gridTemplateColumns"),gridTemplateRows:r("gridTemplateRows"),gridTemplateAreas:r("gridTemplateAreas"),gridArea:r("gridArea")}}function ve(){return{position:r("position"),zIndex:r("zIndex",(e,t,n)=>{var i,o;return(o=(i=n.zIndex)==null?void 0:i[e])!=null?o:t}),top:V("top"),right:V("right"),bottom:V("bottom"),left:V("left")}}function He(){const e=(t,n,i)=>U(i,"palette",n);return{color:r("color",e),bgcolor:r("backgroundColor",e),backgroundColor:r("backgroundColor",e)}}function _e(){const e=(t,n,i)=>{var o;return t==="maxWidth"&&(n=(o=i.breakpoints.values[t])!=null?o:n),typeof n=="number"&&(n=n>0&&n<=1?`${n*100}%`:`${n}px`),n};return{width:r("width",e),maxWidth:r("maxWidth",e),minWidth:r("minWidth",e),height:r("height",e),maxHeight:r("maxHeight",e),minHeight:r("minHeight",e),boxSizing:r("boxSizing",e)}}function qe(){const e=(n,i)=>typeof i=="number"?`${i}px solid`:i,t=(n,i,o)=>U(o,"palette",i);return{border:r("border",e),borderTop:r("borderTop",e),borderRight:r("borderRight",e),borderBottom:r("borderBottom",e),borderLeft:r("borderLeft",e),borderColor:r("borderColor",t),borderTopColor:r("borderTopColor",t),borderRightColor:r("borderRightColor",t),borderBottomColor:r("borderBottomColor",t),borderLeftColor:r("borderLeftColor",t),borderRadius:r("borderRadius",(n,i,o)=>typeof i=="number"?`${o.shape.borderRadius*i}px`:i)}}function Qe(){const e=(t,n,i)=>U(i,"typography",n);return{typography:ce("typography",(t,n,i)=>U(i,"typography",n)),fontFamily:r("fontFamily",e),fontSize:r("fontSize",(t,n,i)=>ue(e(t,n,i))),fontStyle:r("fontStyle",e),fontWeight:r("fontWeight",e),letterSpacing:V("letterSpacing"),lineHeight:r("lineHeight"),textAlign:r("textAlign"),textTransform:r("textTransform")}}function Je(){const e=(i,o,s)=>s.spacing(o),t="margin",n="padding";return{m:r(t,e),mt:r("marginTop",e),mr:r("marginRight",e),mb:r("marginBottom",e),ml:r("marginLeft",e),mx:h(t,I.x,e),my:h(t,I.y,e),margin:r(t,e),marginTop:r("marginTop",e),marginRight:r("marginRight",e),marginBottom:r("marginBottom",e),marginLeft:r("marginLeft",e),marginX:h(t,I.x,e),marginY:h(t,I.y,e),marginInline:h(t,["Inline","InlineStart"],e),marginInlineStart:r("marginInlineStart",e),marginInlineEnd:r("marginInlineEnd",e),marginBlock:h(t,["BlockStart","BlockEnd"],e),marginBlockStart:r("marginBlockStart",e),marginBlockEnd:r("marginBlockEnd",e),p:r(n,e),pt:r("paddingTop",e),pr:r("paddingRight",e),pb:r("paddingBottom",e),pl:r("paddingLeft",e),px:h(n,I.x,e),py:h(n,I.y,e),padding:r(n,e),paddingTop:r("paddingTop",e),paddingRight:r("paddingRight",e),paddingBottom:r("paddingBottom",e),paddingLeft:r("paddingLeft",e),paddingX:h(n,I.x,e),paddingY:h(n,I.y,e),paddingInline:h(n,["Inline","InlineStart"],e),paddingInlineStart:r("paddingInlineStart",e),paddingInlineEnd:r("paddingInlineEnd",e),paddingBlock:h(n,["BlockStart","BlockEnd"],e),paddingBlockStart:r("paddingBlockStart",e),paddingBlockEnd:r("paddingBlockEnd",e)}}const _=Pe(),Ze=Object.keys(_);function et(e,t,n){return _[e](t,n)}function tt(e,t,n){return e in _?et(e,t,n):le(e,t)}function nt(e,t){return L(e,(n,i)=>tt(n,i,t),{[H]:!0})}function it(e){const[t,n]=v(e,Ze),i=()=>{const o=e.sx;return o?Array.isArray(o)?[t,...o]:x(t,o):t};return x(n,{get sx(){return i()}})}const q="__disableSystemProps",rt=["sx","theme",q],de=function(t){const n=t[q];n||(t=it(t));const[i,o]=v(t,rt),s=()=>t.theme||oe(),l=()=>!!t.component&&typeof t.component!="string",c=x(o,{get component(){return o.component||"div"},get sx(){return l()?t.sx:void 0}}),g=Ie(()=>{const d=s();return!(!n||!!i.sx)||l()?[]:Ne(i.sx).map(S=>S[H]?S:nt(S,d))}),f=()=>{const d=o.className,p=g();return p!=null&&p.length?d?`${d} ${p}`:p:d};return w(Oe,x(c,{get className(){return f()}}))};function fe(e){var t,n,i="";if(typeof e=="string"||typeof e=="number")i+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;t`MuiBox-${e}`,slotClasses:()=>({root:["root"]})}),st=ot.component(function({otherProps:t,classes:n}){const i=se();return w(de,x({theme:i},t,{get className(){return y(n.root,t.className)}}))}),pe=["ownerState","theme","sx","as"];function at(e,t,n,i){return E(()=>n.reduce((o,s)=>{let l;return typeof s=="function"?l=s({ownerState:i.ownerState,theme:e,sx:i.sx,as:i.as,props:i}):s&&(l=s),l&&o.push(C({name:t},Ge(l))),o},[]))}function lt(e){return function(n,i={}){let o;if(i.name){const s=i.slot||"Root";o=`${i.name}-${s.slice(0,1).toLowerCase()+s.slice(1)}`}return function(...s){return function(l){var S;const c=e!=null&&e.onUseTheme?e.onUseTheme():oe(),[,g]=v(l,(S=i.skipProps)!=null?S:pe),f=at(c,o||"css",s,l),d=E(()=>!i.skipSx&&l.sx?Array.isArray(l.sx)?l.sx:[l.sx]:[]),p=()=>[...f(),...d()];return typeof n=="string"?w(de,x(g,{get component(){return l.as||l.component||n},get sx(){return p()},theme:c,get className(){return y([l.className,o])}},{[q]:!0})):w(n,x(g,{get component(){return l.as},get sx(){return p()},theme:c,get className(){return y([l.className,o])},get ownerState(){return l.ownerState}}))}}}}const Ft=[...pe,"classes"];var Q=lt({onUseTheme:()=>se()});const ie=e=>e,ut=()=>{let e=ie;return{configure(t){e=t},generate(t){return e(t)},reset(){e=ie}}},ct=ut(),dt={active:"Mui-active",checked:"Mui-checked",completed:"Mui-completed",disabled:"Mui-disabled",error:"Mui-error",expanded:"Mui-expanded",focused:"Mui-focused",focusVisible:"Mui-focusVisible",required:"Mui-required",selected:"Mui-selected"};function me(e,t){return dt[t]||`${ct.generate(e)}-${t}`}function ge(e,t){const n={};return t.forEach(i=>{n[i]=me(e,i)}),n}function At(e){if(typeof e!="string")throw new Error("MUI: `capitalize(string)` expects a string argument.");return e.charAt(0).toUpperCase()+e.slice(1)}const ft=Le(""),pt=G()({name:"MuiRipple",selfPropNames:["className","classes","pulsate","rippleX","rippleY","rippleSize","in","onExited","timeout"],propDefaults:({set:e})=>e({pulsate:!1,classes:{}})}),mt=pt.component(function({props:t,otherProps:n}){const[i,o]=F(!1),s=E(()=>y(t.className,t.classes.ripple,t.classes.rippleVisible,t.classes.ripplePulsate&&{[t.classes.ripplePulsate]:t.pulsate})),l=E(()=>({width:`${t.rippleSize}px`,height:`${t.rippleSize}px`,top:`${-(t.rippleSize/2)+t.rippleY}px`,left:`${-(t.rippleSize/2)+t.rippleX}px`})),c=E(()=>y(t.classes.child,t.classes.childLeaving&&{[t.classes.childLeaving]:i()},t.classes.childPulsate&&{[t.classes.childPulsate]:t.pulsate}));A(()=>{!t.in&&!i()&&o(!0)});let g;return A(()=>{!t.in&&t.onExited&&(clearTimeout(g),g=window.setTimeout(t.onExited,t.timeout))}),ae(()=>clearTimeout(g)),w(st,{component:"span",get className(){return s()},get style(){return l()},get sx(){return n.sx},get children(){const f=ft.cloneNode(!0);return Ee(()=>f.className=c()),f}})}),b=ge("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]);function X(e){const t=n=>{if(t.ref=t.current=n,typeof e=="function"){const i=e();typeof i=="function"&&i(n)}else typeof(e==null?void 0:e.ref)=="function"&&e.ref(n)};return t}function gt(e){return X(e)}const yt=G()({name:"MuiTouchRipple",selfPropNames:["center","classes","ref"],propDefaults:({set:e})=>e({center:!1,classes:{}})}),Y=550,ht=80,bt=Q("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),xt=Q(mt,{name:"MuiTouchRipple",slot:"Ripple"})(({theme:e})=>({position:"absolute","@keyframes animation-enter-$id":{0:{transform:"scale(0)",opacity:.1},100:{transform:"scale(1)",opacity:.3}},"@keyframes animation-exit-$id":{0:{opacity:1},100:{opacity:0}},"@keyframes animation-pulsate-$id":{0:{transform:"scale(1)"},50:{transform:"scale(0.92)"},100:{transform:"scale(1)"}},[`&.${b.rippleVisible}`]:{opacity:"0.3",transform:"scale(1)",animationName:"animation-enter-$id",animationDuration:`${Y}ms`,animationTimingFunction:e.transitions.easing.easeInOut},[`&.${b.ripplePulsate}`]:{animationDuration:`${e.transitions.duration.shorter}ms`},[`& .${b.child}`]:{opacity:1,display:"block",width:"100%",height:"100%",borderRadius:"50%",backgroundColor:"currentColor"},[`& .${b.childLeaving}`]:{opacity:0,animationName:"animation-exit-$id",animationDuration:`${Y}ms`,animationTimingFunction:`${e.transitions.easing.easeInOut}`},[`& .${b.childPulsate}`]:{position:"absolute",left:"0px",top:0,animationName:"animation-pulsate-$id",animationDuration:"2500ms",animationTimingFunction:`${e.transitions.easing.easeInOut}`,animationIterationCount:"infinite",animationDelay:"200ms"}})),St=yt.component(function({props:t,otherProps:n}){let i=0;const[o,s]=F([]),l=De({});let c,g=!1,f,d;const p=gt(n);ae(()=>{f&&clearTimeout(f)}),A(()=>{o(),c&&(c(),c=void 0)});const S=u=>{const m=i++;l[m]=!0,s(T=>[...T,{id:m,params:u}]),c=u.cb},z=(u,m={pulsate:!1,center:t.center},T)=>{if(m=x(m,{center:m.center||m.pulsate}),u.type==="mousedown"&&g){g=!1;return}u.type==="touchstart"&&(g=!0);const k=p.ref?p.ref.getBoundingClientRect():{width:0,height:0,left:0,top:0};let M,B,$;if(m.center||u.clientX===0&&u.clientY===0||!u.clientX&&!u.touches)M=Math.round(k.width/2),B=Math.round(k.height/2);else{const{clientX:D,clientY:N}=u.touches?u.touches[0]:u;M=Math.round(D-k.left),B=Math.round(N-k.top)}if(m.center)$=Math.sqrt((2*k.width**2+k.height**2)/3),$%2===0&&($+=1);else{const D=Math.max(Math.abs((p.ref?p.ref.clientWidth:0)-M),M)*2+2,N=Math.max(Math.abs((p.ref?p.ref.clientHeight:0)-B),B)*2+2;$=Math.sqrt(D**2+N**2)}u.touches?d||(d=()=>{S({pulsate:m.pulsate,rippleX:M,rippleY:B,rippleSize:$,cb:T})},f=setTimeout(()=>{d&&(d(),d=void 0)},ht)):S({pulsate:m.pulsate,rippleX:M,rippleY:B,rippleSize:$,cb:T})},R=()=>z({},{pulsate:!0}),O=(u,m)=>{if(clearTimeout(f),u.type==="touchend"&&d){d(),d=void 0,f=setTimeout(()=>{O(u,m)});return}for(const T in l)l[T]=!1;d=void 0,c=m},W={pulsate:R,start:z,stop:O};return typeof t.ref=="function"&&t.ref(W),w(bt,x({get className(){return y(t.classes.root,b.root,n.className)},ref:p},n,{get children(){return Ve(o,u=>w(xt,{get in(){return l[u.id]},onExited:()=>{s(m=>m.filter(T=>T.id!==u.id)),delete l[u.id]},get classes(){return{ripple:y(t.classes.ripple,b.ripple),rippleVisible:y(t.classes.rippleVisible,b.rippleVisible),ripplePulsate:y(t.classes.ripplePulsate,b.ripplePulsate),child:y(t.classes.child,b.child),childLeaving:y(t.classes.childLeaving,b.childLeaving),childPulsate:y(t.classes.childPulsate,b.childPulsate)}},timeout:Y,get pulsate(){return u.params.pulsate},get rippleX(){return u.params.rippleX},get rippleY(){return u.params.rippleY},get rippleSize(){return u.params.rippleSize}}))}}))});function Rt(e){return me("MuiButtonBase",e)}const Ct=ge("MuiButtonBase",["root","disabled","focusVisible"]);let K=!0,j=!1,re;const wt={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function Tt(e){const{type:t,tagName:n}=e;return!!(n==="INPUT"&&wt[t]&&!e.readOnly||n==="TEXTAREA"&&!e.readOnly||e.isContentEditable)}function kt(e){e.metaKey||e.altKey||e.ctrlKey||(K=!0)}function P(){K=!1}function Mt(){this.visibilityState==="hidden"&&j&&(K=!0)}function Bt(e){e.addEventListener("keydown",kt,!0),e.addEventListener("mousedown",P,!0),e.addEventListener("pointerdown",P,!0),e.addEventListener("touchstart",P,!0),e.addEventListener("visibilitychange",Mt,!0)}function $t(e){const{target:t}=e;try{return t.matches(":focus-visible")}catch{}return K||Tt(t)}function It(){const e=s=>{s!=null&&Bt(s.ownerDocument)},[t,n]=F(!1);function i(){return t()?(j=!0,window.clearTimeout(re),re=window.setTimeout(()=>{j=!1},100),n(!1),!0):!1}function o(s){return $t(s)?(n(!0),!0):!1}return{isFocusVisibleRef:{get current(){return t()}},onFocus:o,onBlur:i,ref:e}}const Nt=G()({name:"MuiButtonBase",selfPropNames:["LinkComponent","TouchRippleProps","action","centerRipple","children","classes","disableRipple","disableRipple","disableTouchRipple","disabled","focusRipple","focusVisibleClassName","onFocusVisible","tabIndex","touchRippleRef"],propDefaults:({set:e})=>e({component:"button",disabled:!1,disableRipple:!1,disableTouchRipple:!1,focusRipple:!1,LinkComponent:"a",centerRipple:!1,tabIndex:0}),utilityClass:Rt,slotClasses:e=>({root:["root",e.disabled&&"disabled",e.focusVisible&&"focusVisible"]})}),Et=Q("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${Ct.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),zt=Nt.component(function({allProps:t,props:n,otherProps:i,classes:o}){const s=X(i),l=X(()=>n.touchRippleRef),c=It();let g=!1;const[f,d]=F(!1),[p,S]=F(!1),z=x(t,{get focusVisible(){return f()}});Fe(()=>{S(!0)}),A(()=>{n.disabled&&f()&&d(!1)}),A(()=>{f()&&n.focusRipple&&!n.disableRipple&&l.ref.pulsate()});function R(a,Z,Se=n.disableTouchRipple){return ee=>(typeof Z=="function"&&Z(ee),!Se&&l.ref&&l.ref[a](ee),!0)}const O=R("start",i.onMouseDown),W=R("stop",i.onContextMenu),u=R("stop",i.onDragLeave),m=R("stop",i.onMouseUp),T=R("stop",a=>{f()&&a.preventDefault(),typeof i.onMouseLeave=="function"&&i.onMouseLeave(a)}),k=R("start",i.onTouchStart),M=R("stop",i.onTouchEnd),B=R("stop",i.onTouchMove),$=R("stop",a=>{c.onBlur(a),c.isFocusVisibleRef.current===!1&&d(!1),typeof i.onFocusOut=="function"&&i.onFocusOut(a)},!1),D=a=>{s.ref||(s.ref=a.currentTarget),c.onFocus(a),c.isFocusVisibleRef.current===!0&&(d(!0),n.onFocusVisible&&n.onFocusVisible(a)),typeof i.onFocusIn=="function"&&i.onFocusIn(a)},N=()=>i.component&&i.component!=="button"&&!(s.ref.tagName==="A"&&s.ref.hasAttribute("href")),ye=a=>{n.focusRipple&&!g&&f()&&l.ref&&a.key===" "&&(g=!0,l.ref.stop(a,()=>{l.ref.start(a)})),a.target===a.currentTarget&&N()&&a.key===" "&&a.preventDefault(),typeof i.onKeyDown=="function"&&i.onKeyDown(a),a.target===a.currentTarget&&N()&&a.key==="Enter"&&!n.disabled&&(a.preventDefault(),typeof i.onClick=="function"&&i.onClick(a))},he=a=>{n.focusRipple&&a.key===" "&&l.ref&&f()&&!a.defaultPrevented&&(g=!1,l.ref.stop(a,()=>{l.ref.pulsate(a)})),typeof i.onKeyUp=="function"&&i.onKeyUp(a),typeof i.onClick=="function"&&a.target===a.currentTarget&&N()&&a.key===" "&&!a.defaultPrevented&&i.onClick(a)},J=E(()=>{let a=i.component;return a==="button"&&(i.href||i.to)&&(a=n.LinkComponent),a}),be=E(()=>{const a={};return J()==="button"?(a.type=i.type===void 0?"button":i.type,a.disabled=n.disabled):(!i.href&&!i.to&&(a.role="button"),n.disabled&&(a["aria-disabled"]=n.disabled)),a}),xe=()=>p()&&!n.disableRipple&&!n.disabled;return w(Et,x(be,i,{get className(){return y(o.root,i.className)},ownerState:z,onFocusOut:$,get onClick(){return i.onClick},onContextMenu:W,onFocusIn:D,onKeyDown:ye,onKeyUp:he,onMouseDown:O,onMouseLeave:T,onMouseUp:m,onDragLeave:u,onTouchEnd:M,onTouchMove:B,onTouchStart:k,ref:s,get tabIndex(){return n.disabled?-1:n.tabIndex},get type(){return i.type},get component(){return J()},get children(){return[Ae(()=>n.children),w(ze,{get when(){return xe()},get children(){return w(St,x({ref:l,get center(){return n.centerRipple}},()=>n.TouchRippleProps||{}))}})]}}))});export{st as B,Oe as D,me as a,At as b,y as c,zt as d,it as e,Ft as f,ge as g,gt as h,X as i,Q as s}; -//# sourceMappingURL=ButtonBase.9bf595f5.js.map diff --git a/source/files/magicbroad/assets/ButtonBase.9bf595f5.js.map b/source/files/magicbroad/assets/ButtonBase.9bf595f5.js.map deleted file mode 100644 index 4f4ced9..0000000 --- a/source/files/magicbroad/assets/ButtonBase.9bf595f5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ButtonBase.9bf595f5.js","sources":["../../node_modules/@suid/system/createStyle.js","../../node_modules/@suid/system/Dynamic/Dynamic.jsx","../../node_modules/@suid/css/resolve.js","../../node_modules/@suid/system/resolveStyledProps.js","../../node_modules/@suid/system/getThemeValue.js","../../node_modules/@suid/system/spacing.js","../../node_modules/@suid/system/createSystemProps.js","../../node_modules/@suid/system/systemProps.js","../../node_modules/@suid/system/resolveSxProps.js","../../node_modules/@suid/system/styleFunctionSx/extendSxProp.jsx","../../node_modules/@suid/system/Box/Box.jsx","../../node_modules/clsx/dist/clsx.m.js","../../node_modules/@suid/material/Box/Box.jsx","../../node_modules/@suid/system/createStyled.jsx","../../node_modules/@suid/material/styles/styled.jsx","../../node_modules/@suid/base/generateUtilityClass.js","../../node_modules/@suid/base/generateUtilityClasses.js","../../node_modules/@suid/utils/capitalize.js","../../node_modules/@suid/material/ButtonBase/Ripple.jsx","../../node_modules/@suid/material/ButtonBase/touchRippleClasses.js","../../node_modules/@suid/system/createRef.js","../../node_modules/@suid/system/createElementRef.js","../../node_modules/@suid/material/ButtonBase/TouchRipple.jsx","../../node_modules/@suid/material/ButtonBase/buttonBaseClasses.js","../../node_modules/@suid/utils/useIsFocusVisible.js","../../node_modules/@suid/material/ButtonBase/ButtonBase.jsx"],"sourcesContent":["export { default } from \"@suid/styled-engine/createStyle\";\nexport const resolvedPropKey = \"__resolved\";\n","import defineComponent from \"../defineComponent\";\nimport { Dynamic as DynamicBase } from \"solid-js/web\";\nexport const Dynamic = defineComponent(function Dynamic(props) {\n if (!props.component)\n throw new Error(`Component prop is empty`);\n return ;\n});\nexport default Dynamic;\n","import { isGlobalSelector, isKeyframes, isMediaQuery, isSelector, } from \"./assert\";\nfunction resolve(css, onProp, cssTarget = {}) {\n for (const name in css) {\n const value = css[name];\n if (isGlobalSelector(name)) {\n cssTarget[name] = resolve(value, onProp);\n }\n else if (isMediaQuery(name)) {\n cssTarget[name] = resolve(value, onProp);\n }\n else if (isKeyframes(name)) {\n cssTarget[name] = {};\n for (const v in value) {\n cssTarget[name][v] = resolve(value[v], onProp);\n }\n }\n else if (isSelector(name)) {\n cssTarget[name] = resolve(value, onProp);\n }\n else {\n const result = onProp(name, value);\n if (result) {\n Object.assign(cssTarget, result);\n }\n else {\n cssTarget[name] = value;\n }\n }\n }\n return cssTarget;\n}\nexport default resolve;\n","import { resolvedPropKey } from \"./createStyle\";\nimport resolve from \"@suid/css/resolve\";\n/**\n * @link https://github.com/emotion-js/emotion/blob/main/packages/unitless/src/index.js\n */\nexport const unitLess = new Set([\n \"animationIterationCount\",\n \"borderImageOutset\",\n \"borderImageSlice\",\n \"borderImageWidth\",\n \"boxFlex\",\n \"boxFlexGroup\",\n \"boxOrdinalGroup\",\n \"columnCount\",\n \"columns\",\n \"flex\",\n \"flexGrow\",\n \"flexPositive\",\n \"flexShrink\",\n \"flexNegative\",\n \"flexOrder\",\n \"gridRow\",\n \"gridRowEnd\",\n \"gridRowSpan\",\n \"gridRowStart\",\n \"gridColumn\",\n \"gridColumnEnd\",\n \"gridColumnSpan\",\n \"gridColumnStart\",\n \"msGridRow\",\n \"msGridRowSpan\",\n \"msGridColumn\",\n \"msGridColumnSpan\",\n \"fontWeight\",\n \"lineHeight\",\n \"opacity\",\n \"order\",\n \"orphans\",\n \"tabSize\",\n \"widows\",\n \"zIndex\",\n \"zoom\",\n \"WebkitLineClamp\",\n \"fillOpacity\",\n \"floodOpacity\",\n \"stopOpacity\",\n \"strokeDasharray\",\n \"strokeDashoffset\",\n \"strokeMiterlimit\",\n \"strokeOpacity\",\n \"strokeWidth\",\n]);\nexport function resolveStyledPropsValue(name, value) {\n if (typeof value === \"number\") {\n return { [name]: unitLess.has(name) ? value.toString() : `${value}px` };\n }\n}\nfunction resolveStyledProps(v) {\n return resolve(v, resolveStyledPropsValue, { [resolvedPropKey]: true });\n}\nexport default resolveStyledProps;\n","function getThemeValue(theme, key, value) {\n if (typeof value !== \"string\")\n return value;\n const names = value.split(\".\");\n let ref = theme[key];\n for (let i = 0; i < names.length; i++) {\n ref = ref?.[names[i]];\n if (!ref)\n break;\n }\n return ref ?? value;\n}\nexport default getThemeValue;\n","function getPath(obj, path) {\n if (!path || typeof path !== \"string\") {\n return null;\n }\n return path\n .split(\".\")\n .reduce((acc, item) => (acc && acc[item] ? acc[item] : null), obj);\n}\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n const themeSpacing = getPath(theme, themeKey) || defaultValue;\n if (typeof themeSpacing === \"number\") {\n return (abs) => {\n if (typeof abs === \"string\") {\n return abs;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof abs !== \"number\") {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return (abs) => {\n if (typeof abs === \"string\") {\n return abs;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!Number.isInteger(abs)) {\n console.error([\n `MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` +\n `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`,\n ].join(\"\\n\"));\n }\n else if (abs > themeSpacing.length - 1) {\n console.error([\n `MUI: The value provided (${abs}) overflows.`,\n `The supported values are: ${JSON.stringify(themeSpacing)}.`,\n `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`,\n ].join(\"\\n\"));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === \"function\") {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== \"production\") {\n console.error([\n `MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`,\n \"It should be a number, an array or a function.\",\n ].join(\"\\n\"));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, \"spacing.resolve\", 8, \"spacing.resolve\");\n}\n","import getThemeValue from \"./getThemeValue\";\nimport { createUnaryUnit } from \"./spacing\";\nconst dirMap = {\n x: [\"Left\", \"Right\"],\n y: [\"Top\", \"Bottom\"],\n};\nfunction asPx(value) {\n return typeof value === \"number\" ? `${value}px` : value;\n}\nfunction customProp(name, onValue) {\n return (value, theme) => onValue(name, value, theme);\n}\nfunction prop(name, onValue) {\n return onValue\n ? (value, theme) => ({\n [name]: onValue(name, value, theme),\n })\n : (value) => ({ [name]: value });\n}\nfunction pxProp(name) {\n return prop(name, (name, value) => asPx(value));\n}\nfunction mProp(name, suffix, onValue) {\n const names = suffix.map((v) => `${name}${v}`);\n return onValue\n ? (value, theme) => names.reduce((result, name) => {\n result[name] = onValue(name, value, theme);\n return result;\n }, {})\n : (value) => names.reduce((result, name) => {\n result[name] = value;\n return result;\n }, {});\n}\nfunction createSystemProps() {\n return {\n ...createSystemDisplayProps(),\n ...createSystemFlexboxProps(),\n ...createSystemGridProps(),\n ...createSystemPositionProps(),\n ...createSystemPaletteProps(),\n ...createSystemSizingProps(),\n ...createSystemBorderProps(),\n ...createSystemSpacingProps(),\n ...createSystemTypographyProps(),\n };\n}\nexport function createSystemDisplayProps() {\n return {\n displayPrint: customProp(\"displayPrint\", (name, display) => ({\n \"@media print\": {\n display,\n },\n })),\n displayRaw: prop(\"display\"),\n overflow: prop(\"overflow\"),\n textOverflow: prop(\"textOverflow\"),\n visibility: prop(\"visibility\"),\n whiteSpace: prop(\"whiteSpace\"),\n };\n}\nexport function createSystemFlexboxProps() {\n return {\n flexBasis: prop(\"flexBasis\"),\n flexDirection: prop(\"flexDirection\"),\n flexWrap: prop(\"flexWrap\"),\n justifyContent: prop(\"justifyContent\"),\n alignItems: prop(\"alignItems\"),\n alignContent: prop(\"alignContent\"),\n order: prop(\"order\"),\n flex: prop(\"flex\"),\n flexGrow: prop(\"flexGrow\"),\n flexShrink: prop(\"flexShrink\"),\n alignSelf: prop(\"alignSelf\"),\n justifyItems: prop(\"justifyItems\"),\n justifySelf: prop(\"justifySelf\"),\n };\n}\nexport function createSystemGridProps() {\n const spacing = (name, value, theme) => createUnaryUnit(theme, \"spacing\", 8, name)(value);\n return {\n gap: prop(\"gap\", spacing),\n columnGap: prop(\"columnGap\", spacing),\n rowGap: prop(\"rowGap\", spacing),\n gridColumn: prop(\"gridColumn\"),\n gridRow: prop(\"gridRow\"),\n gridAutoFlow: prop(\"gridAutoFlow\"),\n gridAutoColumns: prop(\"gridAutoColumns\"),\n gridAutoRows: prop(\"gridAutoRows\"),\n gridTemplateColumns: prop(\"gridTemplateColumns\"),\n gridTemplateRows: prop(\"gridTemplateRows\"),\n gridTemplateAreas: prop(\"gridTemplateAreas\"),\n gridArea: prop(\"gridArea\"),\n };\n}\nexport function createSystemPositionProps() {\n return {\n position: prop(\"position\"),\n zIndex: prop(\"zIndex\", (name, value, theme) => theme.zIndex?.[name] ?? value),\n top: pxProp(\"top\"),\n right: pxProp(\"right\"),\n bottom: pxProp(\"bottom\"),\n left: pxProp(\"left\"),\n };\n}\nexport function createSystemPaletteProps() {\n const paletteValue = (name, value, theme) => getThemeValue(theme, \"palette\", value);\n return {\n color: prop(\"color\", paletteValue),\n bgcolor: prop(\"backgroundColor\", paletteValue),\n backgroundColor: prop(\"backgroundColor\", paletteValue),\n };\n}\nexport function createSystemSizingProps() {\n const onValue = (name, value, theme) => {\n if (name === \"maxWidth\") {\n value = theme.breakpoints.values[name] ?? value;\n }\n if (typeof value === \"number\") {\n value = value > 0 && value <= 1 ? `${value * 100}%` : `${value}px`;\n }\n return value;\n };\n return {\n width: prop(\"width\", onValue),\n maxWidth: prop(\"maxWidth\", onValue),\n minWidth: prop(\"minWidth\", onValue),\n height: prop(\"height\", onValue),\n maxHeight: prop(\"maxHeight\", onValue),\n minHeight: prop(\"minHeight\", onValue),\n boxSizing: prop(\"boxSizing\", onValue),\n };\n}\nexport function createSystemBorderProps() {\n const borderValue = (name, value) => typeof value === \"number\" ? `${value}px solid` : value;\n const paletteValue = (name, value, theme) => getThemeValue(theme, \"palette\", value);\n return {\n border: prop(\"border\", borderValue),\n borderTop: prop(\"borderTop\", borderValue),\n borderRight: prop(\"borderRight\", borderValue),\n borderBottom: prop(\"borderBottom\", borderValue),\n borderLeft: prop(\"borderLeft\", borderValue),\n borderColor: prop(\"borderColor\", paletteValue),\n borderTopColor: prop(\"borderTopColor\", paletteValue),\n borderRightColor: prop(\"borderRightColor\", paletteValue),\n borderBottomColor: prop(\"borderBottomColor\", paletteValue),\n borderLeftColor: prop(\"borderLeftColor\", paletteValue),\n borderRadius: prop(\"borderRadius\", (name, value, theme) => typeof value === \"number\"\n ? `${theme.shape.borderRadius * value}px`\n : value),\n };\n}\nexport function createSystemTypographyProps() {\n const typographyValue = (name, value, theme) => getThemeValue(theme, \"typography\", value);\n return {\n typography: customProp(\"typography\", (name, value, theme) => getThemeValue(theme, \"typography\", value)),\n fontFamily: prop(\"fontFamily\", typographyValue),\n fontSize: prop(\"fontSize\", (name, value, theme) => asPx(typographyValue(name, value, theme))),\n fontStyle: prop(\"fontStyle\", typographyValue),\n fontWeight: prop(\"fontWeight\", typographyValue),\n letterSpacing: pxProp(\"letterSpacing\"),\n lineHeight: prop(\"lineHeight\"),\n textAlign: prop(\"textAlign\"),\n textTransform: prop(\"textTransform\"),\n };\n}\nexport function createSystemSpacingProps() {\n const spacing = (name, value, theme) => theme.spacing(value);\n const m = \"margin\";\n const p = \"padding\";\n return {\n m: prop(m, spacing),\n mt: prop(\"marginTop\", spacing),\n mr: prop(\"marginRight\", spacing),\n mb: prop(\"marginBottom\", spacing),\n ml: prop(\"marginLeft\", spacing),\n mx: mProp(m, dirMap[\"x\"], spacing),\n my: mProp(m, dirMap[\"y\"], spacing),\n margin: prop(m, spacing),\n marginTop: prop(\"marginTop\", spacing),\n marginRight: prop(\"marginRight\", spacing),\n marginBottom: prop(\"marginBottom\", spacing),\n marginLeft: prop(\"marginLeft\", spacing),\n marginX: mProp(m, dirMap[\"x\"], spacing),\n marginY: mProp(m, dirMap[\"y\"], spacing),\n marginInline: mProp(m, [\"Inline\", \"InlineStart\"], spacing),\n marginInlineStart: prop(\"marginInlineStart\", spacing),\n marginInlineEnd: prop(\"marginInlineEnd\", spacing),\n marginBlock: mProp(m, [\"BlockStart\", \"BlockEnd\"], spacing),\n marginBlockStart: prop(\"marginBlockStart\", spacing),\n marginBlockEnd: prop(\"marginBlockEnd\", spacing),\n p: prop(p, spacing),\n pt: prop(\"paddingTop\", spacing),\n pr: prop(\"paddingRight\", spacing),\n pb: prop(\"paddingBottom\", spacing),\n pl: prop(\"paddingLeft\", spacing),\n px: mProp(p, dirMap[\"x\"], spacing),\n py: mProp(p, dirMap[\"y\"], spacing),\n padding: prop(p, spacing),\n paddingTop: prop(\"paddingTop\", spacing),\n paddingRight: prop(\"paddingRight\", spacing),\n paddingBottom: prop(\"paddingBottom\", spacing),\n paddingLeft: prop(\"paddingLeft\", spacing),\n paddingX: mProp(p, dirMap[\"x\"], spacing),\n paddingY: mProp(p, dirMap[\"y\"], spacing),\n paddingInline: mProp(p, [\"Inline\", \"InlineStart\"], spacing),\n paddingInlineStart: prop(\"paddingInlineStart\", spacing),\n paddingInlineEnd: prop(\"paddingInlineEnd\", spacing),\n paddingBlock: mProp(p, [\"BlockStart\", \"BlockEnd\"], spacing),\n paddingBlockStart: prop(\"paddingBlockStart\", spacing),\n paddingBlockEnd: prop(\"paddingBlockEnd\", spacing),\n };\n}\nexport default createSystemProps;\n","import createSystemProps from \"./createSystemProps\";\nconst systemProps = createSystemProps();\nexport const systemPropNames = Object.keys(systemProps);\nexport default systemProps;\n","import { resolvedPropKey } from \"./createStyle\";\nimport { resolveStyledPropsValue } from \"./resolveStyledProps\";\nimport systemProps from \"./systemProps\";\nimport resolve from \"@suid/css/resolve\";\nexport function resolveSystemPropsValue(name, value, theme) {\n return systemProps[name](value, theme);\n}\nexport function reslveSxPropsValue(name, value, theme) {\n return name in systemProps\n ? resolveSystemPropsValue(name, value, theme)\n : resolveStyledPropsValue(name, value);\n}\nfunction resolveSxProps(v, theme) {\n return resolve(v, (name, value) => reslveSxPropsValue(name, value, theme), {\n [resolvedPropKey]: true,\n });\n}\nexport default resolveSxProps;\n","import { systemPropNames } from \"../systemProps\";\nimport { mergeProps, splitProps } from \"solid-js\";\nexport default function extendSxProp(props) {\n const [systemProps, otherProps] = splitProps(props, systemPropNames);\n const sx = () => {\n const sx = props.sx;\n if (sx) {\n if (Array.isArray(sx)) {\n return [systemProps, ...sx];\n }\n else {\n return mergeProps(systemProps, sx);\n }\n }\n else {\n return systemProps;\n }\n };\n return mergeProps(otherProps, {\n get sx() {\n return sx();\n },\n });\n}\n","import Dynamic from \"../Dynamic/Dynamic\";\nimport createStyle, { resolvedPropKey } from \"../createStyle\";\nimport defineComponent from \"../defineComponent\";\nimport resolveSxProps from \"../resolveSxProps\";\nimport extendSxProp from \"../styleFunctionSx/extendSxProp\";\nimport useTheme from \"../useTheme\";\nimport toArray from \"@suid/utils/toArray\";\nimport { mergeProps, splitProps } from \"solid-js\";\nexport const disableSystemPropsKey = \"__disableSystemProps\";\nexport const boxSelfProps = [\n \"sx\",\n \"theme\",\n disableSystemPropsKey,\n];\nexport const Box = defineComponent(function Box(inProps) {\n const disableSystemProps = inProps[disableSystemPropsKey];\n if (!disableSystemProps)\n inProps = extendSxProp(inProps);\n const [props, otherProps] = splitProps(inProps, boxSelfProps);\n const useInTheme = () => inProps.theme || useTheme();\n const forwardSx = () => !!inProps.component && typeof inProps.component !== \"string\";\n const dynamicProps = mergeProps(otherProps, {\n get component() {\n return otherProps.component || \"div\";\n },\n get sx() {\n return forwardSx() ? inProps.sx : undefined;\n },\n });\n const style = createStyle(() => {\n const theme = useInTheme();\n const haveStyles = !disableSystemProps || !!props.sx;\n if (!haveStyles || forwardSx())\n return [];\n return toArray(props.sx).map((object) => object[resolvedPropKey]\n ? object\n : resolveSxProps(object, theme));\n });\n const className = () => {\n const className = otherProps.className;\n const styleValue = style();\n if (styleValue?.length) {\n return className ? `${className} ${styleValue}` : styleValue;\n }\n else {\n return className;\n }\n };\n return ;\n});\nexport default Box;\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","import { useTheme } from \"..\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nimport SystemBox from \"@suid/system/Box\";\nimport clsx from \"clsx\";\nconst $ = createComponentFactory()({\n name: \"MuiBox\",\n selfPropNames: [],\n utilityClass: (slot) => `MuiBox-${slot}`,\n slotClasses: () => ({\n root: [\"root\"],\n }),\n});\nexport const Box = $.component(function Box({ otherProps, classes }) {\n const theme = useTheme();\n return ();\n});\nexport default Box;\n","import Box, { disableSystemPropsKey } from \"./Box\";\nimport resolveStyledProps from \"./resolveStyledProps\";\nimport useTheme from \"./useTheme\";\nimport clsx from \"clsx\";\nimport { createMemo } from \"solid-js\";\nimport { splitProps } from \"solid-js\";\nexport const skipProps = [\n \"ownerState\",\n \"theme\",\n \"sx\",\n \"as\",\n];\nfunction resolveStyles(theme, className, styles, inProps) {\n return createMemo(() => styles.reduce((result, style) => {\n let styledProps;\n if (typeof style === \"function\") {\n styledProps = style({\n ownerState: inProps.ownerState,\n theme,\n sx: inProps.sx,\n as: inProps.as,\n props: inProps,\n });\n }\n else if (style) {\n styledProps = style;\n }\n if (styledProps)\n result.push({\n [\"name\"]: className,\n ...resolveStyledProps(styledProps),\n });\n return result;\n }, []));\n}\nfunction createStyled(config) {\n return function styled(Component, options = {}) {\n let className;\n if (options.name) {\n const slot = options.slot || \"Root\";\n className = `${options.name}-${slot.slice(0, 1).toLowerCase() + slot.slice(1)}`;\n }\n return function (...styles) {\n return function (inProps) {\n const theme = config?.onUseTheme\n ? config.onUseTheme()\n : useTheme();\n const [, otherProps] = splitProps(inProps, options.skipProps ?? skipProps);\n const inStyles = resolveStyles(theme, className || \"css\", styles, inProps);\n const inSx = createMemo(() => !options.skipSx && inProps.sx\n ? Array.isArray(inProps.sx)\n ? inProps.sx\n : [inProps.sx]\n : []);\n const sx = () => [...inStyles(), ...inSx()];\n if (typeof Component === \"string\") {\n return ();\n }\n return ();\n };\n };\n };\n}\nexport default createStyled;\n","import { useTheme } from \".\";\nimport createStyled, { skipProps } from \"@suid/system/createStyled\";\nexport const skipRootProps = [...skipProps, \"classes\"];\nexport default createStyled({\n onUseTheme: () => useTheme(),\n});\n","const defaultGenerator = (componentName) => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n },\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nconst globalStateClassesMapping = {\n active: \"Mui-active\",\n checked: \"Mui-checked\",\n completed: \"Mui-completed\",\n disabled: \"Mui-disabled\",\n error: \"Mui-error\",\n expanded: \"Mui-expanded\",\n focused: \"Mui-focused\",\n focusVisible: \"Mui-focusVisible\",\n required: \"Mui-required\",\n selected: \"Mui-selected\",\n};\nexport default function generateUtilityClass(componentName, slot) {\n const globalStateClass = globalStateClassesMapping[slot];\n return (globalStateClass || `${ClassNameGenerator.generate(componentName)}-${slot}`);\n}\n","import generateUtilityClass from \"./generateUtilityClass\";\nexport default function generateUtilityClasses(componentName, slots) {\n const result = {};\n slots.forEach((slot) => {\n result[slot] = generateUtilityClass(componentName, slot);\n });\n return result;\n}\n","// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== \"string\") {\n throw new Error(\"MUI: `capitalize(string)` expects a string argument.\");\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","import Box from \"../Box\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nimport clsx from \"clsx\";\nimport { createEffect, createMemo, createSignal, onCleanup } from \"solid-js\";\nconst $ = createComponentFactory()({\n name: \"MuiRipple\",\n selfPropNames: [\n \"className\",\n \"classes\",\n \"pulsate\",\n \"rippleX\",\n \"rippleY\",\n \"rippleSize\",\n \"in\",\n \"onExited\",\n \"timeout\",\n ],\n propDefaults: ({ set }) => set({\n pulsate: false,\n classes: {},\n }),\n});\n/**\n * @ignore - internal component.\n */\nconst Ripple = $.component(function Ripple({ props, otherProps }) {\n const [leaving, setLeaving] = createSignal(false);\n const rippleClassName = createMemo(() => clsx(props.className, props.classes.ripple, props.classes.rippleVisible, props.classes.ripplePulsate && {\n [props.classes.ripplePulsate]: props.pulsate,\n }));\n const rippleStyles = createMemo(() => ({\n width: `${props.rippleSize}px`,\n height: `${props.rippleSize}px`,\n top: `${-(props.rippleSize / 2) + props.rippleY}px`,\n left: `${-(props.rippleSize / 2) + props.rippleX}px`,\n }));\n const childClassName = createMemo(() => clsx(props.classes.child, props.classes.childLeaving && {\n [props.classes.childLeaving]: leaving(),\n }, props.classes.childPulsate && {\n [props.classes.childPulsate]: props.pulsate,\n }));\n createEffect(() => {\n if (!props.in && !leaving()) {\n setLeaving(true);\n }\n });\n let timeoutId;\n createEffect(() => {\n if (!props.in && props.onExited) {\n clearTimeout(timeoutId);\n timeoutId = window.setTimeout(props.onExited, props.timeout);\n }\n });\n onCleanup(() => clearTimeout(timeoutId));\n return (\n \n );\n});\nexport default Ripple;\n","import { generateUtilityClass, generateUtilityClasses } from \"@suid/base\";\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass(\"MuiTouchRipple\", slot);\n}\nconst touchRippleClasses = generateUtilityClasses(\"MuiTouchRipple\", [\n \"root\",\n \"ripple\",\n \"rippleVisible\",\n \"ripplePulsate\",\n \"child\",\n \"childLeaving\",\n \"childPulsate\",\n]);\nexport default touchRippleClasses;\n","function createRef(input) {\n const cb = (e) => {\n cb.ref = cb.current = e;\n if (typeof input === \"function\") {\n const inputResult = input();\n if (typeof inputResult === \"function\") {\n inputResult(e);\n }\n }\n else if (typeof input?.ref === \"function\") {\n input.ref(e);\n }\n };\n return cb;\n}\nexport default createRef;\n","import createRef from \"./createRef\";\nfunction createElementRef(props) {\n return createRef(props);\n}\nexport default createElementRef;\n","import styled from \"../styles/styled\";\nimport Ripple from \"./Ripple\";\nimport touchRippleClasses from \"./touchRippleClasses\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nimport createElementRef from \"@suid/system/createElementRef\";\nimport clsx from \"clsx\";\nimport { createEffect, createSignal, mapArray, mergeProps, onCleanup, } from \"solid-js\";\nimport { createMutable } from \"solid-js/store\";\nconst $ = createComponentFactory()({\n name: \"MuiTouchRipple\",\n selfPropNames: [\"center\", \"classes\", \"ref\"],\n propDefaults: ({ set }) => set({\n center: false,\n classes: {},\n }),\n});\n//const DURATION = 10_000; //550;\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nexport const TouchRippleRoot = styled(\"span\", {\n name: \"MuiTouchRipple\",\n slot: \"Root\",\n})({\n overflow: \"hidden\",\n pointerEvents: \"none\",\n position: \"absolute\",\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: \"inherit\",\n});\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n name: \"MuiTouchRipple\",\n slot: \"Ripple\",\n})(({ theme }) => ({\n position: \"absolute\",\n \"@keyframes animation-enter-$id\": {\n 0: {\n transform: \"scale(0)\",\n opacity: 0.1,\n },\n 100: {\n transform: \"scale(1)\",\n opacity: 0.3,\n },\n },\n \"@keyframes animation-exit-$id\": {\n 0: {\n opacity: 1,\n },\n 100: {\n opacity: 0,\n },\n },\n \"@keyframes animation-pulsate-$id\": {\n 0: {\n transform: \"scale(1)\",\n },\n 50: {\n transform: \"scale(0.92)\",\n },\n 100: {\n transform: \"scale(1)\",\n },\n },\n [`&.${touchRippleClasses.rippleVisible}`]: {\n opacity: \"0.3\",\n transform: \"scale(1)\",\n animationName: `animation-enter-$id`,\n animationDuration: `${DURATION}ms`,\n animationTimingFunction: theme.transitions.easing.easeInOut,\n },\n [`&.${touchRippleClasses.ripplePulsate}`]: {\n animationDuration: `${theme.transitions.duration.shorter}ms`,\n },\n [`& .${touchRippleClasses.child}`]: {\n opacity: 1,\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n borderRadius: \"50%\",\n backgroundColor: \"currentColor\",\n },\n [`& .${touchRippleClasses.childLeaving}`]: {\n opacity: 0,\n animationName: `animation-exit-$id`,\n animationDuration: `${DURATION}ms`,\n animationTimingFunction: `${theme.transitions.easing.easeInOut}`,\n },\n [`& .${touchRippleClasses.childPulsate}`]: {\n position: \"absolute\",\n left: \"0px\",\n top: 0,\n animationName: `animation-pulsate-$id`,\n animationDuration: \"2500ms\",\n animationTimingFunction: `${theme.transitions.easing.easeInOut}`,\n animationIterationCount: \"infinite\",\n animationDelay: \"200ms\",\n },\n}));\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = $.component(function TouchRipple({ props, otherProps }) {\n let counter = 0;\n const [ripples, setRipples] = createSignal([]);\n const inProps = createMutable({});\n let rippleCallback;\n // Used to filter out mouse emulated events on mobile.\n let ignoringMouseDown = false;\n // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n let startTimer;\n // This is the hook called once the previous timeout is ready.\n let startTimerCommit;\n const container = createElementRef(otherProps);\n const activeIds = [];\n onCleanup(() => {\n if (startTimer)\n clearTimeout(startTimer);\n });\n createEffect(() => {\n ripples();\n if (rippleCallback) {\n rippleCallback();\n rippleCallback = undefined;\n }\n });\n const startCommit = (params) => {\n const id = counter++;\n activeIds.push(id);\n inProps[id] = true;\n setRipples((oldRipples) => [\n ...oldRipples,\n {\n id,\n params,\n },\n ]);\n rippleCallback = params.cb;\n };\n const start = (event, options = {\n pulsate: false,\n center: props.center,\n }, cb) => {\n options = mergeProps(options, {\n center: options.center || options.pulsate,\n });\n if (event.type === \"mousedown\" && ignoringMouseDown) {\n ignoringMouseDown = false;\n return;\n }\n if (event.type === \"touchstart\") {\n ignoringMouseDown = true;\n }\n const rect = container.ref\n ? container.ref.getBoundingClientRect()\n : {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n };\n // Get the size of the ripple\n let rippleX;\n let rippleY;\n let rippleSize;\n if (options.center ||\n (event.clientX === 0 && event.clientY === 0) ||\n (!event.clientX && !event.touches)) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n }\n else {\n const { clientX, clientY } = event.touches ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n if (options.center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n // For some reason the animation is broken on Mobile Chrome if the size is even.\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n }\n else {\n const sizeX = Math.max(Math.abs((container.ref ? container.ref.clientWidth : 0) - rippleX), rippleX) *\n 2 +\n 2;\n const sizeY = Math.max(Math.abs((container.ref ? container.ref.clientHeight : 0) - rippleY), rippleY) *\n 2 +\n 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n }\n // Touche devices\n if (event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (!startTimerCommit) {\n // Prepare the ripple effect.\n startTimerCommit = () => {\n startCommit({\n pulsate: options.pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb,\n });\n };\n // Delay the execution of the ripple effect.\n startTimer = setTimeout(() => {\n if (startTimerCommit) {\n startTimerCommit();\n startTimerCommit = undefined;\n }\n }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n }\n }\n else {\n startCommit({\n pulsate: options.pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb,\n });\n }\n };\n const pulsate = () => start({}, { pulsate: true });\n const stop = (event, cb) => {\n clearTimeout(startTimer);\n // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n if (event.type === \"touchend\" && startTimerCommit) {\n startTimerCommit();\n startTimerCommit = undefined;\n startTimer = setTimeout(() => {\n stop(event, cb);\n });\n return;\n }\n for (const id in inProps)\n inProps[id] = false;\n startTimerCommit = undefined;\n rippleCallback = cb;\n };\n const actions = {\n pulsate,\n start,\n stop,\n };\n if (typeof props.ref === \"function\") {\n props.ref(actions);\n }\n return (\n {mapArray(ripples, (data) => ( {\n setRipples((oldRipples) => oldRipples.filter((v) => v.id !== data.id));\n delete inProps[data.id];\n }} classes={{\n ripple: clsx(props.classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(props.classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(props.classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(props.classes.child, touchRippleClasses.child),\n childLeaving: clsx(props.classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(props.classes.childPulsate, touchRippleClasses.childPulsate),\n }} timeout={DURATION} pulsate={data.params.pulsate} rippleX={data.params.rippleX} rippleY={data.params.rippleY} rippleSize={data.params.rippleSize}/>))}\n );\n});\nexport default TouchRipple;\n","import { generateUtilityClass, generateUtilityClasses } from \"@suid/base\";\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass(\"MuiButtonBase\", slot);\n}\nconst buttonBaseClasses = generateUtilityClasses(\"MuiButtonBase\", [\"root\", \"disabled\", \"focusVisible\"]);\nexport default buttonBaseClasses;\n","import { createSignal } from \"solid-js\";\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nlet hadFocusVisibleRecentlyTimeout;\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n \"datetime-local\": true,\n};\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const { type, tagName } = node;\n if (tagName === \"INPUT\" &&\n inputTypesWhitelist[type] &&\n !node.readOnly) {\n return true;\n }\n if (tagName === \"TEXTAREA\" && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === \"hidden\") {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener(\"keydown\", handleKeyDown, true);\n doc.addEventListener(\"mousedown\", handlePointerDown, true);\n doc.addEventListener(\"pointerdown\", handlePointerDown, true);\n doc.addEventListener(\"touchstart\", handlePointerDown, true);\n doc.addEventListener(\"visibilitychange\", handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener(\"keydown\", handleKeyDown, true);\n doc.removeEventListener(\"mousedown\", handlePointerDown, true);\n doc.removeEventListener(\"pointerdown\", handlePointerDown, true);\n doc.removeEventListener(\"touchstart\", handlePointerDown, true);\n doc.removeEventListener(\"visibilitychange\", handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const { target } = event;\n try {\n return target.matches(\":focus-visible\");\n }\n catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = (node) => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n };\n const [isFocusVisibleRef, setFocusVisibleRef] = createSignal(false);\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef()) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(() => {\n hadFocusVisibleRecently = false;\n }, 100);\n setFocusVisibleRef(false);\n return true;\n }\n return false;\n }\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n setFocusVisibleRef(true);\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef: {\n get current() {\n return isFocusVisibleRef();\n },\n },\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref,\n };\n}\n","import styled from \"../styles/styled\";\nimport TouchRipple from \"./TouchRipple\";\nimport buttonBaseClasses, { getButtonBaseUtilityClass, } from \"./buttonBaseClasses\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nimport createRef from \"@suid/system/createRef\";\nimport useIsFocusVisible from \"@suid/utils/useIsFocusVisible\";\nimport clsx from \"clsx\";\nimport { createEffect, createMemo, createSignal, mergeProps, onMount, Show, } from \"solid-js\";\nconst $ = createComponentFactory()({\n name: \"MuiButtonBase\",\n selfPropNames: [\n \"LinkComponent\",\n \"TouchRippleProps\",\n \"action\",\n \"centerRipple\",\n \"children\",\n \"classes\",\n \"disableRipple\",\n \"disableRipple\",\n \"disableTouchRipple\",\n \"disabled\",\n \"focusRipple\",\n \"focusVisibleClassName\",\n \"onFocusVisible\",\n \"tabIndex\",\n \"touchRippleRef\",\n ],\n propDefaults: ({ set }) => set({\n component: \"button\",\n disabled: false,\n disableRipple: false,\n disableTouchRipple: false,\n focusRipple: false,\n LinkComponent: \"a\",\n centerRipple: false,\n tabIndex: 0,\n }),\n utilityClass: getButtonBaseUtilityClass,\n slotClasses: (ownerState) => ({\n root: [\n \"root\",\n ownerState.disabled && \"disabled\",\n ownerState.focusVisible && \"focusVisible\",\n ],\n }),\n});\nexport const ButtonBaseRoot = styled(\"button\", {\n name: \"MuiButtonBase\",\n slot: \"Root\",\n overridesResolver: (props, styles) => styles.root,\n})({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n boxSizing: \"border-box\",\n [\"WebkitTapHighlightColor\"]: \"transparent\",\n backgroundColor: \"transparent\",\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n borderRadius: 0,\n padding: 0,\n cursor: \"pointer\",\n userSelect: \"none\",\n verticalAlign: \"middle\",\n [\"MozAppearance\"]: \"none\",\n [\"WebkitAppearance\"]: \"none\",\n textDecoration: \"none\",\n // So we take precedent over the style of a native element.\n color: \"inherit\",\n \"&::-moz-focus-inner\": {\n borderStyle: \"none\", // Remove Firefox dotted outline.\n },\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: \"none\",\n cursor: \"default\",\n },\n \"@media print\": {\n colorAdjust: \"exact\",\n },\n});\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n *\n * Demos:\n *\n * - [Buttons](https://mui.com/components/buttons/)\n *\n * API:\n *\n * - [ButtonBase API](https://mui.com/api/button-base/)\n */\nconst ButtonBase = $.component(function ButtonBase({ allProps, props, otherProps, classes, }) {\n const button = createRef(otherProps);\n const ripple = createRef(() => props.touchRippleRef);\n const focus = useIsFocusVisible();\n let keydown = false;\n const [focusVisible, setFocusVisible] = createSignal(false);\n const [mountedState, setMountedState] = createSignal(false);\n const ownerState = mergeProps(allProps, {\n get focusVisible() {\n return focusVisible();\n },\n });\n onMount(() => {\n setMountedState(true);\n });\n createEffect(() => {\n if (props.disabled && focusVisible()) {\n setFocusVisible(false);\n }\n });\n createEffect(() => {\n if (focusVisible() && props.focusRipple && !props.disableRipple) {\n ripple.ref.pulsate();\n }\n });\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = props.disableTouchRipple) {\n return (event) => {\n if (typeof eventCallback === \"function\") {\n eventCallback(event);\n }\n const ignore = skipRippleAction;\n if (!ignore && ripple.ref) {\n ripple.ref[rippleAction](event);\n }\n return true;\n };\n }\n const handleMouseDown = useRippleHandler(\"start\", otherProps.onMouseDown);\n const handleContextMenu = useRippleHandler(\"stop\", otherProps.onContextMenu);\n const handleDragLeave = useRippleHandler(\"stop\", otherProps.onDragLeave);\n const handleMouseUp = useRippleHandler(\"stop\", otherProps.onMouseUp);\n const handleMouseLeave = useRippleHandler(\"stop\", (event) => {\n if (focusVisible()) {\n event.preventDefault();\n }\n if (typeof otherProps.onMouseLeave === \"function\") {\n otherProps.onMouseLeave(event);\n }\n });\n const handleTouchStart = useRippleHandler(\"start\", otherProps.onTouchStart);\n const handleTouchEnd = useRippleHandler(\"stop\", otherProps.onTouchEnd);\n const handleTouchMove = useRippleHandler(\"stop\", otherProps.onTouchMove);\n const handleBlur = useRippleHandler(\"stop\", (event) => {\n focus.onBlur(event);\n if (focus.isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n if (typeof otherProps.onFocusOut === \"function\") {\n otherProps.onFocusOut(event);\n }\n }, false);\n const handleFocus = (event) => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!button.ref) {\n button.ref = event.currentTarget;\n }\n focus.onFocus(event);\n if (focus.isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n if (props.onFocusVisible) {\n props.onFocusVisible(event);\n }\n }\n if (typeof otherProps.onFocusIn === \"function\") {\n otherProps.onFocusIn(event);\n }\n };\n const isNonNativeButton = () => {\n return (otherProps.component &&\n otherProps.component !== \"button\" &&\n !(button.ref.tagName === \"A\" && button.ref.hasAttribute(\"href\")));\n };\n /**\n * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n const handleKeyDown = (event) => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (props.focusRipple &&\n !keydown &&\n focusVisible() &&\n ripple.ref &&\n event.key === \" \") {\n keydown = true;\n ripple.ref.stop(event, () => {\n ripple.ref.start(event);\n });\n }\n if (event.target === event.currentTarget &&\n isNonNativeButton() &&\n event.key === \" \") {\n event.preventDefault();\n }\n if (typeof otherProps.onKeyDown === \"function\") {\n otherProps.onKeyDown(event);\n }\n // Keyboard accessibility for non interactive elements\n if (event.target === event.currentTarget &&\n isNonNativeButton() &&\n event.key === \"Enter\" &&\n !props.disabled) {\n event.preventDefault();\n if (typeof otherProps.onClick === \"function\") {\n otherProps.onClick(event);\n }\n }\n };\n const handleKeyUp = (event) => {\n // calling preventDefault in keyUp on a \n \n \n \n ;\n};\n\ninterface ContextMenuProps {\n position: undefined | [number, number],\n onClose: (() => void),\n currentDrawingTool: DrawTool,\n onChangingDrawingTool: ((newTool: DrawTool) => void),\n}\n\nconst ContextMenu: Component = (props) => {\n const buildContextMenuAnchorPos = () => {\n const [left, top] = props.position as [number, number];\n return {left, top};\n };\n\n const itemSx = {cursor: \"pointer\"};\n\n return props.onClose()}\n >\n \n props.onChangingDrawingTool(DrawTool.pen)}>\n Pen*\n \n props.onChangingDrawingTool(DrawTool.erase)}>\n Erase*\n \n props.onChangingDrawingTool(DrawTool.hand)}>\n Move*\n \n \n ;\n};\n\nconst RoomPage: Component = () => {\n const params = useParams();\n const broadCli = useBroadClient();\n const navigate = useNavigate();\n const [status, setStatus] = createSignal(RoomStatus.Unknown);\n const [roomInfo, setRoomInfo] = createSignal();\n const [currentDrawingTool, setCurrentDrawingTool] = createSignal(DrawTool.pen);\n const [contextMenuPos, setContextMenuPos] = createSignal<[number, number] | undefined>();\n const [gRouter, setGRouter] = createSignal();\n const drawCtl = new DrawBroadController(\"black\", 20);\n\n const strokes: Map = new Map();\n\n const [participants, participantsCtl] = createResource(() => {\n const room = roomInfo();\n if (room) {\n return broadCli.getParticipants(room.id);\n }\n return [];\n });\n\n const [roomOpts, roomOptsCtl] = createResource(() => {\n const room = roomInfo();\n if (room) {\n return (broadCli.getRoomOpts(room.id)\n .then(async (opts) => {\n if (!(opts.size_x && opts.size_y)) {\n await broadCli.setRoomOpts(room.id, {size_x: DEFAULT_DRAWING_SIZE_X, size_y: DEFAULT_DRAWING_SIZE_Y});\n return await broadCli.getRoomOpts(room.id);\n } else {\n return opts;\n }\n }));\n }\n return Promise.resolve(undefined);\n });\n\n const onBroadContextMenu = (e: ContextMenuEvent) => {\n setContextMenuPos([e.pageX, e.pageY]);\n };\n\n const getStroke = (peerId: string): DrawPoint[] => {\n const stroke = strokes.get(peerId);\n if (typeof stroke === \"undefined\") {\n strokes.set(peerId, []);\n return getStroke(peerId);\n } else {\n return stroke;\n }\n };\n\n const onDataReceived = (message: Message) => {\n if (message.message.length >= 1) {\n const codeFrame = message.message[0];\n if (codeFrame.isUInt()) {\n const code = codeFrame.toUInt();\n console.log(code);\n if ((code === PROTO_TYPE_SEND_DRAWING) && message.message.length >= 5) {\n const [, xFrame, yFrame, lineWidthFrame, colorFrame] = message.message;\n const point: DrawPoint = {\n x: xFrame.toUInt(),\n y: yFrame.toUInt(),\n lineWidth: lineWidthFrame.toUInt(),\n color: colorFrame.toString(),\n };\n const stroke = getStroke(message.srcUserDeviceId);\n stroke.push(point);\n drawCtl.draw(stroke);\n } else if (code === PROTO_TYPE_SEND_DRAWING && message.message.length >= 2) {\n strokes.set(message.srcUserDeviceId, []);\n }\n }\n }\n };\n\n const onDrawing = (stroke: DrawPoint[]) => {\n const point = stroke[stroke.length-1];\n const routerg = gRouter();\n if (routerg) {\n routerg.broadcast([\n Frame.fromUInt(PROTO_TYPE_SEND_DRAWING, true),\n Frame.fromUInt(point.x, true),\n Frame.fromUInt(point.y, true),\n Frame.fromUInt(point.lineWidth, true),\n Frame.fromString(point.color, false),\n ], true);\n }\n };\n\n const onDrawingEnd = () => {\n const routerg = gRouter();\n if (routerg) {\n routerg.broadcast([\n Frame.fromUInt(PROTO_TYPE_SEND_DRAWING, true),\n Frame.zero(0),\n ], true);\n }\n };\n\n const connectMesh = (roomId: string) => {\n const alterChan = SupabaseDatachannel.ofRoom(broadCli.supabase, roomId, broadCli.getUserDeviceId());\n const router = new Router(broadCli.getUserDeviceId(), alterChan, roomId);\n router.bus.on(\"addpeer\", (peer: Peer) => {\n console.log(\"addpeer\", peer);\n });\n router.bus.on(\"removepeer\", (peer: Peer) => {\n peer.disconnect();\n });\n router.bus.on(\"data\", onDataReceived);\n return router;\n };\n\n onMount(async () => {\n const room = await broadCli.findRoomById(params.id);\n if (room) {\n setStatus(RoomStatus.Found);\n setRoomInfo(room);\n if (!await broadCli.isJoinedRoomById(room.id)) {\n await broadCli.joinRoomById(room.id);\n }\n setStatus(RoomStatus.Joined);\n roomOptsCtl.refetch();\n } else {\n setStatus(RoomStatus.NotFound);\n }\n });\n\n createEffect(() => {\n if (status() === RoomStatus.Joined) {\n participantsCtl.refetch();\n }\n });\n\n createEffect(() => {\n drawCtl.setTool(currentDrawingTool());\n });\n\n createEffect(() => {\n const opts = roomOpts();\n if (opts) {\n if (opts.size_x && opts.size_y) {\n drawCtl.setOffscreenSize([opts.size_x, opts.size_y]);\n }\n } else {\n roomOptsCtl.refetch();\n }\n });\n\n createEffect(() => {\n const room = roomInfo();\n if (room) {\n setGRouter(prev => {\n if (prev && prev.roomId !== room.id) {\n prev.stop();\n return connectMesh(room.id);\n } else if (typeof prev === \"undefined\") {\n return connectMesh(room.id);\n } else {\n return prev;\n }\n });\n }\n });\n\n createEffect(() => {\n const routerg = gRouter();\n if (routerg) {\n routerg.broadcastPeerList();\n }\n });\n\n onCleanup(() => {\n const routerg = gRouter();\n if (routerg) {\n routerg.stop();\n }\n });\n\n const shouldShowJoiningNotice = () => status() === RoomStatus.Unknown || status() === RoomStatus.Found;\n\n const shouldShowRoomNotFound = () => status() === RoomStatus.NotFound;\n \n return <>\n \n \n setContextMenuPos()}\n currentDrawingTool={currentDrawingTool()}\n onChangingDrawingTool={(newTool) => setCurrentDrawingTool(newTool)}\n />\n \n \n \n navigate(\"/\")}\n >\n \n {() => roomInfo()?.name}\n \n \n \n {participants.loading? \"...\" : participants()?.length}\n \n \n \n \n \n ;\n};\n\nexport default RoomPage;\n"],"names":["$","createComponentFactory","name","selfPropNames","propDefaults","set","edge","color","disabled","disableFocusRipple","size","utilityClass","getIconButtonUtilityClass","slotClasses","ownerState","root","capitalize","IconButtonRoot","styled","ButtonBase","slot","overridesResolver","props","styles","theme","textAlign","flex","fontSize","typography","pxToRem","padding","borderRadius","overflow","palette","action","active","transition","transitions","create","duration","shortest","disableRipple","backgroundColor","alpha","hoverOpacity","marginLeft","marginRight","main","iconButtonClasses","IconButton","component","allProps","classes","otherProps","_$createComponent","_$mergeProps","clsx","className","children","_tmpl$","_tmpl$2","DEFAULT_DRAWING_SIZE_X","DEFAULT_DRAWING_SIZE_Y","PROTO_TYPE_SEND_DRAWING","RoomStatus","RoomJoiningNotice","open","position","top","left","transform","maxWidth","RoomNotFoundDialog","navigate","useNavigate","paddingLeft","paddingRight","width","justifyContent","ContextMenu","buildContextMenuAnchorPos","itemSx","cursor","onClose","onChangingDrawingTool","DrawTool","pen","currentDrawingTool","erase","hand","RoomPage","params","useParams","broadCli","useBroadClient","status","setStatus","createSignal","Unknown","roomInfo","setRoomInfo","setCurrentDrawingTool","contextMenuPos","setContextMenuPos","gRouter","setGRouter","drawCtl","DrawBroadController","strokes","Map","participants","participantsCtl","createResource","room","getParticipants","id","roomOpts","roomOptsCtl","getRoomOpts","then","opts","size_x","size_y","setRoomOpts","Promise","resolve","undefined","onBroadContextMenu","e","pageX","pageY","getStroke","peerId","stroke","get","onDataReceived","message","length","codeFrame","isUInt","code","toUInt","console","log","xFrame","yFrame","lineWidthFrame","colorFrame","point","x","y","lineWidth","toString","srcUserDeviceId","push","draw","onDrawing","routerg","broadcast","Frame","fromUInt","fromString","onDrawingEnd","zero","connectMesh","roomId","alterChan","SupabaseDatachannel","ofRoom","supabase","getUserDeviceId","router","Router","bus","on","peer","disconnect","onMount","findRoomById","Found","isJoinedRoomById","joinRoomById","Joined","refetch","NotFound","createEffect","setTool","setOffscreenSize","prev","stop","broadcastPeerList","onCleanup","shouldShowJoiningNotice","shouldShowRoomNotFound","newTool","flexGrow","mr","loading"],"mappings":"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"} \ No newline at end of file diff --git a/source/files/magicbroad/assets/index.13b310ab.js b/source/files/magicbroad/assets/index.13b310ab.js deleted file mode 100644 index 8279f0e..0000000 --- a/source/files/magicbroad/assets/index.13b310ab.js +++ /dev/null @@ -1,25 +0,0 @@ -var dr=Object.defineProperty,pr=Object.defineProperties;var mr=Object.getOwnPropertyDescriptors;var Ze=Object.getOwnPropertySymbols;var en=Object.prototype.hasOwnProperty,tn=Object.prototype.propertyIsEnumerable;var Zt=(n,e,t)=>e in n?dr(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,S=(n,e)=>{for(var t in e||(e={}))en.call(e,t)&&Zt(n,t,e[t]);if(Ze)for(var t of Ze(e))tn.call(e,t)&&Zt(n,t,e[t]);return n},K=(n,e)=>pr(n,mr(e));var nn=(n,e)=>{var t={};for(var r in n)en.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&Ze)for(var r of Ze(n))e.indexOf(r)<0&&tn.call(n,r)&&(t[r]=n[r]);return t};const gr=function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function t(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerpolicy&&(i.referrerPolicy=s.referrerpolicy),s.crossorigin==="use-credentials"?i.credentials="include":s.crossorigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=t(s);fetch(s.href,i)}};gr();const O={};function Ue(n){O.context=n}const yr=(n,e)=>n===e,he=Symbol("solid-proxy"),Sn=Symbol("solid-track"),at={equals:yr};let En=Rn;const xe={},me=1,ct=2,$n={owned:null,cleanups:null,context:null,owner:null},[vr,Ja]=q(!1);var R=null;let qe=null,x=null,Fe=null,G=null,Q=null,Lt=0;function we(n,e){const t=x,r=R,s=n.length===0?$n:{owned:null,cleanups:null,context:null,owner:e||r};R=s,x=null;try{return gt(()=>n(()=>zt(s)),!0)}finally{x=t,R=r}}function q(n,e){e=e?Object.assign({},at,e):at;const t={value:n,observers:null,observerSlots:null,pending:xe,comparator:e.equals||void 0},r=s=>(typeof s=="function"&&(s=s(t.pending!==xe?t.pending:t.value)),Mt(t,s));return[xn.bind(t),r]}function lt(n,e,t){const r=mt(n,e,!0,me);Ce(r)}function re(n,e,t){const r=mt(n,e,!1,me);Ce(r)}function Tn(n,e,t){En=kr;const r=mt(n,e,!1,me);r.user=!0,Q?Q.push(r):Ce(r)}function N(n,e,t){t=t?Object.assign({},at,t):at;const r=mt(n,e,!0,0);return r.pending=xe,r.observers=null,r.observerSlots=null,r.comparator=t.equals||void 0,Ce(r),xn.bind(r)}function br(n,e,t){arguments.length===2?typeof e=="object"&&(t=e,e=n,n=!0):arguments.length===1&&(e=n,n=!0),t||(t={});const r=new Set,[s,i]=q(t.initialValue),[o,a]=q(void 0,{equals:!1}),[l,u]=q(!1),[c,h]=q();let p,d=null,g=null,v=null,_=!1,U="initialValue"in t,P=typeof n=="function"&&N(n);O.context&&(v=`${O.context.id}${O.context.count++}`,O.load&&(g=O.load(v)));function j(w,y,E,V){return d===w&&(d=null,U=!0,g&&(w===g||y===g)&&t.onHydrated&&queueMicrotask(()=>t.onHydrated(V,{value:y})),g=null,h(p=E),L(y)),y}function L(w){fe(()=>{i(()=>w),u(!1);for(const y of r.keys())y.decrement();r.clear()})}function M(){const w=$r,y=s();if(p)throw p;return x&&!x.user&&w&<(()=>{o(),d&&(w.resolved||r.has(w)||(w.increment(),r.add(w)))}),y}function te(w){if(w&&_)return;_=!1,h(p=void 0);const y=P?P():n;if(y==null||y===!1){j(d,W(s));return}const E=g||W(()=>e(y,{value:s(),refetching:w}));return typeof E!="object"||!("then"in E)?(j(d,E),E):(d=E,_=!0,queueMicrotask(()=>_=!1),fe(()=>{u(!0),a()}),E.then(V=>j(E,V,void 0,y),V=>j(E,V,V)))}return Object.defineProperties(M,{loading:{get(){return l()}},error:{get(){return c()}},latest:{get(){if(!U)return M();if(p)throw p;return s()}}}),P?lt(()=>te(!1)):te(!1),[M,{refetch:te,mutate:i}]}function fe(n){if(Fe)return n();let e;const t=Fe=[];try{e=n()}finally{Fe=null}return gt(()=>{for(let r=0;r{let a;if(r){a=Array(n.length);for(let u=0;ue(a,s,o));return s=a,l}}function qa(n){Tn(()=>W(n))}function oe(n){return R===null||(R.cleanups===null?R.cleanups=[n]:R.cleanups.push(n)),n}function kn(){return x}function _r(){return R}function wr(n,e){const t=R;R=n;try{return gt(e,!0)}finally{R=t}}function Sr(n){const e=x,t=R;return Promise.resolve().then(()=>{x=e,R=t;let r;return fe(n),x=R=null,r?r.done:void 0})}function Er(){return[vr,Sr]}function Ve(n){const e=Symbol("context");return{id:e,Provider:Ar(e),defaultValue:n}}function je(n){let e;return(e=Pn(R,n.id))!==void 0?e:n.defaultValue}function An(n){const e=N(n);return N(()=>At(e()))}let $r;function xn(){const n=qe;if(this.sources&&(this.state||n)){const e=G;G=null,this.state===me||n?Ce(this):ut(this),G=e}if(x){const e=this.observers?this.observers.length:0;x.sources?(x.sources.push(this),x.sourceSlots.push(e)):(x.sources=[this],x.sourceSlots=[e]),this.observers?(this.observers.push(x),this.observerSlots.push(x.sources.length-1)):(this.observers=[x],this.observerSlots=[x.sources.length-1])}return this.value}function Mt(n,e,t){if(Fe)return n.pending===xe&&Fe.push(n),n.pending=e,e;if(n.comparator&&n.comparator(n.value,e))return e;let r=!1;return n.value=e,n.observers&&n.observers.length&>(()=>{for(let s=0;s1e6)throw G=[],new Error},!1),e}function Ce(n){if(!n.fn)return;zt(n);const e=R,t=x,r=Lt;x=R=n,Tr(n,n.value,r),x=t,R=e}function Tr(n,e,t){let r;try{r=n.fn(e)}catch(s){Cn(s)}(!n.updatedAt||n.updatedAt<=t)&&(n.observers&&n.observers.length?Mt(n,r):n.value=r,n.updatedAt=t)}function mt(n,e,t,r,s){const i={fn:n,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:e,owner:R,context:null,pure:t};return R===null||R!==$n&&(R.owned?R.owned.push(i):R.owned=[i]),i}function Le(n){const e=qe;if(n.state===0||e)return;if(n.state===ct||e)return ut(n);if(n.suspense&&W(n.suspense.inFallback))return n.suspense.effects.push(n);const t=[n];for(;(n=n.owner)&&(!n.updatedAt||n.updatedAt=0;r--)if(n=t[r],n.state===me||e)Ce(n);else if(n.state===ct||e){const s=G;G=null,ut(n,t[0]),G=s}}function gt(n,e){if(G)return n();let t=!1;e||(G=[]),Q?t=!0:Q=[],Lt++;try{const r=n();return Or(t),r}catch(r){Cn(r)}finally{G=null,t||(Q=null)}}function Or(n){G&&(Rn(G),G=null),!n&&(Q.length?fe(()=>{En(Q),Q=null}):Q=null)}function Rn(n){for(let e=0;er=W(()=>(R.context={[n]:t.value},An(()=>t.children)))),r}}const xr=Symbol("fallback");function rn(n){for(let e=0;e1?[]:null;return oe(()=>rn(i)),()=>{let l=n()||[],u,c;return l[Sn],W(()=>{let p=l.length,d,g,v,_,U,P,j,L,M;if(p===0)o!==0&&(rn(i),i=[],r=[],s=[],o=0,a&&(a=[])),t.fallback&&(r=[xr],s[0]=we(te=>(i[0]=te,t.fallback())),o=1);else if(o===0){for(s=new Array(p),c=0;c=P&&L>=P&&r[j]===l[L];j--,L--)v[L]=s[j],_[L]=i[j],a&&(U[L]=a[j]);for(d=new Map,g=new Array(L+1),c=L;c>=P;c--)M=l[c],u=d.get(M),g[c]=u===void 0?-1:u,d.set(M,c);for(u=P;u<=j;u++)M=r[u],c=d.get(M),c!==void 0&&c!==-1?(v[c]=s[u],_[c]=i[u],a&&(U[c]=a[u]),c=g[c],d.set(M,c)):i[u]();for(c=P;cn(e||{}))}function et(){return!0}const In={get(n,e,t){return e===he?t:n.get(e)},has(n,e){return n.has(e)},set:et,deleteProperty:et,getOwnPropertyDescriptor(n,e){return{configurable:!0,enumerable:!0,get(){return n.get(e)},set:et,deleteProperty:et}},ownKeys(n){return n.keys()}};function $t(n){return(n=typeof n=="function"?n():n)==null?{}:n}function jr(...n){return new Proxy({get(e){for(let t=n.length-1;t>=0;t--){const r=$t(n[t])[e];if(r!==void 0)return r}},has(e){for(let t=n.length-1;t>=0;t--)if(e in $t(n[t]))return!0;return!1},keys(){const e=[];for(let t=0;t{const o={};for(let a=0;a!t.has(i))}},In)),s}function Pe(n){let e,t;const r=s=>{const i=O.context;if(i){const[a,l]=q();(t||(t=n())).then(u=>{Ue(i),l(()=>u.default),Ue()}),e=a}else if(e){const a=e();if(a)return a(s)}else{const[a]=br(()=>(t||(t=n())).then(l=>l.default));e=a}let o;return N(()=>(o=e())&&W(()=>{if(!i)return o(s);const a=O.context;Ue(i);const l=o(s);return Ue(a),l}))};return r.preload=()=>t||((t=n()).then(s=>e=()=>s.default),t),r}let Cr=0;function Va(){const n=O.context;return n?`${n.id}${n.count++}`:`cl-${Cr++}`}function Wa(n){const e="fallback"in n&&{fallback:()=>n.fallback};return N(Rr(()=>n.each,n.children,e||void 0))}function Gt(n){let e=!1;const t=N(()=>n.when,void 0,{equals:(r,s)=>e?r===s:!r==!s});return N(()=>{const r=t();if(r){const s=n.children;return(e=typeof s=="function"&&s.length>0)?W(()=>s(r)):s}return n.fallback})}function Ka(n){let e=!1;const t=An(()=>n.children),r=N(()=>{let s=t();Array.isArray(s)||(s=[s]);for(let i=0;is[0]===i[0]&&(e?s[1]===i[1]:!s[1]==!i[1])&&s[2]===i[2]});return N(()=>{const[s,i,o]=r();if(s<0)return n.fallback;const a=o.children;return(e=typeof a=="function"&&a.length>0)?W(()=>a(i)):a})}function Xa(n){return n}const Pr=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected"],Ir=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Pr]),Nr=new Set(["innerHTML","textContent","innerText","children"]),Dr={className:"class",htmlFor:"for"},sn={class:"className",formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly"},Ur=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]),Br=new Set(["altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignObject","g","glyph","glyphRef","hkern","image","line","linearGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","svg","switch","symbol","text","textPath","tref","tspan","use","view","vkern"]),Fr={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"};function Ya(n,e){return N(n,void 0,e?void 0:{equals:e})}function Lr(n,e,t){let r=t.length,s=e.length,i=r,o=0,a=0,l=e[s-1].nextSibling,u=null;for(;oc-a){const g=e[o];for(;a{r=s,e===document?n():xt(e,n(),e.firstChild?null:void 0,t)}),()=>{r(),e.textContent=""}}function Qa(n,e,t){const r=document.createElement("template");r.innerHTML=n;let s=r.content.firstChild;return t&&(s=s.firstChild),s}function zr(n,e=window.document){const t=e[on]||(e[on]=new Set);for(let r=0,s=n.length;rt[0](t[1],s)):n.addEventListener(e,t)}function Vr(n,e,t={}){const r=Object.keys(e||{}),s=Object.keys(t);let i,o;for(i=0,o=s.length;iln(n,e(),s,t,r)):ln(n,e,void 0,t,r)}function xt(n,e,t,r){if(t!==void 0&&!r&&(r=[]),typeof e!="function")return Re(n,e,r,t);re(s=>Re(n,e(),s,t),r)}function Xr(n,e,t,r,s={},i){e||(e={});for(const o in s)if(!(o in e)){if(o==="children")continue;cn(n,o,null,s[o],t,i)}for(const o in e){if(o==="children"){r||Re(n,e.children);continue}const a=e[o];s[o]=cn(n,o,a,s[o],t,i)}}function Yr(n){let e,t;return!O.context||!(e=O.registry.get(t=es()))?n.cloneNode(!0):(O.completed&&O.completed.add(e),O.registry.delete(t),e)}function Qr(n){return n.toLowerCase().replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}function an(n,e,t){const r=e.trim().split(/\s+/);for(let s=0,i=r.length;s-1&&Fr[e.split(":")[0]];u?Hr(n,u,e,t):Gr(n,Dr[e]||e,t)}return t}function Zr(n){const e=`$$${n.type}`;let t=n.composedPath&&n.composedPath()[0]||n.target;for(n.target!==t&&Object.defineProperty(n,"target",{configurable:!0,value:t}),Object.defineProperty(n,"currentTarget",{configurable:!0,get(){return t||document}}),O.registry&&!O.done&&(O.done=!0,document.querySelectorAll("[id^=pl-]").forEach(r=>r.remove()));t!==null;){const r=t[e];if(r&&!t.disabled){const s=t[`${e}Data`];if(s!==void 0?r(s,n):r(n),n.cancelBubble)return}t=t.host&&t.host!==t&&t.host instanceof Node?t.host:t.parentNode}}function ln(n,e,t={},r,s){return e||(e={}),!s&&"children"in e&&re(()=>t.children=Re(n,e.children,t.children)),e.ref&&e.ref(n),re(()=>Xr(n,e,r,!0,t,!0)),t}function Re(n,e,t,r,s){for(O.context&&!t&&(t=[...n.childNodes]);typeof t=="function";)t=t();if(e===t)return t;const i=typeof e,o=r!==void 0;if(n=o&&t[0]&&t[0].parentNode||n,i==="string"||i==="number"){if(O.context)return t;if(i==="number"&&(e=e.toString()),o){let a=t[0];a&&a.nodeType===3?a.data=e:a=document.createTextNode(e),t=ge(n,t,r,a)}else t!==""&&typeof t=="string"?t=n.firstChild.data=e:t=n.textContent=e}else if(e==null||i==="boolean"){if(O.context)return t;t=ge(n,t,r)}else{if(i==="function")return re(()=>{let a=e();for(;typeof a=="function";)a=a();t=Re(n,a,t,r)}),()=>t;if(Array.isArray(e)){const a=[];if(Rt(a,e,s))return re(()=>t=Re(n,a,t,r,!0)),()=>t;if(O.context){for(let l=0;l=0;o--){const a=e[o];if(s!==a){const l=a.parentNode===n;!i&&!o?l?n.replaceChild(s,a):n.insertBefore(s,t):l&&a.remove()}else i=!0}}else n.insertBefore(s,t);return[s]}function es(){const n=O.context;return`${n.id}${n.count++}`}const ts="http://www.w3.org/2000/svg";function Dn(n,e=!1){return e?document.createElementNS(ts,n):document.createElement(n)}function Za(n){const{useShadow:e}=n,t=document.createTextNode(""),r=n.mount||document.body;function s(){if(O.context){const[i,o]=q(!1);return queueMicrotask(()=>o(!0)),()=>i()&&n.children}else return()=>n.children}if(r instanceof HTMLHeadElement){const[i,o]=q(!1),a=()=>o(!0);we(l=>xt(r,()=>i()?l():s()(),null)),oe(()=>{O.context?queueMicrotask(a):a()})}else{const i=Dn(n.isSVG?"g":"div",n.isSVG),o=e&&i.attachShadow?i.attachShadow({mode:"open"}):i;Object.defineProperty(i,"host",{get(){return t.parentNode}}),xt(o,s()),r.appendChild(i),n.ref&&n.ref(i),oe(()=>r.removeChild(i))}return t}function ec(n){const[e,t]=Nn(n,["component"]);return N(()=>{const r=e.component;switch(typeof r){case"function":return W(()=>r(t));case"string":const s=Br.has(r),i=O.context?Yr():Dn(r,s);return Kr(i,t,s),i}})}const ns="modulepreload",hn={},rs="/",Ie=function(e,t){return!t||t.length===0?e():Promise.all(t.map(r=>{if(r=`${rs}${r}`,r in hn)return;hn[r]=!0;const s=r.endsWith(".css"),i=s?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${r}"]${i}`))return;const o=document.createElement("link");if(o.rel=s?"stylesheet":ns,s||(o.as="script",o.crossOrigin=""),o.href=r,document.head.appendChild(o),s)return new Promise((a,l)=>{o.addEventListener("load",a),o.addEventListener("error",()=>l(new Error(`Unable to preload CSS for ${r}`)))})})).then(()=>e())};function ss(n,e,t){return n.addEventListener(e,t),()=>n.removeEventListener(e,t)}function is([n,e],t,r){return[t?()=>t(n()):n,r?s=>e(r(s)):e]}function os(n){try{return document.querySelector(n)}catch{return null}}function as(n,e){const t=os(`a#${n}`);t?t.scrollIntoView():e&&window.scrollTo(0,0)}function cs(n,e,t,r){let s=!1;const i=a=>typeof a=="string"?{value:a}:a,o=is(q(i(n()),{equals:(a,l)=>a.value===l.value}),void 0,a=>(!s&&e(a),a));return t&&oe(t((a=n())=>{s=!0,o[1](i(a)),s=!1})),{signal:o,utils:r}}function ls(n){if(n){if(Array.isArray(n))return{signal:n}}else return{signal:q({value:""})};return n}function us(){return cs(()=>({value:window.location.pathname+window.location.search+window.location.hash,state:history.state}),({value:n,replace:e,scroll:t,state:r})=>{e?window.history.replaceState(r,"",n):window.history.pushState(r,"",n),as(window.location.hash.slice(1),t)},n=>ss(window,"popstate",()=>n()),{go:n=>window.history.go(n)})}const hs=/^(?:[a-z0-9]+:)?\/\//i,fs=/^\/+|\/+$/g;function Me(n,e=!1){const t=n.replace(fs,"");return t?e||/^[?#]/.test(t)?t:"/"+t:""}function it(n,e,t){if(hs.test(e))return;const r=Me(n),s=t&&Me(t);let i="";return!s||e.startsWith("/")?i=r:s.toLowerCase().indexOf(r.toLowerCase())!==0?i=r+s:i=s,(i||"/")+Me(e,!i)}function ds(n,e){if(n==null)throw new Error(e);return n}function Un(n,e){return Me(n).replace(/\/*(\*.*)?$/g,"")+Me(e)}function ps(n){const e={};return n.searchParams.forEach((t,r)=>{e[r]=t}),e}function Se(n,e){return decodeURIComponent(e?n.replace(/\+/g," "):n)}function ms(n,e){const[t,r]=n.split("/*",2),s=t.split("/").filter(Boolean),i=s.length;return o=>{const a=o.split("/").filter(Boolean),l=a.length-i;if(l<0||l>0&&r===void 0&&!e)return null;const u={path:i?"":"/",params:{}};for(let c=0;cs+(i.startsWith(":")?2:3),r.length-(t===void 0?0:1))}function Bn(n){const e=new Map,t=_r();return new Proxy({},{get(r,s){return e.has(s)||wr(t,()=>e.set(s,N(()=>n()[s]))),e.get(s)()},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}},ownKeys(){return Reflect.ownKeys(n())}})}const ys=100,Fn=Ve(),yt=Ve(),vt=()=>ds(je(Fn),"Make sure your app is wrapped in a ");let He;const Ht=()=>He||je(yt)||vt().base,vs=()=>vt().navigatorFactory(),bs=()=>vt().location,tc=()=>Ht().params;function _s(n,e="",t){const{path:r,component:s,data:i,children:o}=n,a=!o||Array.isArray(o)&&!o.length,l=Un(e,r),u=a?l:l.split("/*",1)[0];return{originalPath:r,pattern:u,element:s?()=>$(s,{}):()=>{const{element:c}=n;return c===void 0&&t?$(t,{}):c},preload:n.component?s.preload:n.preload,data:i,matcher:ms(u,!a)}}function ws(n,e=0){return{routes:n,score:gs(n[n.length-1])*1e4-e,matcher(t){const r=[];for(let s=n.length-1;s>=0;s--){const i=n[s],o=i.matcher(t);if(!o)return null;r.unshift(K(S({},o),{route:i}))}return r}}}function Ln(n,e="",t,r=[],s=[]){const i=Array.isArray(n)?n:[n];for(let o=0,a=i.length;oa.score-o.score)}function Ss(n,e){for(let t=0,r=n.length;t{const u=n();try{return new URL(u,t)}catch{return console.error(`Invalid path ${u}`),l}},t,{equals:(l,u)=>l.href===u.href}),s=N(()=>Se(r().pathname)),i=N(()=>Se(r().search,!0)),o=N(()=>Se(r().hash)),a=N(()=>"");return{get pathname(){return s()},get search(){return i()},get hash(){return o()},get state(){return e()},get key(){return a()},query:Bn(On(i,()=>ps(r())))}}function $s(n,e="",t,r){const{signal:[s,i],utils:o={}}=ls(n),a=o.parsePath||(w=>w),l=o.renderPath||(w=>w),u=it("",e),c=void 0;if(u===void 0)throw new Error(`${u} is not a valid base path`);u&&!s().value&&i({value:u,replace:!0,scroll:!1});const[h,p]=Er(),[d,g]=q(s().value),[v,_]=q(s().state),U=Es(d,v),P=[],j={pattern:u,params:{},path:()=>u,outlet:()=>null,resolvePath(w){return it(u,w)}};if(t)try{He=j,j.data=t({data:void 0,params:{},location:U,navigate:M(j)})}finally{He=void 0}function L(w,y,E){W(()=>{if(typeof y=="number"){y&&(o.go?o.go(y):console.warn("Router integration does not support relative routing"));return}const{replace:V,resolve:z,scroll:Ye,state:Z}=S({replace:!1,resolve:!0,scroll:!0},E),f=z?w.resolvePath(y):it("",y);if(f===void 0)throw new Error(`Path '${y}' is not a routable path`);if(P.length>=ys)throw new Error("Too many redirects");const m=d();if(f!==m||Z!==v()){const b=P.push({value:m,replace:V,scroll:Ye,state:v()});p(()=>{g(f),_(Z)}).then(()=>{P.length===b&&te({value:f,state:Z})})}})}function M(w){return w=w||je(yt)||j,(y,E)=>L(w,y,E)}function te(w){const y=P[0];y&&((w.value!==y.value||w.state!==y.state)&&i(K(S({},w),{replace:y.replace,scroll:y.scroll})),P.length=0)}re(()=>{const{value:w,state:y}=s();W(()=>{w!==d()&&p(()=>{g(w),_(y)})})});{let w=function(y){if(y.defaultPrevented||y.button!==0||y.metaKey||y.altKey||y.ctrlKey||y.shiftKey)return;const E=y.composedPath().find(D=>D instanceof Node&&D.nodeName.toUpperCase()==="A");if(!E)return;const V=E instanceof SVGAElement,z=V?E.href.baseVal:E.href;if((V?E.target.baseVal:E.target)||!z&&!E.hasAttribute("state"))return;const Z=(E.getAttribute("rel")||"").split(/\s+/);if(E.hasAttribute("download")||Z&&Z.includes("external"))return;const f=V?new URL(z,document.baseURI):new URL(z),m=Se(f.pathname);if(f.origin!==window.location.origin||u&&m&&!m.toLowerCase().startsWith(u.toLowerCase()))return;const b=a(m+Se(f.search,!0)+Se(f.hash)),B=E.getAttribute("state");y.preventDefault(),L(j,b,{resolve:!1,replace:E.hasAttribute("replace"),scroll:!E.hasAttribute("noscroll"),state:B&&JSON.parse(B)})};document.addEventListener("click",w),oe(()=>document.removeEventListener("click",w))}return{base:j,out:c,location:U,isRouting:h,renderPath:l,parsePath:a,navigatorFactory:M}}function Ts(n,e,t,r){const{base:s,location:i,navigatorFactory:o}=n,{pattern:a,element:l,preload:u,data:c}=r().route,h=N(()=>r().path),p=Bn(()=>r().params);u&&u();const d={parent:e,pattern:a,get child(){return t()},path:h,params:p,data:e.data,outlet:l,resolvePath(g){return it(s.path(),g,h())}};if(c)try{He=d,d.data=c({data:e.data,params:p,location:i,navigate:o(d)})}finally{He=void 0}return d}const Os=n=>{const{source:e,url:t,base:r,data:s,out:i}=n,o=e||us(),a=$s(o,r,s);return $(Fn.Provider,{value:a,get children(){return n.children}})},ks=n=>{const e=vt(),t=Ht(),r=N(()=>Ln(n.children,Un(t.pattern,n.base||""),As)),s=N(()=>Ss(r(),e.location.pathname));e.out&&e.out.matches.push(s().map(({route:l,path:u,params:c})=>({originalPath:l.originalPath,pattern:l.pattern,path:u,params:c})));const i=[];let o;const a=N(On(s,(l,u,c)=>{let h=u&&l.length===u.length;const p=[];for(let d=0,g=l.length;d{i[d]=U,p[d]=Ts(e,p[d-1]||t,()=>a()[d+1],()=>s()[d])}))}return i.splice(l.length).forEach(d=>d()),c&&h?c:(o=p[0],p)}));return $(Gt,{get when(){return a()&&o},children:l=>$(yt.Provider,{value:l,get children(){return l.outlet()}})})},ye=n=>n,As=()=>{const n=Ht();return $(Gt,{get when(){return n.child},children:e=>$(yt.Provider,{value:e,get children(){return e.outlet()}})})};function xs(n){const e=vs(),t=bs(),{href:r,state:s}=n,i=typeof r=="function"?r({navigate:e,location:t}):r;return e(i,{replace:!0,state:s}),null}function Rs(n,e,t){const r={};return Object.keys(n).forEach(s=>{r[s]=n[s].reduce((i,o)=>(o&&(t&&t[o]&&i.push(t[o]),i.push(e(o))),i),[]).join(" ")}),r}const Jt=Ve({});function Tt(n,e,t="px"){let r;if(n==="up")r=`(min-width:${e}${t})`;else if(n==="down")r=`(max-width:${e}${t})`;else if(n==="between"){const[s,i]=e;r=`(max-width:${s}${t}) and (min-width:${i}${t})`}else throw new Error(`Invalid comparator: ${n}`);return`@media ${r}`}const js={columns:12,keys:["xs","sm","md","lg","xl"],values:{xs:0,sm:600,md:900,lg:1200,xl:1536},unit:"px"};function Mn(n){const e=K(S(S({},js),n!=null?n:{}),{up:(t,r)=>{const s=Tt("up",e.resolve(t));return r?{[s]:r}:s},down:(t,r)=>{const s=Tt("down",e.resolve(t));return r?{[s]:r}:s},between:(t,r)=>{const s=Tt("between",[e.resolve(t[0]),e.resolve(t[1])]);return r?{[s]:r}:s},resolve:t=>typeof t=="number"?t:e.values[t]});return e}function zn(n){return typeof n=="function"?n:(...t)=>t.map(r=>typeof r=="number"?`${r*(n!=null?n:8)}px`:r).join(" ")}function Be(n){return n!==null&&typeof n=="object"&&n.constructor===Object}function Cs(n,e){for(const t of e){const r=n[t];delete n[t],n[t]=r}}function qt(n,e,t={clone:!0}){const r=t.clone?S({},n):n;return Be(n)&&Be(e)&&(Object.keys(e).forEach(s=>{s!=="__proto__"&&(Be(e[s])&&s in n&&Be(n[s])?r[s]=qt(n[s],e[s],t):r[s]=e[s])}),t.sortKeys&&Cs(r,Object.keys(e))),r}function jt(n){if(Array.isArray(n)){const e=[];for(const t of n)e.push(jt(t));return e}else if(Be(n)){const e={};for(const t in n)t!=="__proto__"&&(e[t]=jt(n[t]));return e}else return n}function We(n,...e){for(const t of e)qt(n,jt(t),{clone:!1});return n}const Ps={borderRadius:4};function Gn(n){return S({},We({},Ps,n))}function Is(n){return K(S({direction:"ltr",shadows:void 0,transitions:void 0,components:void 0,palette:void 0,typography:void 0,zIndex:void 0,mixins:void 0},n),{breakpoints:Mn(n==null?void 0:n.breakpoints),shape:Gn(n==null?void 0:n.shape),spacing:zn(n==null?void 0:n.spacing)})}function Hn(n){let e;return function(){return e||(e=n()),e}}var Ns=Hn(Is);function Ds(n){for(const e in n)return!1;return!0}function Jn(n=Ns,e=Jt){const t=je(e);if(Ds(t)&&n)return typeof n=="function"?n():n;if(!t)throw new Error("Theme is not defined");return t}function Us(n){return Jn(n,Jt)}function Bs(n){const e=Us(),t=s=>s,r=typeof n.propDefaults=="function"?n.propDefaults({set:t,inProps:n.props}):n.propDefaults;return jr(...r?[r]:[],()=>{var s,i;return((i=(s=e.components)==null?void 0:s[n.name])==null?void 0:i.defaultProps)||{}},n.props)}const qn=Symbol("store-raw"),ht=Symbol("store-node"),Fs=Symbol("store-name");function Vn(n){return n!=null&&typeof n=="object"&&(n[he]||!n.__proto__||n.__proto__===Object.prototype||Array.isArray(n))}function ft(n,e=new Set){let t,r,s,i;if(t=n!=null&&n[qn])return t;if(!Vn(n)||e.has(n))return n;if(Array.isArray(n)){Object.isFrozen(n)?n=n.slice(0):e.add(n);for(let o=0,a=n.length;on[he][e]),t}function Wn(n){if(kn()){const e=Vt(n);(e._||(e._=Kn()))()}}function Ms(n){return Wn(n),Reflect.ownKeys(n)}function Kn(n,e){const[t,r]=q(n,e?{internal:!0}:{equals:!1,internal:!0});return t.$=r,t}function fn(n,e,t){if(n[e]===t)return;const r=n[e],s=n.length;t===void 0?delete n[e]:n[e]=t;let i=Vt(n),o;(o=Ct(i,e,r))&&o.$(()=>t),Array.isArray(n)&&n.length!==s&&(o=Ct(i,"length",s))&&o.$(n.length),(o=i._)&&o.$()}const zs={get(n,e,t){if(e===qn)return n;if(e===he)return t;if(e===Sn)return Wn(n);const r=Vt(n),s=r[e];let i=s?r[e]():n[e];if(e===ht||e==="__proto__")return i;if(!s){const o=Object.getOwnPropertyDescriptor(n,e),a=typeof i=="function";if(kn()&&(!a||n.hasOwnProperty(e))&&!(o&&o.get))i=Ct(r,e,i)();else if(i!=null&&a&&i===Array.prototype[e])return(...l)=>fe(()=>Array.prototype[e].apply(t,l))}return Vn(i)?Xn(i):i},set(n,e,t){return fn(n,e,ft(t)),!0},deleteProperty(n,e){return fn(n,e,void 0),!0},ownKeys:Ms,getOwnPropertyDescriptor:Ls};function Xn(n,e){let t=n[he];if(!t){Object.defineProperty(n,he,{value:t=new Proxy(n,zs)});const r=Object.keys(n),s=Object.getOwnPropertyDescriptors(n);for(let i=0,o=r.length;ife(()=>l.call(t,c))})}}}return t}function Gs(n,e){const t=ft(n||{});return Xn(t)}function Yn(){return function(n){function e(a){const l=!!n.slotClasses,u=()=>{var h;if(!n.slotClasses)throw new Error("'slotClasses' option is not defined");if(!n.utilityClass)throw new Error("'utilityClass' option is not defined");return Rs(n.slotClasses(a),n.utilityClass,(h=a.classes)!=null?h:"")},c=Gs({});return l&<(()=>{const h=u();fe(()=>{for(const p in h)c[p]=h[p]})}),c}function t(a){const[l,u]=Nn(a,n.selfPropNames);return{allProps:a,props:l,otherProps:u}}function r(a){return Bs(K(S({propDefaults:n.propDefaults},a),{name:n.name}))}function s(a){const l=r({props:a});return t(l)}function i(a){return a.toString=()=>`${n.name}-root`,a}function o(a){const l=i(function(c){var v;const{allProps:h,otherProps:p,props:d}=s(c),g=(v=n.autoCallUseClasses)==null||v?e(h):{};return a({allProps:h,otherProps:p,props:d,classes:g})});return Object.defineProperty(l,"name",{value:a.name}),l}return{name:n.name,selfPropNames:n.selfPropNames,component:o,defineComponent:i,useClasses:e,useThemeProps:r,useProps:s,splitInProps:t}}}const Hs=Ve({});function Js(n){const e=n.reduce((t,r)=>("name"in r&&(t[`--${r.name}`]="0"),qt(t,r,{clone:!1,sortKeys:!0}),t),{});return delete e.name,e}function Qn(n){return n.startsWith("--")}function qs(n){return n.startsWith("__")}function Vs(n){return/[^a-z-]/i.test(n)&&!Qn(n)}function Ws(n){return n.startsWith("@global")}function Ks(n){return n.startsWith("@media")}function Xs(n){return n.startsWith("@keyframes")}function dn(n){return n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function pn(n,e,t=[],r={}){const s=n.split(",").map(i=>(i=i.trim(),i.includes("&")?i:`& ${i}`));return dt(e,(t.length?t:[""]).flatMap(i=>s.map(o=>o.replace(/&/g,i).trim())),S({},r))}function dt(n,e=[],t={}){const r=[],s=[];for(let o in n){const a=n[o];if(!qs(o))if(Ws(o))for(const l in a)s.push(...pn(l,a[l],[],t));else if(Ks(o))s.push(...dt(a,e,K(S({},t),{sublevel:!0})).map(l=>`${o} { -${l} -}`));else if(Qn(o))a!=null&&r.push(`${o}: ${a};`);else if(Xs(o)){const l=[];for(const u in a)l.push(...dt(a[u],[/^\d+$/.test(u)?`${u}%`:u],K(S({},t),{sublevel:!0})));s.push(`${o} { -${l.join(` -`)} -}`)}else if(Vs(o))s.push(...pn(o,a,e,t));else if(t.extraProperties&&o in t.extraProperties){const l=t.extraProperties[o](a);for(const u in l){const c=l[u],h=t.onPropertyValue?t.onPropertyValue(u,c):c;h!=null&&r.push(`${dn(u)}: ${h};`)}}else{o=dn(o);const l=t.onPropertyValue?t.onPropertyValue(o,a):a;l!=null&&r.push(`${o}: ${l};`)}}const i=o=>{const a=" ".repeat(o);return`${a}${r.join(` -${a}`)}`};if(e.length){const o=t.sublevel?" ":"",a=o+e.join(`, -${o}`);return[...r.length?[`${a} { -${i(t.sublevel?2:1)} -${o}}`]:[],...s]}else return[...r.length?[i(0)]:[],...s]}function Ys(){return Math.random().toString(36).substring(2,15).slice(0,8)}function Qs(n,e){return typeof n=="function"&&(n=n(...e||[])),n}function Zs(n){return n?Array.isArray(n)?n:[n]:[]}function ei(n,e){const t=Ys().slice(0,6);return{id:t,name:n,className:`${n}-${t}`,rules:e.replaceAll("$id",`${t}`)}}function ti(n){var i;const e=`${n.name}-$id`,r=Zs(Qs(n.props)).map(o=>typeof o=="string"?`.${e} { -${o} -}`:dt(o,[`.${e}`],{extraProperties:n.extraProperties}).join(` -`)).join(` -`),s=((i=n.cache)==null?void 0:i.get(r))||ei(n.name,r);return n.cache&&n.cache.set(r,s),s}function Zn(n,e){"styleSheet"in n?n.styleSheet.cssText=e:(n.innerText="",n.appendChild(document.createTextNode(e)))}function ni(n,e){for(const t in e){const r=e[t];r!==void 0&&(r===null?n.removeAttribute(t):n.setAttribute(t,r))}}function ri(n,e){const t=document.createElement("style");return t.type="text/css",e&&ni(t,e),Zn(t,n),t}function Pt(n){let e=Number(n.getAttribute("data-uses"));e++,n.setAttribute("data-uses",e.toString())}function si(n,e){Array.isArray(n)&&(n=n.join(` -`));const t=e==null?void 0:e.id,r=document.head||document.getElementsByTagName("head")[0],s=t&&document.getElementById(t);if(s&&s instanceof HTMLStyleElement)return Zn(s,n),Pt(s),s;{s&&s.remove();const i=ri(n,e);return Pt(i),r.appendChild(i),i}}function ii(n){return document.getElementById(n)}function mn(n){let e=Number(n.getAttribute("data-uses"));e--,e<=0?n.remove():n.setAttribute("data-uses",e.toString())}const oi=new Map;function ai(n){return n?(Array.isArray(n)?n:[n]).flat(1/0).filter(e=>!!e):[]}function ci(n){const e=je(Hs),[t,r]=q("");let s;return re(i=>{var l;const o=n();let a;return o&&(a=ti({name:"css",props:Js(ai(o)),cache:oi}),s=ii(a.id),s?Pt(s):s=si(a.rules,{id:a.id,once:(l=e.cache)==null?void 0:l.nonce})),i!=null&&i.styleElement&&mn(i.styleElement),typeof(a==null?void 0:a.className)=="string"?r(a.className):r(""),{className:a==null?void 0:a.className,styleElement:s}},void 0),oe(()=>{s&&mn(s)}),t}const li=Yn()({name:"MuiGlobalStyles",selfPropNames:["styles"]}),ui=li.component(function({props:e}){return ci(()=>({"@global":e.styles||{}})),[]}),hi={};function fi(n){return S({},We({},hi,n!=null?n:{}))}function di(n,e,t={}){return S({toolbar:{minHeight:56,[`${n.up("xs")} and (orientation: landscape)`]:{minHeight:48},[n.up("sm")]:{minHeight:64}}},t)}const de={black:"#000",white:"#fff"},Ee={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},$e={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},Te={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},Oe={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},ke={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},ze={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},pi={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"};function Wt(n,e=0,t=1){return Math.min(Math.max(e,n),t)}function mi(n){n=n.substr(1);const e=new RegExp(`.{1,${n.length>=6?2:1}}`,"g");let t=n.match(e);return t&&t[0].length===1&&(t=t.map(r=>r+r)),t?`rgb${t.length===4?"a":""}(${t.map((r,s)=>s<3?parseInt(r,16):Math.round(parseInt(r,16)/255*1e3)/1e3).join(", ")})`:""}function pe(n){if(typeof n!="string")return n;if(n.charAt(0)==="#")return pe(mi(n));const e=n.indexOf("("),t=n.substring(0,e);if(["rgb","rgba","hsl","hsla","color"].indexOf(t)===-1)throw new Error("MUI: Unsupported `%s` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color(). "+n);const r=n.substring(e+1,n.length-1);let s,i;if(t==="color"){if(s=r.split(" "),i=s.shift(),s.length===4&&s[3].charAt(0)==="/"&&(s[3]=s[3].substr(1)),["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(i)===-1)throw new Error("MUI: unsupported `%s` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020. "+i)}else s=r.split(",");return{type:t,values:s.map(o=>parseFloat(o)),colorSpace:i}}function bt(n){const{type:e,colorSpace:t}=n,{values:r}=n;let s;return e.indexOf("rgb")!==-1?s=r.map((i,o)=>o<3?parseInt(i.toString(),10):i).join(","):e.indexOf("hsl")!==-1&&(s=r.map((i,o)=>o===1||o===2?`${i}%`:i).join(",")),e.indexOf("color")!==-1?s=`${t} ${r.join(" ")}`:s=`${r.join(", ")}`,`${e}(${s})`}function gi(n){const e=pe(n),{values:t}=e,r=t[0],s=t[1]/100,i=t[2]/100,o=s*Math.min(i,1-i),a=(c,h=(c+r/30)%12)=>i-o*Math.max(Math.min(h-3,9-h,1),-1);let l="rgb";const u=[Math.round(a(0)*255),Math.round(a(8)*255),Math.round(a(4)*255)];return e.type==="hsla"&&(l+="a",u.push(t[3])),bt({type:l,values:u})}function gn(n){const{type:e,values:t}=pe(n);let r=e==="hsl"?pe(gi(n)).values:t;return r=r.map(s=>(e!=="color"&&(s/=255),s<=.03928?s/12.92:((s+.055)/1.055)**2.4)),Number((.2126*r[0]+.7152*r[1]+.0722*r[2]).toFixed(3))}function yi(n,e){const t=gn(n),r=gn(e);return(Math.max(t,r)+.05)/(Math.min(t,r)+.05)}function nc(n,e){let{type:t,values:r}=pe(n);return e=Wt(e),(t==="rgb"||t==="hsl")&&(t+="a"),t==="color"?r[3]=`/${e}`:r[3]=e,bt({type:t,values:r})}function vi(n,e){const t=pe(n);if(e=Wt(e),t.type.indexOf("hsl")!==-1)t.values[2]*=1-e;else if(t.type.indexOf("rgb")!==-1||t.type.indexOf("color")!==-1)for(let r=0;r<3;r+=1)t.values[r]*=1-e;return bt(t)}function bi(n,e){const t=pe(n);if(e=Wt(e),t.type.indexOf("hsl")!==-1)t.values[2]+=(100-t.values[2])*e;else if(t.type.indexOf("rgb")!==-1)for(let r=0;r<3;r+=1)t.values[r]+=(255-t.values[r])*e;else if(t.type.indexOf("color")!==-1)for(let r=0;r<3;r+=1)t.values[r]+=(1-t.values[r])*e;return bt(t)}const _i=()=>({text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:de.white,default:de.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}}),wi={primary:{main:Te[700],light:Te[400],dark:Te[800]},secondary:{main:$e[500],light:$e[300],dark:$e[700]},error:{main:Ee[700],light:Ee[400],dark:Ee[800]},info:{main:Oe[700],light:Oe[800],dark:Oe[900]},success:{main:ke[800],light:ke[500],dark:ke[900]},warning:{main:"#ED6C02",light:ze[500],dark:ze[900]}},Si=()=>({text:{primary:de.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:de.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}}),Ei={primary:{main:Te[200],light:Te[50],dark:Te[400]},secondary:{main:$e[200],light:$e[50],dark:$e[400]},error:{main:Ee[500],light:Ee[300],dark:Ee[700]},info:{main:Oe[400],light:Oe[300],dark:Oe[700]},success:{main:ke[400],light:ke[300],dark:ke[700]},warning:{main:ze[400],light:ze[300],dark:ze[700]}},$i={light:_i,dark:Si};function er(n,e){return yi(n,de.white)>=e?de.white:"rgba(0, 0, 0, 0.87)"}function yn(n,e,t,r){const s=typeof r=="number"?r:r.light,i=typeof r=="number"?r*1.5:r.dark;n[e]||(n.hasOwnProperty(t)?n[e]=n[t]:e==="light"?n.light=bi(n.main,s):e==="dark"&&(n.dark=vi(n.main,i)))}function Ti(n){var r,s,i;const e=S({},n.color),t=(r=n.mainShade)!=null?r:500;return!n.color.main&&n.color[t]&&(e.main=n.color[t]),yn(e,"light",(s=n.lightShade)!=null?s:300,n.tonalOffset),yn(e,"dark",(i=n.darkShade)!=null?i:700,n.tonalOffset),e.contrastText||(e.contrastText=er(e.main,n.contrastThreshold)),e}const Oi=()=>({mode:"light",tonalOffset:.2,contrastThreshold:3,grey:pi,common:de});function ki(n){var i;const e=["error","info","primary","secondary","success","warning"],t=Oi(),r=K(S({},We({},t,$i[(i=n==null?void 0:n.mode)!=null?i:t.mode](),n)),{isColorName(o){return e.includes(o)},getColorObject(o){return r[o]},getColor(o){return r.mode==="light"?r[o].light:r[o].dark},augmentColor(o){return Ti(K(S({},o),{tonalOffset:r.tonalOffset,contrastThreshold:r.contrastThreshold}))},getContrastText(o){return er(o,r.contrastThreshold)}}),s=o=>r.mode==="light"?wi[o]:Ei[o];return r.primary=r.augmentColor({color:r.primary||s("primary")}),r.secondary=r.augmentColor({color:r.secondary||s("secondary"),mainShade:"A400",lightShade:"A200",darkShade:"A700"}),r.error=r.augmentColor({color:r.error||s("error")}),r.warning=r.augmentColor({color:r.warning||s("warning")}),r.info=r.augmentColor({color:r.info||s("info")}),r.success=r.augmentColor({color:r.success||s("success")}),r}const Ot={},Ai=.2,xi=.14,Ri=.12;function C(...n){return[`${n[0]}px ${n[1]}px ${n[2]}px ${n[3]}px rgba(0,0,0,${Ai})`,`${n[4]}px ${n[5]}px ${n[6]}px ${n[7]}px rgba(0,0,0,${xi})`,`${n[8]}px ${n[9]}px ${n[10]}px ${n[11]}px rgba(0,0,0,${Ri})`].join(",")}const ji=[()=>"none",()=>C(0,2,1,-1,0,1,1,0,0,1,3,0),()=>C(0,3,1,-2,0,2,2,0,0,1,5,0),()=>C(0,3,3,-2,0,3,4,0,0,1,8,0),()=>C(0,2,4,-1,0,4,5,0,0,1,10,0),()=>C(0,3,5,-1,0,5,8,0,0,1,14,0),()=>C(0,3,5,-1,0,6,10,0,0,1,18,0),()=>C(0,4,5,-2,0,7,10,1,0,2,16,1),()=>C(0,5,5,-3,0,8,10,1,0,3,14,2),()=>C(0,5,6,-3,0,9,12,1,0,3,16,2),()=>C(0,6,6,-3,0,10,14,1,0,4,18,3),()=>C(0,6,7,-4,0,11,15,1,0,4,20,3),()=>C(0,7,8,-4,0,12,17,2,0,5,22,4),()=>C(0,7,8,-4,0,13,19,2,0,5,24,4),()=>C(0,7,9,-4,0,14,21,2,0,5,26,4),()=>C(0,8,9,-5,0,15,22,2,0,6,28,5),()=>C(0,8,10,-5,0,16,24,2,0,6,30,5),()=>C(0,8,11,-5,0,17,26,2,0,6,32,5),()=>C(0,9,11,-5,0,18,28,2,0,7,34,6),()=>C(0,9,12,-6,0,19,29,2,0,7,36,6),()=>C(0,10,13,-6,0,20,31,3,0,8,38,7),()=>C(0,10,13,-6,0,21,33,3,0,8,40,7),()=>C(0,10,14,-6,0,22,35,3,0,8,42,7),()=>C(0,11,14,-7,0,23,36,3,0,9,44,8),()=>C(0,11,15,-7,0,24,38,3,0,9,46,8)];function Ci(){return new Proxy([],{get:(n,e)=>typeof e!="string"||isNaN(Number(e))?n[e]:e in Ot?Ot[e]:Ot[e]=ji[e]()})}const Pi={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},Ii={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function vn(n){return`${Math.round(n)}ms`}function Ni(n){if(!n)return 0;const e=n/36;return Math.round((4+15*e**.25+e/5)*10)}function Di(n){const e=S(S({},Pi),n.easing),t=S(S({},Ii),n.duration);return K(S({getAutoHeightDuration:Ni,create:(s=["all"],i={})=>{const c=i,{duration:o=t.standard,easing:a=e.easeInOut,delay:l=0}=c,u=nn(c,["duration","easing","delay"]);return(Array.isArray(s)?s:[s]).map(h=>`${h} ${typeof o=="string"?o:vn(o)} ${a} ${typeof l=="string"?l:vn(l)}`).join(",")}},n),{easing:e,duration:t})}const X={light:300,regular:400,medium:500,bold:700},tt={fontFamily:'"Roboto", "Helvetica", "Arial", sans-serif',fontSize:14,htmlFontSize:16,h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},subtitle1:{},subtitle2:{},body1:{},body2:{},button:{},caption:{},overline:{},fontWeightLight:300,fontWeightRegular:400,fontWeightMedium:500,fontWeightBold:700};function Ui(n){return Math.round(n*1e5)/1e5}function Y(n,e,t,r,s,i){return S({fontFamily:n.fontFamily,fontWeight:e,fontSize:n.pxToRem(t),lineHeight:`${r}`,letterSpacing:`${Ui(s/t)}em`},i?{textTransform:"uppercase"}:{})}function Bi(n={}){var t,r,s;const e={fontFamily:(t=n.fontFamily)!=null?t:tt.fontFamily,fontSize:(r=n.fontSize)!=null?r:tt.fontSize,htmlFontSize:(s=n==null?void 0:n.htmlFontSize)!=null?s:tt.htmlFontSize,pxToRem:i=>{const o=e.fontSize/14;return`${i/e.htmlFontSize*o}rem`}};return We(e,{h1:Y(e,X.light,96,1.167,-1.5),h2:Y(e,X.light,60,1.2,-.5),h3:Y(e,X.regular,48,1.167,0),h4:Y(e,X.regular,34,1.235,.25),h5:Y(e,X.regular,24,1.334,0),h6:Y(e,X.medium,20,1.6,.15),subtitle1:Y(e,X.regular,16,1.75,.15),subtitle2:Y(e,X.medium,14,1.57,.1),body1:Y(e,X.regular,16,1.5,.15),body2:Y(e,X.regular,14,1.43,.15),button:Y(e,X.medium,14,1.75,.4,!0),caption:Y(e,X.regular,12,1.66,.4),overline:Y(e,X.regular,12,2.66,1,!0)},tt,n)}const Fi={mobileStepper:1e3,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function Li(n){return S({},We({},Fi,n))}function Mi(n={}){const e=S({direction:"ltr"},n);function t(r,s){const i=n[r];Object.defineProperty(e,r,S({configurable:!0,enumerable:!0},typeof i=="function"?{get:i}:{value:s({[r]:i})}))}return t("breakpoints",r=>Mn(r.breakpoints)),t("components",r=>fi(r.components)),t("palette",r=>ki(r.palette)),t("shape",r=>Gn(r.shape)),t("spacing",r=>zn(r.spacing)),t("typography",r=>Bi(r.typography)),t("shadows",()=>Ci()),t("transitions",()=>Di({})),t("zIndex",r=>Li(r.zIndex)),t("mixins",()=>di(e.breakpoints)),e}var zi=Hn(Mi);function Gi(n=zi){return Jn(n,Jt)}const Hi=Yn()({name:"MuiCssBaseline",selfPropNames:["children","enableColorScheme"],propDefaults:({set:n})=>n({enableColorScheme:!1})}),Ji=(n,e)=>S({WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",boxSizing:"border-box",WebkitTextSizeAdjust:"100%"},e&&{colorScheme:n.palette.mode}),qi=n=>K(S({color:n.palette.text.primary},n.typography.body1),{backgroundColor:n.palette.background.default,"@media print":{backgroundColor:n.palette.common.white}}),Vi=(n,e=!1)=>({html:Ji(n,e),"*, *::before, *::after":{boxSizing:"inherit"},"strong, b":{fontWeight:n.typography.fontWeightBold},body:K(S({margin:0},qi(n)),{"&::backdrop":{backgroundColor:n.palette.background.default}})}),Wi=Hi.component(function({props:e}){const t=Gi();return $(ui,{get styles(){return Vi(t,e.enableColorScheme)}})});var tr=Ve(),Ki=n=>$(tr.Provider,{get value(){return n.client},get children(){return n.children}}),nr=()=>{let n=je(tr);if(!n)throw new Error("createSupabase must be used within a SupabaseContext.Provider");return n};function Xi(){return nr().auth}function rc(n){let e=nr(),{data:t}=e.auth.onAuthStateChange((r,s)=>{n(r,s)});re(()=>{e.auth.session()&&n("SIGNED_IN",e.auth.session()),oe(()=>{t==null||t.unsubscribe()})})}const Yi=n=>{const e=Xi();return $(Gt,{get when(){return e.user()},get fallback(){return $(xs,{get href(){return n.fallback}})},get children(){return n.children}})},Qi=Pe(()=>Ie(()=>import("./index.7d797b7f.js"),["assets/index.7d797b7f.js","assets/getDeviceId.e8f3946a.js","assets/ButtonBase.9bf595f5.js","assets/SvgIcon.c425712b.js","assets/isHostComponent.9ebad583.js","assets/ListItemText.52d31dfa.js"])),Zi=Pe(()=>Ie(()=>import("./index.9a756780.js"),["assets/index.9a756780.js","assets/Button.f5ab4cd7.js","assets/ButtonBase.9bf595f5.js","assets/getDeviceId.e8f3946a.js","assets/solid.5ae8e60d.js"])),eo=Pe(()=>Ie(()=>import("./index.3e50c9ce.js"),["assets/index.3e50c9ce.js","assets/Button.f5ab4cd7.js","assets/ButtonBase.9bf595f5.js","assets/TextField.2ea54ac2.js","assets/isHostComponent.9ebad583.js","assets/Popover.e8cf0efd.js","assets/SvgIcon.c425712b.js","assets/solid.5ae8e60d.js","assets/getDeviceId.e8f3946a.js","assets/ListItemText.52d31dfa.js"])),to=Pe(()=>Ie(()=>import("./index.016e8a17.js"),["assets/index.016e8a17.js","assets/Popover.e8cf0efd.js","assets/SvgIcon.c425712b.js","assets/ButtonBase.9bf595f5.js","assets/isHostComponent.9ebad583.js","assets/solid.5ae8e60d.js","assets/getDeviceId.e8f3946a.js","assets/Button.f5ab4cd7.js","assets/index.c1adcc6d.js","assets/index.276fa080.css","assets/index.79b5287a.js"])),no=Pe(()=>Ie(()=>import("./index.b61bf03f.js"),["assets/index.b61bf03f.js","assets/Button.f5ab4cd7.js","assets/ButtonBase.9bf595f5.js","assets/TextField.2ea54ac2.js","assets/isHostComponent.9ebad583.js","assets/index.c1adcc6d.js","assets/index.276fa080.css"])),ro=Pe(()=>Ie(()=>import("./index.b2b53b3b.js"),["assets/index.b2b53b3b.js","assets/Button.f5ab4cd7.js","assets/ButtonBase.9bf595f5.js","assets/TextField.2ea54ac2.js","assets/isHostComponent.9ebad583.js","assets/solid.5ae8e60d.js","assets/getDeviceId.e8f3946a.js","assets/index.79b5287a.js"])),so=()=>[$(Wi,{}),$(ks,{get children(){return[$(ye,{path:"/",get element(){return $(Yi,{fallback:"/login",get children(){return $(eo,{})}})}}),$(ye,{path:"/login",get element(){return $(Qi,{})}}),$(ye,{path:"/user",get element(){return $(Zi,{})}}),$(ye,{path:"/dev-draw-broad",get element(){return $(no,{})}}),$(ye,{path:"/rooms/:id",get element(){return $(to,{})}}),$(ye,{path:"/dev-mesh",get element(){return $(ro,{})}})]}})];var bn={url:"https://ocfdltqnwejgikshcagx.supabase.co",key:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9jZmRsdHFud2VqZ2lrc2hjYWd4Iiwicm9sZSI6ImFub24iLCJpYXQiOjE2NTA1MDkzNTEsImV4cCI6MTk2NjA4NTM1MX0.M7XD6RGPFsggSzG-JrfXvkW01wXD9JjQmIajKIc8N3o"};const io="1.35.3",rr={"X-Client-Info":`supabase-js/${io}`},oo="supabase.auth.token";function ao(n){return n.replace(/\/$/,"")}const co=()=>typeof window!="undefined",lo="1.22.15",uo="http://localhost:9999",ho={"X-Client-Info":`gotrue-js/${lo}`},nt=10,ae={ERROR_MESSAGE:"Request Failed",MAX_RETRIES:10,RETRY_INTERVAL:2},De="supabase.auth.token",fo={name:"sb",lifetime:60*60*8,domain:"",path:"/",sameSite:"lax"};var Ke=globalThis&&globalThis.__awaiter||function(n,e,t,r){function s(i){return i instanceof t?i:new t(function(o){o(i)})}return new(t||(t=Promise))(function(i,o){function a(c){try{u(r.next(c))}catch(h){o(h)}}function l(c){try{u(r.throw(c))}catch(h){o(h)}}function u(c){c.done?i(c.value):s(c.value).then(a,l)}u((r=r.apply(n,e||[])).next())})};const po=n=>n.msg||n.message||n.error_description||n.error||JSON.stringify(n),mo=(n,e)=>{if(!(n!=null&&n.status))return e({message:ae.ERROR_MESSAGE});if(typeof n.json!="function")return e(n);n.json().then(t=>e({message:po(t),status:(n==null?void 0:n.status)||500}))},go=(n,e,t)=>{const r={method:n,headers:(e==null?void 0:e.headers)||{}};return n==="GET"||(r.headers=Object.assign({"Content-Type":"text/plain;charset=UTF-8"},e==null?void 0:e.headers),r.body=JSON.stringify(t)),r};function _t(n,e,t,r,s){return Ke(this,void 0,void 0,function*(){return new Promise((i,o)=>{n(t,go(e,r,s)).then(a=>{if(!a.ok)throw a;return r!=null&&r.noResolveJson?i:a.json()}).then(a=>i(a)).catch(a=>mo(a,o))})})}function kt(n,e,t){return Ke(this,void 0,void 0,function*(){return _t(n,"GET",e,t)})}function H(n,e,t,r){return Ke(this,void 0,void 0,function*(){return _t(n,"POST",e,r,t)})}function _n(n,e,t,r){return Ke(this,void 0,void 0,function*(){return _t(n,"PUT",e,r,t)})}function yo(n,e,t,r){return Ke(this,void 0,void 0,function*(){return _t(n,"DELETE",e,r,t)})}function vo(n,e,t){const r=t||{},s=encodeURIComponent,i=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;if(typeof s!="function")throw new TypeError("option encode is invalid");if(!i.test(n))throw new TypeError("argument name is invalid");const o=s(e);if(o&&!i.test(o))throw new TypeError("argument val is invalid");let a=n+"="+o;if(r.maxAge!=null){const l=r.maxAge-0;if(isNaN(l)||!isFinite(l))throw new TypeError("option maxAge is invalid");a+="; Max-Age="+Math.floor(l)}if(r.domain){if(!i.test(r.domain))throw new TypeError("option domain is invalid");a+="; Domain="+r.domain}if(r.path){if(!i.test(r.path))throw new TypeError("option path is invalid");a+="; Path="+r.path}if(r.expires){if(typeof r.expires.toUTCString!="function")throw new TypeError("option expires is invalid");a+="; Expires="+r.expires.toUTCString()}if(r.httpOnly&&(a+="; HttpOnly"),r.secure&&(a+="; Secure"),r.sameSite)switch(typeof r.sameSite=="string"?r.sameSite.toLowerCase():r.sameSite){case"lax":a+="; SameSite=Lax";break;case"strict":a+="; SameSite=Strict";break;case"none":a+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return a}function bo(n){if(!n||!n.headers||!n.headers.host)throw new Error('The "host" request header is not available');const e=n.headers.host.indexOf(":")>-1&&n.headers.host.split(":")[0]||n.headers.host;return!(["localhost","127.0.0.1"].indexOf(e)>-1||e.endsWith(".local"))}function _o(n,e){var t,r,s;return vo(n.name,n.value,{maxAge:n.maxAge,expires:new Date(Date.now()+n.maxAge*1e3),httpOnly:!0,secure:e,path:(t=n.path)!==null&&t!==void 0?t:"/",domain:(r=n.domain)!==null&&r!==void 0?r:"",sameSite:(s=n.sameSite)!==null&&s!==void 0?s:"lax"})}function It(n,e,t){const r=t.map(i=>_o(i,bo(n))),s=e.getHeader("Set-Cookie");return s&&(s instanceof Array?Array.prototype.push.apply(r,s):typeof s=="string"&&r.push(s)),r}function rt(n,e,t){e.setHeader("Set-Cookie",It(n,e,t))}var wo=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function sr(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Nt={exports:{}};(function(n,e){var t=typeof self!="undefined"?self:wo,r=function(){function i(){this.fetch=!1,this.DOMException=t.DOMException}return i.prototype=t,new i}();(function(i){(function(o){var a={searchParams:"URLSearchParams"in i,iterable:"Symbol"in i&&"iterator"in Symbol,blob:"FileReader"in i&&"Blob"in i&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in i,arrayBuffer:"ArrayBuffer"in i};function l(f){return f&&DataView.prototype.isPrototypeOf(f)}if(a.arrayBuffer)var u=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(f){return f&&u.indexOf(Object.prototype.toString.call(f))>-1};function h(f){if(typeof f!="string"&&(f=String(f)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(f))throw new TypeError("Invalid character in header field name");return f.toLowerCase()}function p(f){return typeof f!="string"&&(f=String(f)),f}function d(f){var m={next:function(){var b=f.shift();return{done:b===void 0,value:b}}};return a.iterable&&(m[Symbol.iterator]=function(){return m}),m}function g(f){this.map={},f instanceof g?f.forEach(function(m,b){this.append(b,m)},this):Array.isArray(f)?f.forEach(function(m){this.append(m[0],m[1])},this):f&&Object.getOwnPropertyNames(f).forEach(function(m){this.append(m,f[m])},this)}g.prototype.append=function(f,m){f=h(f),m=p(m);var b=this.map[f];this.map[f]=b?b+", "+m:m},g.prototype.delete=function(f){delete this.map[h(f)]},g.prototype.get=function(f){return f=h(f),this.has(f)?this.map[f]:null},g.prototype.has=function(f){return this.map.hasOwnProperty(h(f))},g.prototype.set=function(f,m){this.map[h(f)]=p(m)},g.prototype.forEach=function(f,m){for(var b in this.map)this.map.hasOwnProperty(b)&&f.call(m,this.map[b],b,this)},g.prototype.keys=function(){var f=[];return this.forEach(function(m,b){f.push(b)}),d(f)},g.prototype.values=function(){var f=[];return this.forEach(function(m){f.push(m)}),d(f)},g.prototype.entries=function(){var f=[];return this.forEach(function(m,b){f.push([b,m])}),d(f)},a.iterable&&(g.prototype[Symbol.iterator]=g.prototype.entries);function v(f){if(f.bodyUsed)return Promise.reject(new TypeError("Already read"));f.bodyUsed=!0}function _(f){return new Promise(function(m,b){f.onload=function(){m(f.result)},f.onerror=function(){b(f.error)}})}function U(f){var m=new FileReader,b=_(m);return m.readAsArrayBuffer(f),b}function P(f){var m=new FileReader,b=_(m);return m.readAsText(f),b}function j(f){for(var m=new Uint8Array(f),b=new Array(m.length),B=0;B-1?m:f}function y(f,m){m=m||{};var b=m.body;if(f instanceof y){if(f.bodyUsed)throw new TypeError("Already read");this.url=f.url,this.credentials=f.credentials,m.headers||(this.headers=new g(f.headers)),this.method=f.method,this.mode=f.mode,this.signal=f.signal,!b&&f._bodyInit!=null&&(b=f._bodyInit,f.bodyUsed=!0)}else this.url=String(f);if(this.credentials=m.credentials||this.credentials||"same-origin",(m.headers||!this.headers)&&(this.headers=new g(m.headers)),this.method=w(m.method||this.method||"GET"),this.mode=m.mode||this.mode||null,this.signal=m.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&b)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(b)}y.prototype.clone=function(){return new y(this,{body:this._bodyInit})};function E(f){var m=new FormData;return f.trim().split("&").forEach(function(b){if(b){var B=b.split("="),D=B.shift().replace(/\+/g," "),T=B.join("=").replace(/\+/g," ");m.append(decodeURIComponent(D),decodeURIComponent(T))}}),m}function V(f){var m=new g,b=f.replace(/\r?\n[\t ]+/g," ");return b.split(/\r?\n/).forEach(function(B){var D=B.split(":"),T=D.shift().trim();if(T){var Qe=D.join(":").trim();m.append(T,Qe)}}),m}M.call(y.prototype);function z(f,m){m||(m={}),this.type="default",this.status=m.status===void 0?200:m.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in m?m.statusText:"OK",this.headers=new g(m.headers),this.url=m.url||"",this._initBody(f)}M.call(z.prototype),z.prototype.clone=function(){return new z(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new g(this.headers),url:this.url})},z.error=function(){var f=new z(null,{status:0,statusText:""});return f.type="error",f};var Ye=[301,302,303,307,308];z.redirect=function(f,m){if(Ye.indexOf(m)===-1)throw new RangeError("Invalid status code");return new z(null,{status:m,headers:{location:f}})},o.DOMException=i.DOMException;try{new o.DOMException}catch{o.DOMException=function(m,b){this.message=m,this.name=b;var B=Error(m);this.stack=B.stack},o.DOMException.prototype=Object.create(Error.prototype),o.DOMException.prototype.constructor=o.DOMException}function Z(f,m){return new Promise(function(b,B){var D=new y(f,m);if(D.signal&&D.signal.aborted)return B(new o.DOMException("Aborted","AbortError"));var T=new XMLHttpRequest;function Qe(){T.abort()}T.onload=function(){var Ne={status:T.status,statusText:T.statusText,headers:V(T.getAllResponseHeaders()||"")};Ne.url="responseURL"in T?T.responseURL:Ne.headers.get("X-Request-URL");var Et="response"in T?T.response:T.responseText;b(new z(Et,Ne))},T.onerror=function(){B(new TypeError("Network request failed"))},T.ontimeout=function(){B(new TypeError("Network request failed"))},T.onabort=function(){B(new o.DOMException("Aborted","AbortError"))},T.open(D.method,D.url,!0),D.credentials==="include"?T.withCredentials=!0:D.credentials==="omit"&&(T.withCredentials=!1),"responseType"in T&&a.blob&&(T.responseType="blob"),D.headers.forEach(function(Ne,Et){T.setRequestHeader(Et,Ne)}),D.signal&&(D.signal.addEventListener("abort",Qe),T.onreadystatechange=function(){T.readyState===4&&D.signal.removeEventListener("abort",Qe)}),T.send(typeof D._bodyInit=="undefined"?null:D._bodyInit)})}return Z.polyfill=!0,i.fetch||(i.fetch=Z,i.Headers=g,i.Request=y,i.Response=z),o.Headers=g,o.Request=y,o.Response=z,o.fetch=Z,Object.defineProperty(o,"__esModule",{value:!0}),o})({})})(r),r.fetch.ponyfill=!0,delete r.fetch.polyfill;var s=r;e=s.fetch,e.default=s.fetch,e.fetch=s.fetch,e.Headers=s.Headers,e.Request=s.Request,e.Response=s.Response,n.exports=e})(Nt,Nt.exports);var wt=sr(Nt.exports),Kt=globalThis&&globalThis.__awaiter||function(n,e,t,r){function s(i){return i instanceof t?i:new t(function(o){o(i)})}return new(t||(t=Promise))(function(i,o){function a(c){try{u(r.next(c))}catch(h){o(h)}}function l(c){try{u(r.throw(c))}catch(h){o(h)}}function u(c){c.done?i(c.value):s(c.value).then(a,l)}u((r=r.apply(n,e||[])).next())})};function se(n){return Math.round(Date.now()/1e3)+n}function So(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){const e=Math.random()*16|0;return(n=="x"?e:e&3|8).toString(16)})}const ne=()=>typeof window!="undefined";function ie(n,e){var t;e||(e=((t=window==null?void 0:window.location)===null||t===void 0?void 0:t.href)||""),n=n.replace(/[\[\]]/g,"\\$&");const r=new RegExp("[?&#]"+n+"(=([^&#]*)|&|#|$)"),s=r.exec(e);return s?s[2]?decodeURIComponent(s[2].replace(/\+/g," ")):"":null}const Eo=n=>{let e;return n?e=n:typeof fetch=="undefined"?e=wt:e=fetch,(...t)=>e(...t)},$o=(n,e,t)=>Kt(void 0,void 0,void 0,function*(){ne()&&(yield n==null?void 0:n.setItem(e,JSON.stringify(t)))}),To=(n,e)=>Kt(void 0,void 0,void 0,function*(){const t=ne()&&(yield n==null?void 0:n.getItem(e));if(!t)return null;try{return JSON.parse(t)}catch{return t}}),Oo=(n,e)=>{const t=ne()&&(n==null?void 0:n.getItem(e));if(!t||typeof t!="string")return null;try{return JSON.parse(t)}catch{return t}},ko=(n,e)=>Kt(void 0,void 0,void 0,function*(){ne()&&(yield n==null?void 0:n.removeItem(e))});var I=globalThis&&globalThis.__awaiter||function(n,e,t,r){function s(i){return i instanceof t?i:new t(function(o){o(i)})}return new(t||(t=Promise))(function(i,o){function a(c){try{u(r.next(c))}catch(h){o(h)}}function l(c){try{u(r.throw(c))}catch(h){o(h)}}function u(c){c.done?i(c.value):s(c.value).then(a,l)}u((r=r.apply(n,e||[])).next())})};class Ao{constructor({url:e="",headers:t={},cookieOptions:r,fetch:s}){this.url=e,this.headers=t,this.cookieOptions=Object.assign(Object.assign({},fo),r),this.fetch=Eo(s)}_createRequestHeaders(e){const t=Object.assign({},this.headers);return t.Authorization=`Bearer ${e}`,t}cookieName(){var e;return(e=this.cookieOptions.name)!==null&&e!==void 0?e:""}getUrlForProvider(e,t){const r=[`provider=${encodeURIComponent(e)}`];return t!=null&&t.redirectTo&&r.push(`redirect_to=${encodeURIComponent(t.redirectTo)}`),t!=null&&t.scopes&&r.push(`scopes=${encodeURIComponent(t.scopes)}`),`${this.url}/authorize?${r.join("&")}`}signUpWithEmail(e,t,r={}){return I(this,void 0,void 0,function*(){try{const s=Object.assign({},this.headers);let i="";r.redirectTo&&(i="?redirect_to="+encodeURIComponent(r.redirectTo));const o=yield H(this.fetch,`${this.url}/signup${i}`,{email:e,password:t,data:r.data,gotrue_meta_security:{hcaptcha_token:r.captchaToken}},{headers:s}),a=Object.assign({},o);return a.expires_in&&(a.expires_at=se(o.expires_in)),{data:a,error:null}}catch(s){return{data:null,error:s}}})}signInWithEmail(e,t,r={}){return I(this,void 0,void 0,function*(){try{const s=Object.assign({},this.headers);let i="?grant_type=password";r.redirectTo&&(i+="&redirect_to="+encodeURIComponent(r.redirectTo));const o=yield H(this.fetch,`${this.url}/token${i}`,{email:e,password:t},{headers:s}),a=Object.assign({},o);return a.expires_in&&(a.expires_at=se(o.expires_in)),{data:a,error:null}}catch(s){return{data:null,error:s}}})}signUpWithPhone(e,t,r={}){return I(this,void 0,void 0,function*(){try{const s=Object.assign({},this.headers),i=yield H(this.fetch,`${this.url}/signup`,{phone:e,password:t,data:r.data,gotrue_meta_security:{hcaptcha_token:r.captchaToken}},{headers:s}),o=Object.assign({},i);return o.expires_in&&(o.expires_at=se(i.expires_in)),{data:o,error:null}}catch(s){return{data:null,error:s}}})}signInWithPhone(e,t){return I(this,void 0,void 0,function*(){try{const r=Object.assign({},this.headers),s="?grant_type=password",i=yield H(this.fetch,`${this.url}/token${s}`,{phone:e,password:t},{headers:r}),o=Object.assign({},i);return o.expires_in&&(o.expires_at=se(i.expires_in)),{data:o,error:null}}catch(r){return{data:null,error:r}}})}signInWithOpenIDConnect({id_token:e,nonce:t,client_id:r,issuer:s,provider:i}){return I(this,void 0,void 0,function*(){try{const o=Object.assign({},this.headers),a="?grant_type=id_token",l=yield H(this.fetch,`${this.url}/token${a}`,{id_token:e,nonce:t,client_id:r,issuer:s,provider:i},{headers:o}),u=Object.assign({},l);return u.expires_in&&(u.expires_at=se(l.expires_in)),{data:u,error:null}}catch(o){return{data:null,error:o}}})}sendMagicLinkEmail(e,t={}){var r;return I(this,void 0,void 0,function*(){try{const s=Object.assign({},this.headers);let i="";t.redirectTo&&(i+="?redirect_to="+encodeURIComponent(t.redirectTo));const o=(r=t.shouldCreateUser)!==null&&r!==void 0?r:!0;return{data:yield H(this.fetch,`${this.url}/otp${i}`,{email:e,create_user:o,gotrue_meta_security:{hcaptcha_token:t.captchaToken}},{headers:s}),error:null}}catch(s){return{data:null,error:s}}})}sendMobileOTP(e,t={}){var r;return I(this,void 0,void 0,function*(){try{const s=(r=t.shouldCreateUser)!==null&&r!==void 0?r:!0,i=Object.assign({},this.headers);return{data:yield H(this.fetch,`${this.url}/otp`,{phone:e,create_user:s,gotrue_meta_security:{hcaptcha_token:t.captchaToken}},{headers:i}),error:null}}catch(s){return{data:null,error:s}}})}signOut(e){return I(this,void 0,void 0,function*(){try{return yield H(this.fetch,`${this.url}/logout`,{},{headers:this._createRequestHeaders(e),noResolveJson:!0}),{error:null}}catch(t){return{error:t}}})}verifyMobileOTP(e,t,r={}){return I(this,void 0,void 0,function*(){try{const s=Object.assign({},this.headers),i=yield H(this.fetch,`${this.url}/verify`,{phone:e,token:t,type:"sms",redirect_to:r.redirectTo},{headers:s}),o=Object.assign({},i);return o.expires_in&&(o.expires_at=se(i.expires_in)),{data:o,error:null}}catch(s){return{data:null,error:s}}})}verifyOTP({email:e,phone:t,token:r,type:s="sms"},i={}){return I(this,void 0,void 0,function*(){try{const o=Object.assign({},this.headers),a=yield H(this.fetch,`${this.url}/verify`,{email:e,phone:t,token:r,type:s,redirect_to:i.redirectTo},{headers:o}),l=Object.assign({},a);return l.expires_in&&(l.expires_at=se(a.expires_in)),{data:l,error:null}}catch(o){return{data:null,error:o}}})}inviteUserByEmail(e,t={}){return I(this,void 0,void 0,function*(){try{const r=Object.assign({},this.headers);let s="";return t.redirectTo&&(s+="?redirect_to="+encodeURIComponent(t.redirectTo)),{data:yield H(this.fetch,`${this.url}/invite${s}`,{email:e,data:t.data},{headers:r}),error:null}}catch(r){return{data:null,error:r}}})}resetPasswordForEmail(e,t={}){return I(this,void 0,void 0,function*(){try{const r=Object.assign({},this.headers);let s="";return t.redirectTo&&(s+="?redirect_to="+encodeURIComponent(t.redirectTo)),{data:yield H(this.fetch,`${this.url}/recover${s}`,{email:e,gotrue_meta_security:{hcaptcha_token:t.captchaToken}},{headers:r}),error:null}}catch(r){return{data:null,error:r}}})}refreshAccessToken(e){return I(this,void 0,void 0,function*(){try{const t=yield H(this.fetch,`${this.url}/token?grant_type=refresh_token`,{refresh_token:e},{headers:this.headers}),r=Object.assign({},t);return r.expires_in&&(r.expires_at=se(t.expires_in)),{data:r,error:null}}catch(t){return{data:null,error:t}}})}setAuthCookie(e,t){e.method!=="POST"&&(t.setHeader("Allow","POST"),t.status(405).end("Method Not Allowed"));const{event:r,session:s}=e.body;if(!r)throw new Error("Auth event missing!");if(r==="SIGNED_IN"){if(!s)throw new Error("Auth session missing!");rt(e,t,[{key:"access-token",value:s.access_token},{key:"refresh-token",value:s.refresh_token}].map(i=>{var o;return{name:`${this.cookieName()}-${i.key}`,value:i.value,domain:this.cookieOptions.domain,maxAge:(o=this.cookieOptions.lifetime)!==null&&o!==void 0?o:0,path:this.cookieOptions.path,sameSite:this.cookieOptions.sameSite}}))}r==="SIGNED_OUT"&&rt(e,t,["access-token","refresh-token"].map(i=>({name:`${this.cookieName()}-${i}`,value:"",maxAge:-1}))),t.status(200).json({})}deleteAuthCookie(e,t,{redirectTo:r="/"}){return rt(e,t,["access-token","refresh-token"].map(s=>({name:`${this.cookieName()}-${s}`,value:"",maxAge:-1}))),t.redirect(307,r)}getAuthCookieString(e,t){e.method!=="POST"&&(t.setHeader("Allow","POST"),t.status(405).end("Method Not Allowed"));const{event:r,session:s}=e.body;if(!r)throw new Error("Auth event missing!");if(r==="SIGNED_IN"){if(!s)throw new Error("Auth session missing!");return It(e,t,[{key:"access-token",value:s.access_token},{key:"refresh-token",value:s.refresh_token}].map(i=>{var o;return{name:`${this.cookieName()}-${i.key}`,value:i.value,domain:this.cookieOptions.domain,maxAge:(o=this.cookieOptions.lifetime)!==null&&o!==void 0?o:0,path:this.cookieOptions.path,sameSite:this.cookieOptions.sameSite}}))}return r==="SIGNED_OUT"?It(e,t,["access-token","refresh-token"].map(i=>({name:`${this.cookieName()}-${i}`,value:"",maxAge:-1}))):t.getHeader("Set-Cookie")}generateLink(e,t,r={}){return I(this,void 0,void 0,function*(){try{return{data:yield H(this.fetch,`${this.url}/admin/generate_link`,{type:e,email:t,password:r.password,data:r.data,redirect_to:r.redirectTo},{headers:this.headers}),error:null}}catch(s){return{data:null,error:s}}})}createUser(e){return I(this,void 0,void 0,function*(){try{const t=yield H(this.fetch,`${this.url}/admin/users`,e,{headers:this.headers});return{user:t,data:t,error:null}}catch(t){return{user:null,data:null,error:t}}})}listUsers(){return I(this,void 0,void 0,function*(){try{return{data:(yield kt(this.fetch,`${this.url}/admin/users`,{headers:this.headers})).users,error:null}}catch(e){return{data:null,error:e}}})}getUserById(e){return I(this,void 0,void 0,function*(){try{return{data:yield kt(this.fetch,`${this.url}/admin/users/${e}`,{headers:this.headers}),error:null}}catch(t){return{data:null,error:t}}})}getUserByCookie(e,t){return I(this,void 0,void 0,function*(){try{if(!e.cookies)throw new Error("Not able to parse cookies! When using Express make sure the cookie-parser middleware is in use!");const r=e.cookies[`${this.cookieName()}-access-token`],s=e.cookies[`${this.cookieName()}-refresh-token`];if(!r)throw new Error("No cookie found!");const{user:i,error:o}=yield this.getUser(r);if(o){if(!s)throw new Error("No refresh_token cookie found!");if(!t)throw new Error("You need to pass the res object to automatically refresh the session!");const{data:a,error:l}=yield this.refreshAccessToken(s);if(l)throw l;if(a)return rt(e,t,[{key:"access-token",value:a.access_token},{key:"refresh-token",value:a.refresh_token}].map(u=>{var c;return{name:`${this.cookieName()}-${u.key}`,value:u.value,domain:this.cookieOptions.domain,maxAge:(c=this.cookieOptions.lifetime)!==null&&c!==void 0?c:0,path:this.cookieOptions.path,sameSite:this.cookieOptions.sameSite}})),{token:a.access_token,user:a.user,data:a.user,error:null}}return{token:r,user:i,data:i,error:null}}catch(r){return{token:null,user:null,data:null,error:r}}})}updateUserById(e,t){return I(this,void 0,void 0,function*(){try{const r=yield _n(this.fetch,`${this.url}/admin/users/${e}`,t,{headers:this.headers});return{user:r,data:r,error:null}}catch(r){return{user:null,data:null,error:r}}})}deleteUser(e){return I(this,void 0,void 0,function*(){try{const t=yield yo(this.fetch,`${this.url}/admin/users/${e}`,{},{headers:this.headers});return{user:t,data:t,error:null}}catch(t){return{user:null,data:null,error:t}}})}getUser(e){return I(this,void 0,void 0,function*(){try{const t=yield kt(this.fetch,`${this.url}/user`,{headers:this._createRequestHeaders(e)});return{user:t,data:t,error:null}}catch(t){return{user:null,data:null,error:t}}})}updateUser(e,t){return I(this,void 0,void 0,function*(){try{const r=yield _n(this.fetch,`${this.url}/user`,t,{headers:this._createRequestHeaders(e)});return{user:r,data:r,error:null}}catch(r){return{user:null,data:null,error:r}}})}}function xo(){if(typeof globalThis!="object")try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch{typeof self!="undefined"&&(self.globalThis=self)}}var J=globalThis&&globalThis.__awaiter||function(n,e,t,r){function s(i){return i instanceof t?i:new t(function(o){o(i)})}return new(t||(t=Promise))(function(i,o){function a(c){try{u(r.next(c))}catch(h){o(h)}}function l(c){try{u(r.throw(c))}catch(h){o(h)}}function u(c){c.done?i(c.value):s(c.value).then(a,l)}u((r=r.apply(n,e||[])).next())})};xo();const Ro={url:uo,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,multiTab:!0,headers:ho};class jo{constructor(e){this.stateChangeEmitters=new Map,this.networkRetries=0;const t=Object.assign(Object.assign({},Ro),e);this.currentUser=null,this.currentSession=null,this.autoRefreshToken=t.autoRefreshToken,this.persistSession=t.persistSession,this.multiTab=t.multiTab,this.localStorage=t.localStorage||globalThis.localStorage,this.api=new Ao({url:t.url,headers:t.headers,cookieOptions:t.cookieOptions,fetch:t.fetch}),this._recoverSession(),this._recoverAndRefresh(),this._listenForMultiTabEvents(),this._handleVisibilityChange(),t.detectSessionInUrl&&ne()&&!!ie("access_token")&&this.getSessionFromUrl({storeSession:!0}).then(({error:r})=>{r&&console.error("Error getting session from URL.",r)})}signUp({email:e,password:t,phone:r},s={}){return J(this,void 0,void 0,function*(){try{this._removeSession();const{data:i,error:o}=r&&t?yield this.api.signUpWithPhone(r,t,{data:s.data,captchaToken:s.captchaToken}):yield this.api.signUpWithEmail(e,t,{redirectTo:s.redirectTo,data:s.data,captchaToken:s.captchaToken});if(o)throw o;if(!i)throw"An error occurred on sign up.";let a=null,l=null;return i.access_token&&(a=i,l=a.user,this._saveSession(a),this._notifyAllSubscribers("SIGNED_IN")),i.id&&(l=i),{user:l,session:a,error:null}}catch(i){return{user:null,session:null,error:i}}})}signIn({email:e,phone:t,password:r,refreshToken:s,provider:i,oidc:o},a={}){return J(this,void 0,void 0,function*(){try{if(this._removeSession(),e&&!r){const{error:l}=yield this.api.sendMagicLinkEmail(e,{redirectTo:a.redirectTo,shouldCreateUser:a.shouldCreateUser,captchaToken:a.captchaToken});return{user:null,session:null,error:l}}if(e&&r)return this._handleEmailSignIn(e,r,{redirectTo:a.redirectTo});if(t&&!r){const{error:l}=yield this.api.sendMobileOTP(t,{shouldCreateUser:a.shouldCreateUser,captchaToken:a.captchaToken});return{user:null,session:null,error:l}}if(t&&r)return this._handlePhoneSignIn(t,r);if(s){const{error:l}=yield this._callRefreshToken(s);if(l)throw l;return{user:this.currentUser,session:this.currentSession,error:null}}if(i)return this._handleProviderSignIn(i,{redirectTo:a.redirectTo,scopes:a.scopes});if(o)return this._handleOpenIDConnectSignIn(o);throw new Error("You must provide either an email, phone number, a third-party provider or OpenID Connect.")}catch(l){return{user:null,session:null,error:l}}})}verifyOTP(e,t={}){return J(this,void 0,void 0,function*(){try{this._removeSession();const{data:r,error:s}=yield this.api.verifyOTP(e,t);if(s)throw s;if(!r)throw"An error occurred on token verification.";let i=null,o=null;return r.access_token&&(i=r,o=i.user,this._saveSession(i),this._notifyAllSubscribers("SIGNED_IN")),r.id&&(o=r),{user:o,session:i,error:null}}catch(r){return{user:null,session:null,error:r}}})}user(){return this.currentUser}session(){return this.currentSession}refreshSession(){var e;return J(this,void 0,void 0,function*(){try{if(!(!((e=this.currentSession)===null||e===void 0)&&e.access_token))throw new Error("Not logged in.");const{error:t}=yield this._callRefreshToken();if(t)throw t;return{data:this.currentSession,user:this.currentUser,error:null}}catch(t){return{data:null,user:null,error:t}}})}update(e){var t;return J(this,void 0,void 0,function*(){try{if(!(!((t=this.currentSession)===null||t===void 0)&&t.access_token))throw new Error("Not logged in.");const{user:r,error:s}=yield this.api.updateUser(this.currentSession.access_token,e);if(s)throw s;if(!r)throw Error("Invalid user data.");const i=Object.assign(Object.assign({},this.currentSession),{user:r});return this._saveSession(i),this._notifyAllSubscribers("USER_UPDATED"),{data:r,user:r,error:null}}catch(r){return{data:null,user:null,error:r}}})}setSession(e){return J(this,void 0,void 0,function*(){try{if(!e)throw new Error("No current session.");const{data:t,error:r}=yield this.api.refreshAccessToken(e);return r?{session:null,error:r}:(this._saveSession(t),this._notifyAllSubscribers("SIGNED_IN"),{session:t,error:null})}catch(t){return{error:t,session:null}}})}setAuth(e){return this.currentSession=Object.assign(Object.assign({},this.currentSession),{access_token:e,token_type:"bearer",user:this.user()}),this._notifyAllSubscribers("TOKEN_REFRESHED"),this.currentSession}getSessionFromUrl(e){return J(this,void 0,void 0,function*(){try{if(!ne())throw new Error("No browser detected.");const t=ie("error_description");if(t)throw new Error(t);const r=ie("provider_token"),s=ie("access_token");if(!s)throw new Error("No access_token detected.");const i=ie("expires_in");if(!i)throw new Error("No expires_in detected.");const o=ie("refresh_token");if(!o)throw new Error("No refresh_token detected.");const a=ie("token_type");if(!a)throw new Error("No token_type detected.");const u=Math.round(Date.now()/1e3)+parseInt(i),{user:c,error:h}=yield this.api.getUser(s);if(h)throw h;const p={provider_token:r,access_token:s,expires_in:parseInt(i),expires_at:u,refresh_token:o,token_type:a,user:c};if(e!=null&&e.storeSession){this._saveSession(p);const d=ie("type");this._notifyAllSubscribers("SIGNED_IN"),d==="recovery"&&this._notifyAllSubscribers("PASSWORD_RECOVERY")}return window.location.hash="",{data:p,error:null}}catch(t){return{data:null,error:t}}})}signOut(){var e;return J(this,void 0,void 0,function*(){const t=(e=this.currentSession)===null||e===void 0?void 0:e.access_token;if(this._removeSession(),this._notifyAllSubscribers("SIGNED_OUT"),t){const{error:r}=yield this.api.signOut(t);if(r)return{error:r}}return{error:null}})}onAuthStateChange(e){try{const t=So(),r={id:t,callback:e,unsubscribe:()=>{this.stateChangeEmitters.delete(t)}};return this.stateChangeEmitters.set(t,r),{data:r,error:null}}catch(t){return{data:null,error:t}}}_handleEmailSignIn(e,t,r={}){var s,i;return J(this,void 0,void 0,function*(){try{const{data:o,error:a}=yield this.api.signInWithEmail(e,t,{redirectTo:r.redirectTo});return a||!o?{data:null,user:null,session:null,error:a}:((((s=o==null?void 0:o.user)===null||s===void 0?void 0:s.confirmed_at)||((i=o==null?void 0:o.user)===null||i===void 0?void 0:i.email_confirmed_at))&&(this._saveSession(o),this._notifyAllSubscribers("SIGNED_IN")),{data:o,user:o.user,session:o,error:null})}catch(o){return{data:null,user:null,session:null,error:o}}})}_handlePhoneSignIn(e,t){var r;return J(this,void 0,void 0,function*(){try{const{data:s,error:i}=yield this.api.signInWithPhone(e,t);return i||!s?{data:null,user:null,session:null,error:i}:(!((r=s==null?void 0:s.user)===null||r===void 0)&&r.phone_confirmed_at&&(this._saveSession(s),this._notifyAllSubscribers("SIGNED_IN")),{data:s,user:s.user,session:s,error:null})}catch(s){return{data:null,user:null,session:null,error:s}}})}_handleProviderSignIn(e,t={}){const r=this.api.getUrlForProvider(e,{redirectTo:t.redirectTo,scopes:t.scopes});try{return ne()&&(window.location.href=r),{provider:e,url:r,data:null,session:null,user:null,error:null}}catch(s){return r?{provider:e,url:r,data:null,session:null,user:null,error:null}:{data:null,user:null,session:null,error:s}}}_handleOpenIDConnectSignIn({id_token:e,nonce:t,client_id:r,issuer:s,provider:i}){return J(this,void 0,void 0,function*(){if(e&&t&&(r&&s||i))try{const{data:o,error:a}=yield this.api.signInWithOpenIDConnect({id_token:e,nonce:t,client_id:r,issuer:s,provider:i});return a||!o?{user:null,session:null,error:a}:(this._saveSession(o),this._notifyAllSubscribers("SIGNED_IN"),{user:o.user,session:o,error:null})}catch(o){return{user:null,session:null,error:o}}throw new Error("You must provide a OpenID Connect provider with your id token and nonce.")})}_recoverSession(){try{const e=Oo(this.localStorage,De);if(!e)return null;const{currentSession:t,expiresAt:r}=e,s=Math.round(Date.now()/1e3);r>=s+nt&&(t==null?void 0:t.user)&&(this._saveSession(t),this._notifyAllSubscribers("SIGNED_IN"))}catch(e){console.log("error",e)}}_recoverAndRefresh(){return J(this,void 0,void 0,function*(){try{const e=yield To(this.localStorage,De);if(!e)return null;const{currentSession:t,expiresAt:r}=e,s=Math.round(Date.now()/1e3);if(rthis._recoverAndRefresh(),Math.pow(ae.RETRY_INTERVAL,this.networkRetries)*100);return}yield this._removeSession()}this.networkRetries=0}else this._removeSession();else t?(this._saveSession(t),this._notifyAllSubscribers("SIGNED_IN")):(console.log("Current session is missing data."),this._removeSession())}catch(e){return console.error(e),null}})}_callRefreshToken(e){var t;return e===void 0&&(e=(t=this.currentSession)===null||t===void 0?void 0:t.refresh_token),J(this,void 0,void 0,function*(){try{if(!e)throw new Error("No current session.");const{data:r,error:s}=yield this.api.refreshAccessToken(e);if(s)throw s;if(!r)throw Error("Invalid session data.");return this._saveSession(r),this._notifyAllSubscribers("TOKEN_REFRESHED"),this._notifyAllSubscribers("SIGNED_IN"),{data:r,error:null}}catch(r){return{data:null,error:r}}})}_notifyAllSubscribers(e){this.stateChangeEmitters.forEach(t=>t.callback(e,this.currentSession))}_saveSession(e){this.currentSession=e,this.currentUser=e.user;const t=e.expires_at;if(t){const r=Math.round(Date.now()/1e3),s=t-r,i=s>nt?nt:.5;this._startAutoRefreshToken((s-i)*1e3)}this.persistSession&&e.expires_at&&this._persistSession(this.currentSession)}_persistSession(e){const t={currentSession:e,expiresAt:e.expires_at};$o(this.localStorage,De,t)}_removeSession(){return J(this,void 0,void 0,function*(){this.currentSession=null,this.currentUser=null,this.refreshTokenTimer&&clearTimeout(this.refreshTokenTimer),ko(this.localStorage,De)})}_startAutoRefreshToken(e){this.refreshTokenTimer&&clearTimeout(this.refreshTokenTimer),!(e<=0||!this.autoRefreshToken)&&(this.refreshTokenTimer=setTimeout(()=>J(this,void 0,void 0,function*(){this.networkRetries++;const{error:t}=yield this._callRefreshToken();t||(this.networkRetries=0),(t==null?void 0:t.message)===ae.ERROR_MESSAGE&&this.networkRetries{var t;if(e.key===De){const r=JSON.parse(String(e.newValue));!((t=r==null?void 0:r.currentSession)===null||t===void 0)&&t.access_token?(this._saveSession(r.currentSession),this._notifyAllSubscribers("SIGNED_IN")):(this._removeSession(),this._notifyAllSubscribers("SIGNED_OUT"))}})}catch(e){console.error("_listenForMultiTabEvents",e)}}_handleVisibilityChange(){if(!this.multiTab||!ne()||!(window!=null&&window.addEventListener))return!1;try{window==null||window.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&this._recoverAndRefresh()})}catch(e){console.error("_handleVisibilityChange",e)}}}class Co extends jo{constructor(e){super(e)}}var Po=globalThis&&globalThis.__awaiter||function(n,e,t,r){function s(i){return i instanceof t?i:new t(function(o){o(i)})}return new(t||(t=Promise))(function(i,o){function a(c){try{u(r.next(c))}catch(h){o(h)}}function l(c){try{u(r.throw(c))}catch(h){o(h)}}function u(c){c.done?i(c.value):s(c.value).then(a,l)}u((r=r.apply(n,e||[])).next())})};class Xt{constructor(e){Object.assign(this,e);let t;e.fetch?t=e.fetch:typeof fetch=="undefined"?t=wt:t=fetch,this.fetch=(...r)=>t(...r),this.shouldThrowOnError=e.shouldThrowOnError||!1}throwOnError(e){return e==null&&(e=!0),this.shouldThrowOnError=e,this}then(e,t){typeof this.schema=="undefined"||(["GET","HEAD"].includes(this.method)?this.headers["Accept-Profile"]=this.schema:this.headers["Content-Profile"]=this.schema),this.method!=="GET"&&this.method!=="HEAD"&&(this.headers["Content-Type"]="application/json");let r=this.fetch(this.url.toString(),{method:this.method,headers:this.headers,body:JSON.stringify(this.body),signal:this.signal}).then(s=>Po(this,void 0,void 0,function*(){var i,o,a;let l=null,u=null,c=null;if(s.ok){const p=(i=this.headers.Prefer)===null||i===void 0?void 0:i.split(",").includes("return=minimal");if(this.method!=="HEAD"&&!p){const v=yield s.text();v&&(this.headers.Accept==="text/csv"?u=v:u=JSON.parse(v))}const d=(o=this.headers.Prefer)===null||o===void 0?void 0:o.match(/count=(exact|planned|estimated)/),g=(a=s.headers.get("content-range"))===null||a===void 0?void 0:a.split("/");d&&g&&g.length>1&&(c=parseInt(g[1]))}else{const p=yield s.text();try{l=JSON.parse(p)}catch{l={message:p}}if(l&&this.shouldThrowOnError)throw l}return{error:l,data:u,count:c,status:s.status,statusText:s.statusText,body:u}}));return this.shouldThrowOnError||(r=r.catch(s=>({error:{message:`FetchError: ${s.message}`,details:"",hint:"",code:s.code||""},data:null,body:null,count:null,status:400,statusText:"Bad Request"}))),r.then(e,t)}}class Yt extends Xt{select(e="*"){let t=!1;const r=e.split("").map(s=>/\s/.test(s)&&!t?"":(s==='"'&&(t=!t),s)).join("");return this.url.searchParams.set("select",r),this}order(e,{ascending:t=!0,nullsFirst:r=!1,foreignTable:s}={}){const i=typeof s=="undefined"?"order":`${s}.order`,o=this.url.searchParams.get(i);return this.url.searchParams.set(i,`${o?`${o},`:""}${e}.${t?"asc":"desc"}.${r?"nullsfirst":"nullslast"}`),this}limit(e,{foreignTable:t}={}){const r=typeof t=="undefined"?"limit":`${t}.limit`;return this.url.searchParams.set(r,`${e}`),this}range(e,t,{foreignTable:r}={}){const s=typeof r=="undefined"?"offset":`${r}.offset`,i=typeof r=="undefined"?"limit":`${r}.limit`;return this.url.searchParams.set(s,`${e}`),this.url.searchParams.set(i,`${t-e+1}`),this}abortSignal(e){return this.signal=e,this}single(){return this.headers.Accept="application/vnd.pgrst.object+json",this}maybeSingle(){this.headers.Accept="application/vnd.pgrst.object+json";const e=new Yt(this);return e.then=(t,r)=>this.then(s=>{var i,o;return!((o=(i=s.error)===null||i===void 0?void 0:i.details)===null||o===void 0)&&o.includes("Results contain 0 rows")?t({error:null,data:null,count:s.count,status:200,statusText:"OK",body:null}):t(s)},r),e}csv(){return this.headers.Accept="text/csv",this}}class be extends Yt{constructor(){super(...arguments),this.cs=this.contains,this.cd=this.containedBy,this.sl=this.rangeLt,this.sr=this.rangeGt,this.nxl=this.rangeGte,this.nxr=this.rangeLte,this.adj=this.rangeAdjacent,this.ov=this.overlaps}not(e,t,r){return this.url.searchParams.append(`${e}`,`not.${t}.${r}`),this}or(e,{foreignTable:t}={}){const r=typeof t=="undefined"?"or":`${t}.or`;return this.url.searchParams.append(r,`(${e})`),this}eq(e,t){return this.url.searchParams.append(`${e}`,`eq.${t}`),this}neq(e,t){return this.url.searchParams.append(`${e}`,`neq.${t}`),this}gt(e,t){return this.url.searchParams.append(`${e}`,`gt.${t}`),this}gte(e,t){return this.url.searchParams.append(`${e}`,`gte.${t}`),this}lt(e,t){return this.url.searchParams.append(`${e}`,`lt.${t}`),this}lte(e,t){return this.url.searchParams.append(`${e}`,`lte.${t}`),this}like(e,t){return this.url.searchParams.append(`${e}`,`like.${t}`),this}ilike(e,t){return this.url.searchParams.append(`${e}`,`ilike.${t}`),this}is(e,t){return this.url.searchParams.append(`${e}`,`is.${t}`),this}in(e,t){const r=t.map(s=>typeof s=="string"&&new RegExp("[,()]").test(s)?`"${s}"`:`${s}`).join(",");return this.url.searchParams.append(`${e}`,`in.(${r})`),this}contains(e,t){return typeof t=="string"?this.url.searchParams.append(`${e}`,`cs.${t}`):Array.isArray(t)?this.url.searchParams.append(`${e}`,`cs.{${t.join(",")}}`):this.url.searchParams.append(`${e}`,`cs.${JSON.stringify(t)}`),this}containedBy(e,t){return typeof t=="string"?this.url.searchParams.append(`${e}`,`cd.${t}`):Array.isArray(t)?this.url.searchParams.append(`${e}`,`cd.{${t.join(",")}}`):this.url.searchParams.append(`${e}`,`cd.${JSON.stringify(t)}`),this}rangeLt(e,t){return this.url.searchParams.append(`${e}`,`sl.${t}`),this}rangeGt(e,t){return this.url.searchParams.append(`${e}`,`sr.${t}`),this}rangeGte(e,t){return this.url.searchParams.append(`${e}`,`nxl.${t}`),this}rangeLte(e,t){return this.url.searchParams.append(`${e}`,`nxr.${t}`),this}rangeAdjacent(e,t){return this.url.searchParams.append(`${e}`,`adj.${t}`),this}overlaps(e,t){return typeof t=="string"?this.url.searchParams.append(`${e}`,`ov.${t}`):this.url.searchParams.append(`${e}`,`ov.{${t.join(",")}}`),this}textSearch(e,t,{config:r,type:s=null}={}){let i="";s==="plain"?i="pl":s==="phrase"?i="ph":s==="websearch"&&(i="w");const o=r===void 0?"":`(${r})`;return this.url.searchParams.append(`${e}`,`${i}fts${o}.${t}`),this}fts(e,t,{config:r}={}){const s=typeof r=="undefined"?"":`(${r})`;return this.url.searchParams.append(`${e}`,`fts${s}.${t}`),this}plfts(e,t,{config:r}={}){const s=typeof r=="undefined"?"":`(${r})`;return this.url.searchParams.append(`${e}`,`plfts${s}.${t}`),this}phfts(e,t,{config:r}={}){const s=typeof r=="undefined"?"":`(${r})`;return this.url.searchParams.append(`${e}`,`phfts${s}.${t}`),this}wfts(e,t,{config:r}={}){const s=typeof r=="undefined"?"":`(${r})`;return this.url.searchParams.append(`${e}`,`wfts${s}.${t}`),this}filter(e,t,r){return this.url.searchParams.append(`${e}`,`${t}.${r}`),this}match(e){return Object.keys(e).forEach(t=>{this.url.searchParams.append(`${t}`,`eq.${e[t]}`)}),this}}class ir extends Xt{constructor(e,{headers:t={},schema:r,fetch:s,shouldThrowOnError:i}={}){super({fetch:s,shouldThrowOnError:i}),this.url=new URL(e),this.headers=Object.assign({},t),this.schema=r}select(e="*",{head:t=!1,count:r=null}={}){this.method="GET";let s=!1;const i=e.split("").map(o=>/\s/.test(o)&&!s?"":(o==='"'&&(s=!s),o)).join("");return this.url.searchParams.set("select",i),r&&(this.headers.Prefer=`count=${r}`),t&&(this.method="HEAD"),new be(this)}insert(e,{upsert:t=!1,onConflict:r,returning:s="representation",count:i=null}={}){this.method="POST";const o=[`return=${s}`];if(t&&o.push("resolution=merge-duplicates"),t&&r!==void 0&&this.url.searchParams.set("on_conflict",r),this.body=e,i&&o.push(`count=${i}`),this.headers.Prefer&&o.unshift(this.headers.Prefer),this.headers.Prefer=o.join(","),Array.isArray(e)){const a=e.reduce((l,u)=>l.concat(Object.keys(u)),[]);if(a.length>0){const l=[...new Set(a)].map(u=>`"${u}"`);this.url.searchParams.set("columns",l.join(","))}}return new be(this)}upsert(e,{onConflict:t,returning:r="representation",count:s=null,ignoreDuplicates:i=!1}={}){this.method="POST";const o=[`resolution=${i?"ignore":"merge"}-duplicates`,`return=${r}`];return t!==void 0&&this.url.searchParams.set("on_conflict",t),this.body=e,s&&o.push(`count=${s}`),this.headers.Prefer&&o.unshift(this.headers.Prefer),this.headers.Prefer=o.join(","),new be(this)}update(e,{returning:t="representation",count:r=null}={}){this.method="PATCH";const s=[`return=${t}`];return this.body=e,r&&s.push(`count=${r}`),this.headers.Prefer&&s.unshift(this.headers.Prefer),this.headers.Prefer=s.join(","),new be(this)}delete({returning:e="representation",count:t=null}={}){this.method="DELETE";const r=[`return=${e}`];return t&&r.push(`count=${t}`),this.headers.Prefer&&r.unshift(this.headers.Prefer),this.headers.Prefer=r.join(","),new be(this)}}class Io extends Xt{constructor(e,{headers:t={},schema:r,fetch:s,shouldThrowOnError:i}={}){super({fetch:s,shouldThrowOnError:i}),this.url=new URL(e),this.headers=Object.assign({},t),this.schema=r}rpc(e,{head:t=!1,count:r=null}={}){return t?(this.method="HEAD",e&&Object.entries(e).forEach(([s,i])=>{this.url.searchParams.append(s,i)})):(this.method="POST",this.body=e),r&&(this.headers.Prefer!==void 0?this.headers.Prefer+=`,count=${r}`:this.headers.Prefer=`count=${r}`),new be(this)}}const No="0.37.2",Do={"X-Client-Info":`postgrest-js/${No}`};class Uo{constructor(e,{headers:t={},schema:r,fetch:s,throwOnError:i}={}){this.url=e,this.headers=Object.assign(Object.assign({},Do),t),this.schema=r,this.fetch=s,this.shouldThrowOnError=i}auth(e){return this.headers.Authorization=`Bearer ${e}`,this}from(e){const t=`${this.url}/${e}`;return new ir(t,{headers:this.headers,schema:this.schema,fetch:this.fetch,shouldThrowOnError:this.shouldThrowOnError})}rpc(e,t,{head:r=!1,count:s=null}={}){const i=`${this.url}/rpc/${e}`;return new Io(i,{headers:this.headers,schema:this.schema,fetch:this.fetch,shouldThrowOnError:this.shouldThrowOnError}).rpc(t,{head:r,count:s})}}var k;(function(n){n.abstime="abstime",n.bool="bool",n.date="date",n.daterange="daterange",n.float4="float4",n.float8="float8",n.int2="int2",n.int4="int4",n.int4range="int4range",n.int8="int8",n.int8range="int8range",n.json="json",n.jsonb="jsonb",n.money="money",n.numeric="numeric",n.oid="oid",n.reltime="reltime",n.text="text",n.time="time",n.timestamp="timestamp",n.timestamptz="timestamptz",n.timetz="timetz",n.tsrange="tsrange",n.tstzrange="tstzrange"})(k||(k={}));const wn=(n,e,t={})=>{var r;const s=(r=t.skipTypes)!==null&&r!==void 0?r:[];return Object.keys(e).reduce((i,o)=>(i[o]=Bo(o,n,e,s),i),{})},Bo=(n,e,t,r)=>{const s=e.find(a=>a.name===n),i=s==null?void 0:s.type,o=t[n];return i&&!r.includes(i)?or(i,o):Dt(o)},or=(n,e)=>{if(n.charAt(0)==="_"){const t=n.slice(1,n.length);return zo(e,t)}switch(n){case k.bool:return Fo(e);case k.float4:case k.float8:case k.int2:case k.int4:case k.int8:case k.numeric:case k.oid:return Lo(e);case k.json:case k.jsonb:return Mo(e);case k.timestamp:return Go(e);case k.abstime:case k.date:case k.daterange:case k.int4range:case k.int8range:case k.money:case k.reltime:case k.text:case k.time:case k.timestamptz:case k.timetz:case k.tsrange:case k.tstzrange:return Dt(e);default:return Dt(e)}},Dt=n=>n,Fo=n=>{switch(n){case"t":return!0;case"f":return!1;default:return n}},Lo=n=>{if(typeof n=="string"){const e=parseFloat(n);if(!Number.isNaN(e))return e}return n},Mo=n=>{if(typeof n=="string")try{return JSON.parse(n)}catch(e){return console.log(`JSON parse error: ${e}`),n}return n},zo=(n,e)=>{if(typeof n!="string")return n;const t=n.length-1,r=n[t];if(n[0]==="{"&&r==="}"){let i;const o=n.slice(1,t);try{i=JSON.parse("["+o+"]")}catch{i=o?o.split(","):[]}return i.map(a=>or(e,a))}return n},Go=n=>typeof n=="string"?n.replace(" ","T"):n,Ho="websocket",Jo="Websocket Client & Server Library implementing the WebSocket protocol as specified in RFC 6455.",qo=["websocket","websockets","socket","networking","comet","push","RFC-6455","realtime","server","client"],Vo="Brian McKelvey (https://github.com/theturtle32)",Wo=["I\xF1aki Baz Castillo (http://dev.sipdoc.net)"],Ko="1.0.34",Xo={type:"git",url:"https://github.com/theturtle32/WebSocket-Node.git"},Yo="https://github.com/theturtle32/WebSocket-Node",Qo={node:">=4.0.0"},Zo={bufferutil:"^4.0.1",debug:"^2.2.0","es5-ext":"^0.10.50","typedarray-to-buffer":"^3.1.5","utf-8-validate":"^5.0.2",yaeti:"^0.0.6"},ea={"buffer-equal":"^1.0.0",gulp:"^4.0.2","gulp-jshint":"^2.0.4","jshint-stylish":"^2.2.1",jshint:"^2.0.0",tape:"^4.9.1"},ta={verbose:!1},na={test:"tape test/unit/*.js",gulp:"gulp"},ra="index",sa={lib:"./lib"},ia="lib/browser.js",oa="Apache-2.0";var aa={name:Ho,description:Jo,keywords:qo,author:Vo,contributors:Wo,version:Ko,repository:Xo,homepage:Yo,engines:Qo,dependencies:Zo,devDependencies:ea,config:ta,scripts:na,main:ra,directories:sa,browser:ia,license:oa},ca=aa.version,ce;if(typeof globalThis=="object")ce=globalThis;else try{ce=require("es5-ext/global")}catch{}finally{if(!ce&&typeof window!="undefined"&&(ce=window),!ce)throw new Error("Could not determine global this")}var Je=ce.WebSocket||ce.MozWebSocket,la=ca;function ar(n,e){var t;return e?t=new Je(n,e):t=new Je(n),t}Je&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach(function(n){Object.defineProperty(ar,n,{get:function(){return Je[n]}})});var ua={w3cwebsocket:Je?ar:null,version:la};const ha="1.7.2",fa={"X-Client-Info":`realtime-js/${ha}`},da="1.0.0",cr=1e4,pa=1e3;var Ge;(function(n){n[n.connecting=0]="connecting",n[n.open=1]="open",n[n.closing=2]="closing",n[n.closed=3]="closed"})(Ge||(Ge={}));var A;(function(n){n.closed="closed",n.errored="errored",n.joined="joined",n.joining="joining",n.leaving="leaving"})(A||(A={}));var F;(function(n){n.close="phx_close",n.error="phx_error",n.join="phx_join",n.reply="phx_reply",n.leave="phx_leave",n.access_token="access_token"})(F||(F={}));var Ut;(function(n){n.websocket="websocket"})(Ut||(Ut={}));var le;(function(n){n.Connecting="connecting",n.Open="open",n.Closing="closing",n.Closed="closed"})(le||(le={}));class Qt{constructor(e,t){this.callback=e,this.timerCalc=t,this.timer=void 0,this.tries=0,this.callback=e,this.timerCalc=t}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}}class ma{constructor(){this.HEADER_LENGTH=1}decode(e,t){return e.constructor===ArrayBuffer?t(this._binaryDecode(e)):t(typeof e=="string"?JSON.parse(e):{})}_binaryDecode(e){const t=new DataView(e),r=new TextDecoder;return this._decodeBroadcast(e,t,r)}_decodeBroadcast(e,t,r){const s=t.getUint8(1),i=t.getUint8(2);let o=this.HEADER_LENGTH+2;const a=r.decode(e.slice(o,o+s));o=o+s;const l=r.decode(e.slice(o,o+i));o=o+i;const u=JSON.parse(r.decode(e.slice(o,e.byteLength)));return{ref:null,topic:a,event:l,payload:u}}}class Ae{constructor(e,t,r={},s=cr){this.channel=e,this.event=t,this.payload=r,this.timeout=s,this.sent=!1,this.timeoutTimer=void 0,this.ref="",this.receivedResp=null,this.recHooks=[],this.refEvent=null}resend(e){this.timeout=e,this._cancelRefEvent(),this.ref="",this.refEvent=null,this.receivedResp=null,this.sent=!1,this.send()}send(){this._hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload,ref:this.ref}))}updatePayload(e){this.payload=Object.assign(Object.assign({},this.payload),e)}receive(e,t){var r;return this._hasReceived(e)&&t((r=this.receivedResp)===null||r===void 0?void 0:r.response),this.recHooks.push({status:e,callback:t}),this}startTimeout(){if(this.timeoutTimer)return;this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref);const e=t=>{this._cancelRefEvent(),this._cancelTimeout(),this.receivedResp=t,this._matchReceive(t)};this.channel instanceof Bt?this.channel.on(this.refEvent,e):this.channel.on(this.refEvent,{},e),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}trigger(e,t){this.refEvent&&this.channel.trigger(this.refEvent,{status:e,response:t})}destroy(){this._cancelRefEvent(),this._cancelTimeout()}_cancelRefEvent(){!this.refEvent||(this.channel instanceof Bt?this.channel.off(this.refEvent):this.channel.off(this.refEvent,{}))}_cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=void 0}_matchReceive({status:e,response:t}){this.recHooks.filter(r=>r.status===e).forEach(r=>r.callback(t))}_hasReceived(e){return this.receivedResp&&this.receivedResp.status===e}}class Bt{constructor(e,t={},r){this.topic=e,this.params=t,this.socket=r,this.bindings=[],this.state=A.closed,this.joinedOnce=!1,this.pushBuffer=[],this.timeout=this.socket.timeout,this.joinPush=new Ae(this,F.join,this.params,this.timeout),this.rejoinTimer=new Qt(()=>this.rejoinUntilConnected(),this.socket.reconnectAfterMs),this.joinPush.receive("ok",()=>{this.state=A.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(s=>s.send()),this.pushBuffer=[]}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=A.closed,this.socket.remove(this)}),this.onError(s=>{this.isLeaving()||this.isClosed()||(this.socket.log("channel",`error ${this.topic}`,s),this.state=A.errored,this.rejoinTimer.scheduleTimeout())}),this.joinPush.receive("timeout",()=>{!this.isJoining()||(this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout),this.state=A.errored,this.rejoinTimer.scheduleTimeout())}),this.on(F.reply,(s,i)=>{this.trigger(this.replyEventName(i),s)})}rejoinUntilConnected(){this.rejoinTimer.scheduleTimeout(),this.socket.isConnected()&&this.rejoin()}subscribe(e=this.timeout){if(this.joinedOnce)throw"tried to subscribe multiple times. 'subscribe' can only be called a single time per channel instance";return this.joinedOnce=!0,this.rejoin(e),this.joinPush}onClose(e){this.on(F.close,e)}onError(e){this.on(F.error,t=>e(t))}on(e,t){this.bindings.push({event:e,callback:t})}off(e){this.bindings=this.bindings.filter(t=>t.event!==e)}canPush(){return this.socket.isConnected()&&this.isJoined()}push(e,t,r=this.timeout){if(!this.joinedOnce)throw`tried to push '${e}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;let s=new Ae(this,e,t,r);return this.canPush()?s.send():(s.startTimeout(),this.pushBuffer.push(s)),s}updateJoinPayload(e){this.joinPush.updatePayload(e)}unsubscribe(e=this.timeout){this.state=A.leaving;let t=()=>{this.socket.log("channel",`leave ${this.topic}`),this.trigger(F.close,"leave",this.joinRef())};this.joinPush.destroy();let r=new Ae(this,F.leave,{},e);return r.receive("ok",()=>t()).receive("timeout",()=>t()),r.send(),this.canPush()||r.trigger("ok",{}),r}onMessage(e,t,r){return t}isMember(e){return this.topic===e}joinRef(){return this.joinPush.ref}rejoin(e=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=A.joining,this.joinPush.resend(e))}trigger(e,t,r){let{close:s,error:i,leave:o,join:a}=F;if(r&&[s,i,o,a].indexOf(e)>=0&&r!==this.joinRef())return;let u=this.onMessage(e,t,r);if(t&&!u)throw"channel onMessage callbacks must return the payload, modified or unmodified";this.bindings.filter(c=>c.event==="*"?e===(t==null?void 0:t.type):c.event===e).map(c=>c.callback(u,r))}replyEventName(e){return`chan_reply_${e}`}isClosed(){return this.state===A.closed}isErrored(){return this.state===A.errored}isJoined(){return this.state===A.joined}isJoining(){return this.state===A.joining}isLeaving(){return this.state===A.leaving}}class _e{constructor(e,t){this.channel=e,this.state={},this.pendingDiffs=[],this.joinRef=null,this.caller={onJoin:()=>{},onLeave:()=>{},onSync:()=>{}};const r=(t==null?void 0:t.events)||{state:"presence_state",diff:"presence_diff"};this.channel.on(r.state,{},s=>{const{onJoin:i,onLeave:o,onSync:a}=this.caller;this.joinRef=this.channel.joinRef(),this.state=_e.syncState(this.state,s,i,o),this.pendingDiffs.forEach(l=>{this.state=_e.syncDiff(this.state,l,i,o)}),this.pendingDiffs=[],a()}),this.channel.on(r.diff,{},s=>{const{onJoin:i,onLeave:o,onSync:a}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(s):(this.state=_e.syncDiff(this.state,s,i,o),a())})}static syncState(e,t,r,s){const i=this.cloneDeep(e),o=this.transformState(t),a={},l={};return this.map(i,(u,c)=>{o[u]||(l[u]=c)}),this.map(o,(u,c)=>{const h=i[u];if(h){const p=c.map(_=>_.presence_id),d=h.map(_=>_.presence_id),g=c.filter(_=>d.indexOf(_.presence_id)<0),v=h.filter(_=>p.indexOf(_.presence_id)<0);g.length>0&&(a[u]=g),v.length>0&&(l[u]=v)}else a[u]=c}),this.syncDiff(i,{joins:a,leaves:l},r,s)}static syncDiff(e,t,r,s){const{joins:i,leaves:o}={joins:this.transformState(t.joins),leaves:this.transformState(t.leaves)};return r||(r=()=>{}),s||(s=()=>{}),this.map(i,(a,l)=>{const u=e[a];if(e[a]=this.cloneDeep(l),u){const c=e[a].map(p=>p.presence_id),h=u.filter(p=>c.indexOf(p.presence_id)<0);e[a].unshift(...h)}r(a,u,l)}),this.map(o,(a,l)=>{let u=e[a];if(!u)return;const c=l.map(h=>h.presence_id);u=u.filter(h=>c.indexOf(h.presence_id)<0),e[a]=u,s(a,u,l),u.length===0&&delete e[a]}),e}static list(e,t){return t||(t=(r,s)=>s),this.map(e,(r,s)=>t(r,s))}static map(e,t){return Object.getOwnPropertyNames(e).map(r=>t(r,e[r]))}static transformState(e){return e=this.cloneDeep(e),Object.getOwnPropertyNames(e).reduce((t,r)=>{const s=e[r];return"metas"in s?t[r]=s.metas.map(i=>(i.presence_id=i.phx_ref,delete i.phx_ref,delete i.phx_ref_prev,i)):t[r]=s,t},{})}static cloneDeep(e){return JSON.parse(JSON.stringify(e))}onJoin(e){this.caller.onJoin=e}onLeave(e){this.caller.onLeave=e}onSync(e){this.caller.onSync=e}list(e){return _e.list(this.state,e)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}}class pt{constructor(e,t={},r){this.topic=e,this.params=t,this.socket=r,this.bindings=[],this.state=A.closed,this.joinedOnce=!1,this.pushBuffer=[],this.timeout=this.socket.timeout,this.joinPush=new Ae(this,F.join,this.params,this.timeout),this.rejoinTimer=new Qt(()=>this.rejoinUntilConnected(),this.socket.reconnectAfterMs),this.joinPush.receive("ok",()=>{this.state=A.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(s=>s.send()),this.pushBuffer=[]}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=A.closed,this.socket.remove(this)}),this.onError(s=>{this.isLeaving()||this.isClosed()||(this.socket.log("channel",`error ${this.topic}`,s),this.state=A.errored,this.rejoinTimer.scheduleTimeout())}),this.joinPush.receive("timeout",()=>{!this.isJoining()||(this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout),this.state=A.errored,this.rejoinTimer.scheduleTimeout())}),this.on(F.reply,{},(s,i)=>{this.trigger(this.replyEventName(i),s)}),this.presence=new _e(this)}list(){return this.presence.list()}rejoinUntilConnected(){this.rejoinTimer.scheduleTimeout(),this.socket.isConnected()&&this.rejoin()}subscribe(e=this.timeout){if(this.joinedOnce)throw"tried to subscribe multiple times. 'subscribe' can only be called a single time per channel instance";{const t=this.bindings.reduce((r,s)=>{const{type:i}=s;return["phx_close","phx_error","phx_reply","presence_diff","presence_state"].includes(i)||(r[i]=s),r},{});return Object.keys(t).length&&this.updateJoinPayload({configs:t}),this.joinedOnce=!0,this.rejoin(e),this.joinPush}}onClose(e){this.on(F.close,{},e)}onError(e){this.on(F.error,{},t=>e(t))}on(e,t,r){this.bindings.push({type:e,filter:t!=null?t:{},callback:r!=null?r:()=>{}})}off(e,t){this.bindings=this.bindings.filter(r=>!(r.type===e&&pt.isEqual(r.filter,t)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(e,t,r=this.timeout){if(!this.joinedOnce)throw`tried to push '${e}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;let s=new Ae(this,e,t,r);return this.canPush()?s.send():(s.startTimeout(),this.pushBuffer.push(s)),s}updateJoinPayload(e){this.joinPush.updatePayload(e)}unsubscribe(e=this.timeout){this.state=A.leaving;const t=()=>{this.socket.log("channel",`leave ${this.topic}`),this.trigger(F.close,"leave",this.joinRef())};this.joinPush.destroy();const r=new Ae(this,F.leave,{},e);return r.receive("ok",()=>t()).receive("timeout",()=>t()),r.send(),this.canPush()||r.trigger("ok",{}),r}onMessage(e,t,r){return t}isMember(e){return this.topic===e}joinRef(){return this.joinPush.ref}rejoin(e=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=A.joining,this.joinPush.resend(e))}trigger(e,t,r){const{close:s,error:i,leave:o,join:a}=F;if(r&&[s,i,o,a].indexOf(e)>=0&&r!==this.joinRef())return;const u=this.onMessage(e,t,r);if(t&&!u)throw"channel onMessage callbacks must return the payload, modified or unmodified";this.bindings.filter(c=>{var h,p;return(c==null?void 0:c.type)===e&&(((h=c==null?void 0:c.filter)===null||h===void 0?void 0:h.event)==="*"||((p=c==null?void 0:c.filter)===null||p===void 0?void 0:p.event)===(t==null?void 0:t.event))}).map(c=>c.callback(u,r))}send(e){const t=this.push(e.type,e);return new Promise((r,s)=>{t.receive("ok",()=>r("ok")),t.receive("timeout",()=>s("timeout"))})}replyEventName(e){return`chan_reply_${e}`}isClosed(){return this.state===A.closed}isErrored(){return this.state===A.errored}isJoined(){return this.state===A.joined}isJoining(){return this.state===A.joining}isLeaving(){return this.state===A.leaving}static isEqual(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(e[r]!==t[r])return!1;return!0}}var ga=globalThis&&globalThis.__awaiter||function(n,e,t,r){function s(i){return i instanceof t?i:new t(function(o){o(i)})}return new(t||(t=Promise))(function(i,o){function a(c){try{u(r.next(c))}catch(h){o(h)}}function l(c){try{u(r.throw(c))}catch(h){o(h)}}function u(c){c.done?i(c.value):s(c.value).then(a,l)}u((r=r.apply(n,e||[])).next())})},ya=globalThis&&globalThis.__rest||function(n,e){var t={};for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,r=Object.getOwnPropertySymbols(n);s{};class ba{constructor(e,t){this.accessToken=null,this.channels=[],this.endPoint="",this.headers=fa,this.params={},this.timeout=cr,this.transport=ua.w3cwebsocket,this.heartbeatIntervalMs=3e4,this.longpollerTimeout=2e4,this.heartbeatTimer=void 0,this.pendingHeartbeatRef=null,this.ref=0,this.logger=va,this.conn=null,this.sendBuffer=[],this.serializer=new ma,this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.endPoint=`${e}/${Ut.websocket}`,t!=null&&t.params&&(this.params=t.params),t!=null&&t.headers&&(this.headers=Object.assign(Object.assign({},this.headers),t.headers)),t!=null&&t.timeout&&(this.timeout=t.timeout),t!=null&&t.logger&&(this.logger=t.logger),t!=null&&t.transport&&(this.transport=t.transport),t!=null&&t.heartbeatIntervalMs&&(this.heartbeatIntervalMs=t.heartbeatIntervalMs),t!=null&&t.longpollerTimeout&&(this.longpollerTimeout=t.longpollerTimeout),this.reconnectAfterMs=t!=null&&t.reconnectAfterMs?t.reconnectAfterMs:r=>[1e3,2e3,5e3,1e4][r-1]||1e4,this.encode=t!=null&&t.encode?t.encode:(r,s)=>s(JSON.stringify(r)),this.decode=t!=null&&t.decode?t.decode:this.serializer.decode.bind(this.serializer),this.reconnectTimer=new Qt(()=>ga(this,void 0,void 0,function*(){yield this.disconnect(),this.connect()}),this.reconnectAfterMs)}connect(){this.conn||(this.conn=new this.transport(this.endPointURL(),[],null,this.headers),this.conn&&(this.conn.binaryType="arraybuffer",this.conn.onopen=()=>this._onConnOpen(),this.conn.onerror=e=>this._onConnError(e),this.conn.onmessage=e=>this.onConnMessage(e),this.conn.onclose=e=>this._onConnClose(e)))}disconnect(e,t){return new Promise((r,s)=>{try{this.conn&&(this.conn.onclose=function(){},e?this.conn.close(e,t||""):this.conn.close(),this.conn=null,this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.reconnectTimer.reset()),r({error:null,data:!0})}catch(i){r({error:i,data:!1})}})}log(e,t,r){this.logger(e,t,r)}onOpen(e){this.stateChangeCallbacks.open.push(e)}onClose(e){this.stateChangeCallbacks.close.push(e)}onError(e){this.stateChangeCallbacks.error.push(e)}onMessage(e){this.stateChangeCallbacks.message.push(e)}connectionState(){switch(this.conn&&this.conn.readyState){case Ge.connecting:return le.Connecting;case Ge.open:return le.Open;case Ge.closing:return le.Closing;default:return le.Closed}}isConnected(){return this.connectionState()===le.Open}remove(e){this.channels=this.channels.filter(t=>t.joinRef()!==e.joinRef())}channel(e,t={}){var r;const{selfBroadcast:s}=t,i=ya(t,["selfBroadcast"]);s&&(i.self_broadcast=s);const o=!((r=this.params)===null||r===void 0)&&r.vsndate?new pt(e,i,this):new Bt(e,i,this);return o instanceof pt&&(o.presence.onJoin((a,l,u)=>{o.trigger("presence",{event:"JOIN",key:a,currentPresences:l,newPresences:u})}),o.presence.onLeave((a,l,u)=>{o.trigger("presence",{event:"LEAVE",key:a,currentPresences:l,leftPresences:u})}),o.presence.onSync(()=>{o.trigger("presence",{event:"SYNC"})})),this.channels.push(o),o}push(e){const{topic:t,event:r,payload:s,ref:i}=e;let o=()=>{this.encode(e,a=>{var l;(l=this.conn)===null||l===void 0||l.send(a)})};this.log("push",`${t} ${r} (${i})`,s),this.isConnected()?o():this.sendBuffer.push(o)}onConnMessage(e){this.decode(e.data,t=>{let{topic:r,event:s,payload:i,ref:o}=t;(o&&o===this.pendingHeartbeatRef||s===(i==null?void 0:i.type))&&(this.pendingHeartbeatRef=null),this.log("receive",`${i.status||""} ${r} ${s} ${o&&"("+o+")"||""}`,i),this.channels.filter(a=>a.isMember(r)).forEach(a=>a.trigger(s,i,o)),this.stateChangeCallbacks.message.forEach(a=>a(t))})}endPointURL(){return this._appendParams(this.endPoint,Object.assign({},this.params,{vsn:da}))}makeRef(){let e=this.ref+1;return e===this.ref?this.ref=0:this.ref=e,this.ref.toString()}setAuth(e){this.accessToken=e,this.channels.forEach(t=>{e&&t.updateJoinPayload({user_token:e}),t.joinedOnce&&t.isJoined()&&t.push(F.access_token,{access_token:e})})}leaveOpenTopic(e){let t=this.channels.find(r=>r.topic===e&&(r.isJoined()||r.isJoining()));t&&(this.log("transport",`leaving duplicate topic "${e}"`),t.unsubscribe())}_onConnOpen(){this.log("transport",`connected to ${this.endPointURL()}`),this._flushSendBuffer(),this.reconnectTimer.reset(),this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.heartbeatTimer=setInterval(()=>this._sendHeartbeat(),this.heartbeatIntervalMs),this.stateChangeCallbacks.open.forEach(e=>e())}_onConnClose(e){this.log("transport","close",e),this._triggerChanError(),this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach(t=>t(e))}_onConnError(e){this.log("transport",e.message),this._triggerChanError(),this.stateChangeCallbacks.error.forEach(t=>t(e))}_triggerChanError(){this.channels.forEach(e=>e.trigger(F.error))}_appendParams(e,t){if(Object.keys(t).length===0)return e;const r=e.match(/\?/)?"&":"?",s=new URLSearchParams(t);return`${e}${r}${s}`}_flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(e=>e()),this.sendBuffer=[])}_sendHeartbeat(){var e;if(!!this.isConnected()){if(this.pendingHeartbeatRef){this.pendingHeartbeatRef=null,this.log("transport","heartbeat timeout. Attempting to re-establish connection"),(e=this.conn)===null||e===void 0||e.close(pa,"hearbeat timeout");return}this.pendingHeartbeatRef=this.makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.setAuth(this.accessToken)}}}class _a{constructor(e,t,r,s){const i={},o=s==="*"?`realtime:${r}`:`realtime:${r}:${s}`,a=t.Authorization.split(" ")[1];a&&(i.user_token=a),this.subscription=e.channel(o,i)}getPayloadRecords(e){const t={new:{},old:{}};return(e.type==="INSERT"||e.type==="UPDATE")&&(t.new=wn(e.columns,e.record)),(e.type==="UPDATE"||e.type==="DELETE")&&(t.old=wn(e.columns,e.old_record)),t}on(e,t){return this.subscription.on(e,r=>{let s={schema:r.schema,table:r.table,commit_timestamp:r.commit_timestamp,eventType:r.type,new:{},old:{},errors:r.errors};s=Object.assign(Object.assign({},s),this.getPayloadRecords(r)),t(s)}),this}subscribe(e=()=>{}){return this.subscription.onError(t=>e("SUBSCRIPTION_ERROR",t)),this.subscription.onClose(()=>e("CLOSED")),this.subscription.subscribe().receive("ok",()=>e("SUBSCRIBED")).receive("error",t=>e("SUBSCRIPTION_ERROR",t)).receive("timeout",()=>e("RETRYING_AFTER_TIMEOUT")),this.subscription}}class wa extends ir{constructor(e,{headers:t={},schema:r,realtime:s,table:i,fetch:o,shouldThrowOnError:a}){super(e,{headers:t,schema:r,fetch:o,shouldThrowOnError:a}),this._subscription=null,this._realtime=s,this._headers=t,this._schema=r,this._table=i}on(e,t){return this._realtime.isConnected()||this._realtime.connect(),this._subscription||(this._subscription=new _a(this._realtime,this._headers,this._schema,this._table)),this._subscription.on(e,t)}}const Sa="0.0.0",Ea={"X-Client-Info":`storage-js/${Sa}`};var Xe=globalThis&&globalThis.__awaiter||function(n,e,t,r){function s(i){return i instanceof t?i:new t(function(o){o(i)})}return new(t||(t=Promise))(function(i,o){function a(c){try{u(r.next(c))}catch(h){o(h)}}function l(c){try{u(r.throw(c))}catch(h){o(h)}}function u(c){c.done?i(c.value):s(c.value).then(a,l)}u((r=r.apply(n,e||[])).next())})};const $a=n=>n.msg||n.message||n.error_description||n.error||JSON.stringify(n),Ta=(n,e)=>{if(typeof n.json!="function")return e(n);n.json().then(t=>e({message:$a(t),status:(n==null?void 0:n.status)||500}))},Oa=(n,e,t,r)=>{const s={method:n,headers:(e==null?void 0:e.headers)||{}};return n==="GET"?s:(s.headers=Object.assign({"Content-Type":"application/json"},e==null?void 0:e.headers),s.body=JSON.stringify(r),Object.assign(Object.assign({},s),t))};function St(n,e,t,r,s,i){return Xe(this,void 0,void 0,function*(){return new Promise((o,a)=>{n(t,Oa(e,r,s,i)).then(l=>{if(!l.ok)throw l;return r!=null&&r.noResolveJson?o(l):l.json()}).then(l=>o(l)).catch(l=>Ta(l,a))})})}function Ft(n,e,t,r){return Xe(this,void 0,void 0,function*(){return St(n,"GET",e,t,r)})}function ue(n,e,t,r,s){return Xe(this,void 0,void 0,function*(){return St(n,"POST",e,r,s,t)})}function ka(n,e,t,r,s){return Xe(this,void 0,void 0,function*(){return St(n,"PUT",e,r,s,t)})}function lr(n,e,t,r,s){return Xe(this,void 0,void 0,function*(){return St(n,"DELETE",e,r,s,t)})}const ur=n=>{let e;return n?e=n:typeof fetch=="undefined"?e=wt:e=fetch,(...t)=>e(...t)};var ve=globalThis&&globalThis.__awaiter||function(n,e,t,r){function s(i){return i instanceof t?i:new t(function(o){o(i)})}return new(t||(t=Promise))(function(i,o){function a(c){try{u(r.next(c))}catch(h){o(h)}}function l(c){try{u(r.throw(c))}catch(h){o(h)}}function u(c){c.done?i(c.value):s(c.value).then(a,l)}u((r=r.apply(n,e||[])).next())})};class Aa{constructor(e,t={},r){this.url=e,this.headers=Object.assign(Object.assign({},Ea),t),this.fetch=ur(r)}listBuckets(){return ve(this,void 0,void 0,function*(){try{return{data:yield Ft(this.fetch,`${this.url}/bucket`,{headers:this.headers}),error:null}}catch(e){return{data:null,error:e}}})}getBucket(e){return ve(this,void 0,void 0,function*(){try{return{data:yield Ft(this.fetch,`${this.url}/bucket/${e}`,{headers:this.headers}),error:null}}catch(t){return{data:null,error:t}}})}createBucket(e,t={public:!1}){return ve(this,void 0,void 0,function*(){try{return{data:(yield ue(this.fetch,`${this.url}/bucket`,{id:e,name:e,public:t.public},{headers:this.headers})).name,error:null}}catch(r){return{data:null,error:r}}})}updateBucket(e,t){return ve(this,void 0,void 0,function*(){try{return{data:yield ka(this.fetch,`${this.url}/bucket/${e}`,{id:e,name:e,public:t.public},{headers:this.headers}),error:null}}catch(r){return{data:null,error:r}}})}emptyBucket(e){return ve(this,void 0,void 0,function*(){try{return{data:yield ue(this.fetch,`${this.url}/bucket/${e}/empty`,{},{headers:this.headers}),error:null}}catch(t){return{data:null,error:t}}})}deleteBucket(e){return ve(this,void 0,void 0,function*(){try{return{data:yield lr(this.fetch,`${this.url}/bucket/${e}`,{},{headers:this.headers}),error:null}}catch(t){return{data:null,error:t}}})}}var ee=globalThis&&globalThis.__awaiter||function(n,e,t,r){function s(i){return i instanceof t?i:new t(function(o){o(i)})}return new(t||(t=Promise))(function(i,o){function a(c){try{u(r.next(c))}catch(h){o(h)}}function l(c){try{u(r.throw(c))}catch(h){o(h)}}function u(c){c.done?i(c.value):s(c.value).then(a,l)}u((r=r.apply(n,e||[])).next())})};const xa={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},Ra={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1};class ja{constructor(e,t={},r,s){this.url=e,this.headers=t,this.bucketId=r,this.fetch=ur(s)}uploadOrUpdate(e,t,r,s){return ee(this,void 0,void 0,function*(){try{let i;const o=Object.assign(Object.assign({},Ra),s),a=Object.assign(Object.assign({},this.headers),e==="POST"&&{"x-upsert":String(o.upsert)});typeof Blob!="undefined"&&r instanceof Blob?(i=new FormData,i.append("cacheControl",o.cacheControl),i.append("",r)):typeof FormData!="undefined"&&r instanceof FormData?(i=r,i.append("cacheControl",o.cacheControl)):(i=r,a["cache-control"]=`max-age=${o.cacheControl}`,a["content-type"]=o.contentType);const l=this._removeEmptyFolders(t),u=this._getFinalPath(l),c=yield this.fetch(`${this.url}/object/${u}`,{method:e,body:i,headers:a});if(c.ok)return{data:{Key:u},error:null};{const h=yield c.json();return{data:null,error:h}}}catch(i){return{data:null,error:i}}})}upload(e,t,r){return ee(this,void 0,void 0,function*(){return this.uploadOrUpdate("POST",e,t,r)})}update(e,t,r){return ee(this,void 0,void 0,function*(){return this.uploadOrUpdate("PUT",e,t,r)})}move(e,t){return ee(this,void 0,void 0,function*(){try{return{data:yield ue(this.fetch,`${this.url}/object/move`,{bucketId:this.bucketId,sourceKey:e,destinationKey:t},{headers:this.headers}),error:null}}catch(r){return{data:null,error:r}}})}copy(e,t){return ee(this,void 0,void 0,function*(){try{return{data:yield ue(this.fetch,`${this.url}/object/copy`,{bucketId:this.bucketId,sourceKey:e,destinationKey:t},{headers:this.headers}),error:null}}catch(r){return{data:null,error:r}}})}createSignedUrl(e,t){return ee(this,void 0,void 0,function*(){try{const r=this._getFinalPath(e);let s=yield ue(this.fetch,`${this.url}/object/sign/${r}`,{expiresIn:t},{headers:this.headers});const i=`${this.url}${s.signedURL}`;return s={signedURL:i},{data:s,error:null,signedURL:i}}catch(r){return{data:null,error:r,signedURL:null}}})}createSignedUrls(e,t){return ee(this,void 0,void 0,function*(){try{return{data:(yield ue(this.fetch,`${this.url}/object/sign/${this.bucketId}`,{expiresIn:t,paths:e},{headers:this.headers})).map(s=>Object.assign(Object.assign({},s),{signedURL:s.signedURL?`${this.url}${s.signedURL}`:null})),error:null}}catch(r){return{data:null,error:r}}})}download(e){return ee(this,void 0,void 0,function*(){try{const t=this._getFinalPath(e);return{data:yield(yield Ft(this.fetch,`${this.url}/object/${t}`,{headers:this.headers,noResolveJson:!0})).blob(),error:null}}catch(t){return{data:null,error:t}}})}getPublicUrl(e){try{const t=this._getFinalPath(e),r=`${this.url}/object/public/${t}`;return{data:{publicURL:r},error:null,publicURL:r}}catch(t){return{data:null,error:t,publicURL:null}}}remove(e){return ee(this,void 0,void 0,function*(){try{return{data:yield lr(this.fetch,`${this.url}/object/${this.bucketId}`,{prefixes:e},{headers:this.headers}),error:null}}catch(t){return{data:null,error:t}}})}list(e,t,r){return ee(this,void 0,void 0,function*(){try{const s=Object.assign(Object.assign(Object.assign({},xa),t),{prefix:e||""});return{data:yield ue(this.fetch,`${this.url}/object/list/${this.bucketId}`,s,{headers:this.headers},r),error:null}}catch(s){return{data:null,error:s}}})}_getFinalPath(e){return`${this.bucketId}/${e}`}_removeEmptyFolders(e){return e.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}}class Ca extends Aa{constructor(e,t={},r){super(e,t,r)}from(e){return new ja(this.url,this.headers,e,this.fetch)}}const Pa=n=>{let e;return n?e=n:typeof fetch=="undefined"?e=wt:e=fetch,(...t)=>e(...t)};var Ia=globalThis&&globalThis.__awaiter||function(n,e,t,r){function s(i){return i instanceof t?i:new t(function(o){o(i)})}return new(t||(t=Promise))(function(i,o){function a(c){try{u(r.next(c))}catch(h){o(h)}}function l(c){try{u(r.throw(c))}catch(h){o(h)}}function u(c){c.done?i(c.value):s(c.value).then(a,l)}u((r=r.apply(n,e||[])).next())})};class Na{constructor(e,{headers:t={},customFetch:r}={}){this.url=e,this.headers=t,this.fetch=Pa(r)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e,t){return Ia(this,void 0,void 0,function*(){try{const{headers:r,body:s}=t!=null?t:{},i=yield this.fetch(`${this.url}/${e}`,{method:"POST",headers:Object.assign({},this.headers,r),body:s}),o=i.headers.get("x-relay-error");if(o&&o==="true")return{data:null,error:new Error(yield i.text())};let a;const{responseType:l}=t!=null?t:{};return!l||l==="json"?a=yield i.json():l==="arrayBuffer"?a=yield i.arrayBuffer():l==="blob"?a=yield i.blob():a=yield i.text(),{data:a,error:null}}catch(r){return{data:null,error:r}}})}}var st=globalThis&&globalThis.__awaiter||function(n,e,t,r){function s(i){return i instanceof t?i:new t(function(o){o(i)})}return new(t||(t=Promise))(function(i,o){function a(c){try{u(r.next(c))}catch(h){o(h)}}function l(c){try{u(r.throw(c))}catch(h){o(h)}}function u(c){c.done?i(c.value):s(c.value).then(a,l)}u((r=r.apply(n,e||[])).next())})};const Da={schema:"public",autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,multiTab:!0,headers:rr};class Ua{constructor(e,t,r){if(this.supabaseUrl=e,this.supabaseKey=t,!e)throw new Error("supabaseUrl is required.");if(!t)throw new Error("supabaseKey is required.");const s=ao(e),i=Object.assign(Object.assign({},Da),r);if(this.restUrl=`${s}/rest/v1`,this.realtimeUrl=`${s}/realtime/v1`.replace("http","ws"),this.authUrl=`${s}/auth/v1`,this.storageUrl=`${s}/storage/v1`,s.match(/(supabase\.co)|(supabase\.in)/)){const a=s.split(".");this.functionsUrl=`${a[0]}.functions.${a[1]}.${a[2]}`}else this.functionsUrl=`${s}/functions/v1`;this.schema=i.schema,this.multiTab=i.multiTab,this.fetch=i.fetch,this.headers=Object.assign(Object.assign({},rr),r==null?void 0:r.headers),this.shouldThrowOnError=i.shouldThrowOnError||!1,this.auth=this._initSupabaseAuthClient(i),this.realtime=this._initRealtimeClient(Object.assign({headers:this.headers},i.realtime)),this._listenForAuthEvents(),this._listenForMultiTabEvents()}get functions(){return new Na(this.functionsUrl,{headers:this._getAuthHeaders(),customFetch:this.fetch})}get storage(){return new Ca(this.storageUrl,this._getAuthHeaders(),this.fetch)}from(e){const t=`${this.restUrl}/${e}`;return new wa(t,{headers:this._getAuthHeaders(),schema:this.schema,realtime:this.realtime,table:e,fetch:this.fetch,shouldThrowOnError:this.shouldThrowOnError})}rpc(e,t,{head:r=!1,count:s=null}={}){return this._initPostgRESTClient().rpc(e,t,{head:r,count:s})}channel(e,t){var r,s;const i=(s=(r=this.auth.session())===null||r===void 0?void 0:r.access_token)!==null&&s!==void 0?s:this.supabaseKey;return this.realtime.isConnected()||this.realtime.connect(),this.realtime.channel(e,Object.assign(Object.assign({},t),{user_token:i}))}removeAllSubscriptions(){return st(this,void 0,void 0,function*(){const e=this.getSubscriptions().slice(),t=e.map(s=>this.removeSubscription(s));return(yield Promise.all(t)).map(({error:s},i)=>({data:{subscription:e[i]},error:s}))})}removeChannel(e){return st(this,void 0,void 0,function*(){const{error:t}=yield this._closeSubscription(e),r=this.getSubscriptions(),s=r.filter(i=>i.isJoined()).length;return r.length===0&&(yield this.realtime.disconnect()),{data:{openChannels:s},error:t}})}removeSubscription(e){return st(this,void 0,void 0,function*(){const{error:t}=yield this._closeSubscription(e),r=this.getSubscriptions(),s=r.filter(i=>i.isJoined()).length;return r.length===0&&(yield this.realtime.disconnect()),{data:{openSubscriptions:s},error:t}})}_closeSubscription(e){return st(this,void 0,void 0,function*(){let t=null;if(!e.isClosed()){const{error:r}=yield this._unsubscribeSubscription(e);t=r}return this.realtime.remove(e),{error:t}})}_unsubscribeSubscription(e){return new Promise(t=>{e.unsubscribe().receive("ok",()=>t({error:null})).receive("error",r=>t({error:r})).receive("timeout",()=>t({error:new Error("timed out")}))})}getSubscriptions(){return this.realtime.channels}_initSupabaseAuthClient({autoRefreshToken:e,persistSession:t,detectSessionInUrl:r,localStorage:s,headers:i,fetch:o,cookieOptions:a,multiTab:l}){const u={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new Co({url:this.authUrl,headers:Object.assign(Object.assign({},i),u),autoRefreshToken:e,persistSession:t,detectSessionInUrl:r,localStorage:s,fetch:o,cookieOptions:a,multiTab:l})}_initRealtimeClient(e){return new ba(this.realtimeUrl,Object.assign(Object.assign({},e),{params:Object.assign(Object.assign({},e==null?void 0:e.params),{apikey:this.supabaseKey})}))}_initPostgRESTClient(){return new Uo(this.restUrl,{headers:this._getAuthHeaders(),schema:this.schema,fetch:this.fetch,throwOnError:this.shouldThrowOnError})}_getAuthHeaders(){var e,t;const r=Object.assign({},this.headers),s=(t=(e=this.auth.session())===null||e===void 0?void 0:e.access_token)!==null&&t!==void 0?t:this.supabaseKey;return r.apikey=this.supabaseKey,r.Authorization=r.Authorization||`Bearer ${s}`,r}_listenForMultiTabEvents(){if(!this.multiTab||!co()||!(window!=null&&window.addEventListener))return null;try{return window==null?void 0:window.addEventListener("storage",e=>{var t,r,s;if(e.key===oo){const i=JSON.parse(String(e.newValue)),o=(r=(t=i==null?void 0:i.currentSession)===null||t===void 0?void 0:t.access_token)!==null&&r!==void 0?r:void 0,a=(s=this.auth.session())===null||s===void 0?void 0:s.access_token;o?!a&&o?this._handleTokenChanged("SIGNED_IN",o,"STORAGE"):a!==o&&this._handleTokenChanged("TOKEN_REFRESHED",o,"STORAGE"):this._handleTokenChanged("SIGNED_OUT",o,"STORAGE")}})}catch(e){return console.error("_listenForMultiTabEvents",e),null}}_listenForAuthEvents(){let{data:e}=this.auth.onAuthStateChange((t,r)=>{this._handleTokenChanged(t,r==null?void 0:r.access_token,"CLIENT")});return e}_handleTokenChanged(e,t,r){(e==="TOKEN_REFRESHED"||e==="SIGNED_IN")&&this.changedAccessToken!==t?(this.realtime.setAuth(t),r=="STORAGE"&&this.auth.setAuth(t),this.changedAccessToken=t):(e==="SIGNED_OUT"||e==="USER_DELETED")&&(this.realtime.setAuth(this.supabaseKey),r=="STORAGE"&&this.auth.signOut())}}const Ba=(n,e,t)=>new Ua(n,e,t),Fa=Ba(bn.url,bn.key,{realtime:{params:{vsndate:"1.0.0"}}});var hr={};function La(n){for(var e=5381,t=n.length;t;)e=e*33^n.charCodeAt(--t);return e>>>0}var Ma=La,fr={};(function(n){n.__esModule=!0,n.default=void 0;function e(a,l){for(var u=0;u{e&&ot.remove(e);const t=S({},n);return ot.add(t),t}),oe(()=>ot.remove(S({},n)))}Ga.dynamic=n=>n.map(e=>{const t=e[0],r=e[1];return ot.computeId(t,r)}).join(" ");Mr(()=>$(Ki,{client:Fa,get children(){return $(Os,{get children(){return $(so,{})}})}}),document.getElementById("app"));export{nc as A,je as B,Ve as C,ec as D,rc as E,nr as F,On as G,br as H,Wa as I,Ga as J,Ka as K,lt as L,Xa as M,xs as N,fe as O,ui as P,qt as Q,Va as R,Gt as S,W as T,Za as U,tc as V,wo as W,zr as X,N as a,An as b,Yn as c,$ as d,Ya as e,Ws as f,Xi as g,Ks as h,xt as i,Xs as j,Vs as k,ci as l,jr as m,Jn as n,Zs as o,Gi as p,q,Tn as r,Nn as s,Qa as t,vs as u,oe as v,re as w,Gs as x,Rr as y,qa as z}; -//# sourceMappingURL=index.13b310ab.js.map diff --git a/source/files/magicbroad/assets/index.13b310ab.js.map b/source/files/magicbroad/assets/index.13b310ab.js.map deleted file mode 100644 index 69010f3..0000000 --- a/source/files/magicbroad/assets/index.13b310ab.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"mappings":"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","names":["handleError","Router","props","source","url","base","data","out","integration","pathIntegration","routerState","createRouterContext","_$createComponent","children","Routes","router","useRouter","parentRoute","useRoute","branches","createMemo","createBranches","joinPaths","pattern","Outlet","matches","getRouteMatches","location","pathname","push","map","route","path","params","originalPath","disposers","root","routeStates","on","nextMatches","prevMatches","prev","equal","length","next","i","len","prevMatch","nextMatch","createRoot","dispose","createRouteContext","splice","forEach","outlet","Route","child","navigate","useNavigate","useLocation","href","state","replace","ThemeContext","createContext","direction","shadows","undefined","transitions","components","palette","typography","zIndex","mixins","breakpoints","createBreakpoints","shape","createShape","spacing","createSpacing","createTheme","getDefaultTheme","useSysTheme","useTheme","useBaseThemeProps","useThemeProps","StyledEngineContext","toArray","$","createComponentFactory","name","selfPropNames","GlobalStyles","component","createStyle","styles","componentsDefault","createComponentsOptions","merge","useLightOptions","text","primary","secondary","disabled","divider","background","paper","common","white","default","action","active","hover","hoverOpacity","selected","selectedOpacity","disabledBackground","disabledOpacity","focus","focusOpacity","activatedOpacity","lightColors","main","blue","light","dark","purple","error","red","info","lightBlue","success","green","warning","orange","useDarkOptions","darkColors","modes","contrastThreshold","getContrastRatio","intent","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","hasOwnProperty","lighten","darken","color","mainShade","addLightOrDark","lightShade","darkShade","contrastText","getContrastText","usePalleteDefaults","createPaletteOptions","mode","grey","options","colorNames","palleteDefaults","result","isColorName","includes","getColorObject","getColor","augmentColor","getDefaultColor","cache","shadowKeyUmbraOpacity","shadowKeyPenumbraOpacity","shadowAmbientShadowOpacity","px","join","createCssShadow","Proxy","get","target","p","isNaN","Number","easing","easeInOut","easeOut","easeIn","sharp","duration","shortest","shorter","short","standard","complex","enteringScreen","leavingScreen","milliseconds","Math","round","height","constant","inputTransitions","mergedEasing","mergedDuration","getAutoHeightDuration","create","durationOption","easingOption","delay","other","Array","isArray","animatedProp","formatMs","fontWeight","regular","medium","bold","typographyDefaults","createTypographyOptions","fontFamily","fontSize","htmlFontSize","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caption","overline","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","value","size","lineHeight","letterSpacing","casing","pxToRem","textTransform","coef","makeVariant","zIndexDefaults","createZIndexOptions","mobileStepper","speedDial","appBar","drawer","modal","snackbar","tooltip","input","theme","key","defaults","inputValue","Object","defineProperty","configurable","enumerable","def","createComponents","createPalette","createTypography","createShadows","createTransitions","createZIndex","createMixins","propDefaults","set","enableColorScheme","html","WebkitFontSmoothing","MozOsxFontSmoothing","boxSizing","WebkitTextSizeAdjust","colorScheme","body","backgroundColor","margin","CssBaseline","c","m","h","S","LoginGuard","auth","createSupabaseAuth","user","fallback","Login","lazy","User","Index","Room","DevDrawBroad","DevMesh","App","version","DEFAULT_HEADERS","STORAGE_KEY","isBrowser","__awaiter","this","_getErrorMessage","_getRequestParams","_handleRequest","resolveFetch","post","put","remove","DEFAULT_OPTIONS","noop","require$$0","w3cwebsocket","Transformers.convertChangeData","SupabaseStorageClient","supabase_client","createClient","supabase_conf","realtime","vsndate","require$$1","render","SupabaseProvider","document","getElementById"],"sources":["../../vite/modulepreload-polyfill","../../node_modules/solid-js/dist/solid.js","../../node_modules/solid-js/web/dist/web.js","../../vite/preload-helper","../../node_modules/solid-app-router/dist/integration.js","../../node_modules/solid-app-router/dist/utils.js","../../node_modules/solid-app-router/dist/routing.js","../../node_modules/solid-app-router/dist/components.jsx","../../node_modules/@suid/base/composeClasses.js","../../node_modules/@suid/system/ThemeContext/ThemeContext.jsx","../../node_modules/@suid/css/renderMediaQuery.js","../../node_modules/@suid/system/createTheme/createBreakpoints.js","../../node_modules/@suid/system/createTheme/createSpacing.js","../../node_modules/@suid/utils/deepmerge.js","../../node_modules/@suid/utils/cloneObject.js","../../node_modules/@suid/utils/merge.js","../../node_modules/@suid/system/createTheme/shape.js","../../node_modules/@suid/system/createTheme/createTheme.jsx","../../node_modules/@suid/system/makeGetDefaultTheme.js","../../node_modules/@suid/system/getDefaultTheme.js","../../node_modules/@suid/utils/isEmptyObject.js","../../node_modules/@suid/system/useTheme.js","../../node_modules/@suid/base/useTheme.js","../../node_modules/@suid/base/useThemeProps.js","../../node_modules/solid-js/store/dist/store.js","../../node_modules/@suid/base/createComponentFactory.js","../../node_modules/@suid/styled-engine/StyledEngineProvider/StyledEngineContext.jsx","../../node_modules/@suid/styled-engine/mergeStyleProps.js","../../node_modules/@suid/css/assert.js","../../node_modules/@suid/utils/snakeCase.js","../../node_modules/@suid/css/render.js","../../node_modules/@suid/utils/randomString.js","../../node_modules/@suid/utils/resolveFunction.js","../../node_modules/@suid/utils/toArray.js","../../node_modules/@suid/css/createStyleObject.js","../../node_modules/@suid/css/dom/setStyleElementText.js","../../node_modules/@suid/css/dom/createStyleElement.js","../../node_modules/@suid/css/dom/registerStyleElementUsage.js","../../node_modules/@suid/css/dom/appendStyleElement.js","../../node_modules/@suid/css/dom/findStyleElement.js","../../node_modules/@suid/css/dom/unregisterStyleElementUsage.js","../../node_modules/@suid/styled-engine/createStyle.js","../../node_modules/@suid/material/GlobalStyles/GlobalStyles.jsx","../../node_modules/@suid/material/styles/createComponents.jsx","../../node_modules/@suid/material/styles/createMixins.js","../../node_modules/@suid/material/colors/common.js","../../node_modules/@suid/material/colors/red.js","../../node_modules/@suid/material/colors/purple.js","../../node_modules/@suid/material/colors/blue.js","../../node_modules/@suid/material/colors/lightBlue.js","../../node_modules/@suid/material/colors/green.js","../../node_modules/@suid/material/colors/orange.js","../../node_modules/@suid/material/colors/grey.js","../../node_modules/@suid/system/colorManipulator.js","../../node_modules/@suid/material/styles/createPalette.jsx","../../node_modules/@suid/material/styles/createShadows.jsx","../../node_modules/@suid/material/styles/createTransitions.jsx","../../node_modules/@suid/material/styles/createTypography.jsx","../../node_modules/@suid/material/styles/createZIndex.jsx","../../node_modules/@suid/material/styles/createTheme.jsx","../../node_modules/@suid/material/styles/getDefaultTheme.js","../../node_modules/@suid/material/styles/useTheme.js","../../node_modules/@suid/material/CssBaseline/CssBaseline.jsx","../../node_modules/solid-supabase/dist/index.js","../../src/helpers/LoginGuard.tsx","../../src/App.tsx","../../src/configs/supabase_conf.ts","../../node_modules/@supabase/supabase-js/dist/module/lib/version.js","../../node_modules/@supabase/supabase-js/dist/module/lib/constants.js","../../node_modules/@supabase/supabase-js/dist/module/lib/helpers.js","../../node_modules/@supabase/gotrue-js/dist/module/lib/version.js","../../node_modules/@supabase/gotrue-js/dist/module/lib/constants.js","../../node_modules/@supabase/gotrue-js/dist/module/lib/fetch.js","../../node_modules/@supabase/gotrue-js/dist/module/lib/cookies.js","../../node_modules/cross-fetch/dist/browser-ponyfill.js","../../node_modules/@supabase/gotrue-js/dist/module/lib/helpers.js","../../node_modules/@supabase/gotrue-js/dist/module/GoTrueApi.js","../../node_modules/@supabase/gotrue-js/dist/module/lib/polyfills.js","../../node_modules/@supabase/gotrue-js/dist/module/GoTrueClient.js","../../node_modules/@supabase/supabase-js/dist/module/lib/SupabaseAuthClient.js","../../node_modules/@supabase/postgrest-js/dist/module/lib/types.js","../../node_modules/@supabase/postgrest-js/dist/module/lib/PostgrestTransformBuilder.js","../../node_modules/@supabase/postgrest-js/dist/module/lib/PostgrestFilterBuilder.js","../../node_modules/@supabase/postgrest-js/dist/module/lib/PostgrestQueryBuilder.js","../../node_modules/@supabase/postgrest-js/dist/module/lib/PostgrestRpcBuilder.js","../../node_modules/@supabase/postgrest-js/dist/module/lib/version.js","../../node_modules/@supabase/postgrest-js/dist/module/lib/constants.js","../../node_modules/@supabase/postgrest-js/dist/module/PostgrestClient.js","../../node_modules/@supabase/realtime-js/dist/module/lib/transformers.js","../../node_modules/websocket/lib/version.js","../../node_modules/websocket/lib/browser.js","../../node_modules/@supabase/realtime-js/dist/module/lib/version.js","../../node_modules/@supabase/realtime-js/dist/module/lib/constants.js","../../node_modules/@supabase/realtime-js/dist/module/lib/timer.js","../../node_modules/@supabase/realtime-js/dist/module/lib/serializer.js","../../node_modules/@supabase/realtime-js/dist/module/lib/push.js","../../node_modules/@supabase/realtime-js/dist/module/RealtimeSubscription.js","../../node_modules/@supabase/realtime-js/dist/module/RealtimePresence.js","../../node_modules/@supabase/realtime-js/dist/module/RealtimeChannel.js","../../node_modules/@supabase/realtime-js/dist/module/RealtimeClient.js","../../node_modules/@supabase/supabase-js/dist/module/lib/SupabaseRealtimeClient.js","../../node_modules/@supabase/supabase-js/dist/module/lib/SupabaseQueryBuilder.js","../../node_modules/@supabase/storage-js/dist/module/lib/version.js","../../node_modules/@supabase/storage-js/dist/module/lib/constants.js","../../node_modules/@supabase/storage-js/dist/module/lib/fetch.js","../../node_modules/@supabase/storage-js/dist/module/lib/helpers.js","../../node_modules/@supabase/storage-js/dist/module/lib/StorageBucketApi.js","../../node_modules/@supabase/storage-js/dist/module/lib/StorageFileApi.js","../../node_modules/@supabase/storage-js/dist/module/StorageClient.js","../../node_modules/@supabase/functions-js/dist/module/helper.js","../../node_modules/@supabase/functions-js/dist/module/index.js","../../node_modules/@supabase/supabase-js/dist/module/SupabaseClient.js","../../node_modules/@supabase/supabase-js/dist/module/index.js","../../src/supabase_client.ts","../../node_modules/string-hash/index.js","../../node_modules/styled-jsx/dist/lib/stylesheet.js","../../node_modules/styled-jsx/dist/stylesheet-registry.js","../../node_modules/solid-styled-jsx/style.js","../../src/index.tsx"],"sourcesContent":["const p = function polyfill() {\n const relList = document.createElement('link').relList;\n if (relList && relList.supports && relList.supports('modulepreload')) {\n return;\n }\n for (const link of document.querySelectorAll('link[rel=\"modulepreload\"]')) {\n processPreload(link);\n }\n new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type !== 'childList') {\n continue;\n }\n for (const node of mutation.addedNodes) {\n if (node.tagName === 'LINK' && node.rel === 'modulepreload')\n processPreload(node);\n }\n }\n }).observe(document, { childList: true, subtree: true });\n function getFetchOpts(script) {\n const fetchOpts = {};\n if (script.integrity)\n fetchOpts.integrity = script.integrity;\n if (script.referrerpolicy)\n fetchOpts.referrerPolicy = script.referrerpolicy;\n if (script.crossorigin === 'use-credentials')\n fetchOpts.credentials = 'include';\n else if (script.crossorigin === 'anonymous')\n fetchOpts.credentials = 'omit';\n else\n fetchOpts.credentials = 'same-origin';\n return fetchOpts;\n }\n function processPreload(link) {\n if (link.ep)\n // ep marker = processed\n return;\n link.ep = true;\n // prepopulate the load record\n const fetchOpts = getFetchOpts(link);\n fetch(link.href, fetchOpts);\n }\n};__VITE_IS_MODERN__&&p();","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return { ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst NOTPENDING = {};\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceFactory = null;\nlet Listener = null;\nlet Pending = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n root = fn.length === 0 && !false ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: null,\n owner: detachedOwner || owner\n };\n Owner = root;\n Listener = null;\n try {\n return runUpdates(() => fn(() => cleanNode(root)), true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n pending: NOTPENDING,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.pending !== NOTPENDING ? s.pending : s.tValue);else value = value(s.pending !== NOTPENDING ? s.pending : s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.pending = NOTPENDING;\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction createResource(source, fetcher, options) {\n if (arguments.length === 2) {\n if (typeof fetcher === \"object\") {\n options = fetcher;\n fetcher = source;\n source = true;\n }\n } else if (arguments.length === 1) {\n fetcher = source;\n source = true;\n }\n options || (options = {});\n const contexts = new Set(),\n [value, setValue] = createSignal(options.initialValue),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [loading, setLoading] = createSignal(false),\n [error, setError] = createSignal();\n let err = undefined,\n pr = null,\n initP = null,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = (\"initialValue\" in options),\n dynamic = typeof source === \"function\" && createMemo(source);\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n if (sharedConfig.load) initP = sharedConfig.load(id);\n }\n function loadEnd(p, v, e, key) {\n if (pr === p) {\n pr = null;\n resolved = true;\n if (initP && (p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = null;\n setError(err = e);\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n if (!Transition.promises.size) {\n Effects.push.apply(Effects, Transition.effects);\n Transition.effects = [];\n }\n completeLoad(v);\n }, false);\n } else completeLoad(v);\n }\n return v;\n }\n function completeLoad(v) {\n batch(() => {\n setValue(() => v);\n setLoading(false);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n });\n }\n function read() {\n const c = SuspenseContext && lookup(Owner, SuspenseContext.id),\n v = value();\n if (err) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching && scheduled) return;\n scheduled = false;\n setError(err = undefined);\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p = initP || untrack(() => fetcher(lookup, {\n value: value(),\n refetching\n }));\n if (typeof p !== \"object\" || !(\"then\" in p)) {\n loadEnd(pr, p);\n return p;\n }\n pr = p;\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n batch(() => {\n setLoading(true);\n trigger();\n });\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, e, e));\n }\n Object.defineProperties(read, {\n loading: {\n get() {\n return loading();\n }\n },\n error: {\n get() {\n return error();\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n if (err) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));else load(false);\n return [read, {\n refetch: load,\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(node.value, options);\n updateComputation(node);\n setDeferred(() => node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const key of subs.keys()) if (fn(key, v) !== fn(key, p)) {\n const l = subs.get(key);\n for (const c of l.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n let listener;\n if (listener = Listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n if (Pending) return fn();\n let result;\n const q = Pending = [];\n try {\n result = fn();\n } finally {\n Pending = null;\n }\n runUpdates(() => {\n for (let i = 0; i < q.length; i += 1) {\n const data = q[i];\n if (data.pending !== NOTPENDING) {\n const pending = data.pending;\n data.pending = NOTPENDING;\n writeSignal(data, pending);\n }\n }\n }, false);\n return result;\n}\nfunction untrack(fn) {\n let result,\n listener = Listener;\n Listener = null;\n result = fn();\n Listener = listener;\n return result;\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return undefined;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null) Owner.context = {\n [ERROR]: [fn]\n };else if (!Owner.context[ERROR]) Owner.context[ERROR] = [fn];else Owner.context[ERROR].push(fn);\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n Owner = o;\n try {\n return runUpdates(fn, true);\n } finally {\n Owner = prev;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n batch(fn);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let ctx;\n return (ctx = lookup(Owner, context.id)) !== undefined ? ctx : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n return createMemo(() => resolveChildren(children()));\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext({}));\n}\nfunction enableExternalSource(factory) {\n if (ExternalSourceFactory) {\n const oldFactory = ExternalSourceFactory;\n ExternalSourceFactory = (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n };\n } else {\n ExternalSourceFactory = factory;\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (!runningTransition && this.state || runningTransition && this.tState)) {\n const updates = Updates;\n Updates = null;\n !runningTransition && this.state === STALE || runningTransition && this.tState === STALE ? updateComputation(this) : lookUpstream(this);\n Updates = updates;\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n if (Pending) {\n if (node.pending === NOTPENDING) Pending.push(node);\n node.pending = value;\n return value;\n }\n if (node.comparator) {\n if (Transition && Transition.running && Transition.sources.has(node)) {\n if (node.comparator(node.tValue, value)) return value;\n } else if (node.comparator(node.value, value)) return value;\n }\n let TransitionRunning = false;\n if (Transition) {\n TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning && !o.tState || !TransitionRunning && !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (TransitionRunning) o.tState = STALE;else o.state = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false) ;\n throw new Error();\n }\n }, false);\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const owner = Owner,\n listener = Listener,\n time = ExecCount;\n Listener = Owner = node;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n runComputation(node, node.tValue, time);\n }, false);\n });\n }\n Listener = listener;\n Owner = owner;\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n handleError(err);\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.observers && node.observers.length) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceFactory) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceFactory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if (!runningTransition && node.state === 0 || runningTransition && node.tState === 0) return;\n if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (!runningTransition && node.state || runningTransition && node.tState) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if (!runningTransition && node.state === STALE || runningTransition && node.tState === STALE) {\n updateComputation(node);\n } else if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) {\n const updates = Updates;\n Updates = null;\n lookUpstream(node, ancestors[0]);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n handleError(err);\n } finally {\n Updates = null;\n if (!wait) Effects = null;\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition && Transition.running) {\n if (Transition.promises.size || Transition.queue.size) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n const sources = Transition.sources;\n res = Transition.resolve;\n Effects.forEach(e => {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n });\n Transition = null;\n batch(() => {\n sources.forEach(v => {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n });\n setTransPending(false);\n });\n }\n if (Effects.length) batch(() => {\n runEffects(Effects);\n Effects = null;\n });else {\n Effects = null;\n }\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n if (!tasks.size) {\n Effects.push.apply(Effects, Transition.effects);\n Transition.effects = [];\n }\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) setHydrateContext();\n const resume = queue.length;\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n for (i = resume; i < queue.length; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n if (!runningTransition && source.state === STALE || runningTransition && source.tState === STALE) {\n if (source !== ignore) runTop(source);\n } else if (!runningTransition && source.state === PENDING || runningTransition && source.tState === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (!runningTransition && !o.state || runningTransition && !o.tState) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = 0; i < node.tOwned.length; i++) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = 0; i < node.owned.length; i++) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = 0; i < node.cleanups.length; i++) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n node.context = null;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction handleError(err) {\n const fns = ERROR && lookup(Owner, ERROR);\n if (!fns) throw err;\n fns.forEach(f => f(err));\n}\nfunction lookup(owner, key) {\n return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id) {\n return function provider(props) {\n let res;\n createComputed(() => res = untrack(() => {\n Owner.context = {\n [id]: props.value\n };\n return children(() => props.children);\n }));\n return res;\n };\n}\n\nfunction getSymbol() {\n const SymbolCopy = Symbol;\n return SymbolCopy.observable || \"@@observable\";\n}\nfunction observable(input) {\n const $$observable = getSymbol();\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = \"next\" in observer ? observer.next.bind(observer) : observer;\n let complete = false;\n createComputed(() => {\n if (complete) return;\n const v = input();\n untrack(() => handler(v));\n });\n return {\n unsubscribe() {\n complete = true;\n }\n };\n },\n [$$observable]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return (s = typeof s === \"function\" ? s() : s) == null ? {} : s;\n}\nfunction mergeProps(...sources) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n}\nfunction splitProps(props, ...keys) {\n const blocked = new Set(keys.flat());\n const descriptors = Object.getOwnPropertyDescriptors(props);\n const res = keys.map(k => {\n const clone = {};\n for (let i = 0; i < k.length; i++) {\n const key = k[i];\n Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {\n get() {\n return props[key];\n },\n set() {\n return true;\n }\n });\n }\n return clone;\n });\n res.push(new Proxy({\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n }, propTraps));\n return res;\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n } else {\n const c = comp();\n if (c) return c(props);\n }\n let Comp;\n return createMemo(() => (Comp = comp()) && untrack(() => {\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }));\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback ? fallback : undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback ? fallback : undefined));\n}\nfunction Show(props) {\n let strictEqual = false;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => strictEqual ? a === b : !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n return (strictEqual = typeof child === \"function\" && child.length > 0) ? untrack(() => child(c)) : child;\n }\n return props.fallback;\n });\n}\nfunction Switch(props) {\n let strictEqual = false;\n const conditions = children(() => props.children),\n evalConditions = createMemo(() => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) return [i, c, conds[i]];\n }\n return [-1];\n }, undefined, {\n equals: (a, b) => a[0] === b[0] && (strictEqual ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2]\n });\n return createMemo(() => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n return (strictEqual = typeof c === \"function\" && c.length > 0) ? untrack(() => c(when)) : c;\n });\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nconst NoErrors = {};\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn(NoErrors));\n}\nfunction ErrorBoundary(props) {\n let err = NoErrors;\n if (sharedConfig.context && sharedConfig.load) {\n err = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count) || NoErrors;\n }\n const [errored, setErrored] = createSignal(err);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if ((e = errored()) !== NoErrors) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored(NoErrors))) : f;\n }\n onError(setErrored);\n return props.children;\n });\n}\n\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let index = 0,\n suspenseSetter,\n showContent,\n showFallback;\n const listContext = useContext(SuspenseListContext);\n if (listContext) {\n const [inFallback, setFallback] = createSignal(false);\n suspenseSetter = setFallback;\n [showContent, showFallback] = listContext.register(inFallback);\n }\n const registry = [],\n comp = createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n const [showingContent, showContent] = createSignal(false),\n [showingFallback, showFallback] = createSignal(false);\n registry[index++] = {\n inFallback,\n showContent,\n showFallback\n };\n return [showingContent, showingFallback];\n }\n },\n get children() {\n return props.children;\n }\n });\n createComputed(() => {\n const reveal = props.revealOrder,\n tail = props.tail,\n visibleContent = showContent ? showContent() : true,\n visibleFallback = showFallback ? showFallback() : true,\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = registry.every(i => !i.inFallback());\n suspenseSetter && suspenseSetter(!all);\n registry.forEach(i => {\n i.showContent(all && visibleContent);\n i.showFallback(visibleFallback);\n });\n return;\n }\n let stop = false;\n for (let i = 0, len = registry.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = registry[n].inFallback();\n if (!stop && !s) {\n registry[n].showContent(visibleContent);\n registry[n].showFallback(visibleFallback);\n } else {\n const next = !stop;\n if (next && suspenseSetter) suspenseSetter(true);\n if (!tail || next && tail === \"collapsed\") {\n registry[n].showFallback(visibleFallback);\n } else registry[n].showFallback(false);\n stop = true;\n registry[n].showContent(next);\n }\n }\n if (!stop && suspenseSetter) suspenseSetter(false);\n });\n return comp;\n}\nfunction Suspense(props) {\n let counter = 0,\n showContent,\n showFallback,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n p = sharedConfig.load(key);\n if (p) {\n if (typeof p !== \"object\" || !(\"then\" in p)) p = Promise.resolve(p);\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(err => {\n if ((error = err) || sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) [showContent, showFallback] = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === undefined) setHydrateContext();\n const rendered = untrack(() => props.children);\n return createMemo(() => {\n const inFallback = store.inFallback(),\n visibleContent = showContent ? showContent() : true,\n visibleFallback = showFallback ? showFallback() : true;\n dispose && dispose();\n if ((!inFallback || p !== undefined) && visibleContent) {\n store.resolved = true;\n ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered;\n }\n if (!visibleFallback) return;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nlet DEV;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createMemo, createRoot, createRenderEffect, sharedConfig, enableHydration, createSignal, onCleanup, splitProps, untrack } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, mergeProps } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"autofocus\", \"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\", \"indeterminate\", \"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\", \"selected\"];\nconst Properties = new Set([\"className\", \"value\", \"readOnly\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", ...booleans]);\nconst ChildProperties = new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = {\n className: \"class\",\n htmlFor: \"for\"\n};\nconst PropAliases = {\n class: \"className\",\n formnovalidate: \"formNoValidate\",\n ismap: \"isMap\",\n nomodule: \"noModule\",\n playsinline: \"playsInline\",\n readonly: \"readOnly\"\n};\nconst DelegatedEvents = new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\"]);\n\nfunction memo(fn, equals) {\n return createMemo(fn, undefined, !equals ? {\n equals\n } : undefined);\n}\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n });\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, check, isSVG) {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n let node = t.content.firstChild;\n if (isSVG) node = node.firstChild;\n return node;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setAttribute(node, name, value) {\n if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n node.addEventListener(name, e => handler[0](handler[1], e));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev = {}) {\n const nodeStyle = node.style;\n const prevString = typeof prev === \"string\";\n if (value == null && prevString || typeof value === \"string\") return nodeStyle.cssText = value;\n prevString && (nodeStyle.cssText = undefined, prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, accessor, isSVG, skipChildren) {\n if (typeof accessor === \"function\") {\n createRenderEffect(current => spreadExpression(node, accessor(), current, isSVG, skipChildren));\n } else spreadExpression(node, accessor, undefined, isSVG, skipChildren);\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = globalThis._$HY.load;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes]);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n return template.cloneNode(true);\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"#\") count++;else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const {\n completed,\n events\n } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) {\n value(node);\n }\n } else if (prop.slice(0, 3) === \"on:\") {\n node.addEventListener(prop.slice(3), value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n node.addEventListener(prop.slice(10), value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\"))) {\n if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = e.composedPath && e.composedPath()[0] || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) {\n sharedConfig.done = true;\n document.querySelectorAll(\"[id^=pl-]\").forEach(elem => elem.remove());\n }\n while (node !== null) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler(data, e) : handler(e);\n if (e.cancelBubble) return;\n }\n node = node.host && node.host !== node && node.host instanceof Node ? node.host : node.parentNode;\n }\n}\nfunction spreadExpression(node, props, prevProps = {}, isSVG, skipChildren) {\n props || (props = {});\n if (!skipChildren && \"children\" in props) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n props.ref && props.ref(node);\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n if (sharedConfig.context && !current) current = [...parent.childNodes];\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = multi && current[0] && current[0].parentNode || parent;\n if (t === \"string\" || t === \"number\") {\n if (sharedConfig.context) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data = value;\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (sharedConfig.context) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n if (normalizeIncomingArray(array, value, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (sharedConfig.context) {\n for (let i = 0; i < array.length; i++) {\n if (array[i].parentNode) return current = array;\n }\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (Array.isArray(current)) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value instanceof Node) {\n if (sharedConfig.context && value.parentNode) return current = multi ? [value] : value;\n if (Array.isArray(current)) {\n if (multi) return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else ;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n t;\n if (item instanceof Node) {\n normalized.push(item);\n } else if (item == null || item === true || item === false) ; else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item) || dynamic;\n } else if ((t = typeof item) === \"string\") {\n normalized.push(document.createTextNode(item));\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else normalized.push(document.createTextNode(item.toString()));\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return parent.textContent = \"\";\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction Assets() {\n return;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction resolveSSRNode(node) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrSpread(accessor) {}\nfunction ssrBoolean(key, value) {}\nfunction ssrHydrationKey() {}\nfunction escape(html) {}\nfunction generateHydrationScript() {}\n\nconst isServer = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const {\n useShadow\n } = props,\n marker = document.createTextNode(\"\"),\n mount = props.mount || document.body;\n function renderPortal() {\n if (sharedConfig.context) {\n const [s, set] = createSignal(false);\n queueMicrotask(() => set(true));\n return () => s() && props.children;\n } else return () => props.children;\n }\n if (mount instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(mount, () => !clean() ? renderPortal()() : dispose(), null));\n onCleanup(() => {\n if (sharedConfig.context) queueMicrotask(cleanup);else cleanup();\n });\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n mode: \"open\"\n }) : container;\n Object.defineProperty(container, \"host\", {\n get() {\n return marker.parentNode;\n }\n });\n insert(renderRoot, renderPortal());\n mount.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => mount.removeChild(container));\n }\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n return createMemo(() => {\n const component = p.component;\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport { Aliases, Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Assets as HydrationScript, NoHydration, Portal, PropAliases, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, generateHydrationScript, getHydrationKey, getNextElement, getNextMarker, getNextMatch, hydrate, innerHTML, insert, isServer, memo, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrBoolean, ssrClassList, ssrHydrationKey, ssrSpread, ssrStyle, style, template };\n","const scriptRel = 'modulepreload';const seen = {};const base = '/';export const __vitePreload = function preload(baseModule, deps) {\n // @ts-ignore\n if (!__VITE_IS_MODERN__ || !deps || deps.length === 0) {\n return baseModule();\n }\n return Promise.all(deps.map((dep) => {\n // @ts-ignore\n dep = `${base}${dep}`;\n // @ts-ignore\n if (dep in seen)\n return;\n // @ts-ignore\n seen[dep] = true;\n const isCss = dep.endsWith('.css');\n const cssSelector = isCss ? '[rel=\"stylesheet\"]' : '';\n // @ts-ignore check if the file is already preloaded by SSR markup\n if (document.querySelector(`link[href=\"${dep}\"]${cssSelector}`)) {\n return;\n }\n // @ts-ignore\n const link = document.createElement('link');\n // @ts-ignore\n link.rel = isCss ? 'stylesheet' : scriptRel;\n if (!isCss) {\n link.as = 'script';\n link.crossOrigin = '';\n }\n link.href = dep;\n // @ts-ignore\n document.head.appendChild(link);\n if (isCss) {\n return new Promise((res, rej) => {\n link.addEventListener('load', res);\n link.addEventListener('error', () => rej(new Error(`Unable to preload CSS for ${dep}`)));\n });\n }\n })).then(() => baseModule());\n}","import { createSignal, onCleanup } from \"solid-js\";\nfunction bindEvent(target, type, handler) {\n target.addEventListener(type, handler);\n return () => target.removeEventListener(type, handler);\n}\nfunction intercept([value, setValue], get, set) {\n return [get ? () => get(value()) : value, set ? (v) => setValue(set(v)) : setValue];\n}\nfunction querySelector(selector) {\n // Guard against selector being an invalid CSS selector\n try {\n return document.querySelector(selector);\n }\n catch (e) {\n return null;\n }\n}\nfunction scrollToHash(hash, fallbackTop) {\n const el = querySelector(`a#${hash}`);\n if (el) {\n el.scrollIntoView();\n }\n else if (fallbackTop) {\n window.scrollTo(0, 0);\n }\n}\nexport function createIntegration(get, set, init, utils) {\n let ignore = false;\n const wrap = (value) => (typeof value === \"string\" ? { value } : value);\n const signal = intercept(createSignal(wrap(get()), { equals: (a, b) => a.value === b.value }), undefined, next => {\n !ignore && set(next);\n return next;\n });\n init &&\n onCleanup(init((value = get()) => {\n ignore = true;\n signal[1](wrap(value));\n ignore = false;\n }));\n return {\n signal,\n utils\n };\n}\nexport function normalizeIntegration(integration) {\n if (!integration) {\n return {\n signal: createSignal({ value: \"\" })\n };\n }\n else if (Array.isArray(integration)) {\n return {\n signal: integration\n };\n }\n return integration;\n}\nexport function staticIntegration(obj) {\n return {\n signal: [() => obj, next => Object.assign(obj, next)]\n };\n}\nexport function pathIntegration() {\n return createIntegration(() => ({\n value: window.location.pathname + window.location.search + window.location.hash,\n state: history.state\n }), ({ value, replace, scroll, state }) => {\n if (replace) {\n window.history.replaceState(state, \"\", value);\n }\n else {\n window.history.pushState(state, \"\", value);\n }\n scrollToHash(window.location.hash.slice(1), scroll);\n }, notify => bindEvent(window, \"popstate\", () => notify()), {\n go: delta => window.history.go(delta)\n });\n}\nexport function hashIntegration() {\n return createIntegration(() => window.location.hash.slice(1), ({ value, replace, scroll, state }) => {\n if (replace) {\n window.history.replaceState(state, \"\", \"#\" + value);\n }\n else {\n window.location.hash = value;\n }\n const hashIndex = value.indexOf(\"#\");\n const hash = hashIndex >= 0 ? value.slice(hashIndex + 1) : \"\";\n scrollToHash(hash, scroll);\n }, notify => bindEvent(window, \"hashchange\", () => notify()), {\n go: delta => window.history.go(delta),\n renderPath: path => `#${path}`,\n parsePath: str => {\n const to = str.replace(/^.*?#/, \"\");\n // Hash-only hrefs like `#foo` from plain anchors will come in as `/#foo` whereas a link to\n // `/foo` will be `/#/foo`. Check if the to starts with a `/` and if not append it as a hash\n // to the current path so we can handle these in-page anchors correctly.\n if (!to.startsWith(\"/\")) {\n const [, path = \"/\"] = window.location.hash.split(\"#\", 2);\n return `${path}#${to}`;\n }\n return to;\n }\n });\n}\n","import { createMemo, getOwner, runWithOwner } from \"solid-js\";\nconst hasSchemeRegex = /^(?:[a-z0-9]+:)?\\/\\//i;\nconst trimPathRegex = /^\\/+|\\/+$/g;\nfunction normalize(path, omitSlash = false) {\n const s = path.replace(trimPathRegex, \"\");\n return s ? (omitSlash || /^[?#]/.test(s) ? s : \"/\" + s) : \"\";\n}\nexport function resolvePath(base, path, from) {\n if (hasSchemeRegex.test(path)) {\n return undefined;\n }\n const basePath = normalize(base);\n const fromPath = from && normalize(from);\n let result = \"\";\n if (!fromPath || path.startsWith(\"/\")) {\n result = basePath;\n }\n else if (fromPath.toLowerCase().indexOf(basePath.toLowerCase()) !== 0) {\n result = basePath + fromPath;\n }\n else {\n result = fromPath;\n }\n return (result || '/') + normalize(path, !result);\n}\nexport function invariant(value, message) {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n}\nexport function joinPaths(from, to) {\n return normalize(from).replace(/\\/*(\\*.*)?$/g, \"\") + normalize(to);\n}\nexport function extractSearchParams(url) {\n const params = {};\n url.searchParams.forEach((value, key) => {\n params[key] = value;\n });\n return params;\n}\nexport function urlDecode(str, isQuery) {\n return decodeURIComponent(isQuery ? str.replace(/\\+/g, ' ') : str);\n}\nexport function createMatcher(path, partial) {\n const [pattern, splat] = path.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n const len = segments.length;\n return (location) => {\n const locSegments = location.split(\"/\").filter(Boolean);\n const lenDiff = locSegments.length - len;\n if (lenDiff < 0 || (lenDiff > 0 && splat === undefined && !partial)) {\n return null;\n }\n const match = {\n path: len ? \"\" : \"/\",\n params: {}\n };\n for (let i = 0; i < len; i++) {\n const segment = segments[i];\n const locSegment = locSegments[i];\n if (segment[0] === \":\") {\n match.params[segment.slice(1)] = locSegment;\n }\n else if (segment.localeCompare(locSegment, undefined, { sensitivity: \"base\" }) !== 0) {\n return null;\n }\n match.path += `/${locSegment}`;\n }\n if (splat) {\n match.params[splat] = lenDiff ? locSegments.slice(-lenDiff).join(\"/\") : \"\";\n }\n return match;\n };\n}\nexport function scoreRoute(route) {\n const [pattern, splat] = route.pattern.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n return segments.reduce((score, segment) => score + (segment.startsWith(\":\") ? 2 : 3), segments.length - (splat === undefined ? 0 : 1));\n}\nexport function createMemoObject(fn) {\n const map = new Map();\n const owner = getOwner();\n return new Proxy({}, {\n get(_, property) {\n if (!map.has(property)) {\n runWithOwner(owner, () => map.set(property, createMemo(() => fn()[property])));\n }\n return map.get(property)();\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n },\n ownKeys() {\n return Reflect.ownKeys(fn());\n }\n });\n}\nexport function mergeSearchString(search, params) {\n const merged = new URLSearchParams(search);\n Object.entries(params).forEach(([key, value]) => {\n if (value == null || value === \"\") {\n merged.delete(key);\n }\n else {\n merged.set(key, String(value));\n }\n });\n const s = merged.toString();\n return s ? `?${s}` : \"\";\n}\n","import { createComponent, createContext, createMemo, createRenderEffect, createSignal, on, onCleanup, untrack, useContext, useTransition, resetErrorBoundaries } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { normalizeIntegration } from \"./integration\";\nimport { createMemoObject, extractSearchParams, invariant, resolvePath, createMatcher, joinPaths, scoreRoute, mergeSearchString, urlDecode } from \"./utils\";\nconst MAX_REDIRECTS = 100;\nexport const RouterContextObj = createContext();\nexport const RouteContextObj = createContext();\nexport const useRouter = () => invariant(useContext(RouterContextObj), \"Make sure your app is wrapped in a \");\nlet TempRoute;\nexport const useRoute = () => TempRoute || useContext(RouteContextObj) || useRouter().base;\nexport const useResolvedPath = (path) => {\n const route = useRoute();\n return createMemo(() => route.resolvePath(path()));\n};\nexport const useHref = (to) => {\n const router = useRouter();\n return createMemo(() => {\n const to_ = to();\n return to_ !== undefined ? router.renderPath(to_) : to_;\n });\n};\nexport const useNavigate = () => useRouter().navigatorFactory();\nexport const useLocation = () => useRouter().location;\nexport const useIsRouting = () => useRouter().isRouting;\nexport const useMatch = (path) => {\n const location = useLocation();\n const matcher = createMemo(() => createMatcher(path()));\n return createMemo(() => matcher()(location.pathname));\n};\nexport const useParams = () => useRoute().params;\nexport const useRouteData = () => useRoute().data;\nexport const useSearchParams = () => {\n const location = useLocation();\n const navigate = useNavigate();\n const setSearchParams = (params, options) => {\n const searchString = untrack(() => mergeSearchString(location.search, params));\n navigate(searchString, { scroll: false, ...options, resolve: true });\n };\n return [location.query, setSearchParams];\n};\nexport function createRoute(routeDef, base = \"\", fallback) {\n const { path: originalPath, component, data, children } = routeDef;\n const isLeaf = !children || (Array.isArray(children) && !children.length);\n const path = joinPaths(base, originalPath);\n const pattern = isLeaf ? path : path.split(\"/*\", 1)[0];\n return {\n originalPath,\n pattern,\n element: component\n ? () => createComponent(component, {})\n : () => {\n const { element } = routeDef;\n return element === undefined && fallback\n ? createComponent(fallback, {})\n : element;\n },\n preload: routeDef.component\n ? component.preload\n : routeDef.preload,\n data,\n matcher: createMatcher(pattern, !isLeaf)\n };\n}\nexport function createBranch(routes, index = 0) {\n return {\n routes,\n score: scoreRoute(routes[routes.length - 1]) * 10000 - index,\n matcher(location) {\n const matches = [];\n for (let i = routes.length - 1; i >= 0; i--) {\n const route = routes[i];\n const match = route.matcher(location);\n if (!match) {\n return null;\n }\n matches.unshift({\n ...match,\n route\n });\n }\n return matches;\n }\n };\n}\nexport function createBranches(routeDef, base = \"\", fallback, stack = [], branches = []) {\n const routeDefs = Array.isArray(routeDef) ? routeDef : [routeDef];\n for (let i = 0, len = routeDefs.length; i < len; i++) {\n const def = routeDefs[i];\n if (def && typeof def === \"object\" && def.hasOwnProperty(\"path\")) {\n const route = createRoute(def, base, fallback);\n stack.push(route);\n if (def.children) {\n createBranches(def.children, route.pattern, fallback, stack, branches);\n }\n else {\n const branch = createBranch([...stack], branches.length);\n branches.push(branch);\n }\n stack.pop();\n }\n }\n // Stack will be empty on final return\n return stack.length ? branches : branches.sort((a, b) => b.score - a.score);\n}\nexport function getRouteMatches(branches, location) {\n for (let i = 0, len = branches.length; i < len; i++) {\n const match = branches[i].matcher(location);\n if (match) {\n return match;\n }\n }\n return [];\n}\nexport function createLocation(path, state) {\n const origin = new URL(\"http://sar\");\n const url = createMemo(prev => {\n const path_ = path();\n try {\n return new URL(path_, origin);\n }\n catch (err) {\n console.error(`Invalid path ${path_}`);\n return prev;\n }\n }, origin, {\n equals: (a, b) => a.href === b.href\n });\n const pathname = createMemo(() => urlDecode(url().pathname));\n const search = createMemo(() => urlDecode(url().search, true));\n const hash = createMemo(() => urlDecode(url().hash));\n const key = createMemo(() => \"\");\n return {\n get pathname() {\n return pathname();\n },\n get search() {\n return search();\n },\n get hash() {\n return hash();\n },\n get state() {\n return state();\n },\n get key() {\n return key();\n },\n query: createMemoObject(on(search, () => extractSearchParams(url())))\n };\n}\nexport function createRouterContext(integration, base = \"\", data, out) {\n const { signal: [source, setSource], utils = {} } = normalizeIntegration(integration);\n const parsePath = utils.parsePath || (p => p);\n const renderPath = utils.renderPath || (p => p);\n const basePath = resolvePath(\"\", base);\n const output = isServer && out\n ? Object.assign(out, {\n matches: [],\n url: undefined\n })\n : undefined;\n if (basePath === undefined) {\n throw new Error(`${basePath} is not a valid base path`);\n }\n else if (basePath && !source().value) {\n setSource({ value: basePath, replace: true, scroll: false });\n }\n const [isRouting, start] = useTransition();\n const [reference, setReference] = createSignal(source().value);\n const [state, setState] = createSignal(source().state);\n const location = createLocation(reference, state);\n const referrers = [];\n const baseRoute = {\n pattern: basePath,\n params: {},\n path: () => basePath,\n outlet: () => null,\n resolvePath(to) {\n return resolvePath(basePath, to);\n }\n };\n if (data) {\n try {\n TempRoute = baseRoute;\n baseRoute.data = data({\n data: undefined,\n params: {},\n location,\n navigate: navigatorFactory(baseRoute)\n });\n }\n finally {\n TempRoute = undefined;\n }\n }\n function navigateFromRoute(route, to, options) {\n // Untrack in case someone navigates in an effect - don't want to track `reference` or route paths\n untrack(() => {\n if (typeof to === \"number\") {\n if (!to) {\n // A delta of 0 means stay at the current location, so it is ignored\n }\n else if (utils.go) {\n utils.go(to);\n }\n else {\n console.warn(\"Router integration does not support relative routing\");\n }\n return;\n }\n const { replace, resolve, scroll, state: nextState } = {\n replace: false,\n resolve: true,\n scroll: true,\n ...options\n };\n const resolvedTo = resolve ? route.resolvePath(to) : resolvePath(\"\", to);\n if (resolvedTo === undefined) {\n throw new Error(`Path '${to}' is not a routable path`);\n }\n else if (referrers.length >= MAX_REDIRECTS) {\n throw new Error(\"Too many redirects\");\n }\n const current = reference();\n if (resolvedTo !== current || nextState !== state()) {\n if (isServer) {\n if (output) {\n output.url = resolvedTo;\n }\n setSource({ value: resolvedTo, replace, scroll, state: nextState });\n }\n else {\n const len = referrers.push({ value: current, replace, scroll, state: state() });\n start(() => {\n setReference(resolvedTo);\n setState(nextState);\n resetErrorBoundaries();\n }).then(() => {\n if (referrers.length === len) {\n navigateEnd({\n value: resolvedTo,\n state: nextState\n });\n }\n });\n }\n }\n });\n }\n function navigatorFactory(route) {\n // Workaround for vite issue (https://github.com/vitejs/vite/issues/3803)\n route = route || useContext(RouteContextObj) || baseRoute;\n return (to, options) => navigateFromRoute(route, to, options);\n }\n function navigateEnd(next) {\n const first = referrers[0];\n if (first) {\n if (next.value !== first.value || next.state !== first.state) {\n setSource({\n ...next,\n replace: first.replace,\n scroll: first.scroll\n });\n }\n referrers.length = 0;\n }\n }\n createRenderEffect(() => {\n const { value, state } = source();\n // Untrack this whole block so `start` doesn't cause Solid's Listener to be preserved\n untrack(() => {\n if (value !== reference()) {\n start(() => {\n setReference(value);\n setState(state);\n });\n }\n });\n });\n if (!isServer) {\n function handleAnchorClick(evt) {\n if (evt.defaultPrevented ||\n evt.button !== 0 ||\n evt.metaKey ||\n evt.altKey ||\n evt.ctrlKey ||\n evt.shiftKey)\n return;\n const a = evt\n .composedPath()\n .find(el => el instanceof Node && el.nodeName.toUpperCase() === \"A\");\n if (!a)\n return;\n const isSvg = a instanceof SVGAElement;\n const href = isSvg ? a.href.baseVal : a.href;\n const target = isSvg ? a.target.baseVal : a.target;\n if (target || (!href && !a.hasAttribute(\"state\")))\n return;\n const rel = (a.getAttribute(\"rel\") || \"\").split(/\\s+/);\n if (a.hasAttribute(\"download\") || (rel && rel.includes(\"external\")))\n return;\n const url = isSvg ? new URL(href, document.baseURI) : new URL(href);\n const pathname = urlDecode(url.pathname);\n if (url.origin !== window.location.origin ||\n (basePath && pathname && !pathname.toLowerCase().startsWith(basePath.toLowerCase())))\n return;\n const to = parsePath(pathname + urlDecode(url.search, true) + urlDecode(url.hash));\n const state = a.getAttribute(\"state\");\n evt.preventDefault();\n navigateFromRoute(baseRoute, to, {\n resolve: false,\n replace: a.hasAttribute(\"replace\"),\n scroll: !a.hasAttribute(\"noscroll\"),\n state: state && JSON.parse(state)\n });\n }\n document.addEventListener(\"click\", handleAnchorClick);\n onCleanup(() => document.removeEventListener(\"click\", handleAnchorClick));\n }\n return {\n base: baseRoute,\n out: output,\n location,\n isRouting,\n renderPath,\n parsePath,\n navigatorFactory\n };\n}\nexport function createRouteContext(router, parent, child, match) {\n const { base, location, navigatorFactory } = router;\n const { pattern, element: outlet, preload, data } = match().route;\n const path = createMemo(() => match().path);\n const params = createMemoObject(() => match().params);\n preload && preload();\n const route = {\n parent,\n pattern,\n get child() {\n return child();\n },\n path,\n params,\n data: parent.data,\n outlet,\n resolvePath(to) {\n return resolvePath(base.path(), to, path());\n }\n };\n if (data) {\n try {\n TempRoute = route;\n route.data = data({ data: parent.data, params, location, navigate: navigatorFactory(route) });\n }\n finally {\n TempRoute = undefined;\n }\n }\n return route;\n}\n","/*@refresh skip*/\nimport { createMemo, createRoot, mergeProps, on, Show, splitProps } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { pathIntegration, staticIntegration } from \"./integration\";\nimport { createBranches, createRouteContext, createRouterContext, getRouteMatches, RouteContextObj, RouterContextObj, useHref, useLocation, useNavigate, useResolvedPath, useRoute, useRouter } from \"./routing\";\nimport { joinPaths } from \"./utils\";\nexport const Router = (props) => {\n const { source, url, base, data, out } = props;\n const integration = source || (isServer ? staticIntegration({ value: url || \"\" }) : pathIntegration());\n const routerState = createRouterContext(integration, base, data, out);\n return ({props.children});\n};\nexport const Routes = (props) => {\n const router = useRouter();\n const parentRoute = useRoute();\n const branches = createMemo(() => createBranches(props.children, joinPaths(parentRoute.pattern, props.base || \"\"), Outlet));\n const matches = createMemo(() => getRouteMatches(branches(), router.location.pathname));\n if (router.out) {\n router.out.matches.push(matches().map(({ route, path, params }) => ({\n originalPath: route.originalPath,\n pattern: route.pattern,\n path,\n params\n })));\n }\n const disposers = [];\n let root;\n const routeStates = createMemo(on(matches, (nextMatches, prevMatches, prev) => {\n let equal = prevMatches && nextMatches.length === prevMatches.length;\n const next = [];\n for (let i = 0, len = nextMatches.length; i < len; i++) {\n const prevMatch = prevMatches && prevMatches[i];\n const nextMatch = nextMatches[i];\n if (prev && prevMatch && nextMatch.route.pattern === prevMatch.route.pattern) {\n next[i] = prev[i];\n }\n else {\n equal = false;\n if (disposers[i]) {\n disposers[i]();\n }\n createRoot(dispose => {\n disposers[i] = dispose;\n next[i] = createRouteContext(router, next[i - 1] || parentRoute, () => routeStates()[i + 1], () => matches()[i]);\n });\n }\n }\n disposers.splice(nextMatches.length).forEach(dispose => dispose());\n if (prev && equal) {\n return prev;\n }\n root = next[0];\n return next;\n }));\n return (\n {route => {route.outlet()}}\n );\n};\nexport const useRoutes = (routes, base) => {\n return () => {routes};\n};\nexport const Route = (props) => props;\nexport const Outlet = () => {\n const route = useRoute();\n return (\n {child => {child.outlet()}}\n );\n};\nfunction LinkBase(props) {\n const [, rest] = splitProps(props, [\"children\", \"to\", \"href\", \"state\"]);\n const href = useHref(() => props.to);\n return (\n {props.children}\n );\n}\nexport function Link(props) {\n const to = useResolvedPath(() => props.href);\n return ;\n}\nexport function NavLink(props) {\n props = mergeProps({ inactiveClass: \"inactive\", activeClass: \"active\" }, props);\n const [, rest] = splitProps(props, [\"activeClass\", \"inactiveClass\", \"end\"]);\n const location = useLocation();\n const to = useResolvedPath(() => props.href);\n const isActive = createMemo(() => {\n const to_ = to();\n if (to_ === undefined) {\n return false;\n }\n const path = to_.split(/[?#]/, 1)[0].toLowerCase();\n const loc = location.pathname.toLowerCase();\n return props.end ? path === loc : loc.startsWith(path);\n });\n return ();\n}\nexport function Navigate(props) {\n const navigate = useNavigate();\n const location = useLocation();\n const { href, state } = props;\n const path = typeof href === \"function\" ? href({ navigate, location }) : href;\n navigate(path, { replace: true, state });\n return null;\n}\n","// https://github.com/mui/material-ui/blob/master/packages/mui-base/src/composeClasses/composeClasses.ts\nexport default function composeClasses(slots, getUtilityClass, classes) {\n const output = {};\n Object.keys(slots).forEach(\n // `Objet.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n (slot) => {\n output[slot] = slots[slot]\n .reduce((acc, key) => {\n if (key) {\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n acc.push(getUtilityClass(key));\n }\n return acc;\n }, [])\n .join(\" \");\n });\n return output;\n}\n","import { createContext } from \"solid-js\";\nconst ThemeContext = createContext({});\nexport default ThemeContext;\n","function renderMediaQuery(comparator, width, units = \"px\") {\n let selector;\n if (comparator === \"up\") {\n selector = `(min-width:${width}${units})`;\n }\n else if (comparator === \"down\") {\n selector = `(max-width:${width}${units})`;\n }\n else if (comparator === \"between\") {\n const [maxW, minW] = width;\n selector = `(max-width:${maxW}${units}) and (min-width:${minW}${units})`;\n }\n else {\n throw new Error(`Invalid comparator: ${comparator}`);\n }\n return `@media ${selector}`;\n}\nexport default renderMediaQuery;\n","import renderMediaQuery from \"@suid/css/renderMediaQuery\";\nexport const breakpointsDefault = createBreakpointsOptions({\n columns: 12,\n keys: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n values: {\n xs: 0,\n sm: 600,\n md: 900,\n lg: 1200,\n xl: 1536,\n },\n unit: \"px\",\n});\nexport function createBreakpointsOptions(options) {\n return options;\n}\nexport function createBreakpoints(options) {\n const result = {\n ...breakpointsDefault,\n ...(options ?? {}),\n up: (value, css) => {\n const key = renderMediaQuery(\"up\", result.resolve(value));\n return (css ? { [key]: css } : key);\n },\n down: (value, css) => {\n const key = renderMediaQuery(\"down\", result.resolve(value));\n return (css ? { [key]: css } : key);\n },\n between: (value, css) => {\n const key = renderMediaQuery(\"between\", [\n result.resolve(value[0]),\n result.resolve(value[1]),\n ]);\n return (css ? { [key]: css } : key);\n },\n resolve: (value) => typeof value === \"number\" ? value : result.values[value],\n };\n return result;\n}\nexport default createBreakpoints;\n","export function createSpacing(options) {\n if (typeof options === \"function\")\n return options;\n const resolved = (...values) => {\n return values\n .map((v) => typeof v === \"number\" ? `${v * (options ?? 8)}px` : v)\n .join(\" \");\n };\n return resolved;\n}\nexport default createSpacing;\n","export function isPlainObject(item) {\n return (item !== null && typeof item === \"object\" && item.constructor === Object);\n}\nfunction sortKeys(object, keys) {\n for (const key of keys) {\n const value = object[key];\n delete object[key];\n object[key] = value;\n }\n}\nexport default function deepmerge(target, source, options = { clone: true }) {\n const output = options.clone ? { ...target } : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach((key) => {\n // Avoid prototype pollution\n if (key === \"__proto__\") {\n return;\n }\n if (isPlainObject(source[key]) &&\n key in target &&\n isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n }\n else {\n output[key] = source[key];\n }\n });\n if (options.sortKeys)\n sortKeys(output, Object.keys(source));\n }\n return output;\n}\n","import { isPlainObject } from \"./deepmerge\";\nexport default function cloneObject(target) {\n if (Array.isArray(target)) {\n const output = [];\n for (const value of target) {\n output.push(cloneObject(value));\n }\n return output;\n }\n else if (isPlainObject(target)) {\n const output = {};\n for (const key in target) {\n if (key === \"__proto__\") {\n continue;\n }\n output[key] = cloneObject(target[key]);\n }\n return output;\n }\n else {\n return target;\n }\n}\n","import cloneObject from \"./cloneObject\";\nimport deepmerge from \"./deepmerge\";\nexport default function merge(target, ...sources) {\n for (const source of sources)\n deepmerge(target, cloneObject(source), {\n clone: false,\n });\n return target;\n}\n","import merge from \"@suid/utils/merge\";\nexport const shapeDefaults = createShapeOptions({\n borderRadius: 4,\n});\nexport function createShapeOptions(data) {\n return data;\n}\nexport function createShape(options) {\n const result = {\n ...merge({}, shapeDefaults, options),\n };\n return result;\n}\nexport default createShape;\n","import { createBreakpoints, } from \"./createBreakpoints\";\nimport { createSpacing } from \"./createSpacing\";\nimport { createShape } from \"./shape\";\nexport function createThemeOptions(options) {\n return options;\n}\nexport function createTheme(data) {\n const result = {\n direction: \"ltr\",\n shadows: undefined,\n transitions: undefined,\n components: undefined,\n palette: undefined,\n typography: undefined,\n zIndex: undefined,\n mixins: undefined,\n ...data,\n breakpoints: createBreakpoints(data?.breakpoints),\n shape: createShape(data?.shape),\n spacing: createSpacing(data?.spacing),\n };\n return result;\n}\nexport default createTheme;\n","function makeGetDefaultTheme(createTheme) {\n let defaultTheme;\n return function getDefaultTheme() {\n if (!defaultTheme) {\n defaultTheme = createTheme();\n }\n return defaultTheme;\n };\n}\nexport default makeGetDefaultTheme;\n","import createTheme from \"./createTheme\";\nimport makeGetDefaultTheme from \"./makeGetDefaultTheme\";\nexport default makeGetDefaultTheme(createTheme);\n","export default function isEmptyObject(object) {\n for (const _key in object)\n return false;\n return true;\n}\n","import ThemeContext from \"./ThemeContext\";\nimport getDefaultTheme from \"./getDefaultTheme\";\nimport isEmptyObject from \"@suid/utils/isEmptyObject\";\nimport { useContext } from \"solid-js\";\nfunction useTheme(defaultTheme = getDefaultTheme, Context = ThemeContext) {\n const theme = useContext(Context);\n if (isEmptyObject(theme) && defaultTheme) {\n if (typeof defaultTheme === \"function\")\n return defaultTheme();\n return defaultTheme;\n }\n if (!theme)\n throw new Error(\"Theme is not defined\");\n return theme;\n}\nexport default useTheme;\n","import ThemeContext from \"@suid/system/ThemeContext\";\nimport useSysTheme from \"@suid/system/useTheme\";\nfunction useTheme(defaultTheme) {\n return useSysTheme(defaultTheme, ThemeContext);\n}\nexport default useTheme;\n","import useTheme from \"./useTheme\";\nimport { mergeProps } from \"solid-js\";\nexport default function useThemeProps(options) {\n const theme = useTheme();\n const set = (v) => v;\n const propDefaults = typeof options.propDefaults === \"function\"\n ? options.propDefaults({\n set,\n inProps: options.props,\n })\n : options.propDefaults;\n return mergeProps(...[\n ...(propDefaults ? [propDefaults] : []),\n () => theme.components?.[options.name]?.defaultProps || {},\n options.props,\n ]);\n}\n","import { $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';\n\nconst $RAW = Symbol(\"store-raw\"),\n $NODE = Symbol(\"store-node\"),\n $NAME = Symbol(\"store-name\");\nfunction wrap$1(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps$1)\n });\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n const get = desc[prop].get.bind(p);\n Object.defineProperty(value, prop, {\n get\n });\n }\n }\n }\n return p;\n}\nfunction isWrappable(obj) {\n return obj != null && typeof obj === \"object\" && (obj[$PROXY] || !obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));\n}\nfunction unwrap(item, set = new Set()) {\n let result, unwrapped, v, prop;\n if (result = item != null && item[$RAW]) return result;\n if (!isWrappable(item) || set.has(item)) return item;\n if (Array.isArray(item)) {\n if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);\n for (let i = 0, l = item.length; i < l; i++) {\n v = item[i];\n if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;\n }\n } else {\n if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);\n const keys = Object.keys(item),\n desc = Object.getOwnPropertyDescriptors(item);\n for (let i = 0, l = keys.length; i < l; i++) {\n prop = keys[i];\n if (desc[prop].get) continue;\n v = item[prop];\n if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;\n }\n }\n return item;\n}\nfunction getDataNodes(target) {\n let nodes = target[$NODE];\n if (!nodes) Object.defineProperty(target, $NODE, {\n value: nodes = {}\n });\n return nodes;\n}\nfunction getDataNode(nodes, property, value) {\n return nodes[property] || (nodes[property] = createDataNode(value, true));\n}\nfunction proxyDescriptor(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n return desc;\n}\nfunction trackSelf(target) {\n if (getListener()) {\n const nodes = getDataNodes(target);\n (nodes._ || (nodes._ = createDataNode()))();\n }\n}\nfunction ownKeys(target) {\n trackSelf(target);\n return Reflect.ownKeys(target);\n}\nfunction createDataNode(value, equals) {\n const [s, set] = createSignal(value, equals ? {\n internal: true\n } : {\n equals: false,\n internal: true\n });\n s.$ = set;\n return s;\n}\nconst proxyTraps$1 = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) return trackSelf(target);\n const nodes = getDataNodes(target);\n const tracked = nodes[property];\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n if (getListener() && (typeof value !== \"function\" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();\n }\n return isWrappable(value) ? wrap$1(value) : value;\n },\n set() {\n return true;\n },\n deleteProperty() {\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor\n};\nfunction setProperty(state, property, value) {\n if (state[property] === value) return;\n const prev = state[property];\n const len = state.length;\n if (value === undefined) {\n delete state[property];\n } else state[property] = value;\n let nodes = getDataNodes(state),\n node;\n if (node = getDataNode(nodes, property, prev)) node.$(() => value);\n if (Array.isArray(state) && state.length !== len) (node = getDataNode(nodes, \"length\", len)) && node.$(state.length);\n (node = nodes._) && node.$();\n}\nfunction mergeStoreNode(state, value) {\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n setProperty(state, key, value[key]);\n }\n}\nfunction updateArray(current, next) {\n if (typeof next === \"function\") next = next(current);\n next = unwrap(next);\n if (Array.isArray(next)) {\n if (current === next) return;\n let i = 0,\n len = next.length;\n for (; i < len; i++) {\n const value = next[i];\n if (current[i] !== value) setProperty(current, i, value);\n }\n setProperty(current, \"length\", len);\n } else mergeStoreNode(current, next);\n}\nfunction updatePath(current, path, traversed = []) {\n let part,\n prev = current;\n if (path.length > 1) {\n part = path.shift();\n const partType = typeof part,\n isArray = Array.isArray(current);\n if (Array.isArray(part)) {\n for (let i = 0; i < part.length; i++) {\n updatePath(current, [part[i]].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"function\") {\n for (let i = 0; i < current.length; i++) {\n if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"object\") {\n const {\n from = 0,\n to = current.length - 1,\n by = 1\n } = part;\n for (let i = from; i <= to; i += by) {\n updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (path.length > 1) {\n updatePath(current[part], path, [part].concat(traversed));\n return;\n }\n prev = current[part];\n traversed = [part].concat(traversed);\n }\n let value = path[0];\n if (typeof value === \"function\") {\n value = value(prev, traversed);\n if (value === prev) return;\n }\n if (part === undefined && value == undefined) return;\n value = unwrap(value);\n if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {\n mergeStoreNode(prev, value);\n } else setProperty(current, part, value);\n}\nfunction createStore(store, options) {\n const unwrappedStore = unwrap(store || {});\n const isArray = Array.isArray(unwrappedStore);\n const wrappedStore = wrap$1(unwrappedStore);\n function setStore(...args) {\n batch(() => {\n isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);\n });\n }\n return [wrappedStore, setStore];\n}\n\nconst proxyTraps = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) return trackSelf(target);\n const nodes = getDataNodes(target);\n const tracked = nodes[property];\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n const isFunction = typeof value === \"function\";\n if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {\n return (...args) => batch(() => Array.prototype[property].apply(receiver, args));\n }\n }\n return isWrappable(value) ? wrap(value) : value;\n },\n set(target, property, value) {\n setProperty(target, property, unwrap(value));\n return true;\n },\n deleteProperty(target, property) {\n setProperty(target, property, undefined);\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor\n};\nfunction wrap(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps)\n });\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n const get = desc[prop].get.bind(p);\n Object.defineProperty(value, prop, {\n get\n });\n }\n if (desc[prop].set) {\n const og = desc[prop].set,\n set = v => batch(() => og.call(p, v));\n Object.defineProperty(value, prop, {\n set\n });\n }\n }\n }\n return p;\n}\nfunction createMutable(state, options) {\n const unwrappedStore = unwrap(state || {});\n const wrappedStore = wrap(unwrappedStore);\n return wrappedStore;\n}\nfunction modifyMutable(state, modifier) {\n batch(() => modifier(unwrap(state)));\n}\n\nfunction applyState(target, parent, property, merge, key) {\n const previous = parent[property];\n if (target === previous) return;\n if (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key]) {\n target !== previous && setProperty(parent, property, target);\n return;\n }\n if (Array.isArray(target)) {\n if (target.length && previous.length && (!merge || key && target[0][key] != null)) {\n let i, j, start, end, newEnd, item, newIndicesNext, keyVal;\n for (start = 0, end = Math.min(previous.length, target.length); start < end && (previous[start] === target[start] || key && previous[start][key] === target[start][key]); start++) {\n applyState(target[start], previous, start, merge, key);\n }\n const temp = new Array(target.length),\n newIndices = new Map();\n for (end = previous.length - 1, newEnd = target.length - 1; end >= start && newEnd >= start && (previous[end] === target[newEnd] || key && previous[end][key] === target[newEnd][key]); end--, newEnd--) {\n temp[newEnd] = previous[end];\n }\n if (start > newEnd || start > end) {\n for (j = start; j <= newEnd; j++) setProperty(previous, j, target[j]);\n for (; j < target.length; j++) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = target[j];\n keyVal = key ? item[key] : item;\n i = newIndices.get(keyVal);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(keyVal, j);\n }\n for (i = start; i <= end; i++) {\n item = previous[i];\n keyVal = key ? item[key] : item;\n j = newIndices.get(keyVal);\n if (j !== undefined && j !== -1) {\n temp[j] = previous[i];\n j = newIndicesNext[j];\n newIndices.set(keyVal, j);\n }\n }\n for (j = start; j < target.length; j++) {\n if (j in temp) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n } else setProperty(previous, j, target[j]);\n }\n } else {\n for (let i = 0, len = target.length; i < len; i++) {\n applyState(target[i], previous, i, merge, key);\n }\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n const targetKeys = Object.keys(target);\n for (let i = 0, len = targetKeys.length; i < len; i++) {\n applyState(target[targetKeys[i]], previous, targetKeys[i], merge, key);\n }\n const previousKeys = Object.keys(previous);\n for (let i = 0, len = previousKeys.length; i < len; i++) {\n if (target[previousKeys[i]] === undefined) setProperty(previous, previousKeys[i], undefined);\n }\n}\nfunction reconcile(value, options = {}) {\n const {\n merge,\n key = \"id\"\n } = options,\n v = unwrap(value);\n return state => {\n if (!isWrappable(state) || !isWrappable(v)) return v;\n batch(() => applyState(v, {\n state\n }, \"state\", merge, key));\n return state;\n };\n}\nconst producers = new WeakMap();\nconst setterTraps = {\n get(target, property) {\n if (property === $RAW) return target;\n const value = target[property];\n let proxy;\n return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;\n },\n set(target, property, value) {\n setProperty(target, property, unwrap(value));\n return true;\n },\n deleteProperty(target, property) {\n setProperty(target, property, undefined);\n return true;\n }\n};\nfunction produce(fn) {\n return state => {\n if (isWrappable(state)) {\n let proxy;\n if (!(proxy = producers.get(state))) {\n producers.set(state, proxy = new Proxy(state, setterTraps));\n }\n fn(proxy);\n }\n return state;\n };\n}\n\nexport { $RAW, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };\n","import composeClasses from \"./composeClasses\";\nimport useBaseThemeProps from \"./useThemeProps\";\nimport { batch, createComputed, splitProps } from \"solid-js\";\nimport { createMutable } from \"solid-js/store\";\nfunction createComponentFactory() {\n return function (options) {\n function useClasses(ownerState) {\n const haveSlotClasses = !!options.slotClasses;\n const compose = () => {\n if (!options.slotClasses)\n throw new Error(`'slotClasses' option is not defined`);\n if (!options.utilityClass)\n throw new Error(`'utilityClass' option is not defined`);\n return composeClasses(options.slotClasses(ownerState), options.utilityClass, ownerState[\"classes\"] ?? \"\");\n };\n const classes = createMutable({});\n if (haveSlotClasses)\n createComputed(() => {\n const result = compose();\n batch(() => {\n for (const slot in result)\n classes[slot] = result[slot];\n });\n });\n return classes;\n }\n function splitInProps(allProps) {\n const [props, otherProps] = splitProps(allProps, options.selfPropNames);\n return { allProps, props, otherProps };\n }\n function useThemeProps(input) {\n return useBaseThemeProps({\n propDefaults: options.propDefaults,\n ...input,\n name: options.name,\n });\n }\n function useProps(props) {\n const themeProps = useThemeProps({ props });\n return splitInProps(themeProps);\n }\n function defineComponent(cb) {\n cb.toString = () => `${options.name}-root`;\n return cb;\n }\n function component(cb) {\n const Component = defineComponent(function Component(inProps) {\n const { allProps, otherProps, props } = useProps(inProps);\n const classes = (options.autoCallUseClasses ?? true)\n ? useClasses(allProps)\n : {};\n return cb({\n allProps,\n otherProps,\n props,\n classes,\n });\n });\n Object.defineProperty(Component, \"name\", { value: cb.name });\n return Component;\n }\n return {\n name: options.name,\n selfPropNames: options.selfPropNames,\n component,\n defineComponent,\n useClasses,\n useThemeProps,\n useProps,\n splitInProps,\n };\n };\n}\nexport default createComponentFactory;\n","import { createContext } from \"solid-js\";\nconst StyledEngineContext = createContext({});\nexport default StyledEngineContext;\n","import deepmerge from \"@suid/utils/deepmerge\";\nfunction mergeStyleProps(values) {\n const result = values.reduce((result, value) => {\n if (\"name\" in value)\n result[`--${value.name}`] = \"0\";\n deepmerge(result, value, {\n clone: false,\n sortKeys: true,\n });\n return result;\n }, {});\n delete result.name;\n return result;\n}\nexport default mergeStyleProps;\n","export function isVar(value) {\n return value.startsWith(\"--\");\n}\nexport function isPrivateVar(value) {\n return value.startsWith(\"__\");\n}\nexport function isSelector(value) {\n return /[^a-z-]/i.test(value) && !isVar(value);\n}\nexport function isGlobalSelector(value) {\n return value.startsWith(\"@global\");\n}\nexport function isMediaQuery(value) {\n return value.startsWith(\"@media\");\n}\nexport function isKeyframes(value) {\n return value.startsWith(\"@keyframes\");\n}\n","export default function snakeCase(value) {\n return value.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n","import { isGlobalSelector, isKeyframes, isMediaQuery, isSelector, isVar, isPrivateVar, } from \"./assert\";\nimport snakeCase from \"@suid/utils/snakeCase\";\nfunction renderSelector(propKey, propValue, selectors = [], options = {}) {\n const subselectors = propKey.split(\",\").map((v) => {\n v = v.trim();\n return v.includes(\"&\") ? v : `& ${v}`;\n });\n return render(propValue, (selectors.length ? selectors : [\"\"]).flatMap((selector) => subselectors.map((v) => v.replace(/&/g, selector).trim())), {\n ...options,\n });\n}\nfunction render(css, selectors = [], options = {}) {\n const props = [];\n const rules = [];\n for (let propKey in css) {\n const propValue = css[propKey];\n if (isPrivateVar(propKey)) {\n continue;\n }\n else if (isGlobalSelector(propKey)) {\n for (const selector in propValue) {\n rules.push(...renderSelector(selector, propValue[selector], [], options));\n }\n }\n else if (isMediaQuery(propKey)) {\n rules.push(...render(propValue, selectors, {\n ...options,\n sublevel: true,\n }).map((v) => `${propKey} {\\n${v}\\n}`));\n }\n else if (isVar(propKey)) {\n if (propValue !== undefined && propValue !== null)\n props.push(`${propKey}: ${propValue};`);\n }\n else if (isKeyframes(propKey)) {\n const keyframes = [];\n for (const k in propValue) {\n keyframes.push(...render(propValue[k], [/^\\d+$/.test(k) ? `${k}%` : k], {\n ...options,\n sublevel: true,\n }));\n }\n rules.push(`${propKey} {\\n${keyframes.join(\"\\n\")}\\n}`);\n }\n else if (isSelector(propKey)) {\n rules.push(...renderSelector(propKey, propValue, selectors, options));\n }\n else if (options.extraProperties && propKey in options.extraProperties) {\n const extraProps = options.extraProperties[propKey](propValue);\n for (const extraPropKey in extraProps) {\n const inValue = extraProps[extraPropKey];\n const value = options.onPropertyValue\n ? options.onPropertyValue(extraPropKey, inValue)\n : inValue;\n if (value !== undefined && value !== null)\n props.push(`${snakeCase(extraPropKey)}: ${value};`);\n }\n }\n else {\n propKey = snakeCase(propKey);\n const value = options.onPropertyValue\n ? options.onPropertyValue(propKey, propValue)\n : propValue;\n if (value !== undefined && value !== null)\n props.push(`${propKey}: ${value};`);\n }\n }\n const renderProps = (level) => {\n const pad = \"\\t\".repeat(level);\n return `${pad}${props.join(`\\n${pad}`)}`;\n };\n if (selectors.length) {\n const pad = options.sublevel ? `\\t` : ``;\n const selectorStr = pad + selectors.join(`,\\n${pad}`);\n return [\n ...(props.length\n ? [\n `${selectorStr} {\\n${renderProps(options.sublevel ? 2 : 1)}\\n${pad}}`,\n ]\n : []),\n ...rules,\n ];\n }\n else {\n return [...(props.length ? [renderProps(0)] : []), ...rules];\n }\n}\nexport default render;\n","export default function randomString() {\n return Math.random().toString(36).substring(2, 15).slice(0, 8);\n}\n","export default function resolveFunction(value, args) {\n if (typeof value === \"function\")\n value = value(...(args || []));\n return value;\n}\n","export default function toArray(value) {\n return value ? (Array.isArray(value) ? value : [value]) : [];\n}\n","import render from \"./render\";\nimport randomString from \"@suid/utils/randomString\";\nimport resolveFunction from \"@suid/utils/resolveFunction\";\nimport toArray from \"@suid/utils/toArray\";\nfunction create(name, rules) {\n const id = randomString().slice(0, 6);\n return {\n id,\n name: name,\n className: `${name}-${id}`,\n rules: rules.replaceAll(`$id`, `${id}`),\n };\n}\nfunction createStyleObject(options) {\n const className = `${options.name}-$id`;\n const propsValues = toArray(resolveFunction(options.props));\n const rules = propsValues\n .map((v) => typeof v === \"string\"\n ? `.${className} {\\n${v}\\n}`\n : render(v, [`.${className}`], {\n extraProperties: options.extraProperties,\n }).join(\"\\n\"))\n .join(\"\\n\");\n const styleObject = options.cache?.get(rules) || create(options.name, rules);\n if (options.cache)\n options.cache.set(rules, styleObject);\n return styleObject;\n}\nexport default createStyleObject;\n","function setStyleElementText(element, text) {\n if (\"styleSheet\" in element) {\n element[\"styleSheet\"].cssText = text;\n }\n else {\n element.innerText = \"\";\n element.appendChild(document.createTextNode(text));\n }\n}\nexport default setStyleElementText;\n","import setStyleElementText from \"./setStyleElementText\";\nfunction setAttributes(element, attributes) {\n for (const name in attributes) {\n const value = attributes[name];\n if (value !== undefined) {\n if (value === null) {\n element.removeAttribute(name);\n }\n else {\n element.setAttribute(name, value);\n }\n }\n }\n}\nfunction createStyleElement(css, attributes) {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n if (attributes)\n setAttributes(element, attributes);\n setStyleElementText(element, css);\n return element;\n}\nexport default createStyleElement;\n","function registerStyleElementUsage(style) {\n let uses = Number(style.getAttribute(\"data-uses\"));\n uses++;\n style.setAttribute(\"data-uses\", uses.toString());\n}\nexport default registerStyleElementUsage;\n","import createStyleElement from \"./createStyleElement\";\nimport registerStyleElementUsage from \"./registerStyleElementUsage\";\nimport setStyleElementText from \"./setStyleElementText\";\nfunction appendStyleElement(css, attributes) {\n if (Array.isArray(css))\n css = css.join(\"\\n\");\n const id = attributes?.[\"id\"];\n const head = document.head || document.getElementsByTagName(\"head\")[0];\n const prevElement = id && document.getElementById(id);\n if (prevElement && prevElement instanceof HTMLStyleElement) {\n setStyleElementText(prevElement, css);\n registerStyleElementUsage(prevElement);\n return prevElement;\n }\n else {\n if (prevElement)\n prevElement.remove();\n const element = createStyleElement(css, attributes);\n registerStyleElementUsage(element);\n head.appendChild(element);\n return element;\n }\n}\nexport default appendStyleElement;\n","function findStyleElement(id) {\n return document.getElementById(id);\n}\nexport default findStyleElement;\n","function unregisterStyleElementUsage(style) {\n let uses = Number(style.getAttribute(\"data-uses\"));\n uses--;\n if (uses <= 0) {\n style.remove();\n }\n else {\n style.setAttribute(\"data-uses\", uses.toString());\n }\n}\nexport default unregisterStyleElementUsage;\n","import StyledEngineContext from \"./StyledEngineProvider/StyledEngineContext\";\nimport mergeStyleProps from \"./mergeStyleProps\";\nimport createStyleObject from \"@suid/css/createStyleObject\";\nimport appendStyleElement from \"@suid/css/dom/appendStyleElement\";\nimport findStyleElement from \"@suid/css/dom/findStyleElement\";\nimport registerStyleElementUsage from \"@suid/css/dom/registerStyleElementUsage\";\nimport unregisterStyleElementUsage from \"@suid/css/dom/unregisterStyleElementUsage\";\nimport { createRenderEffect, createSignal, onCleanup, useContext, } from \"solid-js\";\nconst styleObjectCache = new Map();\nfunction normalizeStyleProps(props) {\n if (!props)\n return [];\n return (Array.isArray(props) ? props : [props])\n // https://github.com/microsoft/TypeScript/issues/44408\n .flat(Infinity)\n .filter((v) => !!v);\n}\nfunction createStyle(value) {\n const context = useContext(StyledEngineContext);\n const [name, setName] = createSignal(\"\");\n let styleElement;\n createRenderEffect((prevResult) => {\n const propsValue = value();\n let styleObject;\n if (propsValue) {\n styleObject = createStyleObject({\n name: \"css\",\n props: mergeStyleProps(normalizeStyleProps(propsValue)),\n cache: styleObjectCache,\n });\n styleElement = findStyleElement(styleObject.id);\n if (styleElement) {\n registerStyleElementUsage(styleElement);\n }\n else {\n styleElement = appendStyleElement(styleObject.rules, {\n id: styleObject.id,\n once: context.cache?.nonce,\n });\n }\n }\n if (prevResult?.styleElement) {\n unregisterStyleElementUsage(prevResult.styleElement);\n }\n if (typeof styleObject?.className === \"string\") {\n setName(styleObject.className);\n }\n else {\n setName(\"\");\n }\n return {\n className: styleObject?.className,\n styleElement,\n };\n }, undefined);\n onCleanup(() => {\n if (styleElement)\n unregisterStyleElementUsage(styleElement);\n });\n return name;\n}\nexport default createStyle;\n","import createComponentFactory from \"@suid/base/createComponentFactory\";\nimport createStyle from \"@suid/system/createStyle\";\nconst $ = createComponentFactory()({\n name: \"MuiGlobalStyles\",\n selfPropNames: [\"styles\"],\n});\n/**\n *\n * Demos:\n *\n * - [How To Customize](https://mui.com/customization/how-to-customize/)\n *\n * API:\n *\n * - [GlobalStyles API](https://mui.com/api/global-styles/)\n */\nconst GlobalStyles = $.component(function GlobalStyles({ props }) {\n createStyle(() => ({\n \"@global\": props.styles || {},\n }));\n return <>;\n});\nexport default GlobalStyles;\n","import merge from \"@suid/utils/merge\";\nexport const componentsDefault = createComponentsOptions({});\nexport function createComponentsOptions(options) {\n return options;\n}\nexport function createComponents(data) {\n const result = {\n ...merge({}, componentsDefault, data ?? {}),\n };\n return result;\n}\n","export default function createMixins(breakpoints, \n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nspacing = undefined, mixins = {}) {\n return {\n toolbar: {\n minHeight: 56,\n [`${breakpoints.up(\"xs\")} and (orientation: landscape)`]: {\n minHeight: 48,\n },\n [breakpoints.up(\"sm\")]: {\n minHeight: 64,\n },\n },\n ...mixins,\n };\n}\n","const common = {\n black: \"#000\",\n white: \"#fff\",\n};\nexport default common;\n","const red = {\n 50: \"#ffebee\",\n 100: \"#ffcdd2\",\n 200: \"#ef9a9a\",\n 300: \"#e57373\",\n 400: \"#ef5350\",\n 500: \"#f44336\",\n 600: \"#e53935\",\n 700: \"#d32f2f\",\n 800: \"#c62828\",\n 900: \"#b71c1c\",\n A100: \"#ff8a80\",\n A200: \"#ff5252\",\n A400: \"#ff1744\",\n A700: \"#d50000\",\n};\nexport default red;\n","const purple = {\n 50: \"#f3e5f5\",\n 100: \"#e1bee7\",\n 200: \"#ce93d8\",\n 300: \"#ba68c8\",\n 400: \"#ab47bc\",\n 500: \"#9c27b0\",\n 600: \"#8e24aa\",\n 700: \"#7b1fa2\",\n 800: \"#6a1b9a\",\n 900: \"#4a148c\",\n A100: \"#ea80fc\",\n A200: \"#e040fb\",\n A400: \"#d500f9\",\n A700: \"#aa00ff\",\n};\nexport default purple;\n","const blue = {\n 50: \"#e3f2fd\",\n 100: \"#bbdefb\",\n 200: \"#90caf9\",\n 300: \"#64b5f6\",\n 400: \"#42a5f5\",\n 500: \"#2196f3\",\n 600: \"#1e88e5\",\n 700: \"#1976d2\",\n 800: \"#1565c0\",\n 900: \"#0d47a1\",\n A100: \"#82b1ff\",\n A200: \"#448aff\",\n A400: \"#2979ff\",\n A700: \"#2962ff\",\n};\nexport default blue;\n","const lightBlue = {\n 50: \"#e1f5fe\",\n 100: \"#b3e5fc\",\n 200: \"#81d4fa\",\n 300: \"#4fc3f7\",\n 400: \"#29b6f6\",\n 500: \"#03a9f4\",\n 600: \"#039be5\",\n 700: \"#0288d1\",\n 800: \"#0277bd\",\n 900: \"#01579b\",\n A100: \"#80d8ff\",\n A200: \"#40c4ff\",\n A400: \"#00b0ff\",\n A700: \"#0091ea\",\n};\nexport default lightBlue;\n","const green = {\n 50: \"#e8f5e9\",\n 100: \"#c8e6c9\",\n 200: \"#a5d6a7\",\n 300: \"#81c784\",\n 400: \"#66bb6a\",\n 500: \"#4caf50\",\n 600: \"#43a047\",\n 700: \"#388e3c\",\n 800: \"#2e7d32\",\n 900: \"#1b5e20\",\n A100: \"#b9f6ca\",\n A200: \"#69f0ae\",\n A400: \"#00e676\",\n A700: \"#00c853\",\n};\nexport default green;\n","const orange = {\n 50: \"#fff3e0\",\n 100: \"#ffe0b2\",\n 200: \"#ffcc80\",\n 300: \"#ffb74d\",\n 400: \"#ffa726\",\n 500: \"#ff9800\",\n 600: \"#fb8c00\",\n 700: \"#f57c00\",\n 800: \"#ef6c00\",\n 900: \"#e65100\",\n A100: \"#ffd180\",\n A200: \"#ffab40\",\n A400: \"#ff9100\",\n A700: \"#ff6d00\",\n};\nexport default orange;\n","const grey = {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#eeeeee\",\n 300: \"#e0e0e0\",\n 400: \"#bdbdbd\",\n 500: \"#9e9e9e\",\n 600: \"#757575\",\n 700: \"#616161\",\n 800: \"#424242\",\n 900: \"#212121\",\n A100: \"#f5f5f5\",\n A200: \"#eeeeee\",\n A400: \"#bdbdbd\",\n A700: \"#616161\",\n};\nexport default grey;\n","/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== \"production\") {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return Math.min(Math.max(min, value), max);\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n color = color.substr(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, \"g\");\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map((n) => n + n);\n }\n return colors\n ? `rgb${colors.length === 4 ? \"a\" : \"\"}(${colors\n .map((n, index) => {\n return index < 3\n ? parseInt(n, 16)\n : Math.round((parseInt(n, 16) / 255) * 1000) / 1000;\n })\n .join(\", \")})`\n : \"\";\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n // Idempotent\n if (typeof color !== \"string\") {\n return color;\n }\n if (color.charAt(0) === \"#\") {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf(\"(\");\n const type = color.substring(0, marker);\n if ([\"rgb\", \"rgba\", \"hsl\", \"hsla\", \"color\"].indexOf(type) === -1) {\n throw new Error(\"MUI: Unsupported `%s` color.\\n\" +\n \"The following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color(). \" +\n color);\n }\n const valuesInput = color.substring(marker + 1, color.length - 1);\n let values;\n let colorSpace;\n if (type === \"color\") {\n values = valuesInput.split(\" \");\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === \"/\") {\n values[3] = values[3].substr(1);\n }\n if ([\"srgb\", \"display-p3\", \"a98-rgb\", \"prophoto-rgb\", \"rec-2020\"].indexOf(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n colorSpace) === -1) {\n throw new Error(\"MUI: unsupported `%s` color space.\\n\" +\n \"The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020. \" +\n colorSpace);\n }\n }\n else {\n values = valuesInput.split(\",\");\n }\n return { type, values: values.map((value) => parseFloat(value)), colorSpace };\n}\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n const { type, colorSpace } = color;\n const { values } = color;\n let newValues;\n if (type.indexOf(\"rgb\") !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n newValues = values\n .map((n, i) => (i < 3 ? parseInt(n.toString(), 10) : n))\n .join(\",\");\n }\n else if (type.indexOf(\"hsl\") !== -1) {\n newValues = values\n .map((n, i) => (i === 1 || i === 2 ? `${n}%` : n))\n .join(\",\");\n }\n if (type.indexOf(\"color\") !== -1) {\n newValues = `${colorSpace} ${values.join(\" \")}`;\n }\n else {\n newValues = `${values.join(\", \")}`;\n }\n return `${type}(${newValues})`;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf(\"#\") === 0) {\n return color;\n }\n const { values } = decomposeColor(color);\n return `#${values\n .map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n))\n .join(\"\")}`;\n}\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n const c = decomposeColor(color);\n const { values } = c;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = \"rgb\";\n const rgb = [\n Math.round(f(0) * 255),\n Math.round(f(8) * 255),\n Math.round(f(4) * 255),\n ];\n if (c.type === \"hsla\") {\n type += \"a\";\n rgb.push(values[3]);\n }\n return recomposeColor({ type, values: rgb });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n const { type, values } = decomposeColor(color);\n let rgb = type === \"hsl\" ? decomposeColor(hslToRgb(color)).values : values;\n rgb = rgb.map((val) => {\n if (type !== \"color\") {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n // eslint-disable-next-line prefer-const\n let { type, values } = decomposeColor(color);\n value = clamp(value);\n if (type === \"rgb\" || type === \"hsl\") {\n type += \"a\";\n }\n if (type === \"color\") {\n values[3] = `/${value}`;\n }\n else {\n values[3] = value;\n }\n return recomposeColor({ type, values });\n}\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(inputColor, coefficient) {\n const color = decomposeColor(inputColor);\n coefficient = clamp(coefficient);\n if (color.type.indexOf(\"hsl\") !== -1) {\n color.values[2] *= 1 - coefficient;\n }\n else if (color.type.indexOf(\"rgb\") !== -1 ||\n color.type.indexOf(\"color\") !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(inputColor, coefficient) {\n const color = decomposeColor(inputColor);\n coefficient = clamp(coefficient);\n if (color.type.indexOf(\"hsl\") !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n }\n else if (color.type.indexOf(\"rgb\") !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n }\n else if (color.type.indexOf(\"color\") !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5\n ? darken(color, coefficient)\n : lighten(color, coefficient);\n}\n","import { common, green, lightBlue, orange, red, blue, purple, grey, } from \"../colors\";\nimport { darken, getContrastRatio, lighten, } from \"@suid/system/colorManipulator\";\nimport merge from \"@suid/utils/merge\";\nexport const useLightOptions = () => ({\n text: {\n primary: \"rgba(0, 0, 0, 0.87)\",\n secondary: \"rgba(0, 0, 0, 0.6)\",\n disabled: \"rgba(0, 0, 0, 0.38)\",\n },\n divider: \"rgba(0, 0, 0, 0.12)\",\n background: {\n paper: common.white,\n default: common.white,\n },\n action: {\n active: \"rgba(0, 0, 0, 0.54)\",\n hover: \"rgba(0, 0, 0, 0.04)\",\n hoverOpacity: 0.04,\n selected: \"rgba(0, 0, 0, 0.08)\",\n selectedOpacity: 0.08,\n disabled: \"rgba(0, 0, 0, 0.26)\",\n disabledBackground: \"rgba(0, 0, 0, 0.12)\",\n disabledOpacity: 0.38,\n focus: \"rgba(0, 0, 0, 0.12)\",\n focusOpacity: 0.12,\n activatedOpacity: 0.12,\n },\n});\nexport const lightColors = {\n primary: {\n main: blue[700],\n light: blue[400],\n dark: blue[800],\n },\n secondary: {\n main: purple[500],\n light: purple[300],\n dark: purple[700],\n },\n error: {\n main: red[700],\n light: red[400],\n dark: red[800],\n },\n info: {\n main: lightBlue[700],\n light: lightBlue[800],\n dark: lightBlue[900],\n },\n success: {\n main: green[800],\n light: green[500],\n dark: green[900],\n },\n warning: {\n main: \"#ED6C02\",\n light: orange[500],\n dark: orange[900],\n },\n};\nexport const useDarkOptions = () => ({\n text: {\n primary: common.white,\n secondary: \"rgba(255, 255, 255, 0.7)\",\n disabled: \"rgba(255, 255, 255, 0.5)\",\n },\n divider: \"rgba(255, 255, 255, 0.12)\",\n background: {\n paper: \"#121212\",\n default: \"#121212\",\n },\n action: {\n active: common.white,\n hover: \"rgba(255, 255, 255, 0.08)\",\n hoverOpacity: 0.08,\n selected: \"rgba(255, 255, 255, 0.16)\",\n selectedOpacity: 0.16,\n disabled: \"rgba(255, 255, 255, 0.3)\",\n disabledBackground: \"rgba(255, 255, 255, 0.12)\",\n disabledOpacity: 0.38,\n focus: \"rgba(255, 255, 255, 0.12)\",\n focusOpacity: 0.12,\n activatedOpacity: 0.24,\n },\n});\nexport const darkColors = {\n primary: { main: blue[200], light: blue[50], dark: blue[400] },\n secondary: { main: purple[200], light: purple[50], dark: purple[400] },\n error: { main: red[500], light: red[300], dark: red[700] },\n info: { main: lightBlue[400], light: lightBlue[300], dark: lightBlue[700] },\n success: { main: green[400], light: green[300], dark: green[700] },\n warning: { main: orange[400], light: orange[300], dark: orange[700] },\n};\nconst modes = { light: useLightOptions, dark: useDarkOptions };\nfunction getContrastText(background, contrastThreshold) {\n return getContrastRatio(background, common.white) >= contrastThreshold\n ? common.white\n : \"rgba(0, 0, 0, 0.87)\";\n}\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = typeof tonalOffset === \"number\" ? tonalOffset : tonalOffset.light;\n const tonalOffsetDark = typeof tonalOffset === \"number\" ? tonalOffset * 1.5 : tonalOffset.dark;\n if (!intent[direction]) {\n // eslint-disable-next-line no-prototype-builtins\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n }\n else if (direction === \"light\") {\n intent.light = lighten(intent.main, tonalOffsetLight);\n }\n else if (direction === \"dark\") {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction augmentColor(data) {\n const color = { ...data.color };\n const mainShade = data.mainShade ?? 500;\n if (!data.color.main && data.color[mainShade])\n color.main = data.color[mainShade];\n addLightOrDark(color, \"light\", data.lightShade ?? 300, data.tonalOffset);\n addLightOrDark(color, \"dark\", data.darkShade ?? 700, data.tonalOffset);\n if (!color.contrastText)\n color.contrastText = getContrastText(color.main, data.contrastThreshold);\n return color;\n}\nexport const usePalleteDefaults = () => createPaletteOptions({\n mode: \"light\",\n tonalOffset: 0.2,\n contrastThreshold: 3,\n grey,\n common,\n});\nexport function createPaletteOptions(data) {\n return data;\n}\nexport function createPalette(options) {\n const colorNames = [\n \"error\",\n \"info\",\n \"primary\",\n \"secondary\",\n \"success\",\n \"warning\",\n ];\n const palleteDefaults = usePalleteDefaults();\n const result = {\n ...merge({}, palleteDefaults, modes[options?.mode ?? palleteDefaults.mode](), options),\n isColorName(name) {\n return colorNames.includes(name);\n },\n getColorObject(color) {\n return result[color];\n },\n getColor(color) {\n return result.mode === \"light\" ? result[color].light : result[color].dark;\n },\n augmentColor(data) {\n return augmentColor({\n ...data,\n tonalOffset: result.tonalOffset,\n contrastThreshold: result.contrastThreshold,\n });\n },\n getContrastText(background) {\n return getContrastText(background, result.contrastThreshold);\n },\n };\n const getDefaultColor = (color) => result.mode === \"light\" ? lightColors[color] : darkColors[color];\n result.primary = result.augmentColor({\n color: result.primary || getDefaultColor(\"primary\"),\n });\n result.secondary = result.augmentColor({\n color: result.secondary || getDefaultColor(\"secondary\"),\n mainShade: \"A400\",\n lightShade: \"A200\",\n darkShade: \"A700\",\n });\n result.error = result.augmentColor({\n color: result.error || getDefaultColor(\"error\"),\n });\n result.warning = result.augmentColor({\n color: result.warning || getDefaultColor(\"warning\"),\n });\n result.info = result.augmentColor({\n color: result.info || getDefaultColor(\"info\"),\n });\n result.success = result.augmentColor({\n color: result.success || getDefaultColor(\"success\"),\n });\n return result;\n}\n","const cache = {};\nconst shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createCssShadow(...px) {\n return [\n `${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`,\n `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`,\n `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`,\n ].join(\",\");\n}\nconst shadows = [\n () => \"none\",\n () => createCssShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0),\n () => createCssShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0),\n () => createCssShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0),\n () => createCssShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0),\n () => createCssShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0),\n () => createCssShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0),\n () => createCssShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1),\n () => createCssShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2),\n () => createCssShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2),\n () => createCssShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3),\n () => createCssShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3),\n () => createCssShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4),\n () => createCssShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4),\n () => createCssShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4),\n () => createCssShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5),\n () => createCssShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5),\n () => createCssShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5),\n () => createCssShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6),\n () => createCssShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6),\n () => createCssShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7),\n () => createCssShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7),\n () => createCssShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7),\n () => createCssShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8),\n () => createCssShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8),\n];\nexport function createShadows() {\n return new Proxy([], {\n get: (target, p) => {\n if (typeof p !== \"string\" || isNaN(Number(p)))\n return target[p];\n if (p in cache)\n return cache[p];\n return (cache[p] = shadows[p]());\n },\n });\n}\n","export const easing = {\n easeInOut: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n easeOut: \"cubic-bezier(0.0, 0, 0.2, 1)\",\n easeIn: \"cubic-bezier(0.4, 0, 1, 1)\",\n sharp: \"cubic-bezier(0.4, 0, 0.6, 1)\",\n};\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n standard: 300,\n complex: 375,\n enteringScreen: 225,\n leavingScreen: 195,\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = {\n ...easing,\n ...inputTransitions.easing,\n };\n const mergedDuration = {\n ...duration,\n ...inputTransitions.duration,\n };\n const create = (props = [\"all\"], options = {}) => {\n const { duration: durationOption = mergedDuration.standard, easing: easingOption = mergedEasing.easeInOut, delay = 0, ...other } = options;\n if (process.env.NODE_ENV !== \"production\") {\n const isString = (value) => typeof value === \"string\";\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n const isNumber = (value) => !isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(\",\")}].`);\n }\n }\n return (Array.isArray(props) ? props : [props])\n .map((animatedProp) => `${animatedProp} ${typeof durationOption === \"string\"\n ? durationOption\n : formatMs(durationOption)} ${easingOption} ${typeof delay === \"string\" ? delay : formatMs(delay)}`)\n .join(\",\");\n };\n return {\n getAutoHeightDuration,\n create,\n ...inputTransitions,\n easing: mergedEasing,\n duration: mergedDuration,\n };\n}\n","import merge from \"@suid/utils/merge\";\nconst fontWeight = {\n light: 300,\n regular: 400,\n medium: 500,\n bold: 700,\n};\nexport const typographyDefaults = createTypographyOptions({\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\n fontSize: 14,\n htmlFontSize: 16,\n h1: {},\n h2: {},\n h3: {},\n h4: {},\n h5: {},\n h6: {},\n subtitle1: {},\n subtitle2: {},\n body1: {},\n body2: {},\n button: {},\n caption: {},\n overline: {},\n fontWeightLight: 300,\n fontWeightRegular: 400,\n fontWeightMedium: 500,\n fontWeightBold: 700,\n});\nexport function createTypographyOptions(options) {\n return options;\n}\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nexport function makeVariant(base, fontWeight, size, lineHeight, letterSpacing, casing) {\n return {\n fontFamily: base.fontFamily,\n fontWeight,\n fontSize: base.pxToRem(size),\n lineHeight: `${lineHeight}`,\n letterSpacing: `${round(letterSpacing / size)}em`,\n ...(casing ? { textTransform: \"uppercase\" } : {}),\n };\n}\nexport function createTypography(options = {}) {\n const base = {\n fontFamily: options.fontFamily ?? typographyDefaults.fontFamily,\n fontSize: options.fontSize ?? typographyDefaults.fontSize,\n htmlFontSize: options?.htmlFontSize ?? typographyDefaults.htmlFontSize,\n pxToRem: (size) => {\n const coef = base.fontSize / 14;\n return `${(size / base.htmlFontSize) * coef}rem`;\n },\n };\n return merge(base, {\n h1: makeVariant(base, fontWeight.light, 96, 1.167, -1.5),\n h2: makeVariant(base, fontWeight.light, 60, 1.2, -0.5),\n h3: makeVariant(base, fontWeight.regular, 48, 1.167, 0),\n h4: makeVariant(base, fontWeight.regular, 34, 1.235, 0.25),\n h5: makeVariant(base, fontWeight.regular, 24, 1.334, 0),\n h6: makeVariant(base, fontWeight.medium, 20, 1.6, 0.15),\n subtitle1: makeVariant(base, fontWeight.regular, 16, 1.75, 0.15),\n subtitle2: makeVariant(base, fontWeight.medium, 14, 1.57, 0.1),\n body1: makeVariant(base, fontWeight.regular, 16, 1.5, 0.15),\n body2: makeVariant(base, fontWeight.regular, 14, 1.43, 0.15),\n button: makeVariant(base, fontWeight.medium, 14, 1.75, 0.4, true),\n caption: makeVariant(base, fontWeight.regular, 12, 1.66, 0.4),\n overline: makeVariant(base, fontWeight.regular, 12, 2.66, 1, true),\n }, typographyDefaults, options);\n}\n","import merge from \"@suid/utils/merge\";\nexport const zIndexDefaults = createZIndexOptions({\n mobileStepper: 1000,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500,\n});\nexport function createZIndexOptions(data) {\n return data;\n}\nexport function createZIndex(data) {\n const result = {\n ...merge({}, zIndexDefaults, data),\n };\n return result;\n}\n","import { createComponents, } from \"./createComponents\";\nimport createMixins from \"./createMixins\";\nimport { createPalette } from \"./createPalette\";\nimport { createShadows } from \"./createShadows\";\nimport createTransitions from \"./createTransitions\";\nimport { createTypography, } from \"./createTypography\";\nimport { createZIndex } from \"./createZIndex\";\nimport createBreakpoints from \"@suid/system/createTheme/createBreakpoints\";\nimport createSpacing from \"@suid/system/createTheme/createSpacing\";\nimport createShape from \"@suid/system/createTheme/shape\";\nexport function createThemeOptions(options) {\n return options;\n}\nexport function createTheme(input = {}) {\n const theme = {\n direction: \"ltr\",\n ...input,\n };\n function def(key, defaults) {\n const inputValue = input[key];\n Object.defineProperty(theme, key, {\n configurable: true,\n enumerable: true,\n ...(typeof inputValue === \"function\"\n ? {\n get: inputValue,\n }\n : {\n value: defaults({ [key]: inputValue }),\n }),\n });\n }\n def(\"breakpoints\", (input) => createBreakpoints(input.breakpoints));\n def(\"components\", (input) => createComponents(input.components));\n def(\"palette\", (input) => createPalette(input.palette));\n def(\"shape\", (input) => createShape(input.shape));\n def(\"spacing\", (input) => createSpacing(input.spacing));\n def(\"typography\", (input) => createTypography(input.typography));\n def(\"shadows\", () => createShadows());\n def(\"transitions\", () => createTransitions({}));\n def(\"zIndex\", (input) => createZIndex(input.zIndex));\n def(\"mixins\", () => createMixins(theme.breakpoints));\n return theme;\n}\nexport default createTheme;\n","import createTheme from \"./createTheme\";\nimport makeGetDefaultTheme from \"@suid/system/makeGetDefaultTheme\";\nexport default makeGetDefaultTheme(createTheme);\n","import getDefaultTheme from \"./getDefaultTheme\";\nimport ThemeContext from \"@suid/system/ThemeContext\";\nimport useSysTheme from \"@suid/system/useTheme\";\nfunction useTheme(defaultTheme = getDefaultTheme) {\n return useSysTheme(defaultTheme, ThemeContext);\n}\nexport default useTheme;\n","import GlobalStyles from \"../GlobalStyles\";\nimport { useTheme } from \"../styles\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nconst $ = createComponentFactory()({\n name: \"MuiCssBaseline\",\n selfPropNames: [\"children\", \"enableColorScheme\"],\n propDefaults: ({ set }) => set({\n enableColorScheme: false,\n }),\n});\nexport const html = (theme, enableColorScheme) => ({\n WebkitFontSmoothing: \"antialiased\",\n MozOsxFontSmoothing: \"grayscale\",\n // Change from `box-sizing: content-box` so that `width`\n // is not affected by `padding` or `border`.\n boxSizing: \"border-box\",\n // Fix font resize problem in iOS\n WebkitTextSizeAdjust: \"100%\",\n ...(enableColorScheme && { colorScheme: theme.palette.mode }),\n});\nexport const body = (theme) => ({\n color: theme.palette.text.primary,\n ...theme.typography.body1,\n backgroundColor: theme.palette.background.default,\n \"@media print\": {\n // Save printer ink.\n backgroundColor: theme.palette.common.white,\n },\n});\nexport const styles = (theme, enableColorScheme = false) => {\n const defaultStyles = {\n html: html(theme, enableColorScheme),\n \"*, *::before, *::after\": {\n boxSizing: \"inherit\",\n },\n \"strong, b\": {\n fontWeight: theme.typography.fontWeightBold,\n },\n body: {\n margin: 0,\n ...body(theme),\n // Add support for document.body.requestFullScreen().\n // Other elements, if background transparent, are not supported.\n \"&::backdrop\": {\n backgroundColor: theme.palette.background.default,\n },\n },\n };\n /*const themeOverrides = theme.components?.MuiCssBaseline?.styleOverrides;\n if (themeOverrides) {\n defaultStyles = [defaultStyles, themeOverrides];\n }*/\n return defaultStyles;\n};\n/**\n * Kickstart an elegant, consistent, and simple baseline to build upon.\n *\n * Demos:\n *\n * - [Css Baseline](https://mui.com/components/css-baseline/)\n *\n * API:\n *\n * - [CssBaseline API](https://mui.com/api/css-baseline/)\n */\nconst CssBaseline = $.component(function CssBaseline({ props }) {\n const theme = useTheme();\n return ;\n});\nexport default CssBaseline;\n","import{createComponent as i}from\"solid-js/web\";import{createContext as c}from\"solid-js\";var n=c(),b=e=>i(n.Provider,{get value(){return e.client},get children(){return e.children}});import{createRenderEffect as h,onCleanup as S,useContext as m}from\"solid-js\";var t=()=>{let e=m(n);if(!e)throw new Error(\"createSupabase must be used within a SupabaseContext.Provider\");return e};function g(){return t().auth}function v(){return t().storage}function A(){return t().from}function E(e){let a=t(),{data:r}=a.auth.onAuthStateChange((u,p)=>{e(u,p)});h(()=>{a.auth.session()&&e(\"SIGNED_IN\",a.auth.session()),S(()=>{r==null||r.unsubscribe()})})}export{b as SupabaseProvider,E as createOnAuthStateChange,t as createSupabase,g as createSupabaseAuth,A as createSupabaseFrom,v as createSupabaseStorage};\n","import { Component, JSX, Show } from \"solid-js\";\nimport { Navigate } from \"solid-app-router\";\nimport { createSupabaseAuth } from \"solid-supabase\";\n\nexport interface LoginGuardProps {\n fallback: string\n children?: JSX.Element,\n}\n\nconst LoginGuard: Component = (props) => {\n const auth = createSupabaseAuth();\n return }>{props.children};\n};\n\nexport default LoginGuard;\n","import { Component, lazy } from \"solid-js\";\nimport { Route, Routes } from \"solid-app-router\";\nimport CssBaseline from \"@suid/material/CssBaseline\";\nimport LoginGuard from \"./helpers/LoginGuard\";\n\nconst Login = lazy(() => import(\"./pages/Login\"));\nconst User = lazy(() => import(\"./pages/User\"));\nconst Index = lazy(() => import(\"./pages/Index\"));\nconst Room = lazy(() => import(\"./pages/Room\"));\n\nconst DevDrawBroad = lazy(() => import(\"./pages/DevDrawBroad\"));\nconst DevMesh = lazy(() => import(\"./pages/DevMesh\"));\n\nconst App: Component = () => {\n return (<>\n \n \n \n \n \n }\n />\n } />\n } />\n } />\n } />\n } />\n \n );\n};\n\nexport default App;\n","\nexport default {\n url: \"https://ocfdltqnwejgikshcagx.supabase.co\",\n key: \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9jZmRsdHFud2VqZ2lrc2hjYWd4Iiwicm9sZSI6ImFub24iLCJpYXQiOjE2NTA1MDkzNTEsImV4cCI6MTk2NjA4NTM1MX0.M7XD6RGPFsggSzG-JrfXvkW01wXD9JjQmIajKIc8N3o\",\n};\n","export const version = '1.35.3';\n//# sourceMappingURL=version.js.map","// constants.ts\nimport { version } from './version';\nexport const DEFAULT_HEADERS = { 'X-Client-Info': `supabase-js/${version}` };\nexport const STORAGE_KEY = 'supabase.auth.token';\n//# sourceMappingURL=constants.js.map","// helpers.ts\nexport function uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\nexport function stripTrailingSlash(url) {\n return url.replace(/\\/$/, '');\n}\nexport const isBrowser = () => typeof window !== 'undefined';\n//# sourceMappingURL=helpers.js.map","// generated by genversion\nexport const version = '1.22.15';\n//# sourceMappingURL=version.js.map","import { version } from './version';\nexport const GOTRUE_URL = 'http://localhost:9999';\nexport const AUDIENCE = '';\nexport const DEFAULT_HEADERS = { 'X-Client-Info': `gotrue-js/${version}` };\nexport const EXPIRY_MARGIN = 10; // in seconds\nexport const NETWORK_FAILURE = {\n ERROR_MESSAGE: 'Request Failed',\n MAX_RETRIES: 10,\n RETRY_INTERVAL: 2, // in deciseconds\n};\nexport const STORAGE_KEY = 'supabase.auth.token';\nexport const COOKIE_OPTIONS = {\n name: 'sb',\n lifetime: 60 * 60 * 8,\n domain: '',\n path: '/',\n sameSite: 'lax',\n};\n//# sourceMappingURL=constants.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { NETWORK_FAILURE } from './constants';\nconst _getErrorMessage = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err);\nconst handleError = (error, reject) => {\n if (!(error === null || error === void 0 ? void 0 : error.status)) {\n return reject({ message: NETWORK_FAILURE.ERROR_MESSAGE });\n }\n if (typeof error.json !== 'function') {\n return reject(error);\n }\n error.json().then((err) => {\n return reject({\n message: _getErrorMessage(err),\n status: (error === null || error === void 0 ? void 0 : error.status) || 500,\n });\n });\n};\nconst _getRequestParams = (method, options, body) => {\n const params = { method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {} };\n if (method === 'GET') {\n return params;\n }\n params.headers = Object.assign({ 'Content-Type': 'text/plain;charset=UTF-8' }, options === null || options === void 0 ? void 0 : options.headers);\n params.body = JSON.stringify(body);\n return params;\n};\nfunction _handleRequest(fetcher, method, url, options, body) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n fetcher(url, _getRequestParams(method, options, body))\n .then((result) => {\n if (!result.ok)\n throw result;\n if (options === null || options === void 0 ? void 0 : options.noResolveJson)\n return resolve;\n return result.json();\n })\n .then((data) => resolve(data))\n .catch((error) => handleError(error, reject));\n });\n });\n}\nexport function get(fetcher, url, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return _handleRequest(fetcher, 'GET', url, options);\n });\n}\nexport function post(fetcher, url, body, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return _handleRequest(fetcher, 'POST', url, options, body);\n });\n}\nexport function put(fetcher, url, body, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return _handleRequest(fetcher, 'PUT', url, options, body);\n });\n}\nexport function remove(fetcher, url, body, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return _handleRequest(fetcher, 'DELETE', url, options, body);\n });\n}\n//# sourceMappingURL=fetch.js.map","/**\n * Serialize data into a cookie header.\n */\nfunction serialize(name, val, options) {\n const opt = options || {};\n const enc = encodeURIComponent;\n /* eslint-disable-next-line no-control-regex */\n const fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n const value = enc(val);\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n let str = name + '=' + value;\n if (null != opt.maxAge) {\n const maxAge = opt.maxAge - 0;\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid');\n }\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n str += '; Domain=' + opt.domain;\n }\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n str += '; Path=' + opt.path;\n }\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n str += '; Expires=' + opt.expires.toUTCString();\n }\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n if (opt.secure) {\n str += '; Secure';\n }\n if (opt.sameSite) {\n const sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n switch (sameSite) {\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n return str;\n}\n/**\n * Based on the environment and the request we know if a secure cookie can be set.\n */\nfunction isSecureEnvironment(req) {\n if (!req || !req.headers || !req.headers.host) {\n throw new Error('The \"host\" request header is not available');\n }\n const host = (req.headers.host.indexOf(':') > -1 && req.headers.host.split(':')[0]) || req.headers.host;\n if (['localhost', '127.0.0.1'].indexOf(host) > -1 || host.endsWith('.local')) {\n return false;\n }\n return true;\n}\n/**\n * Serialize a cookie to a string.\n */\nfunction serializeCookie(cookie, secure) {\n var _a, _b, _c;\n return serialize(cookie.name, cookie.value, {\n maxAge: cookie.maxAge,\n expires: new Date(Date.now() + cookie.maxAge * 1000),\n httpOnly: true,\n secure,\n path: (_a = cookie.path) !== null && _a !== void 0 ? _a : '/',\n domain: (_b = cookie.domain) !== null && _b !== void 0 ? _b : '',\n sameSite: (_c = cookie.sameSite) !== null && _c !== void 0 ? _c : 'lax',\n });\n}\n/**\n * Get Cookie Header strings.\n */\nexport function getCookieString(req, res, cookies) {\n const strCookies = cookies.map((c) => serializeCookie(c, isSecureEnvironment(req)));\n const previousCookies = res.getHeader('Set-Cookie');\n if (previousCookies) {\n if (previousCookies instanceof Array) {\n Array.prototype.push.apply(strCookies, previousCookies);\n }\n else if (typeof previousCookies === 'string') {\n strCookies.push(previousCookies);\n }\n }\n return strCookies;\n}\n/**\n * Set one or more cookies.\n */\nexport function setCookies(req, res, cookies) {\n res.setHeader('Set-Cookie', getCookieString(req, res, cookies));\n}\n/**\n * Set one or more cookies.\n */\nexport function setCookie(req, res, cookie) {\n setCookies(req, res, [cookie]);\n}\nexport function deleteCookie(req, res, name) {\n setCookie(req, res, {\n name,\n value: '',\n maxAge: -1,\n });\n}\n//# sourceMappingURL=cookies.js.map","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport crossFetch from 'cross-fetch';\nexport function expiresAt(expiresIn) {\n const timeNow = Math.round(Date.now() / 1000);\n return timeNow + expiresIn;\n}\nexport function uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\nexport const isBrowser = () => typeof window !== 'undefined';\nexport function getParameterByName(name, url) {\n var _a;\n if (!url)\n url = ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.href) || '';\n // eslint-disable-next-line no-useless-escape\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n const regex = new RegExp('[?&#]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url);\n if (!results)\n return null;\n if (!results[2])\n return '';\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n}\nexport const resolveFetch = (customFetch) => {\n let _fetch;\n if (customFetch) {\n _fetch = customFetch;\n }\n else if (typeof fetch === 'undefined') {\n _fetch = crossFetch;\n }\n else {\n _fetch = fetch;\n }\n return (...args) => _fetch(...args);\n};\n// LocalStorage helpers\nexport const setItemAsync = (storage, key, data) => __awaiter(void 0, void 0, void 0, function* () {\n isBrowser() && (yield (storage === null || storage === void 0 ? void 0 : storage.setItem(key, JSON.stringify(data))));\n});\nexport const getItemAsync = (storage, key) => __awaiter(void 0, void 0, void 0, function* () {\n const value = isBrowser() && (yield (storage === null || storage === void 0 ? void 0 : storage.getItem(key)));\n if (!value)\n return null;\n try {\n return JSON.parse(value);\n }\n catch (_a) {\n return value;\n }\n});\nexport const getItemSynchronously = (storage, key) => {\n const value = isBrowser() && (storage === null || storage === void 0 ? void 0 : storage.getItem(key));\n if (!value || typeof value !== 'string') {\n return null;\n }\n try {\n return JSON.parse(value);\n }\n catch (_a) {\n return value;\n }\n};\nexport const removeItemAsync = (storage, key) => __awaiter(void 0, void 0, void 0, function* () {\n isBrowser() && (yield (storage === null || storage === void 0 ? void 0 : storage.removeItem(key)));\n});\n//# sourceMappingURL=helpers.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { get, post, put, remove } from './lib/fetch';\nimport { COOKIE_OPTIONS } from './lib/constants';\nimport { setCookies, getCookieString } from './lib/cookies';\nimport { expiresAt, resolveFetch } from './lib/helpers';\nexport default class GoTrueApi {\n constructor({ url = '', headers = {}, cookieOptions, fetch, }) {\n this.url = url;\n this.headers = headers;\n this.cookieOptions = Object.assign(Object.assign({}, COOKIE_OPTIONS), cookieOptions);\n this.fetch = resolveFetch(fetch);\n }\n /**\n * Create a temporary object with all configured headers and\n * adds the Authorization token to be used on request methods\n * @param jwt A valid, logged-in JWT.\n */\n _createRequestHeaders(jwt) {\n const headers = Object.assign({}, this.headers);\n headers['Authorization'] = `Bearer ${jwt}`;\n return headers;\n }\n cookieName() {\n var _a;\n return (_a = this.cookieOptions.name) !== null && _a !== void 0 ? _a : '';\n }\n /**\n * Generates the relevant login URL for a third-party provider.\n * @param provider One of the providers supported by GoTrue.\n * @param redirectTo A URL or mobile address to send the user to after they are confirmed.\n * @param scopes A space-separated list of scopes granted to the OAuth application.\n */\n getUrlForProvider(provider, options) {\n const urlParams = [`provider=${encodeURIComponent(provider)}`];\n if (options === null || options === void 0 ? void 0 : options.redirectTo) {\n urlParams.push(`redirect_to=${encodeURIComponent(options.redirectTo)}`);\n }\n if (options === null || options === void 0 ? void 0 : options.scopes) {\n urlParams.push(`scopes=${encodeURIComponent(options.scopes)}`);\n }\n return `${this.url}/authorize?${urlParams.join('&')}`;\n }\n /**\n * Creates a new user using their email address.\n * @param email The email address of the user.\n * @param password The password of the user.\n * @param redirectTo A URL or mobile address to send the user to after they are confirmed.\n * @param data Optional user metadata.\n *\n * @returns A logged-in session if the server has \"autoconfirm\" ON\n * @returns A user if the server has \"autoconfirm\" OFF\n */\n signUpWithEmail(email, password, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const headers = Object.assign({}, this.headers);\n let queryString = '';\n if (options.redirectTo) {\n queryString = '?redirect_to=' + encodeURIComponent(options.redirectTo);\n }\n const data = yield post(this.fetch, `${this.url}/signup${queryString}`, {\n email,\n password,\n data: options.data,\n gotrue_meta_security: { hcaptcha_token: options.captchaToken },\n }, { headers });\n const session = Object.assign({}, data);\n if (session.expires_in)\n session.expires_at = expiresAt(data.expires_in);\n return { data: session, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Logs in an existing user using their email address.\n * @param email The email address of the user.\n * @param password The password of the user.\n * @param redirectTo A URL or mobile address to send the user to after they are confirmed.\n */\n signInWithEmail(email, password, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const headers = Object.assign({}, this.headers);\n let queryString = '?grant_type=password';\n if (options.redirectTo) {\n queryString += '&redirect_to=' + encodeURIComponent(options.redirectTo);\n }\n const data = yield post(this.fetch, `${this.url}/token${queryString}`, { email, password }, { headers });\n const session = Object.assign({}, data);\n if (session.expires_in)\n session.expires_at = expiresAt(data.expires_in);\n return { data: session, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Signs up a new user using their phone number and a password.\n * @param phone The phone number of the user.\n * @param password The password of the user.\n * @param data Optional user metadata.\n */\n signUpWithPhone(phone, password, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const headers = Object.assign({}, this.headers);\n const data = yield post(this.fetch, `${this.url}/signup`, {\n phone,\n password,\n data: options.data,\n gotrue_meta_security: { hcaptcha_token: options.captchaToken },\n }, { headers });\n const session = Object.assign({}, data);\n if (session.expires_in)\n session.expires_at = expiresAt(data.expires_in);\n return { data: session, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Logs in an existing user using their phone number and password.\n * @param phone The phone number of the user.\n * @param password The password of the user.\n */\n signInWithPhone(phone, password) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const headers = Object.assign({}, this.headers);\n const queryString = '?grant_type=password';\n const data = yield post(this.fetch, `${this.url}/token${queryString}`, { phone, password }, { headers });\n const session = Object.assign({}, data);\n if (session.expires_in)\n session.expires_at = expiresAt(data.expires_in);\n return { data: session, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Logs in an OpenID Connect user using their id_token.\n * @param id_token The IDToken of the user.\n * @param nonce The nonce of the user. The nonce is a random value generated by the developer (= yourself) before the initial grant is started. You should check the OpenID Connect specification for details. https://openid.net/developers/specs/\n * @param provider The provider of the user.\n * @param client_id The clientID of the user.\n * @param issuer The issuer of the user.\n */\n signInWithOpenIDConnect({ id_token, nonce, client_id, issuer, provider, }) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const headers = Object.assign({}, this.headers);\n const queryString = '?grant_type=id_token';\n const data = yield post(this.fetch, `${this.url}/token${queryString}`, { id_token, nonce, client_id, issuer, provider }, { headers });\n const session = Object.assign({}, data);\n if (session.expires_in)\n session.expires_at = expiresAt(data.expires_in);\n return { data: session, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Sends a magic login link to an email address.\n * @param email The email address of the user.\n * @param shouldCreateUser A boolean flag to indicate whether to automatically create a user on magiclink / otp sign-ins if the user doesn't exist. Defaults to true.\n * @param redirectTo A URL or mobile address to send the user to after they are confirmed.\n */\n sendMagicLinkEmail(email, options = {}) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const headers = Object.assign({}, this.headers);\n let queryString = '';\n if (options.redirectTo) {\n queryString += '?redirect_to=' + encodeURIComponent(options.redirectTo);\n }\n const shouldCreateUser = (_a = options.shouldCreateUser) !== null && _a !== void 0 ? _a : true;\n const data = yield post(this.fetch, `${this.url}/otp${queryString}`, {\n email,\n create_user: shouldCreateUser,\n gotrue_meta_security: { hcaptcha_token: options.captchaToken },\n }, { headers });\n return { data, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Sends a mobile OTP via SMS. Will register the account if it doesn't already exist\n * @param phone The user's phone number WITH international prefix\n * @param shouldCreateUser A boolean flag to indicate whether to automatically create a user on magiclink / otp sign-ins if the user doesn't exist. Defaults to true.\n */\n sendMobileOTP(phone, options = {}) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const shouldCreateUser = (_a = options.shouldCreateUser) !== null && _a !== void 0 ? _a : true;\n const headers = Object.assign({}, this.headers);\n const data = yield post(this.fetch, `${this.url}/otp`, {\n phone,\n create_user: shouldCreateUser,\n gotrue_meta_security: { hcaptcha_token: options.captchaToken },\n }, { headers });\n return { data, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Removes a logged-in session.\n * @param jwt A valid, logged-in JWT.\n */\n signOut(jwt) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield post(this.fetch, `${this.url}/logout`, {}, { headers: this._createRequestHeaders(jwt), noResolveJson: true });\n return { error: null };\n }\n catch (e) {\n return { error: e };\n }\n });\n }\n /**\n * @deprecated Use `verifyOTP` instead!\n * @param phone The user's phone number WITH international prefix\n * @param token token that user was sent to their mobile phone\n * @param redirectTo A URL or mobile address to send the user to after they are confirmed.\n */\n verifyMobileOTP(phone, token, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const headers = Object.assign({}, this.headers);\n const data = yield post(this.fetch, `${this.url}/verify`, { phone, token, type: 'sms', redirect_to: options.redirectTo }, { headers });\n const session = Object.assign({}, data);\n if (session.expires_in)\n session.expires_at = expiresAt(data.expires_in);\n return { data: session, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Send User supplied Email / Mobile OTP to be verified\n * @param email The user's email address\n * @param phone The user's phone number WITH international prefix\n * @param token token that user was sent to their mobile phone\n * @param type verification type that the otp is generated for\n * @param redirectTo A URL or mobile address to send the user to after they are confirmed.\n */\n verifyOTP({ email, phone, token, type = 'sms' }, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const headers = Object.assign({}, this.headers);\n const data = yield post(this.fetch, `${this.url}/verify`, { email, phone, token, type, redirect_to: options.redirectTo }, { headers });\n const session = Object.assign({}, data);\n if (session.expires_in)\n session.expires_at = expiresAt(data.expires_in);\n return { data: session, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Sends an invite link to an email address.\n * @param email The email address of the user.\n * @param redirectTo A URL or mobile address to send the user to after they are confirmed.\n * @param data Optional user metadata\n */\n inviteUserByEmail(email, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const headers = Object.assign({}, this.headers);\n let queryString = '';\n if (options.redirectTo) {\n queryString += '?redirect_to=' + encodeURIComponent(options.redirectTo);\n }\n const data = yield post(this.fetch, `${this.url}/invite${queryString}`, { email, data: options.data }, { headers });\n return { data, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Sends a reset request to an email address.\n * @param email The email address of the user.\n * @param redirectTo A URL or mobile address to send the user to after they are confirmed.\n */\n resetPasswordForEmail(email, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const headers = Object.assign({}, this.headers);\n let queryString = '';\n if (options.redirectTo) {\n queryString += '?redirect_to=' + encodeURIComponent(options.redirectTo);\n }\n const data = yield post(this.fetch, `${this.url}/recover${queryString}`, { email, gotrue_meta_security: { hcaptcha_token: options.captchaToken } }, { headers });\n return { data, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Generates a new JWT.\n * @param refreshToken A valid refresh token that was returned on login.\n */\n refreshAccessToken(refreshToken) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield post(this.fetch, `${this.url}/token?grant_type=refresh_token`, { refresh_token: refreshToken }, { headers: this.headers });\n const session = Object.assign({}, data);\n if (session.expires_in)\n session.expires_at = expiresAt(data.expires_in);\n return { data: session, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Set/delete the auth cookie based on the AuthChangeEvent.\n * Works for Next.js & Express (requires cookie-parser middleware).\n * @param req The request object.\n * @param res The response object.\n */\n setAuthCookie(req, res) {\n if (req.method !== 'POST') {\n res.setHeader('Allow', 'POST');\n res.status(405).end('Method Not Allowed');\n }\n const { event, session } = req.body;\n if (!event)\n throw new Error('Auth event missing!');\n if (event === 'SIGNED_IN') {\n if (!session)\n throw new Error('Auth session missing!');\n setCookies(req, res, [\n { key: 'access-token', value: session.access_token },\n { key: 'refresh-token', value: session.refresh_token },\n ].map((token) => {\n var _a;\n return ({\n name: `${this.cookieName()}-${token.key}`,\n value: token.value,\n domain: this.cookieOptions.domain,\n maxAge: (_a = this.cookieOptions.lifetime) !== null && _a !== void 0 ? _a : 0,\n path: this.cookieOptions.path,\n sameSite: this.cookieOptions.sameSite,\n });\n }));\n }\n if (event === 'SIGNED_OUT') {\n setCookies(req, res, ['access-token', 'refresh-token'].map((key) => ({\n name: `${this.cookieName()}-${key}`,\n value: '',\n maxAge: -1,\n })));\n }\n res.status(200).json({});\n }\n /**\n * Deletes the Auth Cookies and redirects to the\n * @param req The request object.\n * @param res The response object.\n * @param options Optionally specify a `redirectTo` URL in the options.\n */\n deleteAuthCookie(req, res, { redirectTo = '/' }) {\n setCookies(req, res, ['access-token', 'refresh-token'].map((key) => ({\n name: `${this.cookieName()}-${key}`,\n value: '',\n maxAge: -1,\n })));\n return res.redirect(307, redirectTo);\n }\n /**\n * Helper method to generate the Auth Cookie string for you in case you can't use `setAuthCookie`.\n * @param req The request object.\n * @param res The response object.\n * @returns The Cookie string that needs to be set as the value for the `Set-Cookie` header.\n */\n getAuthCookieString(req, res) {\n if (req.method !== 'POST') {\n res.setHeader('Allow', 'POST');\n res.status(405).end('Method Not Allowed');\n }\n const { event, session } = req.body;\n if (!event)\n throw new Error('Auth event missing!');\n if (event === 'SIGNED_IN') {\n if (!session)\n throw new Error('Auth session missing!');\n return getCookieString(req, res, [\n { key: 'access-token', value: session.access_token },\n { key: 'refresh-token', value: session.refresh_token },\n ].map((token) => {\n var _a;\n return ({\n name: `${this.cookieName()}-${token.key}`,\n value: token.value,\n domain: this.cookieOptions.domain,\n maxAge: (_a = this.cookieOptions.lifetime) !== null && _a !== void 0 ? _a : 0,\n path: this.cookieOptions.path,\n sameSite: this.cookieOptions.sameSite,\n });\n }));\n }\n if (event === 'SIGNED_OUT') {\n return getCookieString(req, res, ['access-token', 'refresh-token'].map((key) => ({\n name: `${this.cookieName()}-${key}`,\n value: '',\n maxAge: -1,\n })));\n }\n return res.getHeader('Set-Cookie');\n }\n /**\n * Generates links to be sent via email or other.\n * @param type The link type (\"signup\" or \"magiclink\" or \"recovery\" or \"invite\").\n * @param email The user's email.\n * @param password User password. For signup only.\n * @param data Optional user metadata. For signup only.\n * @param redirectTo The link type (\"signup\" or \"magiclink\" or \"recovery\" or \"invite\").\n */\n generateLink(type, email, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield post(this.fetch, `${this.url}/admin/generate_link`, {\n type,\n email,\n password: options.password,\n data: options.data,\n redirect_to: options.redirectTo,\n }, { headers: this.headers });\n return { data, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n // User Admin API\n /**\n * Creates a new user.\n *\n * This function should only be called on a server. Never expose your `service_role` key in the browser.\n *\n * @param attributes The data you want to create the user with.\n */\n createUser(attributes) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield post(this.fetch, `${this.url}/admin/users`, attributes, {\n headers: this.headers,\n });\n return { user: data, data, error: null };\n }\n catch (e) {\n return { user: null, data: null, error: e };\n }\n });\n }\n /**\n * Get a list of users.\n *\n * This function should only be called on a server. Never expose your `service_role` key in the browser.\n */\n listUsers() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield get(this.fetch, `${this.url}/admin/users`, {\n headers: this.headers,\n });\n return { data: data.users, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Get user by id.\n *\n * @param uid The user's unique identifier\n *\n * This function should only be called on a server. Never expose your `service_role` key in the browser.\n */\n getUserById(uid) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield get(this.fetch, `${this.url}/admin/users/${uid}`, {\n headers: this.headers,\n });\n return { data, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Get user by reading the cookie from the request.\n * Works for Next.js & Express (requires cookie-parser middleware).\n */\n getUserByCookie(req, res) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n if (!req.cookies) {\n throw new Error('Not able to parse cookies! When using Express make sure the cookie-parser middleware is in use!');\n }\n const access_token = req.cookies[`${this.cookieName()}-access-token`];\n const refresh_token = req.cookies[`${this.cookieName()}-refresh-token`];\n if (!access_token) {\n throw new Error('No cookie found!');\n }\n const { user, error: getUserError } = yield this.getUser(access_token);\n if (getUserError) {\n if (!refresh_token)\n throw new Error('No refresh_token cookie found!');\n if (!res)\n throw new Error('You need to pass the res object to automatically refresh the session!');\n const { data, error } = yield this.refreshAccessToken(refresh_token);\n if (error) {\n throw error;\n }\n else if (data) {\n setCookies(req, res, [\n { key: 'access-token', value: data.access_token },\n { key: 'refresh-token', value: data.refresh_token },\n ].map((token) => {\n var _a;\n return ({\n name: `${this.cookieName()}-${token.key}`,\n value: token.value,\n domain: this.cookieOptions.domain,\n maxAge: (_a = this.cookieOptions.lifetime) !== null && _a !== void 0 ? _a : 0,\n path: this.cookieOptions.path,\n sameSite: this.cookieOptions.sameSite,\n });\n }));\n return { token: data.access_token, user: data.user, data: data.user, error: null };\n }\n }\n return { token: access_token, user: user, data: user, error: null };\n }\n catch (e) {\n return { token: null, user: null, data: null, error: e };\n }\n });\n }\n /**\n * Updates the user data.\n *\n * @param attributes The data you want to update.\n *\n * This function should only be called on a server. Never expose your `service_role` key in the browser.\n */\n updateUserById(uid, attributes) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n this; //\n const data = yield put(this.fetch, `${this.url}/admin/users/${uid}`, attributes, {\n headers: this.headers,\n });\n return { user: data, data, error: null };\n }\n catch (e) {\n return { user: null, data: null, error: e };\n }\n });\n }\n /**\n * Delete a user. Requires a `service_role` key.\n *\n * This function should only be called on a server. Never expose your `service_role` key in the browser.\n *\n * @param uid The user uid you want to remove.\n */\n deleteUser(uid) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield remove(this.fetch, `${this.url}/admin/users/${uid}`, {}, {\n headers: this.headers,\n });\n return { user: data, data, error: null };\n }\n catch (e) {\n return { user: null, data: null, error: e };\n }\n });\n }\n /**\n * Gets the current user details.\n *\n * This method is called by the GoTrueClient `update` where\n * the jwt is set to this.currentSession.access_token\n * and therefore, acts like getting the currently authenticated used\n *\n * @param jwt A valid, logged-in JWT. Typically, the access_token for the currentSession\n */\n getUser(jwt) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield get(this.fetch, `${this.url}/user`, {\n headers: this._createRequestHeaders(jwt),\n });\n return { user: data, data, error: null };\n }\n catch (e) {\n return { user: null, data: null, error: e };\n }\n });\n }\n /**\n * Updates the user data.\n * @param jwt A valid, logged-in JWT.\n * @param attributes The data you want to update.\n */\n updateUser(jwt, attributes) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield put(this.fetch, `${this.url}/user`, attributes, {\n headers: this._createRequestHeaders(jwt),\n });\n return { user: data, data, error: null };\n }\n catch (e) {\n return { user: null, data: null, error: e };\n }\n });\n }\n}\n//# sourceMappingURL=GoTrueApi.js.map","/**\n * https://mathiasbynens.be/notes/globalthis\n */\nexport function polyfillGlobalThis() {\n if (typeof globalThis === 'object')\n return;\n try {\n Object.defineProperty(Object.prototype, '__magic__', {\n get: function () {\n return this;\n },\n configurable: true,\n });\n // @ts-expect-error 'Allow access to magic'\n __magic__.globalThis = __magic__;\n // @ts-expect-error 'Allow access to magic'\n delete Object.prototype.__magic__;\n }\n catch (e) {\n if (typeof self !== 'undefined') {\n // @ts-expect-error 'Allow access to globals'\n self.globalThis = self;\n }\n }\n}\n//# sourceMappingURL=polyfills.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport GoTrueApi from './GoTrueApi';\nimport { isBrowser, getParameterByName, uuid, setItemAsync, removeItemAsync, getItemSynchronously, getItemAsync, } from './lib/helpers';\nimport { GOTRUE_URL, DEFAULT_HEADERS, STORAGE_KEY, EXPIRY_MARGIN, NETWORK_FAILURE, } from './lib/constants';\nimport { polyfillGlobalThis } from './lib/polyfills';\npolyfillGlobalThis(); // Make \"globalThis\" available\nconst DEFAULT_OPTIONS = {\n url: GOTRUE_URL,\n autoRefreshToken: true,\n persistSession: true,\n detectSessionInUrl: true,\n multiTab: true,\n headers: DEFAULT_HEADERS,\n};\nexport default class GoTrueClient {\n /**\n * Create a new client for use in the browser.\n * @param options.url The URL of the GoTrue server.\n * @param options.headers Any additional headers to send to the GoTrue server.\n * @param options.detectSessionInUrl Set to \"true\" if you want to automatically detects OAuth grants in the URL and signs in the user.\n * @param options.autoRefreshToken Set to \"true\" if you want to automatically refresh the token before expiring.\n * @param options.persistSession Set to \"true\" if you want to automatically save the user session into local storage.\n * @param options.localStorage Provide your own local storage implementation to use instead of the browser's local storage.\n * @param options.multiTab Set to \"false\" if you want to disable multi-tab/window events.\n * @param options.cookieOptions\n * @param options.fetch A custom fetch implementation.\n */\n constructor(options) {\n this.stateChangeEmitters = new Map();\n this.networkRetries = 0;\n const settings = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);\n this.currentUser = null;\n this.currentSession = null;\n this.autoRefreshToken = settings.autoRefreshToken;\n this.persistSession = settings.persistSession;\n this.multiTab = settings.multiTab;\n this.localStorage = settings.localStorage || globalThis.localStorage;\n this.api = new GoTrueApi({\n url: settings.url,\n headers: settings.headers,\n cookieOptions: settings.cookieOptions,\n fetch: settings.fetch,\n });\n this._recoverSession();\n this._recoverAndRefresh();\n this._listenForMultiTabEvents();\n this._handleVisibilityChange();\n if (settings.detectSessionInUrl && isBrowser() && !!getParameterByName('access_token')) {\n // Handle the OAuth redirect\n this.getSessionFromUrl({ storeSession: true }).then(({ error }) => {\n if (error) {\n console.error('Error getting session from URL.', error);\n }\n });\n }\n }\n /**\n * Creates a new user.\n * @type UserCredentials\n * @param email The user's email address.\n * @param password The user's password.\n * @param phone The user's phone number.\n * @param redirectTo The redirect URL attached to the signup confirmation link. Does not redirect the user if it's a mobile signup.\n * @param data Optional user metadata.\n */\n signUp({ email, password, phone }, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n this._removeSession();\n const { data, error } = phone && password\n ? yield this.api.signUpWithPhone(phone, password, {\n data: options.data,\n captchaToken: options.captchaToken,\n })\n : yield this.api.signUpWithEmail(email, password, {\n redirectTo: options.redirectTo,\n data: options.data,\n captchaToken: options.captchaToken,\n });\n if (error) {\n throw error;\n }\n if (!data) {\n throw 'An error occurred on sign up.';\n }\n let session = null;\n let user = null;\n if (data.access_token) {\n session = data;\n user = session.user;\n this._saveSession(session);\n this._notifyAllSubscribers('SIGNED_IN');\n }\n if (data.id) {\n user = data;\n }\n return { user, session, error: null };\n }\n catch (e) {\n return { user: null, session: null, error: e };\n }\n });\n }\n /**\n * Log in an existing user, or login via a third-party provider.\n * @type UserCredentials\n * @param email The user's email address.\n * @param phone The user's phone number.\n * @param password The user's password.\n * @param refreshToken A valid refresh token that was returned on login.\n * @param provider One of the providers supported by GoTrue.\n * @param redirectTo A URL to send the user to after they are confirmed (OAuth logins only).\n * @param shouldCreateUser A boolean flag to indicate whether to automatically create a user on magiclink / otp sign-ins if the user doesn't exist. Defaults to true.\n * @param scopes A space-separated list of scopes granted to the OAuth application.\n */\n signIn({ email, phone, password, refreshToken, provider, oidc }, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n this._removeSession();\n if (email && !password) {\n const { error } = yield this.api.sendMagicLinkEmail(email, {\n redirectTo: options.redirectTo,\n shouldCreateUser: options.shouldCreateUser,\n captchaToken: options.captchaToken,\n });\n return { user: null, session: null, error };\n }\n if (email && password) {\n return this._handleEmailSignIn(email, password, {\n redirectTo: options.redirectTo,\n });\n }\n if (phone && !password) {\n const { error } = yield this.api.sendMobileOTP(phone, {\n shouldCreateUser: options.shouldCreateUser,\n captchaToken: options.captchaToken,\n });\n return { user: null, session: null, error };\n }\n if (phone && password) {\n return this._handlePhoneSignIn(phone, password);\n }\n if (refreshToken) {\n // currentSession and currentUser will be updated to latest on _callRefreshToken using the passed refreshToken\n const { error } = yield this._callRefreshToken(refreshToken);\n if (error)\n throw error;\n return {\n user: this.currentUser,\n session: this.currentSession,\n error: null,\n };\n }\n if (provider) {\n return this._handleProviderSignIn(provider, {\n redirectTo: options.redirectTo,\n scopes: options.scopes,\n });\n }\n if (oidc) {\n return this._handleOpenIDConnectSignIn(oidc);\n }\n throw new Error(`You must provide either an email, phone number, a third-party provider or OpenID Connect.`);\n }\n catch (e) {\n return { user: null, session: null, error: e };\n }\n });\n }\n /**\n * Log in a user given a User supplied OTP received via mobile.\n * @param email The user's email address.\n * @param phone The user's phone number.\n * @param token The user's password.\n * @param type The user's verification type.\n * @param redirectTo A URL or mobile address to send the user to after they are confirmed.\n */\n verifyOTP(params, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n this._removeSession();\n const { data, error } = yield this.api.verifyOTP(params, options);\n if (error) {\n throw error;\n }\n if (!data) {\n throw 'An error occurred on token verification.';\n }\n let session = null;\n let user = null;\n if (data.access_token) {\n session = data;\n user = session.user;\n this._saveSession(session);\n this._notifyAllSubscribers('SIGNED_IN');\n }\n if (data.id) {\n user = data;\n }\n return { user, session, error: null };\n }\n catch (e) {\n return { user: null, session: null, error: e };\n }\n });\n }\n /**\n * Inside a browser context, `user()` will return the user data, if there is a logged in user.\n *\n * For server-side management, you can get a user through `auth.api.getUserByCookie()`\n */\n user() {\n return this.currentUser;\n }\n /**\n * Returns the session data, if there is an active session.\n */\n session() {\n return this.currentSession;\n }\n /**\n * Force refreshes the session including the user data in case it was updated in a different session.\n */\n refreshSession() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n if (!((_a = this.currentSession) === null || _a === void 0 ? void 0 : _a.access_token))\n throw new Error('Not logged in.');\n // currentSession and currentUser will be updated to latest on _callRefreshToken\n const { error } = yield this._callRefreshToken();\n if (error)\n throw error;\n return { data: this.currentSession, user: this.currentUser, error: null };\n }\n catch (e) {\n return { data: null, user: null, error: e };\n }\n });\n }\n /**\n * Updates user data, if there is a logged in user.\n */\n update(attributes) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n if (!((_a = this.currentSession) === null || _a === void 0 ? void 0 : _a.access_token))\n throw new Error('Not logged in.');\n const { user, error } = yield this.api.updateUser(this.currentSession.access_token, attributes);\n if (error)\n throw error;\n if (!user)\n throw Error('Invalid user data.');\n const session = Object.assign(Object.assign({}, this.currentSession), { user });\n this._saveSession(session);\n this._notifyAllSubscribers('USER_UPDATED');\n return { data: user, user, error: null };\n }\n catch (e) {\n return { data: null, user: null, error: e };\n }\n });\n }\n /**\n * Sets the session data from refresh_token and returns current Session and Error\n * @param refresh_token a JWT token\n */\n setSession(refresh_token) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n if (!refresh_token) {\n throw new Error('No current session.');\n }\n const { data, error } = yield this.api.refreshAccessToken(refresh_token);\n if (error) {\n return { session: null, error: error };\n }\n this._saveSession(data);\n this._notifyAllSubscribers('SIGNED_IN');\n return { session: data, error: null };\n }\n catch (e) {\n return { error: e, session: null };\n }\n });\n }\n /**\n * Overrides the JWT on the current client. The JWT will then be sent in all subsequent network requests.\n * @param access_token a jwt access token\n */\n setAuth(access_token) {\n this.currentSession = Object.assign(Object.assign({}, this.currentSession), { access_token, token_type: 'bearer', user: this.user() });\n this._notifyAllSubscribers('TOKEN_REFRESHED');\n return this.currentSession;\n }\n /**\n * Gets the session data from a URL string\n * @param options.storeSession Optionally store the session in the browser\n */\n getSessionFromUrl(options) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n if (!isBrowser())\n throw new Error('No browser detected.');\n const error_description = getParameterByName('error_description');\n if (error_description)\n throw new Error(error_description);\n const provider_token = getParameterByName('provider_token');\n const access_token = getParameterByName('access_token');\n if (!access_token)\n throw new Error('No access_token detected.');\n const expires_in = getParameterByName('expires_in');\n if (!expires_in)\n throw new Error('No expires_in detected.');\n const refresh_token = getParameterByName('refresh_token');\n if (!refresh_token)\n throw new Error('No refresh_token detected.');\n const token_type = getParameterByName('token_type');\n if (!token_type)\n throw new Error('No token_type detected.');\n const timeNow = Math.round(Date.now() / 1000);\n const expires_at = timeNow + parseInt(expires_in);\n const { user, error } = yield this.api.getUser(access_token);\n if (error)\n throw error;\n const session = {\n provider_token,\n access_token,\n expires_in: parseInt(expires_in),\n expires_at,\n refresh_token,\n token_type,\n user: user,\n };\n if (options === null || options === void 0 ? void 0 : options.storeSession) {\n this._saveSession(session);\n const recoveryMode = getParameterByName('type');\n this._notifyAllSubscribers('SIGNED_IN');\n if (recoveryMode === 'recovery') {\n this._notifyAllSubscribers('PASSWORD_RECOVERY');\n }\n }\n // Remove tokens from URL\n window.location.hash = '';\n return { data: session, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n /**\n * Inside a browser context, `signOut()` will remove the logged in user from the browser session\n * and log them out - removing all items from localstorage and then trigger a \"SIGNED_OUT\" event.\n *\n * For server-side management, you can disable sessions by passing a JWT through to `auth.api.signOut(JWT: string)`\n */\n signOut() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const accessToken = (_a = this.currentSession) === null || _a === void 0 ? void 0 : _a.access_token;\n this._removeSession();\n this._notifyAllSubscribers('SIGNED_OUT');\n if (accessToken) {\n const { error } = yield this.api.signOut(accessToken);\n if (error)\n return { error };\n }\n return { error: null };\n });\n }\n /**\n * Receive a notification every time an auth event happens.\n * @returns {Subscription} A subscription object which can be used to unsubscribe itself.\n */\n onAuthStateChange(callback) {\n try {\n const id = uuid();\n const subscription = {\n id,\n callback,\n unsubscribe: () => {\n this.stateChangeEmitters.delete(id);\n },\n };\n this.stateChangeEmitters.set(id, subscription);\n return { data: subscription, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n }\n _handleEmailSignIn(email, password, options = {}) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const { data, error } = yield this.api.signInWithEmail(email, password, {\n redirectTo: options.redirectTo,\n });\n if (error || !data)\n return { data: null, user: null, session: null, error };\n if (((_a = data === null || data === void 0 ? void 0 : data.user) === null || _a === void 0 ? void 0 : _a.confirmed_at) || ((_b = data === null || data === void 0 ? void 0 : data.user) === null || _b === void 0 ? void 0 : _b.email_confirmed_at)) {\n this._saveSession(data);\n this._notifyAllSubscribers('SIGNED_IN');\n }\n return { data, user: data.user, session: data, error: null };\n }\n catch (e) {\n return { data: null, user: null, session: null, error: e };\n }\n });\n }\n _handlePhoneSignIn(phone, password) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const { data, error } = yield this.api.signInWithPhone(phone, password);\n if (error || !data)\n return { data: null, user: null, session: null, error };\n if ((_a = data === null || data === void 0 ? void 0 : data.user) === null || _a === void 0 ? void 0 : _a.phone_confirmed_at) {\n this._saveSession(data);\n this._notifyAllSubscribers('SIGNED_IN');\n }\n return { data, user: data.user, session: data, error: null };\n }\n catch (e) {\n return { data: null, user: null, session: null, error: e };\n }\n });\n }\n _handleProviderSignIn(provider, options = {}) {\n const url = this.api.getUrlForProvider(provider, {\n redirectTo: options.redirectTo,\n scopes: options.scopes,\n });\n try {\n // try to open on the browser\n if (isBrowser()) {\n window.location.href = url;\n }\n return { provider, url, data: null, session: null, user: null, error: null };\n }\n catch (e) {\n // fallback to returning the URL\n if (url)\n return { provider, url, data: null, session: null, user: null, error: null };\n return { data: null, user: null, session: null, error: e };\n }\n }\n _handleOpenIDConnectSignIn({ id_token, nonce, client_id, issuer, provider, }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (id_token && nonce && ((client_id && issuer) || provider)) {\n try {\n const { data, error } = yield this.api.signInWithOpenIDConnect({\n id_token,\n nonce,\n client_id,\n issuer,\n provider,\n });\n if (error || !data)\n return { user: null, session: null, error };\n this._saveSession(data);\n this._notifyAllSubscribers('SIGNED_IN');\n return { user: data.user, session: data, error: null };\n }\n catch (e) {\n return { user: null, session: null, error: e };\n }\n }\n throw new Error(`You must provide a OpenID Connect provider with your id token and nonce.`);\n });\n }\n /**\n * Attempts to get the session from LocalStorage\n * Note: this should never be async (even for React Native), as we need it to return immediately in the constructor.\n */\n _recoverSession() {\n try {\n const data = getItemSynchronously(this.localStorage, STORAGE_KEY);\n if (!data)\n return null;\n const { currentSession, expiresAt } = data;\n const timeNow = Math.round(Date.now() / 1000);\n if (expiresAt >= timeNow + EXPIRY_MARGIN && (currentSession === null || currentSession === void 0 ? void 0 : currentSession.user)) {\n this._saveSession(currentSession);\n this._notifyAllSubscribers('SIGNED_IN');\n }\n }\n catch (error) {\n console.log('error', error);\n }\n }\n /**\n * Recovers the session from LocalStorage and refreshes\n * Note: this method is async to accommodate for AsyncStorage e.g. in React native.\n */\n _recoverAndRefresh() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield getItemAsync(this.localStorage, STORAGE_KEY);\n if (!data)\n return null;\n const { currentSession, expiresAt } = data;\n const timeNow = Math.round(Date.now() / 1000);\n if (expiresAt < timeNow + EXPIRY_MARGIN) {\n if (this.autoRefreshToken && currentSession.refresh_token) {\n this.networkRetries++;\n const { error } = yield this._callRefreshToken(currentSession.refresh_token);\n if (error) {\n console.log(error.message);\n if (error.message === NETWORK_FAILURE.ERROR_MESSAGE &&\n this.networkRetries < NETWORK_FAILURE.MAX_RETRIES) {\n if (this.refreshTokenTimer)\n clearTimeout(this.refreshTokenTimer);\n this.refreshTokenTimer = setTimeout(() => this._recoverAndRefresh(), Math.pow(NETWORK_FAILURE.RETRY_INTERVAL, this.networkRetries) * 100 // exponential backoff\n );\n return;\n }\n yield this._removeSession();\n }\n this.networkRetries = 0;\n }\n else {\n this._removeSession();\n }\n }\n else if (!currentSession) {\n console.log('Current session is missing data.');\n this._removeSession();\n }\n else {\n // should be handled on _recoverSession method already\n // But we still need the code here to accommodate for AsyncStorage e.g. in React native\n this._saveSession(currentSession);\n this._notifyAllSubscribers('SIGNED_IN');\n }\n }\n catch (err) {\n console.error(err);\n return null;\n }\n });\n }\n _callRefreshToken(refresh_token) {\n var _a;\n if (refresh_token === void 0) { refresh_token = (_a = this.currentSession) === null || _a === void 0 ? void 0 : _a.refresh_token; }\n return __awaiter(this, void 0, void 0, function* () {\n try {\n if (!refresh_token) {\n throw new Error('No current session.');\n }\n const { data, error } = yield this.api.refreshAccessToken(refresh_token);\n if (error)\n throw error;\n if (!data)\n throw Error('Invalid session data.');\n this._saveSession(data);\n this._notifyAllSubscribers('TOKEN_REFRESHED');\n this._notifyAllSubscribers('SIGNED_IN');\n return { data, error: null };\n }\n catch (e) {\n return { data: null, error: e };\n }\n });\n }\n _notifyAllSubscribers(event) {\n this.stateChangeEmitters.forEach((x) => x.callback(event, this.currentSession));\n }\n /**\n * set currentSession and currentUser\n * process to _startAutoRefreshToken if possible\n */\n _saveSession(session) {\n this.currentSession = session;\n this.currentUser = session.user;\n const expiresAt = session.expires_at;\n if (expiresAt) {\n const timeNow = Math.round(Date.now() / 1000);\n const expiresIn = expiresAt - timeNow;\n const refreshDurationBeforeExpires = expiresIn > EXPIRY_MARGIN ? EXPIRY_MARGIN : 0.5;\n this._startAutoRefreshToken((expiresIn - refreshDurationBeforeExpires) * 1000);\n }\n // Do we need any extra check before persist session\n // access_token or user ?\n if (this.persistSession && session.expires_at) {\n this._persistSession(this.currentSession);\n }\n }\n _persistSession(currentSession) {\n const data = { currentSession, expiresAt: currentSession.expires_at };\n setItemAsync(this.localStorage, STORAGE_KEY, data);\n }\n _removeSession() {\n return __awaiter(this, void 0, void 0, function* () {\n this.currentSession = null;\n this.currentUser = null;\n if (this.refreshTokenTimer)\n clearTimeout(this.refreshTokenTimer);\n removeItemAsync(this.localStorage, STORAGE_KEY);\n });\n }\n /**\n * Clear and re-create refresh token timer\n * @param value time intervals in milliseconds\n */\n _startAutoRefreshToken(value) {\n if (this.refreshTokenTimer)\n clearTimeout(this.refreshTokenTimer);\n if (value <= 0 || !this.autoRefreshToken)\n return;\n this.refreshTokenTimer = setTimeout(() => __awaiter(this, void 0, void 0, function* () {\n this.networkRetries++;\n const { error } = yield this._callRefreshToken();\n if (!error)\n this.networkRetries = 0;\n if ((error === null || error === void 0 ? void 0 : error.message) === NETWORK_FAILURE.ERROR_MESSAGE &&\n this.networkRetries < NETWORK_FAILURE.MAX_RETRIES)\n this._startAutoRefreshToken(Math.pow(NETWORK_FAILURE.RETRY_INTERVAL, this.networkRetries) * 100); // exponential backoff\n }), value);\n if (typeof this.refreshTokenTimer.unref === 'function')\n this.refreshTokenTimer.unref();\n }\n /**\n * Listens for changes to LocalStorage and updates the current session.\n */\n _listenForMultiTabEvents() {\n if (!this.multiTab || !isBrowser() || !(window === null || window === void 0 ? void 0 : window.addEventListener)) {\n return false;\n }\n try {\n window === null || window === void 0 ? void 0 : window.addEventListener('storage', (e) => {\n var _a;\n if (e.key === STORAGE_KEY) {\n const newSession = JSON.parse(String(e.newValue));\n if ((_a = newSession === null || newSession === void 0 ? void 0 : newSession.currentSession) === null || _a === void 0 ? void 0 : _a.access_token) {\n this._saveSession(newSession.currentSession);\n this._notifyAllSubscribers('SIGNED_IN');\n }\n else {\n this._removeSession();\n this._notifyAllSubscribers('SIGNED_OUT');\n }\n }\n });\n }\n catch (error) {\n console.error('_listenForMultiTabEvents', error);\n }\n }\n _handleVisibilityChange() {\n if (!this.multiTab || !isBrowser() || !(window === null || window === void 0 ? void 0 : window.addEventListener)) {\n return false;\n }\n try {\n window === null || window === void 0 ? void 0 : window.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'visible') {\n this._recoverAndRefresh();\n }\n });\n }\n catch (error) {\n console.error('_handleVisibilityChange', error);\n }\n }\n}\n//# sourceMappingURL=GoTrueClient.js.map","import { GoTrueClient } from '@supabase/gotrue-js';\nexport class SupabaseAuthClient extends GoTrueClient {\n constructor(options) {\n super(options);\n }\n}\n//# sourceMappingURL=SupabaseAuthClient.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport crossFetch from 'cross-fetch';\nexport class PostgrestBuilder {\n constructor(builder) {\n Object.assign(this, builder);\n let _fetch;\n if (builder.fetch) {\n _fetch = builder.fetch;\n }\n else if (typeof fetch === 'undefined') {\n _fetch = crossFetch;\n }\n else {\n _fetch = fetch;\n }\n this.fetch = (...args) => _fetch(...args);\n this.shouldThrowOnError = builder.shouldThrowOnError || false;\n }\n /**\n * If there's an error with the query, throwOnError will reject the promise by\n * throwing the error instead of returning it as part of a successful response.\n *\n * {@link https://github.com/supabase/supabase-js/issues/92}\n */\n throwOnError(throwOnError) {\n if (throwOnError === null || throwOnError === undefined) {\n throwOnError = true;\n }\n this.shouldThrowOnError = throwOnError;\n return this;\n }\n then(onfulfilled, onrejected) {\n // https://postgrest.org/en/stable/api.html#switching-schemas\n if (typeof this.schema === 'undefined') {\n // skip\n }\n else if (['GET', 'HEAD'].includes(this.method)) {\n this.headers['Accept-Profile'] = this.schema;\n }\n else {\n this.headers['Content-Profile'] = this.schema;\n }\n if (this.method !== 'GET' && this.method !== 'HEAD') {\n this.headers['Content-Type'] = 'application/json';\n }\n let res = this.fetch(this.url.toString(), {\n method: this.method,\n headers: this.headers,\n body: JSON.stringify(this.body),\n signal: this.signal,\n }).then((res) => __awaiter(this, void 0, void 0, function* () {\n var _a, _b, _c;\n let error = null;\n let data = null;\n let count = null;\n if (res.ok) {\n const isReturnMinimal = (_a = this.headers['Prefer']) === null || _a === void 0 ? void 0 : _a.split(',').includes('return=minimal');\n if (this.method !== 'HEAD' && !isReturnMinimal) {\n const text = yield res.text();\n if (!text) {\n // discard `text`\n }\n else if (this.headers['Accept'] === 'text/csv') {\n data = text;\n }\n else {\n data = JSON.parse(text);\n }\n }\n const countHeader = (_b = this.headers['Prefer']) === null || _b === void 0 ? void 0 : _b.match(/count=(exact|planned|estimated)/);\n const contentRange = (_c = res.headers.get('content-range')) === null || _c === void 0 ? void 0 : _c.split('/');\n if (countHeader && contentRange && contentRange.length > 1) {\n count = parseInt(contentRange[1]);\n }\n }\n else {\n const body = yield res.text();\n try {\n error = JSON.parse(body);\n }\n catch (_d) {\n error = {\n message: body,\n };\n }\n if (error && this.shouldThrowOnError) {\n throw error;\n }\n }\n const postgrestResponse = {\n error,\n data,\n count,\n status: res.status,\n statusText: res.statusText,\n body: data,\n };\n return postgrestResponse;\n }));\n if (!this.shouldThrowOnError) {\n res = res.catch((fetchError) => ({\n error: {\n message: `FetchError: ${fetchError.message}`,\n details: '',\n hint: '',\n code: fetchError.code || '',\n },\n data: null,\n body: null,\n count: null,\n status: 400,\n statusText: 'Bad Request',\n }));\n }\n return res.then(onfulfilled, onrejected);\n }\n}\n//# sourceMappingURL=types.js.map","import { PostgrestBuilder } from './types';\n/**\n * Post-filters (transforms)\n */\nexport default class PostgrestTransformBuilder extends PostgrestBuilder {\n /**\n * Performs vertical filtering with SELECT.\n *\n * @param columns The columns to retrieve, separated by commas.\n */\n select(columns = '*') {\n // Remove whitespaces except when quoted\n let quoted = false;\n const cleanedColumns = columns\n .split('')\n .map((c) => {\n if (/\\s/.test(c) && !quoted) {\n return '';\n }\n if (c === '\"') {\n quoted = !quoted;\n }\n return c;\n })\n .join('');\n this.url.searchParams.set('select', cleanedColumns);\n return this;\n }\n /**\n * Orders the result with the specified `column`.\n *\n * @param column The column to order on.\n * @param ascending If `true`, the result will be in ascending order.\n * @param nullsFirst If `true`, `null`s appear first.\n * @param foreignTable The foreign table to use (if `column` is a foreign column).\n */\n order(column, { ascending = true, nullsFirst = false, foreignTable, } = {}) {\n const key = typeof foreignTable === 'undefined' ? 'order' : `${foreignTable}.order`;\n const existingOrder = this.url.searchParams.get(key);\n this.url.searchParams.set(key, `${existingOrder ? `${existingOrder},` : ''}${column}.${ascending ? 'asc' : 'desc'}.${nullsFirst ? 'nullsfirst' : 'nullslast'}`);\n return this;\n }\n /**\n * Limits the result with the specified `count`.\n *\n * @param count The maximum no. of rows to limit to.\n * @param foreignTable The foreign table to use (for foreign columns).\n */\n limit(count, { foreignTable } = {}) {\n const key = typeof foreignTable === 'undefined' ? 'limit' : `${foreignTable}.limit`;\n this.url.searchParams.set(key, `${count}`);\n return this;\n }\n /**\n * Limits the result to rows within the specified range, inclusive.\n *\n * @param from The starting index from which to limit the result, inclusive.\n * @param to The last index to which to limit the result, inclusive.\n * @param foreignTable The foreign table to use (for foreign columns).\n */\n range(from, to, { foreignTable } = {}) {\n const keyOffset = typeof foreignTable === 'undefined' ? 'offset' : `${foreignTable}.offset`;\n const keyLimit = typeof foreignTable === 'undefined' ? 'limit' : `${foreignTable}.limit`;\n this.url.searchParams.set(keyOffset, `${from}`);\n // Range is inclusive, so add 1\n this.url.searchParams.set(keyLimit, `${to - from + 1}`);\n return this;\n }\n /**\n * Sets the AbortSignal for the fetch request.\n */\n abortSignal(signal) {\n this.signal = signal;\n return this;\n }\n /**\n * Retrieves only one row from the result. Result must be one row (e.g. using\n * `limit`), otherwise this will result in an error.\n */\n single() {\n this.headers['Accept'] = 'application/vnd.pgrst.object+json';\n return this;\n }\n /**\n * Retrieves at most one row from the result. Result must be at most one row\n * (e.g. using `eq` on a UNIQUE column), otherwise this will result in an\n * error.\n */\n maybeSingle() {\n this.headers['Accept'] = 'application/vnd.pgrst.object+json';\n const _this = new PostgrestTransformBuilder(this);\n _this.then = ((onfulfilled, onrejected) => this.then((res) => {\n var _a, _b;\n if ((_b = (_a = res.error) === null || _a === void 0 ? void 0 : _a.details) === null || _b === void 0 ? void 0 : _b.includes('Results contain 0 rows')) {\n return onfulfilled({\n error: null,\n data: null,\n count: res.count,\n status: 200,\n statusText: 'OK',\n body: null,\n });\n }\n return onfulfilled(res);\n }, onrejected));\n return _this;\n }\n /**\n * Set the response type to CSV.\n */\n csv() {\n this.headers['Accept'] = 'text/csv';\n return this;\n }\n}\n//# sourceMappingURL=PostgrestTransformBuilder.js.map","import PostgrestTransformBuilder from './PostgrestTransformBuilder';\nexport default class PostgrestFilterBuilder extends PostgrestTransformBuilder {\n constructor() {\n super(...arguments);\n /** @deprecated Use `contains()` instead. */\n this.cs = this.contains;\n /** @deprecated Use `containedBy()` instead. */\n this.cd = this.containedBy;\n /** @deprecated Use `rangeLt()` instead. */\n this.sl = this.rangeLt;\n /** @deprecated Use `rangeGt()` instead. */\n this.sr = this.rangeGt;\n /** @deprecated Use `rangeGte()` instead. */\n this.nxl = this.rangeGte;\n /** @deprecated Use `rangeLte()` instead. */\n this.nxr = this.rangeLte;\n /** @deprecated Use `rangeAdjacent()` instead. */\n this.adj = this.rangeAdjacent;\n /** @deprecated Use `overlaps()` instead. */\n this.ov = this.overlaps;\n }\n /**\n * Finds all rows which doesn't satisfy the filter.\n *\n * @param column The column to filter on.\n * @param operator The operator to filter with.\n * @param value The value to filter with.\n */\n not(column, operator, value) {\n this.url.searchParams.append(`${column}`, `not.${operator}.${value}`);\n return this;\n }\n /**\n * Finds all rows satisfying at least one of the filters.\n *\n * @param filters The filters to use, separated by commas.\n * @param foreignTable The foreign table to use (if `column` is a foreign column).\n */\n or(filters, { foreignTable } = {}) {\n const key = typeof foreignTable === 'undefined' ? 'or' : `${foreignTable}.or`;\n this.url.searchParams.append(key, `(${filters})`);\n return this;\n }\n /**\n * Finds all rows whose value on the stated `column` exactly matches the\n * specified `value`.\n *\n * @param column The column to filter on.\n * @param value The value to filter with.\n */\n eq(column, value) {\n this.url.searchParams.append(`${column}`, `eq.${value}`);\n return this;\n }\n /**\n * Finds all rows whose value on the stated `column` doesn't match the\n * specified `value`.\n *\n * @param column The column to filter on.\n * @param value The value to filter with.\n */\n neq(column, value) {\n this.url.searchParams.append(`${column}`, `neq.${value}`);\n return this;\n }\n /**\n * Finds all rows whose value on the stated `column` is greater than the\n * specified `value`.\n *\n * @param column The column to filter on.\n * @param value The value to filter with.\n */\n gt(column, value) {\n this.url.searchParams.append(`${column}`, `gt.${value}`);\n return this;\n }\n /**\n * Finds all rows whose value on the stated `column` is greater than or\n * equal to the specified `value`.\n *\n * @param column The column to filter on.\n * @param value The value to filter with.\n */\n gte(column, value) {\n this.url.searchParams.append(`${column}`, `gte.${value}`);\n return this;\n }\n /**\n * Finds all rows whose value on the stated `column` is less than the\n * specified `value`.\n *\n * @param column The column to filter on.\n * @param value The value to filter with.\n */\n lt(column, value) {\n this.url.searchParams.append(`${column}`, `lt.${value}`);\n return this;\n }\n /**\n * Finds all rows whose value on the stated `column` is less than or equal\n * to the specified `value`.\n *\n * @param column The column to filter on.\n * @param value The value to filter with.\n */\n lte(column, value) {\n this.url.searchParams.append(`${column}`, `lte.${value}`);\n return this;\n }\n /**\n * Finds all rows whose value in the stated `column` matches the supplied\n * `pattern` (case sensitive).\n *\n * @param column The column to filter on.\n * @param pattern The pattern to filter with.\n */\n like(column, pattern) {\n this.url.searchParams.append(`${column}`, `like.${pattern}`);\n return this;\n }\n /**\n * Finds all rows whose value in the stated `column` matches the supplied\n * `pattern` (case insensitive).\n *\n * @param column The column to filter on.\n * @param pattern The pattern to filter with.\n */\n ilike(column, pattern) {\n this.url.searchParams.append(`${column}`, `ilike.${pattern}`);\n return this;\n }\n /**\n * A check for exact equality (null, true, false), finds all rows whose\n * value on the stated `column` exactly match the specified `value`.\n *\n * @param column The column to filter on.\n * @param value The value to filter with.\n */\n is(column, value) {\n this.url.searchParams.append(`${column}`, `is.${value}`);\n return this;\n }\n /**\n * Finds all rows whose value on the stated `column` is found on the\n * specified `values`.\n *\n * @param column The column to filter on.\n * @param values The values to filter with.\n */\n in(column, values) {\n const cleanedValues = values\n .map((s) => {\n // handle postgrest reserved characters\n // https://postgrest.org/en/v7.0.0/api.html#reserved-characters\n if (typeof s === 'string' && new RegExp('[,()]').test(s))\n return `\"${s}\"`;\n else\n return `${s}`;\n })\n .join(',');\n this.url.searchParams.append(`${column}`, `in.(${cleanedValues})`);\n return this;\n }\n /**\n * Finds all rows whose json, array, or range value on the stated `column`\n * contains the values specified in `value`.\n *\n * @param column The column to filter on.\n * @param value The value to filter with.\n */\n contains(column, value) {\n if (typeof value === 'string') {\n // range types can be inclusive '[', ']' or exclusive '(', ')' so just\n // keep it simple and accept a string\n this.url.searchParams.append(`${column}`, `cs.${value}`);\n }\n else if (Array.isArray(value)) {\n // array\n this.url.searchParams.append(`${column}`, `cs.{${value.join(',')}}`);\n }\n else {\n // json\n this.url.searchParams.append(`${column}`, `cs.${JSON.stringify(value)}`);\n }\n return this;\n }\n /**\n * Finds all rows whose json, array, or range value on the stated `column` is\n * contained by the specified `value`.\n *\n * @param column The column to filter on.\n * @param value The value to filter with.\n */\n containedBy(column, value) {\n if (typeof value === 'string') {\n // range\n this.url.searchParams.append(`${column}`, `cd.${value}`);\n }\n else if (Array.isArray(value)) {\n // array\n this.url.searchParams.append(`${column}`, `cd.{${value.join(',')}}`);\n }\n else {\n // json\n this.url.searchParams.append(`${column}`, `cd.${JSON.stringify(value)}`);\n }\n return this;\n }\n /**\n * Finds all rows whose range value on the stated `column` is strictly to the\n * left of the specified `range`.\n *\n * @param column The column to filter on.\n * @param range The range to filter with.\n */\n rangeLt(column, range) {\n this.url.searchParams.append(`${column}`, `sl.${range}`);\n return this;\n }\n /**\n * Finds all rows whose range value on the stated `column` is strictly to\n * the right of the specified `range`.\n *\n * @param column The column to filter on.\n * @param range The range to filter with.\n */\n rangeGt(column, range) {\n this.url.searchParams.append(`${column}`, `sr.${range}`);\n return this;\n }\n /**\n * Finds all rows whose range value on the stated `column` does not extend\n * to the left of the specified `range`.\n *\n * @param column The column to filter on.\n * @param range The range to filter with.\n */\n rangeGte(column, range) {\n this.url.searchParams.append(`${column}`, `nxl.${range}`);\n return this;\n }\n /**\n * Finds all rows whose range value on the stated `column` does not extend\n * to the right of the specified `range`.\n *\n * @param column The column to filter on.\n * @param range The range to filter with.\n */\n rangeLte(column, range) {\n this.url.searchParams.append(`${column}`, `nxr.${range}`);\n return this;\n }\n /**\n * Finds all rows whose range value on the stated `column` is adjacent to\n * the specified `range`.\n *\n * @param column The column to filter on.\n * @param range The range to filter with.\n */\n rangeAdjacent(column, range) {\n this.url.searchParams.append(`${column}`, `adj.${range}`);\n return this;\n }\n /**\n * Finds all rows whose array or range value on the stated `column` overlaps\n * (has a value in common) with the specified `value`.\n *\n * @param column The column to filter on.\n * @param value The value to filter with.\n */\n overlaps(column, value) {\n if (typeof value === 'string') {\n // range\n this.url.searchParams.append(`${column}`, `ov.${value}`);\n }\n else {\n // array\n this.url.searchParams.append(`${column}`, `ov.{${value.join(',')}}`);\n }\n return this;\n }\n /**\n * Finds all rows whose text or tsvector value on the stated `column` matches\n * the tsquery in `query`.\n *\n * @param column The column to filter on.\n * @param query The Postgres tsquery string to filter with.\n * @param config The text search configuration to use.\n * @param type The type of tsquery conversion to use on `query`.\n */\n textSearch(column, query, { config, type = null, } = {}) {\n let typePart = '';\n if (type === 'plain') {\n typePart = 'pl';\n }\n else if (type === 'phrase') {\n typePart = 'ph';\n }\n else if (type === 'websearch') {\n typePart = 'w';\n }\n const configPart = config === undefined ? '' : `(${config})`;\n this.url.searchParams.append(`${column}`, `${typePart}fts${configPart}.${query}`);\n return this;\n }\n /**\n * Finds all rows whose tsvector value on the stated `column` matches\n * to_tsquery(`query`).\n *\n * @param column The column to filter on.\n * @param query The Postgres tsquery string to filter with.\n * @param config The text search configuration to use.\n *\n * @deprecated Use `textSearch()` instead.\n */\n fts(column, query, { config } = {}) {\n const configPart = typeof config === 'undefined' ? '' : `(${config})`;\n this.url.searchParams.append(`${column}`, `fts${configPart}.${query}`);\n return this;\n }\n /**\n * Finds all rows whose tsvector value on the stated `column` matches\n * plainto_tsquery(`query`).\n *\n * @param column The column to filter on.\n * @param query The Postgres tsquery string to filter with.\n * @param config The text search configuration to use.\n *\n * @deprecated Use `textSearch()` with `type: 'plain'` instead.\n */\n plfts(column, query, { config } = {}) {\n const configPart = typeof config === 'undefined' ? '' : `(${config})`;\n this.url.searchParams.append(`${column}`, `plfts${configPart}.${query}`);\n return this;\n }\n /**\n * Finds all rows whose tsvector value on the stated `column` matches\n * phraseto_tsquery(`query`).\n *\n * @param column The column to filter on.\n * @param query The Postgres tsquery string to filter with.\n * @param config The text search configuration to use.\n *\n * @deprecated Use `textSearch()` with `type: 'phrase'` instead.\n */\n phfts(column, query, { config } = {}) {\n const configPart = typeof config === 'undefined' ? '' : `(${config})`;\n this.url.searchParams.append(`${column}`, `phfts${configPart}.${query}`);\n return this;\n }\n /**\n * Finds all rows whose tsvector value on the stated `column` matches\n * websearch_to_tsquery(`query`).\n *\n * @param column The column to filter on.\n * @param query The Postgres tsquery string to filter with.\n * @param config The text search configuration to use.\n *\n * @deprecated Use `textSearch()` with `type: 'websearch'` instead.\n */\n wfts(column, query, { config } = {}) {\n const configPart = typeof config === 'undefined' ? '' : `(${config})`;\n this.url.searchParams.append(`${column}`, `wfts${configPart}.${query}`);\n return this;\n }\n /**\n * Finds all rows whose `column` satisfies the filter.\n *\n * @param column The column to filter on.\n * @param operator The operator to filter with.\n * @param value The value to filter with.\n */\n filter(column, operator, value) {\n this.url.searchParams.append(`${column}`, `${operator}.${value}`);\n return this;\n }\n /**\n * Finds all rows whose columns match the specified `query` object.\n *\n * @param query The object to filter with, with column names as keys mapped\n * to their filter values.\n */\n match(query) {\n Object.keys(query).forEach((key) => {\n this.url.searchParams.append(`${key}`, `eq.${query[key]}`);\n });\n return this;\n }\n}\n//# sourceMappingURL=PostgrestFilterBuilder.js.map","import { PostgrestBuilder } from './types';\nimport PostgrestFilterBuilder from './PostgrestFilterBuilder';\nexport default class PostgrestQueryBuilder extends PostgrestBuilder {\n constructor(url, { headers = {}, schema, fetch, shouldThrowOnError, } = {}) {\n super({ fetch, shouldThrowOnError });\n this.url = new URL(url);\n this.headers = Object.assign({}, headers);\n this.schema = schema;\n }\n /**\n * Performs vertical filtering with SELECT.\n *\n * @param columns The columns to retrieve, separated by commas.\n * @param head When set to true, select will void data.\n * @param count Count algorithm to use to count rows in a table.\n */\n select(columns = '*', { head = false, count = null, } = {}) {\n this.method = 'GET';\n // Remove whitespaces except when quoted\n let quoted = false;\n const cleanedColumns = columns\n .split('')\n .map((c) => {\n if (/\\s/.test(c) && !quoted) {\n return '';\n }\n if (c === '\"') {\n quoted = !quoted;\n }\n return c;\n })\n .join('');\n this.url.searchParams.set('select', cleanedColumns);\n if (count) {\n this.headers['Prefer'] = `count=${count}`;\n }\n if (head) {\n this.method = 'HEAD';\n }\n return new PostgrestFilterBuilder(this);\n }\n insert(values, { upsert = false, onConflict, returning = 'representation', count = null, } = {}) {\n this.method = 'POST';\n const prefersHeaders = [`return=${returning}`];\n if (upsert)\n prefersHeaders.push('resolution=merge-duplicates');\n if (upsert && onConflict !== undefined)\n this.url.searchParams.set('on_conflict', onConflict);\n this.body = values;\n if (count) {\n prefersHeaders.push(`count=${count}`);\n }\n if (this.headers['Prefer']) {\n prefersHeaders.unshift(this.headers['Prefer']);\n }\n this.headers['Prefer'] = prefersHeaders.join(',');\n if (Array.isArray(values)) {\n const columns = values.reduce((acc, x) => acc.concat(Object.keys(x)), []);\n if (columns.length > 0) {\n const uniqueColumns = [...new Set(columns)].map((column) => `\"${column}\"`);\n this.url.searchParams.set('columns', uniqueColumns.join(','));\n }\n }\n return new PostgrestFilterBuilder(this);\n }\n /**\n * Performs an UPSERT into the table.\n *\n * @param values The values to insert.\n * @param onConflict By specifying the `on_conflict` query parameter, you can make UPSERT work on a column(s) that has a UNIQUE constraint.\n * @param returning By default the new record is returned. Set this to 'minimal' if you don't need this value.\n * @param count Count algorithm to use to count rows in a table.\n * @param ignoreDuplicates Specifies if duplicate rows should be ignored and not inserted.\n */\n upsert(values, { onConflict, returning = 'representation', count = null, ignoreDuplicates = false, } = {}) {\n this.method = 'POST';\n const prefersHeaders = [\n `resolution=${ignoreDuplicates ? 'ignore' : 'merge'}-duplicates`,\n `return=${returning}`,\n ];\n if (onConflict !== undefined)\n this.url.searchParams.set('on_conflict', onConflict);\n this.body = values;\n if (count) {\n prefersHeaders.push(`count=${count}`);\n }\n if (this.headers['Prefer']) {\n prefersHeaders.unshift(this.headers['Prefer']);\n }\n this.headers['Prefer'] = prefersHeaders.join(',');\n return new PostgrestFilterBuilder(this);\n }\n /**\n * Performs an UPDATE on the table.\n *\n * @param values The values to update.\n * @param returning By default the updated record is returned. Set this to 'minimal' if you don't need this value.\n * @param count Count algorithm to use to count rows in a table.\n */\n update(values, { returning = 'representation', count = null, } = {}) {\n this.method = 'PATCH';\n const prefersHeaders = [`return=${returning}`];\n this.body = values;\n if (count) {\n prefersHeaders.push(`count=${count}`);\n }\n if (this.headers['Prefer']) {\n prefersHeaders.unshift(this.headers['Prefer']);\n }\n this.headers['Prefer'] = prefersHeaders.join(',');\n return new PostgrestFilterBuilder(this);\n }\n /**\n * Performs a DELETE on the table.\n *\n * @param returning If `true`, return the deleted row(s) in the response.\n * @param count Count algorithm to use to count rows in a table.\n */\n delete({ returning = 'representation', count = null, } = {}) {\n this.method = 'DELETE';\n const prefersHeaders = [`return=${returning}`];\n if (count) {\n prefersHeaders.push(`count=${count}`);\n }\n if (this.headers['Prefer']) {\n prefersHeaders.unshift(this.headers['Prefer']);\n }\n this.headers['Prefer'] = prefersHeaders.join(',');\n return new PostgrestFilterBuilder(this);\n }\n}\n//# sourceMappingURL=PostgrestQueryBuilder.js.map","import { PostgrestBuilder } from './types';\nimport PostgrestFilterBuilder from './PostgrestFilterBuilder';\nexport default class PostgrestRpcBuilder extends PostgrestBuilder {\n constructor(url, { headers = {}, schema, fetch, shouldThrowOnError, } = {}) {\n super({ fetch, shouldThrowOnError });\n this.url = new URL(url);\n this.headers = Object.assign({}, headers);\n this.schema = schema;\n }\n /**\n * Perform a function call.\n */\n rpc(params, { head = false, count = null, } = {}) {\n if (head) {\n this.method = 'HEAD';\n if (params) {\n Object.entries(params).forEach(([name, value]) => {\n this.url.searchParams.append(name, value);\n });\n }\n }\n else {\n this.method = 'POST';\n this.body = params;\n }\n if (count) {\n if (this.headers['Prefer'] !== undefined)\n this.headers['Prefer'] += `,count=${count}`;\n else\n this.headers['Prefer'] = `count=${count}`;\n }\n return new PostgrestFilterBuilder(this);\n }\n}\n//# sourceMappingURL=PostgrestRpcBuilder.js.map","// generated by genversion\nexport const version = '0.37.2';\n//# sourceMappingURL=version.js.map","import { version } from './version';\nexport const DEFAULT_HEADERS = { 'X-Client-Info': `postgrest-js/${version}` };\n//# sourceMappingURL=constants.js.map","import PostgrestQueryBuilder from './lib/PostgrestQueryBuilder';\nimport PostgrestRpcBuilder from './lib/PostgrestRpcBuilder';\nimport { DEFAULT_HEADERS } from './lib/constants';\nexport default class PostgrestClient {\n /**\n * Creates a PostgREST client.\n *\n * @param url URL of the PostgREST endpoint.\n * @param headers Custom headers.\n * @param schema Postgres schema to switch to.\n */\n constructor(url, { headers = {}, schema, fetch, throwOnError, } = {}) {\n this.url = url;\n this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS), headers);\n this.schema = schema;\n this.fetch = fetch;\n this.shouldThrowOnError = throwOnError;\n }\n /**\n * Authenticates the request with JWT.\n *\n * @param token The JWT token to use.\n */\n auth(token) {\n this.headers['Authorization'] = `Bearer ${token}`;\n return this;\n }\n /**\n * Perform a table operation.\n *\n * @param table The table name to operate on.\n */\n from(table) {\n const url = `${this.url}/${table}`;\n return new PostgrestQueryBuilder(url, {\n headers: this.headers,\n schema: this.schema,\n fetch: this.fetch,\n shouldThrowOnError: this.shouldThrowOnError,\n });\n }\n /**\n * Perform a function call.\n *\n * @param fn The function name to call.\n * @param params The parameters to pass to the function call.\n * @param head When set to true, no data will be returned.\n * @param count Count algorithm to use to count rows in a table.\n */\n rpc(fn, params, { head = false, count = null, } = {}) {\n const url = `${this.url}/rpc/${fn}`;\n return new PostgrestRpcBuilder(url, {\n headers: this.headers,\n schema: this.schema,\n fetch: this.fetch,\n shouldThrowOnError: this.shouldThrowOnError,\n }).rpc(params, { head, count });\n }\n}\n//# sourceMappingURL=PostgrestClient.js.map","/**\n * Helpers to convert the change Payload into native JS types.\n */\n// Adapted from epgsql (src/epgsql_binary.erl), this module licensed under\n// 3-clause BSD found here: https://raw.githubusercontent.com/epgsql/epgsql/devel/LICENSE\nexport var PostgresTypes;\n(function (PostgresTypes) {\n PostgresTypes[\"abstime\"] = \"abstime\";\n PostgresTypes[\"bool\"] = \"bool\";\n PostgresTypes[\"date\"] = \"date\";\n PostgresTypes[\"daterange\"] = \"daterange\";\n PostgresTypes[\"float4\"] = \"float4\";\n PostgresTypes[\"float8\"] = \"float8\";\n PostgresTypes[\"int2\"] = \"int2\";\n PostgresTypes[\"int4\"] = \"int4\";\n PostgresTypes[\"int4range\"] = \"int4range\";\n PostgresTypes[\"int8\"] = \"int8\";\n PostgresTypes[\"int8range\"] = \"int8range\";\n PostgresTypes[\"json\"] = \"json\";\n PostgresTypes[\"jsonb\"] = \"jsonb\";\n PostgresTypes[\"money\"] = \"money\";\n PostgresTypes[\"numeric\"] = \"numeric\";\n PostgresTypes[\"oid\"] = \"oid\";\n PostgresTypes[\"reltime\"] = \"reltime\";\n PostgresTypes[\"text\"] = \"text\";\n PostgresTypes[\"time\"] = \"time\";\n PostgresTypes[\"timestamp\"] = \"timestamp\";\n PostgresTypes[\"timestamptz\"] = \"timestamptz\";\n PostgresTypes[\"timetz\"] = \"timetz\";\n PostgresTypes[\"tsrange\"] = \"tsrange\";\n PostgresTypes[\"tstzrange\"] = \"tstzrange\";\n})(PostgresTypes || (PostgresTypes = {}));\n/**\n * Takes an array of columns and an object of string values then converts each string value\n * to its mapped type.\n *\n * @param {{name: String, type: String}[]} columns\n * @param {Object} record\n * @param {Object} options The map of various options that can be applied to the mapper\n * @param {Array} options.skipTypes The array of types that should not be converted\n *\n * @example convertChangeData([{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age:'33'}, {})\n * //=>{ first_name: 'Paul', age: 33 }\n */\nexport const convertChangeData = (columns, record, options = {}) => {\n var _a;\n const skipTypes = (_a = options.skipTypes) !== null && _a !== void 0 ? _a : [];\n return Object.keys(record).reduce((acc, rec_key) => {\n acc[rec_key] = convertColumn(rec_key, columns, record, skipTypes);\n return acc;\n }, {});\n};\n/**\n * Converts the value of an individual column.\n *\n * @param {String} columnName The column that you want to convert\n * @param {{name: String, type: String}[]} columns All of the columns\n * @param {Object} record The map of string values\n * @param {Array} skipTypes An array of types that should not be converted\n * @return {object} Useless information\n *\n * @example convertColumn('age', [{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age: '33'}, [])\n * //=> 33\n * @example convertColumn('age', [{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age: '33'}, ['int4'])\n * //=> \"33\"\n */\nexport const convertColumn = (columnName, columns, record, skipTypes) => {\n const column = columns.find((x) => x.name === columnName);\n const colType = column === null || column === void 0 ? void 0 : column.type;\n const value = record[columnName];\n if (colType && !skipTypes.includes(colType)) {\n return convertCell(colType, value);\n }\n return noop(value);\n};\n/**\n * If the value of the cell is `null`, returns null.\n * Otherwise converts the string value to the correct type.\n * @param {String} type A postgres column type\n * @param {String} stringValue The cell value\n *\n * @example convertCell('bool', 't')\n * //=> true\n * @example convertCell('int8', '10')\n * //=> 10\n * @example convertCell('_int4', '{1,2,3,4}')\n * //=> [1,2,3,4]\n */\nexport const convertCell = (type, value) => {\n // if data type is an array\n if (type.charAt(0) === '_') {\n const dataType = type.slice(1, type.length);\n return toArray(value, dataType);\n }\n // If not null, convert to correct type.\n switch (type) {\n case PostgresTypes.bool:\n return toBoolean(value);\n case PostgresTypes.float4:\n case PostgresTypes.float8:\n case PostgresTypes.int2:\n case PostgresTypes.int4:\n case PostgresTypes.int8:\n case PostgresTypes.numeric:\n case PostgresTypes.oid:\n return toNumber(value);\n case PostgresTypes.json:\n case PostgresTypes.jsonb:\n return toJson(value);\n case PostgresTypes.timestamp:\n return toTimestampString(value); // Format to be consistent with PostgREST\n case PostgresTypes.abstime: // To allow users to cast it based on Timezone\n case PostgresTypes.date: // To allow users to cast it based on Timezone\n case PostgresTypes.daterange:\n case PostgresTypes.int4range:\n case PostgresTypes.int8range:\n case PostgresTypes.money:\n case PostgresTypes.reltime: // To allow users to cast it based on Timezone\n case PostgresTypes.text:\n case PostgresTypes.time: // To allow users to cast it based on Timezone\n case PostgresTypes.timestamptz: // To allow users to cast it based on Timezone\n case PostgresTypes.timetz: // To allow users to cast it based on Timezone\n case PostgresTypes.tsrange:\n case PostgresTypes.tstzrange:\n return noop(value);\n default:\n // Return the value for remaining types\n return noop(value);\n }\n};\nconst noop = (value) => {\n return value;\n};\nexport const toBoolean = (value) => {\n switch (value) {\n case 't':\n return true;\n case 'f':\n return false;\n default:\n return value;\n }\n};\nexport const toNumber = (value) => {\n if (typeof value === 'string') {\n const parsedValue = parseFloat(value);\n if (!Number.isNaN(parsedValue)) {\n return parsedValue;\n }\n }\n return value;\n};\nexport const toJson = (value) => {\n if (typeof value === 'string') {\n try {\n return JSON.parse(value);\n }\n catch (error) {\n console.log(`JSON parse error: ${error}`);\n return value;\n }\n }\n return value;\n};\n/**\n * Converts a Postgres Array into a native JS array\n *\n * @example toArray('{}', 'int4')\n * //=> []\n * @example toArray('{\"[2021-01-01,2021-12-31)\",\"(2021-01-01,2021-12-32]\"}', 'daterange')\n * //=> ['[2021-01-01,2021-12-31)', '(2021-01-01,2021-12-32]']\n * @example toArray([1,2,3,4], 'int4')\n * //=> [1,2,3,4]\n */\nexport const toArray = (value, type) => {\n if (typeof value !== 'string') {\n return value;\n }\n const lastIdx = value.length - 1;\n const closeBrace = value[lastIdx];\n const openBrace = value[0];\n // Confirm value is a Postgres array by checking curly brackets\n if (openBrace === '{' && closeBrace === '}') {\n let arr;\n const valTrim = value.slice(1, lastIdx);\n // TODO: find a better solution to separate Postgres array data\n try {\n arr = JSON.parse('[' + valTrim + ']');\n }\n catch (_) {\n // WARNING: splitting on comma does not cover all edge cases\n arr = valTrim ? valTrim.split(',') : [];\n }\n return arr.map((val) => convertCell(type, val));\n }\n return value;\n};\n/**\n * Fixes timestamp to be ISO-8601. Swaps the space between the date and time for a 'T'\n * See https://github.com/supabase/supabase/issues/18\n *\n * @example toTimestampString('2019-09-10 00:00:00')\n * //=> '2019-09-10T00:00:00'\n */\nexport const toTimestampString = (value) => {\n if (typeof value === 'string') {\n return value.replace(' ', 'T');\n }\n return value;\n};\n//# sourceMappingURL=transformers.js.map","module.exports = require('../package.json').version;\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","export const version = '1.7.2';\n//# sourceMappingURL=version.js.map","import { version } from './version';\nexport const DEFAULT_HEADERS = { 'X-Client-Info': `realtime-js/${version}` };\nexport const VSN = '1.0.0';\nexport const DEFAULT_TIMEOUT = 10000;\nexport const WS_CLOSE_NORMAL = 1000;\nexport var SOCKET_STATES;\n(function (SOCKET_STATES) {\n SOCKET_STATES[SOCKET_STATES[\"connecting\"] = 0] = \"connecting\";\n SOCKET_STATES[SOCKET_STATES[\"open\"] = 1] = \"open\";\n SOCKET_STATES[SOCKET_STATES[\"closing\"] = 2] = \"closing\";\n SOCKET_STATES[SOCKET_STATES[\"closed\"] = 3] = \"closed\";\n})(SOCKET_STATES || (SOCKET_STATES = {}));\nexport var CHANNEL_STATES;\n(function (CHANNEL_STATES) {\n CHANNEL_STATES[\"closed\"] = \"closed\";\n CHANNEL_STATES[\"errored\"] = \"errored\";\n CHANNEL_STATES[\"joined\"] = \"joined\";\n CHANNEL_STATES[\"joining\"] = \"joining\";\n CHANNEL_STATES[\"leaving\"] = \"leaving\";\n})(CHANNEL_STATES || (CHANNEL_STATES = {}));\nexport var CHANNEL_EVENTS;\n(function (CHANNEL_EVENTS) {\n CHANNEL_EVENTS[\"close\"] = \"phx_close\";\n CHANNEL_EVENTS[\"error\"] = \"phx_error\";\n CHANNEL_EVENTS[\"join\"] = \"phx_join\";\n CHANNEL_EVENTS[\"reply\"] = \"phx_reply\";\n CHANNEL_EVENTS[\"leave\"] = \"phx_leave\";\n CHANNEL_EVENTS[\"access_token\"] = \"access_token\";\n})(CHANNEL_EVENTS || (CHANNEL_EVENTS = {}));\nexport var TRANSPORTS;\n(function (TRANSPORTS) {\n TRANSPORTS[\"websocket\"] = \"websocket\";\n})(TRANSPORTS || (TRANSPORTS = {}));\nexport var CONNECTION_STATE;\n(function (CONNECTION_STATE) {\n CONNECTION_STATE[\"Connecting\"] = \"connecting\";\n CONNECTION_STATE[\"Open\"] = \"open\";\n CONNECTION_STATE[\"Closing\"] = \"closing\";\n CONNECTION_STATE[\"Closed\"] = \"closed\";\n})(CONNECTION_STATE || (CONNECTION_STATE = {}));\n//# sourceMappingURL=constants.js.map","/**\n * Creates a timer that accepts a `timerCalc` function to perform calculated timeout retries, such as exponential backoff.\n *\n * @example\n * let reconnectTimer = new Timer(() => this.connect(), function(tries){\n * return [1000, 5000, 10000][tries - 1] || 10000\n * })\n * reconnectTimer.scheduleTimeout() // fires after 1000\n * reconnectTimer.scheduleTimeout() // fires after 5000\n * reconnectTimer.reset()\n * reconnectTimer.scheduleTimeout() // fires after 1000\n */\nexport default class Timer {\n constructor(callback, timerCalc) {\n this.callback = callback;\n this.timerCalc = timerCalc;\n this.timer = undefined;\n this.tries = 0;\n this.callback = callback;\n this.timerCalc = timerCalc;\n }\n reset() {\n this.tries = 0;\n clearTimeout(this.timer);\n }\n // Cancels any previous scheduleTimeout and schedules callback\n scheduleTimeout() {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1;\n this.callback();\n }, this.timerCalc(this.tries + 1));\n }\n}\n//# sourceMappingURL=timer.js.map","// This file draws heavily from https://github.com/phoenixframework/phoenix/commit/cf098e9cf7a44ee6479d31d911a97d3c7430c6fe\n// License: https://github.com/phoenixframework/phoenix/blob/master/LICENSE.md\nexport default class Serializer {\n constructor() {\n this.HEADER_LENGTH = 1;\n }\n decode(rawPayload, callback) {\n if (rawPayload.constructor === ArrayBuffer) {\n return callback(this._binaryDecode(rawPayload));\n }\n if (typeof rawPayload === 'string') {\n return callback(JSON.parse(rawPayload));\n }\n return callback({});\n }\n _binaryDecode(buffer) {\n const view = new DataView(buffer);\n const decoder = new TextDecoder();\n return this._decodeBroadcast(buffer, view, decoder);\n }\n _decodeBroadcast(buffer, view, decoder) {\n const topicSize = view.getUint8(1);\n const eventSize = view.getUint8(2);\n let offset = this.HEADER_LENGTH + 2;\n const topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n offset = offset + topicSize;\n const event = decoder.decode(buffer.slice(offset, offset + eventSize));\n offset = offset + eventSize;\n const data = JSON.parse(decoder.decode(buffer.slice(offset, buffer.byteLength)));\n return { ref: null, topic: topic, event: event, payload: data };\n }\n}\n//# sourceMappingURL=serializer.js.map","import { DEFAULT_TIMEOUT } from '../lib/constants';\nimport RealtimeSubscription from '../RealtimeSubscription';\nexport default class Push {\n /**\n * Initializes the Push\n *\n * @param channel The Channel\n * @param event The event, for example `\"phx_join\"`\n * @param payload The payload, for example `{user_id: 123}`\n * @param timeout The push timeout in milliseconds\n */\n constructor(channel, event, payload = {}, timeout = DEFAULT_TIMEOUT) {\n this.channel = channel;\n this.event = event;\n this.payload = payload;\n this.timeout = timeout;\n this.sent = false;\n this.timeoutTimer = undefined;\n this.ref = '';\n this.receivedResp = null;\n this.recHooks = [];\n this.refEvent = null;\n }\n resend(timeout) {\n this.timeout = timeout;\n this._cancelRefEvent();\n this.ref = '';\n this.refEvent = null;\n this.receivedResp = null;\n this.sent = false;\n this.send();\n }\n send() {\n if (this._hasReceived('timeout')) {\n return;\n }\n this.startTimeout();\n this.sent = true;\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload,\n ref: this.ref,\n });\n }\n updatePayload(payload) {\n this.payload = Object.assign(Object.assign({}, this.payload), payload);\n }\n receive(status, callback) {\n var _a;\n if (this._hasReceived(status)) {\n callback((_a = this.receivedResp) === null || _a === void 0 ? void 0 : _a.response);\n }\n this.recHooks.push({ status, callback });\n return this;\n }\n startTimeout() {\n if (this.timeoutTimer) {\n return;\n }\n this.ref = this.channel.socket.makeRef();\n this.refEvent = this.channel.replyEventName(this.ref);\n const callback = (payload) => {\n this._cancelRefEvent();\n this._cancelTimeout();\n this.receivedResp = payload;\n this._matchReceive(payload);\n };\n if (this.channel instanceof RealtimeSubscription) {\n this.channel.on(this.refEvent, callback);\n }\n else {\n this.channel.on(this.refEvent, {}, callback);\n }\n this.timeoutTimer = setTimeout(() => {\n this.trigger('timeout', {});\n }, this.timeout);\n }\n trigger(status, response) {\n if (this.refEvent)\n this.channel.trigger(this.refEvent, { status, response });\n }\n destroy() {\n this._cancelRefEvent();\n this._cancelTimeout();\n }\n _cancelRefEvent() {\n if (!this.refEvent) {\n return;\n }\n if (this.channel instanceof RealtimeSubscription) {\n this.channel.off(this.refEvent);\n }\n else {\n this.channel.off(this.refEvent, {});\n }\n }\n _cancelTimeout() {\n clearTimeout(this.timeoutTimer);\n this.timeoutTimer = undefined;\n }\n _matchReceive({ status, response, }) {\n this.recHooks\n .filter((h) => h.status === status)\n .forEach((h) => h.callback(response));\n }\n _hasReceived(status) {\n return this.receivedResp && this.receivedResp.status === status;\n }\n}\n//# sourceMappingURL=push.js.map","import { CHANNEL_EVENTS, CHANNEL_STATES } from './lib/constants';\nimport Push from './lib/push';\nimport Timer from './lib/timer';\nexport default class RealtimeSubscription {\n constructor(topic, params = {}, socket) {\n this.topic = topic;\n this.params = params;\n this.socket = socket;\n this.bindings = [];\n this.state = CHANNEL_STATES.closed;\n this.joinedOnce = false;\n this.pushBuffer = [];\n this.timeout = this.socket.timeout;\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout);\n this.rejoinTimer = new Timer(() => this.rejoinUntilConnected(), this.socket.reconnectAfterMs);\n this.joinPush.receive('ok', () => {\n this.state = CHANNEL_STATES.joined;\n this.rejoinTimer.reset();\n this.pushBuffer.forEach((pushEvent) => pushEvent.send());\n this.pushBuffer = [];\n });\n this.onClose(() => {\n this.rejoinTimer.reset();\n this.socket.log('channel', `close ${this.topic} ${this.joinRef()}`);\n this.state = CHANNEL_STATES.closed;\n this.socket.remove(this);\n });\n this.onError((reason) => {\n if (this.isLeaving() || this.isClosed()) {\n return;\n }\n this.socket.log('channel', `error ${this.topic}`, reason);\n this.state = CHANNEL_STATES.errored;\n this.rejoinTimer.scheduleTimeout();\n });\n this.joinPush.receive('timeout', () => {\n if (!this.isJoining()) {\n return;\n }\n this.socket.log('channel', `timeout ${this.topic}`, this.joinPush.timeout);\n this.state = CHANNEL_STATES.errored;\n this.rejoinTimer.scheduleTimeout();\n });\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload);\n });\n }\n rejoinUntilConnected() {\n this.rejoinTimer.scheduleTimeout();\n if (this.socket.isConnected()) {\n this.rejoin();\n }\n }\n subscribe(timeout = this.timeout) {\n if (this.joinedOnce) {\n throw `tried to subscribe multiple times. 'subscribe' can only be called a single time per channel instance`;\n }\n else {\n this.joinedOnce = true;\n this.rejoin(timeout);\n return this.joinPush;\n }\n }\n onClose(callback) {\n this.on(CHANNEL_EVENTS.close, callback);\n }\n onError(callback) {\n this.on(CHANNEL_EVENTS.error, (reason) => callback(reason));\n }\n on(event, callback) {\n this.bindings.push({ event, callback });\n }\n off(event) {\n this.bindings = this.bindings.filter((bind) => bind.event !== event);\n }\n canPush() {\n return this.socket.isConnected() && this.isJoined();\n }\n push(event, payload, timeout = this.timeout) {\n if (!this.joinedOnce) {\n throw `tried to push '${event}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;\n }\n let pushEvent = new Push(this, event, payload, timeout);\n if (this.canPush()) {\n pushEvent.send();\n }\n else {\n pushEvent.startTimeout();\n this.pushBuffer.push(pushEvent);\n }\n return pushEvent;\n }\n updateJoinPayload(payload) {\n this.joinPush.updatePayload(payload);\n }\n /**\n * Leaves the channel\n *\n * Unsubscribes from server events, and instructs channel to terminate on server.\n * Triggers onClose() hooks.\n *\n * To receive leave acknowledgements, use the a `receive` hook to bind to the server ack, ie:\n * channel.unsubscribe().receive(\"ok\", () => alert(\"left!\") )\n */\n unsubscribe(timeout = this.timeout) {\n this.state = CHANNEL_STATES.leaving;\n let onClose = () => {\n this.socket.log('channel', `leave ${this.topic}`);\n this.trigger(CHANNEL_EVENTS.close, 'leave', this.joinRef());\n };\n // Destroy joinPush to avoid connection timeouts during unscription phase\n this.joinPush.destroy();\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, {}, timeout);\n leavePush.receive('ok', () => onClose()).receive('timeout', () => onClose());\n leavePush.send();\n if (!this.canPush()) {\n leavePush.trigger('ok', {});\n }\n return leavePush;\n }\n /**\n * Overridable message hook\n *\n * Receives all events for specialized message handling before dispatching to the channel callbacks.\n * Must return the payload, modified or unmodified.\n */\n onMessage(event, payload, ref) {\n return payload;\n }\n isMember(topic) {\n return this.topic === topic;\n }\n joinRef() {\n return this.joinPush.ref;\n }\n rejoin(timeout = this.timeout) {\n if (this.isLeaving()) {\n return;\n }\n this.socket.leaveOpenTopic(this.topic);\n this.state = CHANNEL_STATES.joining;\n this.joinPush.resend(timeout);\n }\n trigger(event, payload, ref) {\n let { close, error, leave, join } = CHANNEL_EVENTS;\n let events = [close, error, leave, join];\n if (ref && events.indexOf(event) >= 0 && ref !== this.joinRef()) {\n return;\n }\n let handledPayload = this.onMessage(event, payload, ref);\n if (payload && !handledPayload) {\n throw 'channel onMessage callbacks must return the payload, modified or unmodified';\n }\n this.bindings\n .filter((bind) => {\n // Bind all events if the user specifies a wildcard.\n if (bind.event === '*') {\n return event === (payload === null || payload === void 0 ? void 0 : payload.type);\n }\n else {\n return bind.event === event;\n }\n })\n .map((bind) => bind.callback(handledPayload, ref));\n }\n replyEventName(ref) {\n return `chan_reply_${ref}`;\n }\n isClosed() {\n return this.state === CHANNEL_STATES.closed;\n }\n isErrored() {\n return this.state === CHANNEL_STATES.errored;\n }\n isJoined() {\n return this.state === CHANNEL_STATES.joined;\n }\n isJoining() {\n return this.state === CHANNEL_STATES.joining;\n }\n isLeaving() {\n return this.state === CHANNEL_STATES.leaving;\n }\n}\n//# sourceMappingURL=RealtimeSubscription.js.map","/*\n This file draws heavily from https://github.com/phoenixframework/phoenix/blob/d344ec0a732ab4ee204215b31de69cf4be72e3bf/assets/js/phoenix/presence.js\n License: https://github.com/phoenixframework/phoenix/blob/d344ec0a732ab4ee204215b31de69cf4be72e3bf/LICENSE.md\n*/\nexport default class RealtimePresence {\n /**\n * Initializes the Presence.\n *\n * @param channel - The RealtimeSubscription\n * @param opts - The options,\n * for example `{events: {state: 'state', diff: 'diff'}}`\n */\n constructor(channel, opts) {\n this.channel = channel;\n this.state = {};\n this.pendingDiffs = [];\n this.joinRef = null;\n this.caller = {\n onJoin: () => { },\n onLeave: () => { },\n onSync: () => { },\n };\n const events = (opts === null || opts === void 0 ? void 0 : opts.events) || {\n state: 'presence_state',\n diff: 'presence_diff',\n };\n this.channel.on(events.state, {}, (newState) => {\n const { onJoin, onLeave, onSync } = this.caller;\n this.joinRef = this.channel.joinRef();\n this.state = RealtimePresence.syncState(this.state, newState, onJoin, onLeave);\n this.pendingDiffs.forEach((diff) => {\n this.state = RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave);\n });\n this.pendingDiffs = [];\n onSync();\n });\n this.channel.on(events.diff, {}, (diff) => {\n const { onJoin, onLeave, onSync } = this.caller;\n if (this.inPendingSyncState()) {\n this.pendingDiffs.push(diff);\n }\n else {\n this.state = RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave);\n onSync();\n }\n });\n }\n /**\n * Used to sync the list of presences on the server with the\n * client's state.\n *\n * An optional `onJoin` and `onLeave` callback can be provided to\n * react to changes in the client's local presences across\n * disconnects and reconnects with the server.\n */\n static syncState(currentState, newState, onJoin, onLeave) {\n const state = this.cloneDeep(currentState);\n const transformedState = this.transformState(newState);\n const joins = {};\n const leaves = {};\n this.map(state, (key, presences) => {\n if (!transformedState[key]) {\n leaves[key] = presences;\n }\n });\n this.map(transformedState, (key, newPresences) => {\n const currentPresences = state[key];\n if (currentPresences) {\n const newPresenceIds = newPresences.map((m) => m.presence_id);\n const curPresenceIds = currentPresences.map((m) => m.presence_id);\n const joinedPresences = newPresences.filter((m) => curPresenceIds.indexOf(m.presence_id) < 0);\n const leftPresences = currentPresences.filter((m) => newPresenceIds.indexOf(m.presence_id) < 0);\n if (joinedPresences.length > 0) {\n joins[key] = joinedPresences;\n }\n if (leftPresences.length > 0) {\n leaves[key] = leftPresences;\n }\n }\n else {\n joins[key] = newPresences;\n }\n });\n return this.syncDiff(state, { joins, leaves }, onJoin, onLeave);\n }\n /**\n * Used to sync a diff of presence join and leave events from the\n * server, as they happen.\n *\n * Like `syncState`, `syncDiff` accepts optional `onJoin` and\n * `onLeave` callbacks to react to a user joining or leaving from a\n * device.\n */\n static syncDiff(state, diff, onJoin, onLeave) {\n const { joins, leaves } = {\n joins: this.transformState(diff.joins),\n leaves: this.transformState(diff.leaves),\n };\n if (!onJoin) {\n onJoin = () => { };\n }\n if (!onLeave) {\n onLeave = () => { };\n }\n this.map(joins, (key, newPresences) => {\n const currentPresences = state[key];\n state[key] = this.cloneDeep(newPresences);\n if (currentPresences) {\n const joinedPresenceIds = state[key].map((m) => m.presence_id);\n const curPresences = currentPresences.filter((m) => joinedPresenceIds.indexOf(m.presence_id) < 0);\n state[key].unshift(...curPresences);\n }\n onJoin(key, currentPresences, newPresences);\n });\n this.map(leaves, (key, leftPresences) => {\n let currentPresences = state[key];\n if (!currentPresences)\n return;\n const presenceIdsToRemove = leftPresences.map((m) => m.presence_id);\n currentPresences = currentPresences.filter((m) => presenceIdsToRemove.indexOf(m.presence_id) < 0);\n state[key] = currentPresences;\n onLeave(key, currentPresences, leftPresences);\n if (currentPresences.length === 0)\n delete state[key];\n });\n return state;\n }\n /**\n * Returns the array of presences, with selected metadata.\n */\n static list(presences, chooser) {\n if (!chooser) {\n chooser = (_key, pres) => pres;\n }\n return this.map(presences, (key, presences) => chooser(key, presences));\n }\n static map(obj, func) {\n return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key]));\n }\n /**\n * Remove 'metas' key\n * Change 'phx_ref' to 'presence_id'\n * Remove 'phx_ref' and 'phx_ref_prev'\n *\n * @example\n * // returns {\n * abc123: [\n * { presence_id: '2', user_id: 1 },\n * { presence_id: '3', user_id: 2 }\n * ]\n * }\n * RealtimePresence.transformState({\n * abc123: {\n * metas: [\n * { phx_ref: '2', phx_ref_prev: '1' user_id: 1 },\n * { phx_ref: '3', user_id: 2 }\n * ]\n * }\n * })\n */\n static transformState(state) {\n state = this.cloneDeep(state);\n return Object.getOwnPropertyNames(state).reduce((newState, key) => {\n const presences = state[key];\n if ('metas' in presences) {\n newState[key] = presences.metas.map((presence) => {\n presence['presence_id'] = presence['phx_ref'];\n delete presence['phx_ref'];\n delete presence['phx_ref_prev'];\n return presence;\n });\n }\n else {\n newState[key] = presences;\n }\n return newState;\n }, {});\n }\n static cloneDeep(obj) {\n return JSON.parse(JSON.stringify(obj));\n }\n onJoin(callback) {\n this.caller.onJoin = callback;\n }\n onLeave(callback) {\n this.caller.onLeave = callback;\n }\n onSync(callback) {\n this.caller.onSync = callback;\n }\n list(by) {\n return RealtimePresence.list(this.state, by);\n }\n inPendingSyncState() {\n return !this.joinRef || this.joinRef !== this.channel.joinRef();\n }\n}\n//# sourceMappingURL=RealtimePresence.js.map","import { CHANNEL_EVENTS, CHANNEL_STATES } from './lib/constants';\nimport Push from './lib/push';\nimport Timer from './lib/timer';\nimport RealtimePresence from './RealtimePresence';\nexport default class RealtimeChannel {\n constructor(topic, params = {}, socket) {\n this.topic = topic;\n this.params = params;\n this.socket = socket;\n this.bindings = [];\n this.state = CHANNEL_STATES.closed;\n this.joinedOnce = false;\n this.pushBuffer = [];\n this.timeout = this.socket.timeout;\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout);\n this.rejoinTimer = new Timer(() => this.rejoinUntilConnected(), this.socket.reconnectAfterMs);\n this.joinPush.receive('ok', () => {\n this.state = CHANNEL_STATES.joined;\n this.rejoinTimer.reset();\n this.pushBuffer.forEach((pushEvent) => pushEvent.send());\n this.pushBuffer = [];\n });\n this.onClose(() => {\n this.rejoinTimer.reset();\n this.socket.log('channel', `close ${this.topic} ${this.joinRef()}`);\n this.state = CHANNEL_STATES.closed;\n this.socket.remove(this);\n });\n this.onError((reason) => {\n if (this.isLeaving() || this.isClosed()) {\n return;\n }\n this.socket.log('channel', `error ${this.topic}`, reason);\n this.state = CHANNEL_STATES.errored;\n this.rejoinTimer.scheduleTimeout();\n });\n this.joinPush.receive('timeout', () => {\n if (!this.isJoining()) {\n return;\n }\n this.socket.log('channel', `timeout ${this.topic}`, this.joinPush.timeout);\n this.state = CHANNEL_STATES.errored;\n this.rejoinTimer.scheduleTimeout();\n });\n this.on(CHANNEL_EVENTS.reply, {}, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload);\n });\n this.presence = new RealtimePresence(this);\n }\n list() {\n return this.presence.list();\n }\n rejoinUntilConnected() {\n this.rejoinTimer.scheduleTimeout();\n if (this.socket.isConnected()) {\n this.rejoin();\n }\n }\n subscribe(timeout = this.timeout) {\n if (this.joinedOnce) {\n throw `tried to subscribe multiple times. 'subscribe' can only be called a single time per channel instance`;\n }\n else {\n const configs = this.bindings.reduce((acc, binding) => {\n const { type } = binding;\n if (![\n 'phx_close',\n 'phx_error',\n 'phx_reply',\n 'presence_diff',\n 'presence_state',\n ].includes(type)) {\n acc[type] = binding;\n }\n return acc;\n }, {});\n if (Object.keys(configs).length) {\n this.updateJoinPayload({ configs });\n }\n this.joinedOnce = true;\n this.rejoin(timeout);\n return this.joinPush;\n }\n }\n /**\n * Registers a callback that will be executed when the channel closes.\n */\n onClose(callback) {\n this.on(CHANNEL_EVENTS.close, {}, callback);\n }\n /**\n * Registers a callback that will be executed when the channel encounteres an error.\n */\n onError(callback) {\n this.on(CHANNEL_EVENTS.error, {}, (reason) => callback(reason));\n }\n on(type, filter, callback) {\n this.bindings.push({\n type,\n filter: filter !== null && filter !== void 0 ? filter : {},\n callback: callback !== null && callback !== void 0 ? callback : (() => { }),\n });\n }\n off(type, filter) {\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.type === type && RealtimeChannel.isEqual(bind.filter, filter));\n });\n }\n /**\n * Returns `true` if the socket is connected and the channel has been joined.\n */\n canPush() {\n return this.socket.isConnected() && this.isJoined();\n }\n push(event, payload, timeout = this.timeout) {\n if (!this.joinedOnce) {\n throw `tried to push '${event}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;\n }\n let pushEvent = new Push(this, event, payload, timeout);\n if (this.canPush()) {\n pushEvent.send();\n }\n else {\n pushEvent.startTimeout();\n this.pushBuffer.push(pushEvent);\n }\n return pushEvent;\n }\n updateJoinPayload(payload) {\n this.joinPush.updatePayload(payload);\n }\n /**\n * Leaves the channel.\n *\n * Unsubscribes from server events, and instructs channel to terminate on server.\n * Triggers onClose() hooks.\n *\n * To receive leave acknowledgements, use the a `receive` hook to bind to the server ack, ie:\n * channel.unsubscribe().receive(\"ok\", () => alert(\"left!\") )\n */\n unsubscribe(timeout = this.timeout) {\n this.state = CHANNEL_STATES.leaving;\n const onClose = () => {\n this.socket.log('channel', `leave ${this.topic}`);\n this.trigger(CHANNEL_EVENTS.close, 'leave', this.joinRef());\n };\n // Destroy joinPush to avoid connection timeouts during unscription phase\n this.joinPush.destroy();\n const leavePush = new Push(this, CHANNEL_EVENTS.leave, {}, timeout);\n leavePush.receive('ok', () => onClose()).receive('timeout', () => onClose());\n leavePush.send();\n if (!this.canPush()) {\n leavePush.trigger('ok', {});\n }\n return leavePush;\n }\n /**\n * Overridable message hook\n *\n * Receives all events for specialized message handling before dispatching to the channel callbacks.\n * Must return the payload, modified or unmodified.\n */\n onMessage(event, payload, ref) {\n return payload;\n }\n isMember(topic) {\n return this.topic === topic;\n }\n joinRef() {\n return this.joinPush.ref;\n }\n rejoin(timeout = this.timeout) {\n if (this.isLeaving()) {\n return;\n }\n this.socket.leaveOpenTopic(this.topic);\n this.state = CHANNEL_STATES.joining;\n this.joinPush.resend(timeout);\n }\n trigger(type, payload, ref) {\n const { close, error, leave, join } = CHANNEL_EVENTS;\n const events = [close, error, leave, join];\n if (ref && events.indexOf(type) >= 0 && ref !== this.joinRef()) {\n return;\n }\n const handledPayload = this.onMessage(type, payload, ref);\n if (payload && !handledPayload) {\n throw 'channel onMessage callbacks must return the payload, modified or unmodified';\n }\n this.bindings\n .filter((bind) => {\n var _a, _b;\n return ((bind === null || bind === void 0 ? void 0 : bind.type) === type &&\n (((_a = bind === null || bind === void 0 ? void 0 : bind.filter) === null || _a === void 0 ? void 0 : _a.event) === '*' ||\n ((_b = bind === null || bind === void 0 ? void 0 : bind.filter) === null || _b === void 0 ? void 0 : _b.event) === (payload === null || payload === void 0 ? void 0 : payload.event)));\n })\n .map((bind) => bind.callback(handledPayload, ref));\n }\n send(payload) {\n const push = this.push(payload.type, payload);\n return new Promise((resolve, reject) => {\n push.receive('ok', () => resolve('ok'));\n push.receive('timeout', () => reject('timeout'));\n });\n }\n replyEventName(ref) {\n return `chan_reply_${ref}`;\n }\n isClosed() {\n return this.state === CHANNEL_STATES.closed;\n }\n isErrored() {\n return this.state === CHANNEL_STATES.errored;\n }\n isJoined() {\n return this.state === CHANNEL_STATES.joined;\n }\n isJoining() {\n return this.state === CHANNEL_STATES.joining;\n }\n isLeaving() {\n return this.state === CHANNEL_STATES.leaving;\n }\n static isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n return false;\n }\n for (const k in obj1) {\n if (obj1[k] !== obj2[k]) {\n return false;\n }\n }\n return true;\n }\n}\n//# sourceMappingURL=RealtimeChannel.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { w3cwebsocket } from 'websocket';\nimport { VSN, CHANNEL_EVENTS, TRANSPORTS, SOCKET_STATES, DEFAULT_TIMEOUT, WS_CLOSE_NORMAL, DEFAULT_HEADERS, CONNECTION_STATE, } from './lib/constants';\nimport Timer from './lib/timer';\nimport Serializer from './lib/serializer';\nimport RealtimeSubscription from './RealtimeSubscription';\nimport RealtimeChannel from './RealtimeChannel';\nconst noop = () => { };\nexport default class RealtimeClient {\n /**\n * Initializes the Socket.\n *\n * @param endPoint The string WebSocket endpoint, ie, \"ws://example.com/socket\", \"wss://example.com\", \"/socket\" (inherited host & protocol)\n * @param options.transport The Websocket Transport, for example WebSocket.\n * @param options.timeout The default timeout in milliseconds to trigger push timeouts.\n * @param options.params The optional params to pass when connecting.\n * @param options.headers The optional headers to pass when connecting.\n * @param options.heartbeatIntervalMs The millisec interval to send a heartbeat message.\n * @param options.logger The optional function for specialized logging, ie: logger: (kind, msg, data) => { console.log(`${kind}: ${msg}`, data) }\n * @param options.encode The function to encode outgoing messages. Defaults to JSON: (payload, callback) => callback(JSON.stringify(payload))\n * @param options.decode The function to decode incoming messages. Defaults to Serializer's decode.\n * @param options.longpollerTimeout The maximum timeout of a long poll AJAX request. Defaults to 20s (double the server long poll timer).\n * @param options.reconnectAfterMs he optional function that returns the millsec reconnect interval. Defaults to stepped backoff off.\n */\n constructor(endPoint, options) {\n this.accessToken = null;\n this.channels = [];\n this.endPoint = '';\n this.headers = DEFAULT_HEADERS;\n this.params = {};\n this.timeout = DEFAULT_TIMEOUT;\n this.transport = w3cwebsocket;\n this.heartbeatIntervalMs = 30000;\n this.longpollerTimeout = 20000;\n this.heartbeatTimer = undefined;\n this.pendingHeartbeatRef = null;\n this.ref = 0;\n this.logger = noop;\n this.conn = null;\n this.sendBuffer = [];\n this.serializer = new Serializer();\n this.stateChangeCallbacks = {\n open: [],\n close: [],\n error: [],\n message: [],\n };\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`;\n if (options === null || options === void 0 ? void 0 : options.params)\n this.params = options.params;\n if (options === null || options === void 0 ? void 0 : options.headers)\n this.headers = Object.assign(Object.assign({}, this.headers), options.headers);\n if (options === null || options === void 0 ? void 0 : options.timeout)\n this.timeout = options.timeout;\n if (options === null || options === void 0 ? void 0 : options.logger)\n this.logger = options.logger;\n if (options === null || options === void 0 ? void 0 : options.transport)\n this.transport = options.transport;\n if (options === null || options === void 0 ? void 0 : options.heartbeatIntervalMs)\n this.heartbeatIntervalMs = options.heartbeatIntervalMs;\n if (options === null || options === void 0 ? void 0 : options.longpollerTimeout)\n this.longpollerTimeout = options.longpollerTimeout;\n this.reconnectAfterMs = (options === null || options === void 0 ? void 0 : options.reconnectAfterMs) ? options.reconnectAfterMs\n : (tries) => {\n return [1000, 2000, 5000, 10000][tries - 1] || 10000;\n };\n this.encode = (options === null || options === void 0 ? void 0 : options.encode) ? options.encode\n : (payload, callback) => {\n return callback(JSON.stringify(payload));\n };\n this.decode = (options === null || options === void 0 ? void 0 : options.decode) ? options.decode\n : this.serializer.decode.bind(this.serializer);\n this.reconnectTimer = new Timer(() => __awaiter(this, void 0, void 0, function* () {\n yield this.disconnect();\n this.connect();\n }), this.reconnectAfterMs);\n }\n /**\n * Connects the socket, unless already connected.\n */\n connect() {\n if (this.conn) {\n return;\n }\n this.conn = new this.transport(this.endPointURL(), [], null, this.headers);\n if (this.conn) {\n // this.conn.timeout = this.longpollerTimeout // TYPE ERROR\n this.conn.binaryType = 'arraybuffer';\n this.conn.onopen = () => this._onConnOpen();\n this.conn.onerror = (error) => this._onConnError(error);\n this.conn.onmessage = (event) => this.onConnMessage(event);\n this.conn.onclose = (event) => this._onConnClose(event);\n }\n }\n /**\n * Disconnects the socket.\n *\n * @param code A numeric status code to send on disconnect.\n * @param reason A custom reason for the disconnect.\n */\n disconnect(code, reason) {\n return new Promise((resolve, _reject) => {\n try {\n if (this.conn) {\n this.conn.onclose = function () { }; // noop\n if (code) {\n this.conn.close(code, reason || '');\n }\n else {\n this.conn.close();\n }\n this.conn = null;\n // remove open handles\n this.heartbeatTimer && clearInterval(this.heartbeatTimer);\n this.reconnectTimer.reset();\n }\n resolve({ error: null, data: true });\n }\n catch (error) {\n resolve({ error: error, data: false });\n }\n });\n }\n /**\n * Logs the message.\n *\n * For customized logging, `this.logger` can be overriden.\n */\n log(kind, msg, data) {\n this.logger(kind, msg, data);\n }\n /**\n * Registers a callback for connection state change event.\n *\n * @param callback A function to be called when the event occurs.\n *\n * @example\n * socket.onOpen(() => console.log(\"Socket opened.\"))\n */\n onOpen(callback) {\n this.stateChangeCallbacks.open.push(callback);\n }\n /**\n * Registers a callback for connection state change events.\n *\n * @param callback A function to be called when the event occurs.\n *\n * @example\n * socket.onOpen(() => console.log(\"Socket closed.\"))\n */\n onClose(callback) {\n this.stateChangeCallbacks.close.push(callback);\n }\n /**\n * Registers a callback for connection state change events.\n *\n * @param callback A function to be called when the event occurs.\n *\n * @example\n * socket.onOpen((error) => console.log(\"An error occurred\"))\n */\n onError(callback) {\n this.stateChangeCallbacks.error.push(callback);\n }\n /**\n * Calls a function any time a message is received.\n *\n * @param callback A function to be called when the event occurs.\n *\n * @example\n * socket.onMessage((message) => console.log(message))\n */\n onMessage(callback) {\n this.stateChangeCallbacks.message.push(callback);\n }\n /**\n * Returns the current state of the socket.\n */\n connectionState() {\n switch (this.conn && this.conn.readyState) {\n case SOCKET_STATES.connecting:\n return CONNECTION_STATE.Connecting;\n case SOCKET_STATES.open:\n return CONNECTION_STATE.Open;\n case SOCKET_STATES.closing:\n return CONNECTION_STATE.Closing;\n default:\n return CONNECTION_STATE.Closed;\n }\n }\n /**\n * Retuns `true` is the connection is open.\n */\n isConnected() {\n return this.connectionState() === CONNECTION_STATE.Open;\n }\n /**\n * Removes a subscription from the socket.\n *\n * @param channel An open subscription.\n */\n remove(channel) {\n this.channels = this.channels.filter((c) => c.joinRef() !== channel.joinRef());\n }\n channel(topic, chanParams = {}) {\n var _a;\n const { selfBroadcast } = chanParams, params = __rest(chanParams, [\"selfBroadcast\"]);\n if (selfBroadcast) {\n params.self_broadcast = selfBroadcast;\n }\n const chan = ((_a = this.params) === null || _a === void 0 ? void 0 : _a.vsndate) ? new RealtimeChannel(topic, params, this)\n : new RealtimeSubscription(topic, params, this);\n if (chan instanceof RealtimeChannel) {\n chan.presence.onJoin((key, currentPresences, newPresences) => {\n chan.trigger('presence', {\n event: 'JOIN',\n key,\n currentPresences,\n newPresences,\n });\n });\n chan.presence.onLeave((key, currentPresences, leftPresences) => {\n chan.trigger('presence', {\n event: 'LEAVE',\n key,\n currentPresences,\n leftPresences,\n });\n });\n chan.presence.onSync(() => {\n chan.trigger('presence', { event: 'SYNC' });\n });\n }\n this.channels.push(chan);\n return chan;\n }\n /**\n * Push out a message if the socket is connected.\n *\n * If the socket is not connected, the message gets enqueued within a local buffer, and sent out when a connection is next established.\n */\n push(data) {\n const { topic, event, payload, ref } = data;\n let callback = () => {\n this.encode(data, (result) => {\n var _a;\n (_a = this.conn) === null || _a === void 0 ? void 0 : _a.send(result);\n });\n };\n this.log('push', `${topic} ${event} (${ref})`, payload);\n if (this.isConnected()) {\n callback();\n }\n else {\n this.sendBuffer.push(callback);\n }\n }\n onConnMessage(rawMessage) {\n this.decode(rawMessage.data, (msg) => {\n let { topic, event, payload, ref } = msg;\n if ((ref && ref === this.pendingHeartbeatRef) ||\n event === (payload === null || payload === void 0 ? void 0 : payload.type)) {\n this.pendingHeartbeatRef = null;\n }\n this.log('receive', `${payload.status || ''} ${topic} ${event} ${(ref && '(' + ref + ')') || ''}`, payload);\n this.channels\n .filter((channel) => channel.isMember(topic))\n .forEach((channel) => channel.trigger(event, payload, ref));\n this.stateChangeCallbacks.message.forEach((callback) => callback(msg));\n });\n }\n /**\n * Returns the URL of the websocket.\n */\n endPointURL() {\n return this._appendParams(this.endPoint, Object.assign({}, this.params, { vsn: VSN }));\n }\n /**\n * Return the next message ref, accounting for overflows\n */\n makeRef() {\n let newRef = this.ref + 1;\n if (newRef === this.ref) {\n this.ref = 0;\n }\n else {\n this.ref = newRef;\n }\n return this.ref.toString();\n }\n /**\n * Sets the JWT access token used for channel subscription authorization and Realtime RLS.\n *\n * @param token A JWT string.\n */\n setAuth(token) {\n this.accessToken = token;\n this.channels.forEach((channel) => {\n token && channel.updateJoinPayload({ user_token: token });\n if (channel.joinedOnce && channel.isJoined()) {\n channel.push(CHANNEL_EVENTS.access_token, { access_token: token });\n }\n });\n }\n /**\n * Unsubscribe from channels with the specified topic.\n */\n leaveOpenTopic(topic) {\n let dupChannel = this.channels.find((c) => c.topic === topic && (c.isJoined() || c.isJoining()));\n if (dupChannel) {\n this.log('transport', `leaving duplicate topic \"${topic}\"`);\n dupChannel.unsubscribe();\n }\n }\n _onConnOpen() {\n this.log('transport', `connected to ${this.endPointURL()}`);\n this._flushSendBuffer();\n this.reconnectTimer.reset();\n this.heartbeatTimer && clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = setInterval(() => this._sendHeartbeat(), this.heartbeatIntervalMs);\n this.stateChangeCallbacks.open.forEach((callback) => callback());\n }\n _onConnClose(event) {\n this.log('transport', 'close', event);\n this._triggerChanError();\n this.heartbeatTimer && clearInterval(this.heartbeatTimer);\n this.reconnectTimer.scheduleTimeout();\n this.stateChangeCallbacks.close.forEach((callback) => callback(event));\n }\n _onConnError(error) {\n this.log('transport', error.message);\n this._triggerChanError();\n this.stateChangeCallbacks.error.forEach((callback) => callback(error));\n }\n _triggerChanError() {\n this.channels.forEach((channel) => channel.trigger(CHANNEL_EVENTS.error));\n }\n _appendParams(url, params) {\n if (Object.keys(params).length === 0) {\n return url;\n }\n const prefix = url.match(/\\?/) ? '&' : '?';\n const query = new URLSearchParams(params);\n return `${url}${prefix}${query}`;\n }\n _flushSendBuffer() {\n if (this.isConnected() && this.sendBuffer.length > 0) {\n this.sendBuffer.forEach((callback) => callback());\n this.sendBuffer = [];\n }\n }\n _sendHeartbeat() {\n var _a;\n if (!this.isConnected()) {\n return;\n }\n if (this.pendingHeartbeatRef) {\n this.pendingHeartbeatRef = null;\n this.log('transport', 'heartbeat timeout. Attempting to re-establish connection');\n (_a = this.conn) === null || _a === void 0 ? void 0 : _a.close(WS_CLOSE_NORMAL, 'hearbeat timeout');\n return;\n }\n this.pendingHeartbeatRef = this.makeRef();\n this.push({\n topic: 'phoenix',\n event: 'heartbeat',\n payload: {},\n ref: this.pendingHeartbeatRef,\n });\n this.setAuth(this.accessToken);\n }\n}\n//# sourceMappingURL=RealtimeClient.js.map","import { Transformers } from '@supabase/realtime-js';\nexport class SupabaseRealtimeClient {\n constructor(socket, headers, schema, tableName) {\n const chanParams = {};\n const topic = tableName === '*' ? `realtime:${schema}` : `realtime:${schema}:${tableName}`;\n const userToken = headers['Authorization'].split(' ')[1];\n if (userToken) {\n chanParams['user_token'] = userToken;\n }\n this.subscription = socket.channel(topic, chanParams);\n }\n getPayloadRecords(payload) {\n const records = {\n new: {},\n old: {},\n };\n if (payload.type === 'INSERT' || payload.type === 'UPDATE') {\n records.new = Transformers.convertChangeData(payload.columns, payload.record);\n }\n if (payload.type === 'UPDATE' || payload.type === 'DELETE') {\n records.old = Transformers.convertChangeData(payload.columns, payload.old_record);\n }\n return records;\n }\n /**\n * The event you want to listen to.\n *\n * @param event The event\n * @param callback A callback function that is called whenever the event occurs.\n */\n on(event, callback) {\n this.subscription.on(event, (payload) => {\n let enrichedPayload = {\n schema: payload.schema,\n table: payload.table,\n commit_timestamp: payload.commit_timestamp,\n eventType: payload.type,\n new: {},\n old: {},\n errors: payload.errors,\n };\n enrichedPayload = Object.assign(Object.assign({}, enrichedPayload), this.getPayloadRecords(payload));\n callback(enrichedPayload);\n });\n return this;\n }\n /**\n * Enables the subscription.\n */\n subscribe(callback = () => { }) {\n this.subscription.onError((e) => callback('SUBSCRIPTION_ERROR', e));\n this.subscription.onClose(() => callback('CLOSED'));\n this.subscription\n .subscribe()\n .receive('ok', () => callback('SUBSCRIBED'))\n .receive('error', (e) => callback('SUBSCRIPTION_ERROR', e))\n .receive('timeout', () => callback('RETRYING_AFTER_TIMEOUT'));\n return this.subscription;\n }\n}\n//# sourceMappingURL=SupabaseRealtimeClient.js.map","import { PostgrestQueryBuilder } from '@supabase/postgrest-js';\nimport { SupabaseRealtimeClient } from './SupabaseRealtimeClient';\nexport class SupabaseQueryBuilder extends PostgrestQueryBuilder {\n constructor(url, { headers = {}, schema, realtime, table, fetch, shouldThrowOnError, }) {\n super(url, { headers, schema, fetch, shouldThrowOnError });\n this._subscription = null;\n this._realtime = realtime;\n this._headers = headers;\n this._schema = schema;\n this._table = table;\n }\n /**\n * Subscribe to realtime changes in your database.\n * @param event The database event which you would like to receive updates for, or you can use the special wildcard `*` to listen to all changes.\n * @param callback A callback that will handle the payload that is sent whenever your database changes.\n */\n on(event, callback) {\n if (!this._realtime.isConnected()) {\n this._realtime.connect();\n }\n if (!this._subscription) {\n this._subscription = new SupabaseRealtimeClient(this._realtime, this._headers, this._schema, this._table);\n }\n return this._subscription.on(event, callback);\n }\n}\n//# sourceMappingURL=SupabaseQueryBuilder.js.map","// generated by genversion\nexport const version = '0.0.0';\n//# sourceMappingURL=version.js.map","import { version } from './version';\nexport const DEFAULT_HEADERS = { 'X-Client-Info': `storage-js/${version}` };\n//# sourceMappingURL=constants.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nconst _getErrorMessage = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err);\nconst handleError = (error, reject) => {\n if (typeof error.json !== 'function') {\n return reject(error);\n }\n error.json().then((err) => {\n return reject({\n message: _getErrorMessage(err),\n status: (error === null || error === void 0 ? void 0 : error.status) || 500,\n });\n });\n};\nconst _getRequestParams = (method, options, parameters, body) => {\n const params = { method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {} };\n if (method === 'GET') {\n return params;\n }\n params.headers = Object.assign({ 'Content-Type': 'application/json' }, options === null || options === void 0 ? void 0 : options.headers);\n params.body = JSON.stringify(body);\n return Object.assign(Object.assign({}, params), parameters);\n};\nfunction _handleRequest(fetcher, method, url, options, parameters, body) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n fetcher(url, _getRequestParams(method, options, parameters, body))\n .then((result) => {\n if (!result.ok)\n throw result;\n if (options === null || options === void 0 ? void 0 : options.noResolveJson)\n return resolve(result);\n return result.json();\n })\n .then((data) => resolve(data))\n .catch((error) => handleError(error, reject));\n });\n });\n}\nexport function get(fetcher, url, options, parameters) {\n return __awaiter(this, void 0, void 0, function* () {\n return _handleRequest(fetcher, 'GET', url, options, parameters);\n });\n}\nexport function post(fetcher, url, body, options, parameters) {\n return __awaiter(this, void 0, void 0, function* () {\n return _handleRequest(fetcher, 'POST', url, options, parameters, body);\n });\n}\nexport function put(fetcher, url, body, options, parameters) {\n return __awaiter(this, void 0, void 0, function* () {\n return _handleRequest(fetcher, 'PUT', url, options, parameters, body);\n });\n}\nexport function remove(fetcher, url, body, options, parameters) {\n return __awaiter(this, void 0, void 0, function* () {\n return _handleRequest(fetcher, 'DELETE', url, options, parameters, body);\n });\n}\n//# sourceMappingURL=fetch.js.map","import crossFetch from 'cross-fetch';\nexport const resolveFetch = (customFetch) => {\n let _fetch;\n if (customFetch) {\n _fetch = customFetch;\n }\n else if (typeof fetch === 'undefined') {\n _fetch = crossFetch;\n }\n else {\n _fetch = fetch;\n }\n return (...args) => _fetch(...args);\n};\n//# sourceMappingURL=helpers.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { DEFAULT_HEADERS } from './constants';\nimport { get, post, put, remove } from './fetch';\nimport { resolveFetch } from './helpers';\nexport class StorageBucketApi {\n constructor(url, headers = {}, fetch) {\n this.url = url;\n this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS), headers);\n this.fetch = resolveFetch(fetch);\n }\n /**\n * Retrieves the details of all Storage buckets within an existing product.\n */\n listBuckets() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield get(this.fetch, `${this.url}/bucket`, { headers: this.headers });\n return { data, error: null };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n /**\n * Retrieves the details of an existing Storage bucket.\n *\n * @param id The unique identifier of the bucket you would like to retrieve.\n */\n getBucket(id) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield get(this.fetch, `${this.url}/bucket/${id}`, { headers: this.headers });\n return { data, error: null };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n /**\n * Creates a new Storage bucket\n *\n * @param id A unique identifier for the bucket you are creating.\n * @returns newly created bucket id\n */\n createBucket(id, options = { public: false }) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield post(this.fetch, `${this.url}/bucket`, { id, name: id, public: options.public }, { headers: this.headers });\n return { data: data.name, error: null };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n /**\n * Updates a new Storage bucket\n *\n * @param id A unique identifier for the bucket you are creating.\n */\n updateBucket(id, options) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield put(this.fetch, `${this.url}/bucket/${id}`, { id, name: id, public: options.public }, { headers: this.headers });\n return { data, error: null };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n /**\n * Removes all objects inside a single bucket.\n *\n * @param id The unique identifier of the bucket you would like to empty.\n */\n emptyBucket(id) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield post(this.fetch, `${this.url}/bucket/${id}/empty`, {}, { headers: this.headers });\n return { data, error: null };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n /**\n * Deletes an existing bucket. A bucket can't be deleted with existing objects inside it.\n * You must first `empty()` the bucket.\n *\n * @param id The unique identifier of the bucket you would like to delete.\n */\n deleteBucket(id) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield remove(this.fetch, `${this.url}/bucket/${id}`, {}, { headers: this.headers });\n return { data, error: null };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n}\n//# sourceMappingURL=StorageBucketApi.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { get, post, remove } from './fetch';\nimport { resolveFetch } from './helpers';\nconst DEFAULT_SEARCH_OPTIONS = {\n limit: 100,\n offset: 0,\n sortBy: {\n column: 'name',\n order: 'asc',\n },\n};\nconst DEFAULT_FILE_OPTIONS = {\n cacheControl: '3600',\n contentType: 'text/plain;charset=UTF-8',\n upsert: false,\n};\nexport class StorageFileApi {\n constructor(url, headers = {}, bucketId, fetch) {\n this.url = url;\n this.headers = headers;\n this.bucketId = bucketId;\n this.fetch = resolveFetch(fetch);\n }\n /**\n * Uploads a file to an existing bucket or replaces an existing file at the specified path with a new one.\n *\n * @param method HTTP method.\n * @param path The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload.\n * @param fileBody The body of the file to be stored in the bucket.\n * @param fileOptions HTTP headers.\n * `cacheControl`: string, the `Cache-Control: max-age=` seconds value.\n * `contentType`: string, the `Content-Type` header value. Should be specified if using a `fileBody` that is neither `Blob` nor `File` nor `FormData`, otherwise will default to `text/plain;charset=UTF-8`.\n * `upsert`: boolean, whether to perform an upsert.\n */\n uploadOrUpdate(method, path, fileBody, fileOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n let body;\n const options = Object.assign(Object.assign({}, DEFAULT_FILE_OPTIONS), fileOptions);\n const headers = Object.assign(Object.assign({}, this.headers), (method === 'POST' && { 'x-upsert': String(options.upsert) }));\n if (typeof Blob !== 'undefined' && fileBody instanceof Blob) {\n body = new FormData();\n body.append('cacheControl', options.cacheControl);\n body.append('', fileBody);\n }\n else if (typeof FormData !== 'undefined' && fileBody instanceof FormData) {\n body = fileBody;\n body.append('cacheControl', options.cacheControl);\n }\n else {\n body = fileBody;\n headers['cache-control'] = `max-age=${options.cacheControl}`;\n headers['content-type'] = options.contentType;\n }\n const cleanPath = this._removeEmptyFolders(path);\n const _path = this._getFinalPath(cleanPath);\n const res = yield this.fetch(`${this.url}/object/${_path}`, {\n method,\n body: body,\n headers,\n });\n if (res.ok) {\n // const data = await res.json()\n // temporary fix till backend is updated to the latest storage-api version\n return { data: { Key: _path }, error: null };\n }\n else {\n const error = yield res.json();\n return { data: null, error };\n }\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n /**\n * Uploads a file to an existing bucket.\n *\n * @param path The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload.\n * @param fileBody The body of the file to be stored in the bucket.\n * @param fileOptions HTTP headers.\n * `cacheControl`: string, the `Cache-Control: max-age=` seconds value.\n * `contentType`: string, the `Content-Type` header value. Should be specified if using a `fileBody` that is neither `Blob` nor `File` nor `FormData`, otherwise will default to `text/plain;charset=UTF-8`.\n * `upsert`: boolean, whether to perform an upsert.\n */\n upload(path, fileBody, fileOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.uploadOrUpdate('POST', path, fileBody, fileOptions);\n });\n }\n /**\n * Replaces an existing file at the specified path with a new one.\n *\n * @param path The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload.\n * @param fileBody The body of the file to be stored in the bucket.\n * @param fileOptions HTTP headers.\n * `cacheControl`: string, the `Cache-Control: max-age=` seconds value.\n * `contentType`: string, the `Content-Type` header value. Should be specified if using a `fileBody` that is neither `Blob` nor `File` nor `FormData`, otherwise will default to `text/plain;charset=UTF-8`.\n * `upsert`: boolean, whether to perform an upsert.\n */\n update(path, fileBody, fileOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.uploadOrUpdate('PUT', path, fileBody, fileOptions);\n });\n }\n /**\n * Moves an existing file.\n *\n * @param fromPath The original file path, including the current file name. For example `folder/image.png`.\n * @param toPath The new file path, including the new file name. For example `folder/image-new.png`.\n */\n move(fromPath, toPath) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield post(this.fetch, `${this.url}/object/move`, { bucketId: this.bucketId, sourceKey: fromPath, destinationKey: toPath }, { headers: this.headers });\n return { data, error: null };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n /**\n * Copies an existing file.\n *\n * @param fromPath The original file path, including the current file name. For example `folder/image.png`.\n * @param toPath The new file path, including the new file name. For example `folder/image-copy.png`.\n */\n copy(fromPath, toPath) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield post(this.fetch, `${this.url}/object/copy`, { bucketId: this.bucketId, sourceKey: fromPath, destinationKey: toPath }, { headers: this.headers });\n return { data, error: null };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n /**\n * Create signed URL to download file without requiring permissions. This URL can be valid for a set number of seconds.\n *\n * @param path The file path to be downloaded, including the current file name. For example `folder/image.png`.\n * @param expiresIn The number of seconds until the signed URL expires. For example, `60` for a URL which is valid for one minute.\n */\n createSignedUrl(path, expiresIn) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const _path = this._getFinalPath(path);\n let data = yield post(this.fetch, `${this.url}/object/sign/${_path}`, { expiresIn }, { headers: this.headers });\n const signedURL = `${this.url}${data.signedURL}`;\n data = { signedURL };\n return { data, error: null, signedURL };\n }\n catch (error) {\n return { data: null, error, signedURL: null };\n }\n });\n }\n /**\n * Create signed URLs to download files without requiring permissions. These URLs can be valid for a set number of seconds.\n *\n * @param paths The file paths to be downloaded, including the current file names. For example `['folder/image.png', 'folder2/image2.png']`.\n * @param expiresIn The number of seconds until the signed URLs expire. For example, `60` for URLs which are valid for one minute.\n */\n createSignedUrls(paths, expiresIn) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield post(this.fetch, `${this.url}/object/sign/${this.bucketId}`, { expiresIn, paths }, { headers: this.headers });\n return {\n data: data.map((datum) => (Object.assign(Object.assign({}, datum), { signedURL: datum.signedURL ? `${this.url}${datum.signedURL}` : null }))),\n error: null,\n };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n /**\n * Downloads a file.\n *\n * @param path The file path to be downloaded, including the path and file name. For example `folder/image.png`.\n */\n download(path) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const _path = this._getFinalPath(path);\n const res = yield get(this.fetch, `${this.url}/object/${_path}`, {\n headers: this.headers,\n noResolveJson: true,\n });\n const data = yield res.blob();\n return { data, error: null };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n /**\n * Retrieve URLs for assets in public buckets\n *\n * @param path The file path to be downloaded, including the path and file name. For example `folder/image.png`.\n */\n getPublicUrl(path) {\n try {\n const _path = this._getFinalPath(path);\n const publicURL = `${this.url}/object/public/${_path}`;\n const data = { publicURL };\n return { data, error: null, publicURL };\n }\n catch (error) {\n return { data: null, error, publicURL: null };\n }\n }\n /**\n * Deletes files within the same bucket\n *\n * @param paths An array of files to be deleted, including the path and file name. For example [`folder/image.png`].\n */\n remove(paths) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const data = yield remove(this.fetch, `${this.url}/object/${this.bucketId}`, { prefixes: paths }, { headers: this.headers });\n return { data, error: null };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n /**\n * Get file metadata\n * @param id the file id to retrieve metadata\n */\n // async getMetadata(id: string): Promise<{ data: Metadata | null; error: Error | null }> {\n // try {\n // const data = await get(`${this.url}/metadata/${id}`, { headers: this.headers })\n // return { data, error: null }\n // } catch (error) {\n // return { data: null, error }\n // }\n // }\n /**\n * Update file metadata\n * @param id the file id to update metadata\n * @param meta the new file metadata\n */\n // async updateMetadata(\n // id: string,\n // meta: Metadata\n // ): Promise<{ data: Metadata | null; error: Error | null }> {\n // try {\n // const data = await post(`${this.url}/metadata/${id}`, { ...meta }, { headers: this.headers })\n // return { data, error: null }\n // } catch (error) {\n // return { data: null, error }\n // }\n // }\n /**\n * Lists all the files within a bucket.\n * @param path The folder path.\n * @param options Search options, including `limit`, `offset`, and `sortBy`.\n * @param parameters Fetch parameters, currently only supports `signal`, which is an AbortController's signal\n */\n list(path, options, parameters) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const body = Object.assign(Object.assign(Object.assign({}, DEFAULT_SEARCH_OPTIONS), options), { prefix: path || '' });\n const data = yield post(this.fetch, `${this.url}/object/list/${this.bucketId}`, body, { headers: this.headers }, parameters);\n return { data, error: null };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n _getFinalPath(path) {\n return `${this.bucketId}/${path}`;\n }\n _removeEmptyFolders(path) {\n return path.replace(/^\\/|\\/$/g, '').replace(/\\/+/g, '/');\n }\n}\n//# sourceMappingURL=StorageFileApi.js.map","import { StorageBucketApi, StorageFileApi } from './lib';\nexport class StorageClient extends StorageBucketApi {\n constructor(url, headers = {}, fetch) {\n super(url, headers, fetch);\n }\n /**\n * Perform file operation in a bucket.\n *\n * @param id The bucket id to operate on.\n */\n from(id) {\n return new StorageFileApi(this.url, this.headers, id, this.fetch);\n }\n}\n//# sourceMappingURL=StorageClient.js.map","import crossFetch from 'cross-fetch';\nexport const resolveFetch = (customFetch) => {\n let _fetch;\n if (customFetch) {\n _fetch = customFetch;\n }\n else if (typeof fetch === 'undefined') {\n _fetch = crossFetch;\n }\n else {\n _fetch = fetch;\n }\n return (...args) => _fetch(...args);\n};\n//# sourceMappingURL=helper.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { resolveFetch } from './helper';\nexport class FunctionsClient {\n constructor(url, { headers = {}, customFetch, } = {}) {\n this.url = url;\n this.headers = headers;\n this.fetch = resolveFetch(customFetch);\n }\n /**\n * Updates the authorization header\n * @params token - the new jwt token sent in the authorisation header\n */\n setAuth(token) {\n this.headers.Authorization = `Bearer ${token}`;\n }\n /**\n * Invokes a function\n * @param functionName - the name of the function to invoke\n * @param invokeOptions - object with the following properties\n * `headers`: object representing the headers to send with the request\n * `body`: the body of the request\n * `responseType`: how the response should be parsed. The default is `json`\n */\n invoke(functionName, invokeOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const { headers, body } = invokeOptions !== null && invokeOptions !== void 0 ? invokeOptions : {};\n const response = yield this.fetch(`${this.url}/${functionName}`, {\n method: 'POST',\n headers: Object.assign({}, this.headers, headers),\n body,\n });\n const isRelayError = response.headers.get('x-relay-error');\n if (isRelayError && isRelayError === 'true') {\n return { data: null, error: new Error(yield response.text()) };\n }\n let data;\n const { responseType } = invokeOptions !== null && invokeOptions !== void 0 ? invokeOptions : {};\n if (!responseType || responseType === 'json') {\n data = yield response.json();\n }\n else if (responseType === 'arrayBuffer') {\n data = yield response.arrayBuffer();\n }\n else if (responseType === 'blob') {\n data = yield response.blob();\n }\n else {\n data = yield response.text();\n }\n return { data, error: null };\n }\n catch (error) {\n return { data: null, error };\n }\n });\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { DEFAULT_HEADERS, STORAGE_KEY } from './lib/constants';\nimport { stripTrailingSlash, isBrowser } from './lib/helpers';\nimport { SupabaseAuthClient } from './lib/SupabaseAuthClient';\nimport { SupabaseQueryBuilder } from './lib/SupabaseQueryBuilder';\nimport { SupabaseStorageClient } from '@supabase/storage-js';\nimport { FunctionsClient } from '@supabase/functions-js';\nimport { PostgrestClient } from '@supabase/postgrest-js';\nimport { RealtimeClient, } from '@supabase/realtime-js';\nconst DEFAULT_OPTIONS = {\n schema: 'public',\n autoRefreshToken: true,\n persistSession: true,\n detectSessionInUrl: true,\n multiTab: true,\n headers: DEFAULT_HEADERS,\n};\n/**\n * Supabase Client.\n *\n * An isomorphic Javascript client for interacting with Postgres.\n */\nexport default class SupabaseClient {\n /**\n * Create a new client for use in the browser.\n * @param supabaseUrl The unique Supabase URL which is supplied when you create a new project in your project dashboard.\n * @param supabaseKey The unique Supabase Key which is supplied when you create a new project in your project dashboard.\n * @param options.schema You can switch in between schemas. The schema needs to be on the list of exposed schemas inside Supabase.\n * @param options.autoRefreshToken Set to \"true\" if you want to automatically refresh the token before expiring.\n * @param options.persistSession Set to \"true\" if you want to automatically save the user session into local storage.\n * @param options.detectSessionInUrl Set to \"true\" if you want to automatically detects OAuth grants in the URL and signs in the user.\n * @param options.headers Any additional headers to send with each network request.\n * @param options.realtime Options passed along to realtime-js constructor.\n * @param options.multiTab Set to \"false\" if you want to disable multi-tab/window events.\n * @param options.fetch A custom fetch implementation.\n */\n constructor(supabaseUrl, supabaseKey, options) {\n this.supabaseUrl = supabaseUrl;\n this.supabaseKey = supabaseKey;\n if (!supabaseUrl)\n throw new Error('supabaseUrl is required.');\n if (!supabaseKey)\n throw new Error('supabaseKey is required.');\n const _supabaseUrl = stripTrailingSlash(supabaseUrl);\n const settings = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);\n this.restUrl = `${_supabaseUrl}/rest/v1`;\n this.realtimeUrl = `${_supabaseUrl}/realtime/v1`.replace('http', 'ws');\n this.authUrl = `${_supabaseUrl}/auth/v1`;\n this.storageUrl = `${_supabaseUrl}/storage/v1`;\n const isPlatform = _supabaseUrl.match(/(supabase\\.co)|(supabase\\.in)/);\n if (isPlatform) {\n const urlParts = _supabaseUrl.split('.');\n this.functionsUrl = `${urlParts[0]}.functions.${urlParts[1]}.${urlParts[2]}`;\n }\n else {\n this.functionsUrl = `${_supabaseUrl}/functions/v1`;\n }\n this.schema = settings.schema;\n this.multiTab = settings.multiTab;\n this.fetch = settings.fetch;\n this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS), options === null || options === void 0 ? void 0 : options.headers);\n this.shouldThrowOnError = settings.shouldThrowOnError || false;\n this.auth = this._initSupabaseAuthClient(settings);\n this.realtime = this._initRealtimeClient(Object.assign({ headers: this.headers }, settings.realtime));\n this._listenForAuthEvents();\n this._listenForMultiTabEvents();\n // In the future we might allow the user to pass in a logger to receive these events.\n // this.realtime.onOpen(() => console.log('OPEN'))\n // this.realtime.onClose(() => console.log('CLOSED'))\n // this.realtime.onError((e: Error) => console.log('Socket error', e))\n }\n /**\n * Supabase Functions allows you to deploy and invoke edge functions.\n */\n get functions() {\n return new FunctionsClient(this.functionsUrl, {\n headers: this._getAuthHeaders(),\n customFetch: this.fetch,\n });\n }\n /**\n * Supabase Storage allows you to manage user-generated content, such as photos or videos.\n */\n get storage() {\n return new SupabaseStorageClient(this.storageUrl, this._getAuthHeaders(), this.fetch);\n }\n /**\n * Perform a table operation.\n *\n * @param table The table name to operate on.\n */\n from(table) {\n const url = `${this.restUrl}/${table}`;\n return new SupabaseQueryBuilder(url, {\n headers: this._getAuthHeaders(),\n schema: this.schema,\n realtime: this.realtime,\n table,\n fetch: this.fetch,\n shouldThrowOnError: this.shouldThrowOnError,\n });\n }\n /**\n * Perform a function call.\n *\n * @param fn The function name to call.\n * @param params The parameters to pass to the function call.\n * @param head When set to true, no data will be returned.\n * @param count Count algorithm to use to count rows in a table.\n *\n */\n rpc(fn, params, { head = false, count = null, } = {}) {\n const rest = this._initPostgRESTClient();\n return rest.rpc(fn, params, { head, count });\n }\n /**\n * Creates a channel with Broadcast and Presence.\n * Activated when vsndate query param is present in the WebSocket URL.\n */\n channel(name, opts) {\n var _a, _b;\n const userToken = (_b = (_a = this.auth.session()) === null || _a === void 0 ? void 0 : _a.access_token) !== null && _b !== void 0 ? _b : this.supabaseKey;\n if (!this.realtime.isConnected()) {\n this.realtime.connect();\n }\n return this.realtime.channel(name, Object.assign(Object.assign({}, opts), { user_token: userToken }));\n }\n /**\n * Closes and removes all subscriptions and returns a list of removed\n * subscriptions and their errors.\n */\n removeAllSubscriptions() {\n return __awaiter(this, void 0, void 0, function* () {\n const allSubs = this.getSubscriptions().slice();\n const allSubPromises = allSubs.map((sub) => this.removeSubscription(sub));\n const allRemovedSubs = yield Promise.all(allSubPromises);\n return allRemovedSubs.map(({ error }, i) => {\n return {\n data: { subscription: allSubs[i] },\n error,\n };\n });\n });\n }\n /**\n * Closes and removes a channel and returns the number of open channels.\n *\n * @param channel The channel you want to close and remove.\n */\n removeChannel(channel) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error } = yield this._closeSubscription(channel);\n const allChans = this.getSubscriptions();\n const openChanCount = allChans.filter((chan) => chan.isJoined()).length;\n if (allChans.length === 0)\n yield this.realtime.disconnect();\n return { data: { openChannels: openChanCount }, error };\n });\n }\n /**\n * Closes and removes a subscription and returns the number of open subscriptions.\n *\n * @param subscription The subscription you want to close and remove.\n */\n removeSubscription(subscription) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error } = yield this._closeSubscription(subscription);\n const allSubs = this.getSubscriptions();\n const openSubCount = allSubs.filter((chan) => chan.isJoined()).length;\n if (allSubs.length === 0)\n yield this.realtime.disconnect();\n return { data: { openSubscriptions: openSubCount }, error };\n });\n }\n _closeSubscription(subscription) {\n return __awaiter(this, void 0, void 0, function* () {\n let error = null;\n if (!subscription.isClosed()) {\n const { error: unsubError } = yield this._unsubscribeSubscription(subscription);\n error = unsubError;\n }\n this.realtime.remove(subscription);\n return { error };\n });\n }\n _unsubscribeSubscription(subscription) {\n return new Promise((resolve) => {\n subscription\n .unsubscribe()\n .receive('ok', () => resolve({ error: null }))\n .receive('error', (error) => resolve({ error }))\n .receive('timeout', () => resolve({ error: new Error('timed out') }));\n });\n }\n /**\n * Returns an array of all your subscriptions.\n */\n getSubscriptions() {\n return this.realtime.channels;\n }\n _initSupabaseAuthClient({ autoRefreshToken, persistSession, detectSessionInUrl, localStorage, headers, fetch, cookieOptions, multiTab, }) {\n const authHeaders = {\n Authorization: `Bearer ${this.supabaseKey}`,\n apikey: `${this.supabaseKey}`,\n };\n return new SupabaseAuthClient({\n url: this.authUrl,\n headers: Object.assign(Object.assign({}, headers), authHeaders),\n autoRefreshToken,\n persistSession,\n detectSessionInUrl,\n localStorage,\n fetch,\n cookieOptions,\n multiTab,\n });\n }\n _initRealtimeClient(options) {\n return new RealtimeClient(this.realtimeUrl, Object.assign(Object.assign({}, options), { params: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.params), { apikey: this.supabaseKey }) }));\n }\n _initPostgRESTClient() {\n return new PostgrestClient(this.restUrl, {\n headers: this._getAuthHeaders(),\n schema: this.schema,\n fetch: this.fetch,\n throwOnError: this.shouldThrowOnError,\n });\n }\n _getAuthHeaders() {\n var _a, _b;\n const headers = Object.assign({}, this.headers);\n const authBearer = (_b = (_a = this.auth.session()) === null || _a === void 0 ? void 0 : _a.access_token) !== null && _b !== void 0 ? _b : this.supabaseKey;\n headers['apikey'] = this.supabaseKey;\n headers['Authorization'] = headers['Authorization'] || `Bearer ${authBearer}`;\n return headers;\n }\n _listenForMultiTabEvents() {\n if (!this.multiTab || !isBrowser() || !(window === null || window === void 0 ? void 0 : window.addEventListener)) {\n return null;\n }\n try {\n return window === null || window === void 0 ? void 0 : window.addEventListener('storage', (e) => {\n var _a, _b, _c;\n if (e.key === STORAGE_KEY) {\n const newSession = JSON.parse(String(e.newValue));\n const accessToken = (_b = (_a = newSession === null || newSession === void 0 ? void 0 : newSession.currentSession) === null || _a === void 0 ? void 0 : _a.access_token) !== null && _b !== void 0 ? _b : undefined;\n const previousAccessToken = (_c = this.auth.session()) === null || _c === void 0 ? void 0 : _c.access_token;\n if (!accessToken) {\n this._handleTokenChanged('SIGNED_OUT', accessToken, 'STORAGE');\n }\n else if (!previousAccessToken && accessToken) {\n this._handleTokenChanged('SIGNED_IN', accessToken, 'STORAGE');\n }\n else if (previousAccessToken !== accessToken) {\n this._handleTokenChanged('TOKEN_REFRESHED', accessToken, 'STORAGE');\n }\n }\n });\n }\n catch (error) {\n console.error('_listenForMultiTabEvents', error);\n return null;\n }\n }\n _listenForAuthEvents() {\n let { data } = this.auth.onAuthStateChange((event, session) => {\n this._handleTokenChanged(event, session === null || session === void 0 ? void 0 : session.access_token, 'CLIENT');\n });\n return data;\n }\n _handleTokenChanged(event, token, source) {\n if ((event === 'TOKEN_REFRESHED' || event === 'SIGNED_IN') &&\n this.changedAccessToken !== token) {\n // Token has changed\n this.realtime.setAuth(token);\n // Ideally we should call this.auth.recoverSession() - need to make public\n // to trigger a \"SIGNED_IN\" event on this client.\n if (source == 'STORAGE')\n this.auth.setAuth(token);\n this.changedAccessToken = token;\n }\n else if (event === 'SIGNED_OUT' || event === 'USER_DELETED') {\n // Token is removed\n this.realtime.setAuth(this.supabaseKey);\n if (source == 'STORAGE')\n this.auth.signOut();\n }\n }\n}\n//# sourceMappingURL=SupabaseClient.js.map","import SupabaseClient from './SupabaseClient';\nexport * from '@supabase/gotrue-js';\nexport * from '@supabase/realtime-js';\n/**\n * Creates a new Supabase Client.\n */\nconst createClient = (supabaseUrl, supabaseKey, options) => {\n return new SupabaseClient(supabaseUrl, supabaseKey, options);\n};\nexport { createClient, SupabaseClient, };\n//# sourceMappingURL=index.js.map","import supabase_conf from \"./configs/supabase_conf\";\nimport { createClient } from \"@supabase/supabase-js\";\n\nconst supabase_client = createClient(supabase_conf.url, supabase_conf.key, {\n realtime: {\n params: {\n vsndate: \"1.0.0\", // required to use realtime (but it's not specified in supabase-js document...:/)\n }\n }\n});\n\nexport default supabase_client;\n","\"use strict\";\n\nfunction hash(str) {\n var hash = 5381,\n i = str.length;\n\n while(i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n\n /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed\n * integers. Since we want the results to be always positive, convert the\n * signed int to an unsigned by doing an unsigned bitshift. */\n return hash >>> 0;\n}\n\nmodule.exports = hash;\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\nBased on Glamor's sheet\nhttps://github.com/threepointone/glamor/blob/667b480d31b3721a905021b26e1290ce92ca2879/src/sheet.js\n*/\nvar isProd = typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production';\n\nvar isString = function isString(o) {\n return Object.prototype.toString.call(o) === '[object String]';\n};\n\nvar StyleSheet = /*#__PURE__*/function () {\n function StyleSheet(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$name = _ref.name,\n name = _ref$name === void 0 ? 'stylesheet' : _ref$name,\n _ref$optimizeForSpeed = _ref.optimizeForSpeed,\n optimizeForSpeed = _ref$optimizeForSpeed === void 0 ? isProd : _ref$optimizeForSpeed,\n _ref$isBrowser = _ref.isBrowser,\n isBrowser = _ref$isBrowser === void 0 ? typeof window !== 'undefined' : _ref$isBrowser;\n\n invariant(isString(name), '`name` must be a string');\n this._name = name;\n this._deletedRulePlaceholder = \"#\" + name + \"-deleted-rule____{}\";\n invariant(typeof optimizeForSpeed === 'boolean', '`optimizeForSpeed` must be a boolean');\n this._optimizeForSpeed = optimizeForSpeed;\n this._isBrowser = isBrowser;\n this._serverSheet = undefined;\n this._tags = [];\n this._injected = false;\n this._rulesCount = 0;\n var node = this._isBrowser && document.querySelector('meta[property=\"csp-nonce\"]');\n this._nonce = node ? node.getAttribute('content') : null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.setOptimizeForSpeed = function setOptimizeForSpeed(bool) {\n invariant(typeof bool === 'boolean', '`setOptimizeForSpeed` accepts a boolean');\n invariant(this._rulesCount === 0, 'optimizeForSpeed cannot be when rules have already been inserted');\n this.flush();\n this._optimizeForSpeed = bool;\n this.inject();\n };\n\n _proto.isOptimizeForSpeed = function isOptimizeForSpeed() {\n return this._optimizeForSpeed;\n };\n\n _proto.inject = function inject() {\n var _this = this;\n\n invariant(!this._injected, 'sheet already injected');\n this._injected = true;\n\n if (this._isBrowser && this._optimizeForSpeed) {\n this._tags[0] = this.makeStyleTag(this._name);\n this._optimizeForSpeed = 'insertRule' in this.getSheet();\n\n if (!this._optimizeForSpeed) {\n if (!isProd) {\n console.warn('StyleSheet: optimizeForSpeed mode not supported falling back to standard mode.');\n }\n\n this.flush();\n this._injected = true;\n }\n\n return;\n }\n\n this._serverSheet = {\n cssRules: [],\n insertRule: function insertRule(rule, index) {\n if (typeof index === 'number') {\n _this._serverSheet.cssRules[index] = {\n cssText: rule\n };\n } else {\n _this._serverSheet.cssRules.push({\n cssText: rule\n });\n }\n\n return index;\n },\n deleteRule: function deleteRule(index) {\n _this._serverSheet.cssRules[index] = null;\n }\n };\n };\n\n _proto.getSheetForTag = function getSheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n }\n };\n\n _proto.getSheet = function getSheet() {\n return this.getSheetForTag(this._tags[this._tags.length - 1]);\n };\n\n _proto.insertRule = function insertRule(rule, index) {\n invariant(isString(rule), '`insertRule` accepts only strings');\n\n if (!this._isBrowser) {\n if (typeof index !== 'number') {\n index = this._serverSheet.cssRules.length;\n }\n\n this._serverSheet.insertRule(rule, index);\n\n return this._rulesCount++;\n }\n\n if (this._optimizeForSpeed) {\n var sheet = this.getSheet();\n\n if (typeof index !== 'number') {\n index = sheet.cssRules.length;\n } // this weirdness for perf, and chrome's weird bug\n // https://stackoverflow.com/questions/20007992/chrome-suddenly-stopped-accepting-insertrule\n\n\n try {\n sheet.insertRule(rule, index);\n } catch (error) {\n if (!isProd) {\n console.warn(\"StyleSheet: illegal rule: \\n\\n\" + rule + \"\\n\\nSee https://stackoverflow.com/q/20007992 for more info\");\n }\n\n return -1;\n }\n } else {\n var insertionPoint = this._tags[index];\n\n this._tags.push(this.makeStyleTag(this._name, rule, insertionPoint));\n }\n\n return this._rulesCount++;\n };\n\n _proto.replaceRule = function replaceRule(index, rule) {\n if (this._optimizeForSpeed || !this._isBrowser) {\n var sheet = this._isBrowser ? this.getSheet() : this._serverSheet;\n\n if (!rule.trim()) {\n rule = this._deletedRulePlaceholder;\n }\n\n if (!sheet.cssRules[index]) {\n // @TBD Should we throw an error?\n return index;\n }\n\n sheet.deleteRule(index);\n\n try {\n sheet.insertRule(rule, index);\n } catch (error) {\n if (!isProd) {\n console.warn(\"StyleSheet: illegal rule: \\n\\n\" + rule + \"\\n\\nSee https://stackoverflow.com/q/20007992 for more info\");\n } // In order to preserve the indices we insert a deleteRulePlaceholder\n\n\n sheet.insertRule(this._deletedRulePlaceholder, index);\n }\n } else {\n var tag = this._tags[index];\n invariant(tag, \"old rule at index `\" + index + \"` not found\");\n tag.textContent = rule;\n }\n\n return index;\n };\n\n _proto.deleteRule = function deleteRule(index) {\n if (!this._isBrowser) {\n this._serverSheet.deleteRule(index);\n\n return;\n }\n\n if (this._optimizeForSpeed) {\n this.replaceRule(index, '');\n } else {\n var tag = this._tags[index];\n invariant(tag, \"rule at index `\" + index + \"` not found\");\n tag.parentNode.removeChild(tag);\n this._tags[index] = null;\n }\n };\n\n _proto.flush = function flush() {\n this._injected = false;\n this._rulesCount = 0;\n\n if (this._isBrowser) {\n this._tags.forEach(function (tag) {\n return tag && tag.parentNode.removeChild(tag);\n });\n\n this._tags = [];\n } else {\n // simpler on server\n this._serverSheet.cssRules = [];\n }\n };\n\n _proto.cssRules = function cssRules() {\n var _this2 = this;\n\n if (!this._isBrowser) {\n return this._serverSheet.cssRules;\n }\n\n return this._tags.reduce(function (rules, tag) {\n if (tag) {\n rules = rules.concat(Array.prototype.map.call(_this2.getSheetForTag(tag).cssRules, function (rule) {\n return rule.cssText === _this2._deletedRulePlaceholder ? null : rule;\n }));\n } else {\n rules.push(null);\n }\n\n return rules;\n }, []);\n };\n\n _proto.makeStyleTag = function makeStyleTag(name, cssString, relativeToTag) {\n if (cssString) {\n invariant(isString(cssString), 'makeStyleTag acceps only strings as second parameter');\n }\n\n var tag = document.createElement('style');\n if (this._nonce) tag.setAttribute('nonce', this._nonce);\n tag.type = 'text/css';\n tag.setAttribute(\"data-\" + name, '');\n\n if (cssString) {\n tag.appendChild(document.createTextNode(cssString));\n }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n\n if (relativeToTag) {\n head.insertBefore(tag, relativeToTag);\n } else {\n head.appendChild(tag);\n }\n\n return tag;\n };\n\n _createClass(StyleSheet, [{\n key: \"length\",\n get: function get() {\n return this._rulesCount;\n }\n }]);\n\n return StyleSheet;\n}();\n\nexports[\"default\"] = StyleSheet;\n\nfunction invariant(condition, message) {\n if (!condition) {\n throw new Error(\"StyleSheet: \" + message + \".\");\n }\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _stringHash = _interopRequireDefault(require(\"string-hash\"));\n\nvar _stylesheet = _interopRequireDefault(require(\"./lib/stylesheet\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar sanitize = function sanitize(rule) {\n return rule.replace(/\\/style/gi, '\\\\/style');\n};\n\nvar StyleSheetRegistry = /*#__PURE__*/function () {\n function StyleSheetRegistry(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$styleSheet = _ref.styleSheet,\n styleSheet = _ref$styleSheet === void 0 ? null : _ref$styleSheet,\n _ref$optimizeForSpeed = _ref.optimizeForSpeed,\n optimizeForSpeed = _ref$optimizeForSpeed === void 0 ? false : _ref$optimizeForSpeed,\n _ref$isBrowser = _ref.isBrowser,\n isBrowser = _ref$isBrowser === void 0 ? typeof window !== 'undefined' : _ref$isBrowser;\n\n this._sheet = styleSheet || new _stylesheet[\"default\"]({\n name: 'styled-jsx',\n optimizeForSpeed: optimizeForSpeed\n });\n\n this._sheet.inject();\n\n if (styleSheet && typeof optimizeForSpeed === 'boolean') {\n this._sheet.setOptimizeForSpeed(optimizeForSpeed);\n\n this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();\n }\n\n this._isBrowser = isBrowser;\n this._fromServer = undefined;\n this._indices = {};\n this._instancesCounts = {};\n this.computeId = this.createComputeId();\n this.computeSelector = this.createComputeSelector();\n }\n\n var _proto = StyleSheetRegistry.prototype;\n\n _proto.add = function add(props) {\n var _this = this;\n\n if (undefined === this._optimizeForSpeed) {\n this._optimizeForSpeed = Array.isArray(props.children);\n\n this._sheet.setOptimizeForSpeed(this._optimizeForSpeed);\n\n this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();\n }\n\n if (this._isBrowser && !this._fromServer) {\n this._fromServer = this.selectFromServer();\n this._instancesCounts = Object.keys(this._fromServer).reduce(function (acc, tagName) {\n acc[tagName] = 0;\n return acc;\n }, {});\n }\n\n var _this$getIdAndRules = this.getIdAndRules(props),\n styleId = _this$getIdAndRules.styleId,\n rules = _this$getIdAndRules.rules; // Deduping: just increase the instances count.\n\n\n if (styleId in this._instancesCounts) {\n this._instancesCounts[styleId] += 1;\n return;\n }\n\n var indices = rules.map(function (rule) {\n return _this._sheet.insertRule(rule);\n }) // Filter out invalid rules\n .filter(function (index) {\n return index !== -1;\n });\n this._indices[styleId] = indices;\n this._instancesCounts[styleId] = 1;\n };\n\n _proto.remove = function remove(props) {\n var _this2 = this;\n\n var _this$getIdAndRules2 = this.getIdAndRules(props),\n styleId = _this$getIdAndRules2.styleId;\n\n invariant(styleId in this._instancesCounts, \"styleId: `\" + styleId + \"` not found\");\n this._instancesCounts[styleId] -= 1;\n\n if (this._instancesCounts[styleId] < 1) {\n var tagFromServer = this._fromServer && this._fromServer[styleId];\n\n if (tagFromServer) {\n tagFromServer.parentNode.removeChild(tagFromServer);\n delete this._fromServer[styleId];\n } else {\n this._indices[styleId].forEach(function (index) {\n return _this2._sheet.deleteRule(index);\n });\n\n delete this._indices[styleId];\n }\n\n delete this._instancesCounts[styleId];\n }\n };\n\n _proto.update = function update(props, nextProps) {\n this.add(nextProps);\n this.remove(props);\n };\n\n _proto.flush = function flush() {\n this._sheet.flush();\n\n this._sheet.inject();\n\n this._fromServer = undefined;\n this._indices = {};\n this._instancesCounts = {};\n this.computeId = this.createComputeId();\n this.computeSelector = this.createComputeSelector();\n };\n\n _proto.cssRules = function cssRules() {\n var _this3 = this;\n\n var fromServer = this._fromServer ? Object.keys(this._fromServer).map(function (styleId) {\n return [styleId, _this3._fromServer[styleId]];\n }) : [];\n\n var cssRules = this._sheet.cssRules();\n\n return fromServer.concat(Object.keys(this._indices).map(function (styleId) {\n return [styleId, _this3._indices[styleId].map(function (index) {\n return cssRules[index].cssText;\n }).join(_this3._optimizeForSpeed ? '' : '\\n')];\n }) // filter out empty rules\n .filter(function (rule) {\n return Boolean(rule[1]);\n }));\n }\n /**\n * createComputeId\n *\n * Creates a function to compute and memoize a jsx id from a basedId and optionally props.\n */\n ;\n\n _proto.createComputeId = function createComputeId() {\n var cache = {};\n return function (baseId, props) {\n if (!props) {\n return \"jsx-\" + baseId;\n }\n\n var propsToString = String(props);\n var key = baseId + propsToString; // return `jsx-${hashString(`${baseId}-${propsToString}`)}`\n\n if (!cache[key]) {\n cache[key] = \"jsx-\" + (0, _stringHash[\"default\"])(baseId + \"-\" + propsToString);\n }\n\n return cache[key];\n };\n }\n /**\n * createComputeSelector\n *\n * Creates a function to compute and memoize dynamic selectors.\n */\n ;\n\n _proto.createComputeSelector = function createComputeSelector(selectoPlaceholderRegexp) {\n if (selectoPlaceholderRegexp === void 0) {\n selectoPlaceholderRegexp = /__jsx-style-dynamic-selector/g;\n }\n\n var cache = {};\n return function (id, css) {\n // Sanitize SSR-ed CSS.\n // Client side code doesn't need to be sanitized since we use\n // document.createTextNode (dev) and the CSSOM api sheet.insertRule (prod).\n if (!this._isBrowser) {\n css = sanitize(css);\n }\n\n var idcss = id + css;\n\n if (!cache[idcss]) {\n cache[idcss] = css.replace(selectoPlaceholderRegexp, id);\n }\n\n return cache[idcss];\n };\n };\n\n _proto.getIdAndRules = function getIdAndRules(props) {\n var _this4 = this;\n\n var css = props.children,\n dynamic = props.dynamic,\n id = props.id;\n\n if (dynamic) {\n var styleId = this.computeId(id, dynamic);\n return {\n styleId: styleId,\n rules: Array.isArray(css) ? css.map(function (rule) {\n return _this4.computeSelector(styleId, rule);\n }) : [this.computeSelector(styleId, css)]\n };\n }\n\n return {\n styleId: this.computeId(id),\n rules: Array.isArray(css) ? css : [css]\n };\n }\n /**\n * selectFromServer\n *\n * Collects style tags from the document with id __jsx-XXX\n */\n ;\n\n _proto.selectFromServer = function selectFromServer() {\n var elements = Array.prototype.slice.call(document.querySelectorAll('[id^=\"__jsx-\"]'));\n return elements.reduce(function (acc, element) {\n var id = element.id.slice(2);\n acc[id] = element;\n return acc;\n }, {});\n };\n\n return StyleSheetRegistry;\n}();\n\nexports[\"default\"] = StyleSheetRegistry;\n\nfunction invariant(condition, message) {\n if (!condition) {\n throw new Error(\"StyleSheetRegistry: \" + message + \".\");\n }\n}","import StyleSheetRegistry from \"styled-jsx/dist/stylesheet-registry\";\nimport { onCleanup, createEffect } from \"solid-js\";\n\nconst styleSheetRegistry = new StyleSheetRegistry();\n\nexport default function JSXStyle(props) {\n createEffect(prev => {\n if (prev) {\n styleSheetRegistry.remove(prev);\n }\n const next = { ...props };\n styleSheetRegistry.add(next);\n return next;\n });\n onCleanup(() => styleSheetRegistry.remove({ ...props }));\n}\n\nJSXStyle.dynamic = info => {\n return info\n .map(tagInfo => {\n const baseId = tagInfo[0];\n const props = tagInfo[1];\n return styleSheetRegistry.computeId(baseId, props);\n })\n .join(\" \");\n};\n\nexport function flush() {\n const cssRules = styleSheetRegistry.cssRules();\n styleSheetRegistry.flush();\n return cssRules;\n}\n","import { render } from \"solid-js/web\";\nimport App from \"./App\";\nimport { SupabaseProvider } from \"solid-supabase\";\nimport supabase_client from \"./supabase_client\";\nimport { Router } from \"solid-app-router\";\n\nimport \"solid-styled-jsx\";\n\nimport \"./index.styl\";\nimport \"@fontsource/roboto\";\n\nrender(() => (\n // @ts-expect-error: solid-supabase does not updated for solidjs 1.4, include the children property.\n \n \n \n \n \n), document.getElementById(\"app\") as HTMLElement);\n"],"file":"assets/index.13b310ab.js"} \ No newline at end of file diff --git a/source/files/magicbroad/assets/index.146cb09e.css b/source/files/magicbroad/assets/index.146cb09e.css deleted file mode 100644 index d2a9d39..0000000 --- a/source/files/magicbroad/assets/index.146cb09e.css +++ /dev/null @@ -1 +0,0 @@ -#app{font-family:Roboto;width:100%;height:100%}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/roboto-cyrillic-ext-400-normal.b7ef2cd1.woff2) format("woff2"),url(/assets/roboto-all-400-normal.e41533d5.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/roboto-cyrillic-400-normal.495d38d4.woff2) format("woff2"),url(/assets/roboto-all-400-normal.e41533d5.woff) format("woff");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAAXMABIAAAAACeAAAAVwAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANAhUCYM8EQwKg2iDSgsQABIUATYCJAMcBCAFgnQHIAyCSRt8CAieB2WbnmbLuYAwwpK8+iIe4P3r89wHDZaakNWCmB8R66SEWr+ILhpijnTqf6QAyyF8GVAOAPOWtmNg6llFXANTaQXCgXMubThOj6JRPCJsEWW3o1/4wX411uruvta/9FF8Zz50qenu3hVxmf4QIi1dRSzhkcR0SqA1QoiwzI2uAUbffgtBpA0YCssEQRChiaaAgMpAFvDsmKQshIEEer1l/u1J0Sbi8P6OJsQc3VHd6N0nlHe1MAhFbvPNcXJVWKNNekPqCYVx/lj8nqMi5BY4Pd6hectSY5E2Lll8SMf/HJXfEKEOfCtEMjEFBEHtpSkbjBK4aB1MIEjT/t9z/+W3j8FgVyeNWdDn7wh7b19l7pQoyFW8FXcx+P9D4NE2ErMMk4kskmVMCiwyG5ZhhyC7qZ19JoMatwj00/I0GG/uexT/v7K+Ysx9JXVwiRoC1yHR9VGAy9QQcXVQbqOGmOvEACWZm5EnyicLnfULjlggc0ldeRXQEqImnlS9kL8XAZndegKyuixM77OP24/Mzw9QQ7Kfha4v9OEOadjJ0qBYxN896pRbZI6ly/PS82Bs9iiYPpuaWJZEw83lXbg5G5JRslr2VFWPDtfbPBryeqZk5eKg/CqRD2Oz8tcvgJMiFi4RC6PWb9fnkzx74cWAeELYJFCSObI1tnxBfqwo2lPppazn26eGKDWU3KLMvOioppPNX6y4euc5FBq4y6Emd99OYa6zfpnpUhjE4Y/qoWtWQ4tIHr845ZA6bDc+AOSaR/sb6c9Otrh6uj3cUdDVKESNWgCK/GzxKQiLFKJeTz+QgzZKTIUcA2Nz9h2ppBhtbSQxfsjAtk4xoD1oes5gXYPe8UWmx+HjwQeNPfi2Wv/952vDpV/80Njw3WfWXv5IL3662ucz8dd9se78QkPd6ihDH61ZfS/s/KK0fjE+sgih+YDL5pz1vnH249tjfOAcLqZOTdvY/3jL1Hy3vqvcu358ODj2/etmVHfcdW+1t2X6R08H6p3BTzz87uDo6/H/vD/2scffaEf/ThphsXX6jLtDvp7cx6bvFUbnpWbFBWgOekJEip6LgFz63wtE+H/fXrpM++P7m8wAgZk/NJnacWXJLOW1rWO16C5ouY7SRE5T8x0iJ7MpntZyQJtPS2tuKXZpKqNf728OLK1FiJj72rq99z4Ho7G9hTQm0sqlhiEBKlWXfTDq1zbQcaP1HosN1zo/TqWGAGGywdQJhaSfHo9wDdfhs78cJKBZ5glRluQQEG030P7t9IdL+03+rRhRIHjxxwF7IsRHYeWXv0f991G5d9GJAKUIBPIT/jUpF/wa9f/Ccm9YiMnjjap8MPxDeomeuKM1ffn/fWHktrCSBT3iY20i0fZ0BBSOAgtJiYMAUDBoOigYaTtuMB4PJjiY2lFfMDPaqZe2rfYTKVcYVUK+QIPiwY175iFi5Yq4Em50vIyNq4cbYFLL2Fyqwbe4aq5Kx+XgZMhZco180ZCv3b5iqtyXD9VCUsquRpcNT74CH3LW95hzWKkvV3KxoHLNhF5fxylXMNkCLk6rio/XJGRzZWquGi/JysTM3sUM+4wfckMBveM4zKV1U1VT4QMTqQI/IFSPuDBgopvEnkF6u7kQ4gJdWIvWjkeivDg/OWNxRqSXxIolJclBKluW+uwutDVlWXtxjIc9y9fPPiBAxIqR2jR/O1ZmRftILVjVU5bo4zjbmDxi6XLWfHj/+sMns5ZFfyP9jLWD9pU5CFi/MC+Fo8Vo/+XhjzuFH9jQ3a32p2/nQ0fiTr60oFFwFV18KrXSKp2m/+AsuvlQKqXRIVOncITG9B6cRRdfSqt0RP8hVHTzrZOuHdwJDHdwJwA=) format("woff2"),url(/assets/roboto-all-400-normal.e41533d5.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/roboto-greek-400-normal.daf51ab5.woff2) format("woff2"),url(/assets/roboto-all-400-normal.e41533d5.woff) format("woff");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/roboto-vietnamese-400-normal.77b24796.woff2) format("woff2"),url(/assets/roboto-all-400-normal.e41533d5.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/roboto-latin-ext-400-normal.3c23eb02.woff2) format("woff2"),url(/assets/roboto-all-400-normal.e41533d5.woff) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/roboto-latin-400-normal.f6734f81.woff2) format("woff2"),url(/assets/roboto-all-400-normal.e41533d5.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD} diff --git a/source/files/magicbroad/assets/index.276fa080.css b/source/files/magicbroad/assets/index.276fa080.css deleted file mode 100644 index c83d7ef..0000000 --- a/source/files/magicbroad/assets/index.276fa080.css +++ /dev/null @@ -1 +0,0 @@ -.draw-broad-body{position:absolute;margin:0;left:0;top:0;width:100%;height:100%;font-family:sans-serif;font-size:13px;padding:1em;box-sizing:border-box;overflow:scroll}.draw-broad-canvas{position:absolute;width:100%;height:100%;left:0;top:0}.draw-broad-scrollbar{z-index:1} diff --git a/source/files/magicbroad/assets/index.3e50c9ce.js b/source/files/magicbroad/assets/index.3e50c9ce.js deleted file mode 100644 index d497534..0000000 --- a/source/files/magicbroad/assets/index.3e50c9ce.js +++ /dev/null @@ -1,2 +0,0 @@ -var ne=Object.defineProperty,le=Object.defineProperties;var ce=Object.getOwnPropertyDescriptors;var H=Object.getOwnPropertySymbols;var de=Object.prototype.hasOwnProperty,se=Object.prototype.propertyIsEnumerable;var K=(e,t,r)=>t in e?ne(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,n=(e,t)=>{for(var r in t||(t={}))de.call(t,r)&&K(e,r,t[r]);if(H)for(var r of H(t))se.call(t,r)&&K(e,r,t[r]);return e},G=(e,t)=>le(e,ce(t));import{c as z,d as o,m as v,t as y,s as ue,q as R,v as ge,r as X,G as pe,A as h,a as N,b as F,e as J,S as Q,g as O,u as Z,H as ee,N as fe,i as V,I as he,K as te,M as re}from"./index.13b310ab.js";import{B}from"./Button.f5ab4cd7.js";import{T as oe}from"./TextField.2ea54ac2.js";import{c as U,A as me,T as be,C as I,P as ve,M as Ce}from"./Popover.e8cf0efd.js";import{g as A,a as D,b as d,s as C,d as P,c as b,h as xe,B as M}from"./ButtonBase.9bf595f5.js";import{T as _,C as L,L as T,a as E}from"./SvgIcon.c425712b.js";import{u as ae}from"./solid.5ae8e60d.js";import{L as $e}from"./ListItemText.52d31dfa.js";import"./isHostComponent.9ebad583.js";import"./getDeviceId.e8f3946a.js";function ye(e){return D("MuiFab",e)}const j=A("MuiFab",["root","primary","secondary","extended","circular","focusVisible","disabled","colorInherit","sizeSmall","sizeMedium","sizeLarge","info","error","warning","success"]),ke=z()({name:"MuiFab",propDefaults:({set:e})=>e({color:"default",component:"button",disabled:!1,disableFocusRipple:!1,size:"large",variant:"circular"}),selfPropNames:["children","classes","color","disableFocusRipple","disableRipple","disabled","href","size","variant"],utilityClass:ye,slotClasses:e=>({root:["root",e.variant,`size${d(e.size)}`,e.color==="inherit"?"colorInherit":e.color]})}),Re=C(P,{name:"MuiFab",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`size${d(r.size)}`],r.color==="inherit"&&t.colorInherit,t[d(r.size)],t[r.color]]}})(({theme:e,ownerState:t})=>n(n(n(n(n(n(G(n({},e.typography.button),{minHeight:36,transition:e.transitions.create(["background-color","box-shadow","border-color"],{duration:e.transitions.duration.short}),borderRadius:"50%",padding:0,minWidth:0,width:56,height:56,boxShadow:e.shadows[6],"&:active":{boxShadow:e.shadows[12]},color:e.palette.getContrastText(e.palette.grey[300]),backgroundColor:e.palette.grey[300],"&:hover":{backgroundColor:e.palette.grey.A100,"@media (hover: none)":{backgroundColor:e.palette.grey[300]},textDecoration:"none"},[`&.${j.focusVisible}`]:{boxShadow:e.shadows[6]},[`&.${j.disabled}`]:{color:e.palette.action.disabled,boxShadow:e.shadows[0],backgroundColor:e.palette.action.disabledBackground}}),t.size==="small"&&{width:40,height:40}),t.size==="medium"&&{width:48,height:48}),t.variant==="extended"&&{borderRadius:48/2,padding:"0 16px",width:"auto",minHeight:"auto",minWidth:48,height:48}),t.variant==="extended"&&t.size==="small"&&{width:"auto",padding:"0 8px",borderRadius:34/2,minWidth:34,height:34}),t.variant==="extended"&&t.size==="medium"&&{width:"auto",padding:"0 16px",borderRadius:40/2,minWidth:40,height:40}),t.color==="inherit"&&{color:"inherit"}),({theme:e,ownerState:t})=>n({},t.color!=="inherit"&&t.color!=="default"&&e.palette[t.color]!=null&&{color:e.palette[t.color].contrastText,backgroundColor:e.palette[t.color].main,"&:hover":{backgroundColor:e.palette[t.color].dark,"@media (hover: none)":{backgroundColor:e.palette[t.color].main}}})),Ie=ke.component(function({allProps:t,classes:r,otherProps:i,props:a}){return o(Re,v({get className(){return b(r.root,i.className)},get disabled(){return a.disabled},get focusRipple(){return!a.disableFocusRipple},get focusVisibleClassName(){var s;return b((s=a.classes)==null?void 0:s.focusVisible,i.focusVisibleClassName)},ownerState:t},i,{get children(){return a.children}}))}),ze=y('',4,!0),Ae=y('',4,!0);var De=U(()=>[ze.cloneNode(!0),Ae.cloneNode(!0)],"Add");const Ne=y('',4,!0);var Me=U(()=>Ne.cloneNode(!0),"Person");function Le(e){return D("MuiAvatar",e)}A("MuiAvatar",["root","colorDefault","circular","rounded","square","img","fallback"]);const W=z()({name:"MuiAvatar",selfPropNames:["alt","children","classes","imgProps","sizes","src","srcSet","variant"],utilityClass:Le,slotClasses:e=>({root:["root",e.variant,e.colorDefault&&"colorDefault"],img:["img"],fallback:["fallback"]})}),Te=C("div",{name:"MuiAvatar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],r.colorDefault&&t.colorDefault]}})(({theme:e,ownerState:t})=>n(n(n({position:"relative",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,width:40,height:40,fontFamily:e.typography.fontFamily,fontSize:e.typography.pxToRem(20),lineHeight:1,borderRadius:"50%",overflow:"hidden",userSelect:"none"},t.variant==="rounded"&&{borderRadius:e.shape.borderRadius}),t.variant==="square"&&{borderRadius:0}),t.colorDefault&&{color:e.palette.background.default,backgroundColor:e.palette.mode==="light"?e.palette.grey[400]:e.palette.grey[600]})),we=C("img",{name:"MuiAvatar",slot:"Img",overridesResolver:(e,t)=>t.img})({width:"100%",height:"100%",textAlign:"center",objectFit:"cover",color:"transparent",textIndent:"10000"}),Oe=C(Me,{name:"MuiAvatar",slot:"Fallback",overridesResolver:(e,t)=>t.fallback})({width:"75%",height:"75%"});function _e(e){let t=!0;const[r,i]=R(!1);return ge(()=>{t=!1}),X(pe(()=>[e.crossOrigin,e.referrerPolicy,e.src,e.srcSet],()=>{if(!e.src&&!e.srcSet)return;i(!1);const a=new Image;a.onload=()=>{!t||i("loaded")},a.onerror=()=>{!t||i("error")},a.crossOrigin=e.crossOrigin,a.referrerPolicy=e.referrerPolicy,a.src=e.src,e.srcSet&&(a.srcset=e.srcSet)})),r}const w=W.defineComponent(function(t){const r=W.useThemeProps({props:t}),[,i]=ue(r,["alt","children","className","component","imgProps","sizes","src","srcSet","variant"]),a=v({component:"div",variant:"circular"},r),s=_e(v(()=>r.imgProps||{},{get src(){return r.src},get srcSet(){return r.srcSet}})),u=()=>r.src||r.srcSet,g=()=>u()&&s()!=="error",p=v(r,{get colorDefault(){return!g()},get component(){return a.component},get variant(){return a.variant}}),f=W.useClasses(p);return o(Te,v({get component(){return a.component},ownerState:p,get className(){return b(f.root,r.className)}},i,{children:()=>{if(g())return o(we,v({get alt(){return r.alt},get src(){return r.src},get srcSet(){return r.srcSet},get sizes(){return r.sizes},ownerState:p,get className(){return f.img}},()=>r.imgProps||{}));const x=r.children;return x!=null?x:u()&&r.alt?r.alt[0]:o(Oe,{get className(){return f.fallback}})}}))});function Fe(e){return D("MuiCardActions",e)}A("MuiCardActions",["root","spacing"]);const Ve=z()({name:"MuiActions",selfPropNames:["children","classes","disableSpacing"],propDefaults:({set:e})=>e({disableSpacing:!1}),utilityClass:Fe,slotClasses:e=>({root:["root",!e.disableSpacing&&"spacing"]})}),We=C("div",{name:"MuiCardActions",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,!r.disableSpacing&&t.spacing]}})(({ownerState:e})=>n({display:"flex",alignItems:"center",padding:8},!e.disableSpacing&&{"& > :not(:first-of-type)":{marginLeft:8}})),Be=Ve.component(function({allProps:t,classes:r,otherProps:i,props:a}){return o(We,v(i,{get className(){return b(r.root,i.className)},ownerState:t,get children(){return a.children}}))}),Pe=y('',4,!0);var Ue=U(()=>Pe.cloneNode(!0),"Cancel");function Ee(e){return D("MuiChip",e)}const c=A("MuiChip",["root","sizeSmall","sizeMedium","colorPrimary","colorSecondary","disabled","clickable","clickableColorPrimary","clickableColorSecondary","deletable","deletableColorPrimary","deletableColorSecondary","outlined","filled","outlinedPrimary","outlinedSecondary","avatar","avatarSmall","avatarMedium","avatarColorPrimary","avatarColorSecondary","icon","iconSmall","iconMedium","iconColorPrimary","iconColorSecondary","label","labelSmall","labelMedium","deleteIcon","deleteIconSmall","deleteIconMedium","deleteIconColorPrimary","deleteIconColorSecondary","deleteIconOutlinedColorPrimary","deleteIconOutlinedColorSecondary","focusVisible"]),Se=z()({name:"MuiChip",propDefaults:({set:e})=>e({color:"default",disabled:!1,size:"medium",variant:"filled"}),selfPropNames:["avatar","children","classes","clickable","color","deleteIcon","disabled","icon","label","onDelete","size","variant"],utilityClass:Ee,slotClasses:e=>({root:["root",e.variant,e.disabled&&"disabled",`size${d(e.size)}`,`color${d(e.color)}`,!!e.clickable&&"clickable",!!e.clickable&&`clickableColor${d(e.color)}`,!!e.onDelete&&"deletable",!!e.onDelete&&`deletableColor${d(e.color)}`,`${e.variant}${d(e.color)}`],label:["label",`label${d(e.size)}`],avatar:["avatar",`avatar${d(e.size)}`,`avatarColor${d(e.color)}`],icon:["icon",`icon${d(e.size)}`,`iconColor${d(e.color)}`],deleteIcon:["deleteIcon",`deleteIcon${d(e.size)}`,`deleteIconColor${d(e.color)}`,`deleteIconOutlinedColor${d(e.color)}`]})}),He=C("div",{name:"MuiChip",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e,{color:i,clickable:a,onDelete:s,size:u,variant:g}=r;return[{[`& .${c.avatar}`]:t.avatar},{[`& .${c.avatar}`]:t[`avatar${d(u)}`]},{[`& .${c.avatar}`]:t[`avatarColor${d(i)}`]},{[`& .${c.icon}`]:t.icon},{[`& .${c.icon}`]:t[`icon${d(u)}`]},{[`& .${c.icon}`]:t[`iconColor${d(i)}`]},{[`& .${c.deleteIcon}`]:t.deleteIcon},{[`& .${c.deleteIcon}`]:t[`deleteIcon${d(u)}`]},{[`& .${c.deleteIcon}`]:t[`deleteIconColor${d(i)}`]},{[`& .${c.deleteIcon}`]:t[`deleteIconOutlinedColor${d(i)}`]},t.root,t[`size${d(u)}`],t[`color${d(i)}`],a&&t.clickable,a&&i!=="default"&&t[`clickableColor${d(i)})`],s&&t.deletable,s&&i!=="default"&&t[`deletableColor${d(i)}`],t[g],g==="outlined"&&t[`outlined${d(i)}`]]}})(({theme:e,ownerState:t})=>{const r=h(e.palette.text.primary,.26);return n(n(n(n({maxWidth:"100%",fontFamily:e.typography.fontFamily,fontSize:e.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,color:e.palette.text.primary,backgroundColor:e.palette.action.selected,borderRadius:32/2,whiteSpace:"nowrap",transition:e.transitions.create(["background-color","box-shadow"]),cursor:"default",outline:0,textDecoration:"none",border:0,padding:0,verticalAlign:"middle",boxSizing:"border-box",[`&.${c.disabled}`]:{opacity:e.palette.action.disabledOpacity,pointerEvents:"none"},[`& .${c.avatar}`]:{marginLeft:5,marginRight:-6,width:24,height:24,color:e.palette.mode==="light"?e.palette.grey[700]:e.palette.grey[300],fontSize:e.typography.pxToRem(12)},[`& .${c.avatarColorPrimary}`]:{color:e.palette.primary.contrastText,backgroundColor:e.palette.primary.dark},[`& .${c.avatarColorSecondary}`]:{color:e.palette.secondary.contrastText,backgroundColor:e.palette.secondary.dark},[`& .${c.avatarSmall}`]:{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:e.typography.pxToRem(10)},[`& .${c.icon}`]:n(n({color:e.palette.mode==="light"?e.palette.grey[700]:e.palette.grey[300],marginLeft:5,marginRight:-6},t.size==="small"&&{fontSize:18,marginLeft:4,marginRight:-4}),t.color!=="default"&&{color:"inherit"}),[`& .${c.deleteIcon}`]:n(n({WebkitTapHighlightColor:"transparent",color:r,fontSize:22,cursor:"pointer",margin:"0 5px 0 -6px","&:hover":{color:h(r,.4)}},t.size==="small"&&{fontSize:16,marginRight:4,marginLeft:-4}),t.color!=="default"&&{color:h(e.palette[t.color].contrastText,.7),"&:hover, &:active":{color:e.palette[t.color].contrastText}})},t.size==="small"&&{height:24}),t.color!=="default"&&{backgroundColor:e.palette[t.color].main,color:e.palette[t.color].contrastText}),t.onDelete&&{[`&.${c.focusVisible}`]:{backgroundColor:h(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}}),t.onDelete&&t.color!=="default"&&{[`&.${c.focusVisible}`]:{backgroundColor:e.palette[t.color].dark}})},({theme:e,ownerState:t})=>n(n({},t.clickable&&{userSelect:"none",WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover":{backgroundColor:h(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity)},[`&.${c.focusVisible}`]:{backgroundColor:h(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)},"&:active":{boxShadow:e.shadows[1]}}),t.clickable&&t.color!=="default"&&{[`&:hover, &.${c.focusVisible}`]:{backgroundColor:e.palette[t.color].dark}}),({theme:e,ownerState:t})=>n(n({},t.variant==="outlined"&&{backgroundColor:"transparent",border:`1px solid ${e.palette.mode==="light"?e.palette.grey[400]:e.palette.grey[700]}`,[`&.${c.clickable}:hover`]:{backgroundColor:e.palette.action.hover},[`&.${c.focusVisible}`]:{backgroundColor:e.palette.action.focus},[`& .${c.avatar}`]:{marginLeft:4},[`& .${c.avatarSmall}`]:{marginLeft:2},[`& .${c.icon}`]:{marginLeft:4},[`& .${c.iconSmall}`]:{marginLeft:2},[`& .${c.deleteIcon}`]:{marginRight:5},[`& .${c.deleteIconSmall}`]:{marginRight:3}}),t.variant==="outlined"&&t.color!=="default"&&{color:e.palette[t.color].main,border:`1px solid ${h(e.palette[t.color].main,.7)}`,[`&.${c.clickable}:hover`]:{backgroundColor:h(e.palette[t.color].main,e.palette.action.hoverOpacity)},[`&.${c.focusVisible}`]:{backgroundColor:h(e.palette[t.color].main,e.palette.action.focusOpacity)},[`& .${c.deleteIcon}`]:{color:h(e.palette[t.color].main,.7),"&:hover, &:active":{color:e.palette[t.color].main}}})),Ke=C("span",{name:"MuiChip",slot:"Label",overridesResolver:(e,t)=>{const{ownerState:r}=e,{size:i}=r;return[t.label,t[`label${d(i)}`]]}})(({ownerState:e})=>n({overflow:"hidden",textOverflow:"ellipsis",paddingLeft:12,paddingRight:12,whiteSpace:"nowrap"},e.size==="small"&&{paddingLeft:8,paddingRight:8}));function q(e){return e.key==="Backspace"||e.key==="Delete"}const Ge=Se.component(function({allProps:t,classes:r,otherProps:i,props:a}){const s=xe(i),u=l=>{var S;l.stopPropagation(),(S=a.onDelete)==null||S.call(a)},g=l=>{l.currentTarget===l.target&&q(l)&&l.preventDefault(),typeof i.onKeyDown=="function"&&i.onKeyDown(l)},p=l=>{l.currentTarget===l.target&&(a.onDelete&&q(l)?a.onDelete():l.key==="Escape"&&s.ref&&s.ref.blur()),typeof i.onKeyUp=="function"&&i.onKeyUp(l)},f=()=>a.clickable!==!1&&i.onClick?!0:a.clickable,k=()=>f()||a.onDelete?P:i.component||"div",x=N(()=>k()===P?n({component:i.component||"div"},a.onDelete&&{disableRipple:!0}):{}),m=N(()=>{if(!a.onDelete)return;const l=F(()=>a.deleteIcon)();if(l&&l instanceof Element)l.setAttribute("class",b(l.getAttribute("class"),r.deleteIcon)),(l instanceof SVGElement||l instanceof HTMLElement)&&(l.onclick=u);else return o(Ue,{get className(){return r.deleteIcon},onClick:u})}),$=N(()=>{const l=F(()=>a.avatar)();return l&&l instanceof Element&&l.setAttribute("class",b(l.getAttribute("class"),r.avatar)),l}),ie=N(()=>{const l=F(()=>a.icon)();return l&&l instanceof Element&&l.setAttribute("class",b(l.getAttribute("class"),r.icon)),l});return o(He,v({get as(){return k()},get className(){return b(r.root,i.className)},get disabled(){return f()&&a.disabled?!0:void 0},get onClick(){return i.onClick},onKeyDown:g,onKeyUp:p,ref:s,ownerState:t},x,i,{get children(){return[J(()=>$()||ie()),o(Ke,{get className(){return b(r.label)},ownerState:t,get children(){return a.label}}),m]}}))});function je(e){return D("MuiDivider",e)}A("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]);const qe=z()({name:"MuiDivider",selfPropNames:["absolute","children","classes","flexItem","light","orientation","textAlign","variant"],propDefaults:({set:e,inProps:t})=>e({absolute:!1,get component(){return t.children?"div":"hr"},flexItem:!1,light:!1,orientation:"horizontal",get role(){return t.component!=="hr"?"separator":void 0},textAlign:"center",variant:"fullWidth"}),utilityClass:je,slotClasses:e=>({root:["root",e.absolute&&"absolute",e.variant,e.light&&"light",e.orientation==="vertical"&&"vertical",e.flexItem&&"flexItem",!!e.children&&"withChildren",!!e.children&&e.orientation==="vertical"&&"withChildrenVertical",e.textAlign==="right"&&e.orientation!=="vertical"&&"textAlignRight",e.textAlign==="left"&&e.orientation!=="vertical"&&"textAlignLeft"],wrapper:["wrapper",e.orientation==="vertical"&&"wrapperVertical"]})}),Ye=C("div",{name:"MuiDivider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.absolute&&t.absolute,t[r.variant],r.light&&t.light,r.orientation==="vertical"&&t.vertical,r.flexItem&&t.flexItem,r.children&&t.withChildren,r.children&&r.orientation==="vertical"&&t.withChildrenVertical,r.textAlign==="right"&&r.orientation!=="vertical"&&t.textAlignRight,r.textAlign==="left"&&r.orientation!=="vertical"&&t.textAlignLeft]}})(({theme:e,ownerState:t})=>n(n(n(n(n(n(n({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:e.palette.divider,borderBottomWidth:"thin"},t.absolute&&{position:"absolute",bottom:0,left:0,width:"100%"}),t.light&&{borderColor:h(e.palette.divider,.08)}),t.variant==="inset"&&{marginLeft:72}),t.variant==="middle"&&t.orientation==="horizontal"&&{marginLeft:e.spacing(2),marginRight:e.spacing(2)}),t.variant==="middle"&&t.orientation==="vertical"&&{marginTop:e.spacing(1),marginBottom:e.spacing(1)}),t.orientation==="vertical"&&{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"}),t.flexItem&&{alignSelf:"stretch",height:"auto"}),({theme:e,ownerState:t})=>n({},t.children&&{display:"flex",whiteSpace:"nowrap",textAlign:"center",border:0,"&::before, &::after":{position:"relative",width:"100%",borderTop:`thin solid ${e.palette.divider}`,top:"50%",content:'""',transform:"translateY(50%)"}}),({theme:e,ownerState:t})=>n({},t.children&&t.orientation==="vertical"&&{flexDirection:"column","&::before, &::after":{height:"100%",top:"0%",left:"50%",borderTop:0,borderLeft:`thin solid ${e.palette.divider}`,transform:"translateX(0%)"}}),({ownerState:e})=>n(n({},e.textAlign==="right"&&e.orientation!=="vertical"&&{"&::before":{width:"90%"},"&::after":{width:"10%"}}),e.textAlign==="left"&&e.orientation!=="vertical"&&{"&::before":{width:"10%"},"&::after":{width:"90%"}})),Xe=C("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.wrapper,r.orientation==="vertical"&&t.wrapperVertical]}})(({theme:e,ownerState:t})=>n({display:"inline-block",paddingLeft:`calc(${e.spacing(1)} * 1.2)`,paddingRight:`calc(${e.spacing(1)} * 1.2)`},t.orientation==="vertical"&&{paddingTop:`calc(${e.spacing(1)} * 1.2)`,paddingBottom:`calc(${e.spacing(1)} * 1.2)`})),Je=qe.component(function({allProps:t,otherProps:r,classes:i}){return o(Ye,v({get role(){return t.role}},r,{ownerState:t,get className(){return b(i.root,t.className)},get children(){return o(Q,{get when(){return t.children},get children(){return o(Xe,{get className(){return i.wrapper},ownerState:t,get children(){return t.children}})}})}}))}),Qe=y("
"),Y=y("
"),Ze=()=>{const e=O(),t=e.user();let r;const i=Z(),a=async()=>{await e.signOut(),i("/login")},[s,u]=R(!1);return[o(B,{variant:"contained",size:"small",onClick:()=>u(!0),ref(g){const p=r;typeof p=="function"?p(g):r=g},disableElevation:!0,disableRipple:!0,sx:{padding:0,minWidth:"25px"},get children(){return o(te,{get fallback(){return o(w,{children:"?"})},get children(){return o(re,{get when(){return t==null?void 0:t.user_metadata.avatar_url},get children(){return o(w,{get src(){return t==null?void 0:t.user_metadata.avatar_url}})}})}})}}),o(ve,{anchorOrigin:{vertical:"bottom",horizontal:"left"},get open(){return s()},onClose:()=>u(!1),anchorEl:r,get children(){return o(L,{get children(){return[o(I,{sx:{padding:0},style:"padding: 0;",get children(){return o(_,{sx:{padding:0},get children(){return o(T,{sx:{padding:0},get children(){return[o(E,{sx:{padding:0},get children(){return["\u7528\u6237ID:",Qe.cloneNode(!0),J(()=>t==null?void 0:t.id)]}}),o(Je,{})]}})}})}}),o(I,{sx:{padding:0},style:"padding:10px",get children(){return o(B,{color:"error",variant:"contained",size:"small",sx:{ml:"35%"},onClick:a,children:"SIGN OUT"})}})]}})}})]},et=e=>{const t=O(),[r,i]=ee(()=>e.owner_id,a=>{const s=t.user();return s&&s.id===a&&typeof s.user_metadata.name=="string"?s.user_metadata.name:a},{initialValue:"You"});return X(()=>{i.refetch(e.owner_id)}),o(E,{divider:!0,onClick:()=>{e.onClick&&e.onClick({},e.room_id)},sx:{cursor:"pointer"},get children(){return o($e,{get primary(){return o(_,{sx:{marginBottom:"8px"},get children(){return e.name}})},get secondary(){return o(Ge,{get icon(){return o(te,{get fallback(){return o(w,{children:"?"})},get children(){return o(re,{get when(){var a;return(a=t.user())==null?void 0:a.user_metadata.avatar_url},get children(){return o(w,{sizes:"small",sx:{maxHeight:"24px",maxWidth:"24px"},get src(){var a;return(a=t.user())==null?void 0:a.user_metadata.avatar_url}})}})}})},get label(){return r()}})}})}})},tt=e=>{const[t,r]=R(""),[i,a]=R(!1),s=ae(),u=O(),g=async()=>{if(a(!0),u.user()){const f=await s.createRoom(t());r(""),e.onRoomCreated(f)}else e.onSignInNeeded();a(!1)};return o(Ce,{get open(){return e.open},onClose:(p,f)=>e.onClose(p,f),get children(){return o(L,{sx:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:350,border:"0px solid #000",p:4,padding:"24px",paddingBottom:"8px"},get children(){return[o(I,{sx:{padding:0,marginBottom:"28px"},get children(){return[o(_,{variant:"h6",children:"New Room"}),o(T,{get children(){return o(E,{disablePadding:!0,get children(){return o(oe,{sx:{width:"100%"},label:"Name",variant:"standard",get disabled(){return i()},onChange:(p,f)=>r(f),get value(){return t()},children:" "})}})}})]}}),o(Be,{get children(){return[o(M,{sx:{width:"100%"}}),o(B,{sx:{width:"fit-content",paddingLeft:"24px",paddingRight:"24px"},onClick:async()=>{await g(),e.onClose({},"roomCreated")},get disabled(){return i()},get children(){return i()?"Creating...":"Create"}})]}})]}})}})},pt=()=>{const e=O(),t=Z(),r=ae(),i=async()=>{if(e.user())return await r.getAllRooms();t("/login")},[a,{refetch:s}]=ee(i,{initialValue:[]}),[u,g]=R(!1),p=()=>g(!0),f=()=>g(!1),k=()=>{t("/login")},x=(m,$)=>{t(`/rooms/${$}`)};return o(Q,{get when(){return e.user()},get fallback(){return o(fe,{href:"/login"})},get children(){return[o(M,{sx:{flexGrow:1},get children(){return o(me,{position:"static",get children(){return o(be,{get children(){return[o(_,{variant:"h6",component:"div",sx:{flexGrow:1},children:"\u753B\u677F"}),o(Ze,{})]}})}})}}),o(M,{sx:{right:40,position:"fixed",bottom:50,padding:0,paddingTop:0,zIndex:99},get children(){const m=Y.cloneNode(!0);return V(m,o(Ie,{color:"primary","aria-label":"add",onClick:p,get children(){return o(De,{})}}),null),V(m,o(tt,{get open(){return u()},onClose:f,onRoomCreated:()=>s(),onSignInNeeded:k}),null),m}}),(()=>{const m=Y.cloneNode(!0);return V(m,o(M,{sx:{ml:"50%",transform:"translate(-50%, 0)",padding:0,marginTop:"60px"},get children(){return[o(L,{sx:{minWidth:"120%",ml:"50%",transform:"translate(-50%,0)",width:"auto"},get children(){return o(I,{sx:{padding:0},style:"padding: 0;",get children(){return o(oe,{sx:{width:"100%"},placeholder:"\u623F\u95F4ID"})}})}}),o(L,{sx:{minWidth:"110%",ml:"50%",transform:"translate(-50%,0)",marginTop:"30px",width:"auto",height:"auto"},get children(){return o(I,{sx:{padding:0},style:"padding: 0;",get children(){return o(T,{sx:{padding:0},get children(){return o(he,{get each(){return a()},get fallback(){return o(T,{children:"No rooms here."})},children:$=>o(et,{get owner_id(){return $.owner},get name(){return $.name},get room_id(){return $.id},onClick:x})})}})}})}})]}})),m})()]}})};export{pt as default}; -//# sourceMappingURL=index.3e50c9ce.js.map diff --git a/source/files/magicbroad/assets/index.3e50c9ce.js.map b/source/files/magicbroad/assets/index.3e50c9ce.js.map deleted file mode 100644 index c20a58a..0000000 --- a/source/files/magicbroad/assets/index.3e50c9ce.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.3e50c9ce.js","sources":["../../node_modules/@suid/material/Fab/fabClasses.js","../../node_modules/@suid/material/Fab/Fab.jsx","../../node_modules/@suid/icons-material/Add.jsx","../../node_modules/@suid/material/internal/svg-icons/Person.jsx","../../node_modules/@suid/material/Avatar/avatarClasses.js","../../node_modules/@suid/material/Avatar/Avatar.jsx","../../node_modules/@suid/material/CardActions/cardActionsClasses.js","../../node_modules/@suid/material/CardActions/CardActions.jsx","../../node_modules/@suid/material/internal/svg-icons/Cancel.jsx","../../node_modules/@suid/material/Chip/chipClasses.js","../../node_modules/@suid/material/Chip/Chip.jsx","../../node_modules/@suid/material/Divider/dividerClasses.js","../../node_modules/@suid/material/Divider/Divider.jsx","../../src/pages/Index/index.tsx"],"sourcesContent":["import { generateUtilityClass, generateUtilityClasses } from \"@suid/base\";\nexport function getFabUtilityClass(slot) {\n return generateUtilityClass(\"MuiFab\", slot);\n}\nconst fabClasses = generateUtilityClasses(\"MuiFab\", [\n \"root\",\n \"primary\",\n \"secondary\",\n \"extended\",\n \"circular\",\n \"focusVisible\",\n \"disabled\",\n \"colorInherit\",\n \"sizeSmall\",\n \"sizeMedium\",\n \"sizeLarge\",\n \"info\",\n \"error\",\n \"warning\",\n \"success\",\n]);\nexport default fabClasses;\n","import ButtonBase from \"../ButtonBase\";\nimport styled from \"../styles/styled\";\nimport capitalize from \"../utils/capitalize\";\nimport fabClasses, { getFabUtilityClass } from \"./fabClasses\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nimport clsx from \"clsx\";\nconst $ = createComponentFactory()({\n name: \"MuiFab\",\n propDefaults: ({ set }) => set({\n color: \"default\",\n component: \"button\",\n disabled: false,\n disableFocusRipple: false,\n size: \"large\",\n variant: \"circular\",\n }),\n selfPropNames: [\n \"children\",\n \"classes\",\n \"color\",\n \"disableFocusRipple\",\n \"disableRipple\",\n \"disabled\",\n \"href\",\n \"size\",\n \"variant\",\n ],\n utilityClass: getFabUtilityClass,\n slotClasses: (ownerState) => ({\n root: [\n \"root\",\n ownerState.variant,\n `size${capitalize(ownerState.size)}`,\n ownerState.color === \"inherit\" ? \"colorInherit\" : ownerState.color,\n ],\n }),\n});\nconst FabRoot = styled(ButtonBase, {\n name: \"MuiFab\",\n slot: \"Root\",\n overridesResolver: (props, styles) => {\n const { ownerState } = props;\n return [\n styles.root,\n styles[ownerState.variant],\n styles[`size${capitalize(ownerState.size)}`],\n ownerState.color === \"inherit\" && styles.colorInherit,\n styles[capitalize(ownerState.size)],\n styles[ownerState.color],\n ];\n },\n})(({ theme, ownerState }) => ({\n ...theme.typography.button,\n minHeight: 36,\n transition: theme.transitions.create([\"background-color\", \"box-shadow\", \"border-color\"], {\n duration: theme.transitions.duration.short,\n }),\n borderRadius: \"50%\",\n padding: 0,\n minWidth: 0,\n width: 56,\n height: 56,\n boxShadow: theme.shadows[6],\n \"&:active\": {\n boxShadow: theme.shadows[12],\n },\n color: theme.palette.getContrastText(theme.palette.grey[300]),\n backgroundColor: theme.palette.grey[300],\n \"&:hover\": {\n backgroundColor: theme.palette.grey.A100,\n // Reset on touch devices, it doesn't add specificity\n \"@media (hover: none)\": {\n backgroundColor: theme.palette.grey[300],\n },\n textDecoration: \"none\",\n },\n [`&.${fabClasses.focusVisible}`]: {\n boxShadow: theme.shadows[6],\n },\n [`&.${fabClasses.disabled}`]: {\n color: theme.palette.action.disabled,\n boxShadow: theme.shadows[0],\n backgroundColor: theme.palette.action.disabledBackground,\n },\n ...(ownerState.size === \"small\" && {\n width: 40,\n height: 40,\n }),\n ...(ownerState.size === \"medium\" && {\n width: 48,\n height: 48,\n }),\n ...(ownerState.variant === \"extended\" && {\n borderRadius: 48 / 2,\n padding: \"0 16px\",\n width: \"auto\",\n minHeight: \"auto\",\n minWidth: 48,\n height: 48,\n }),\n ...(ownerState.variant === \"extended\" &&\n ownerState.size === \"small\" && {\n width: \"auto\",\n padding: \"0 8px\",\n borderRadius: 34 / 2,\n minWidth: 34,\n height: 34,\n }),\n ...(ownerState.variant === \"extended\" &&\n ownerState.size === \"medium\" && {\n width: \"auto\",\n padding: \"0 16px\",\n borderRadius: 40 / 2,\n minWidth: 40,\n height: 40,\n }),\n ...(ownerState.color === \"inherit\" && {\n color: \"inherit\",\n }),\n}), ({ theme, ownerState }) => ({\n ...(ownerState.color !== \"inherit\" &&\n ownerState.color !== \"default\" &&\n theme.palette[ownerState.color] != null && {\n color: theme.palette[ownerState.color].contrastText,\n backgroundColor: theme.palette[ownerState.color].main,\n \"&:hover\": {\n backgroundColor: theme.palette[ownerState.color].dark,\n // Reset on touch devices, it doesn't add specificity\n \"@media (hover: none)\": {\n backgroundColor: theme.palette[ownerState.color].main,\n },\n },\n }),\n}));\n/**\n *\n * Demos:\n *\n * - [Floating Action Button](https://mui.com/components/floating-action-button/)\n *\n * API:\n *\n * - [Fab API](https://mui.com/api/fab/)\n * - inherits [ButtonBase API](https://mui.com/api/button-base/)\n */\nconst Fab = $.component(function Fab({ allProps, classes, otherProps, props }) {\n return (\n {props.children}\n );\n});\nexport default Fab;\n","import $ from \"./utils/createSvgIcon\";\n\nexport default $(\n () => (\n <>\n \n \n \n ),\n \"Add\"\n);\n","import createSvgIcon from \"../../utils/createSvgIcon\";\n/**\n * @ignore - internal component.\n */\nexport default createSvgIcon(() => (), \"Person\");\n","import generateUtilityClass from \"@suid/base/generateUtilityClass\";\nimport generateUtilityClasses from \"@suid/base/generateUtilityClasses\";\nexport function getAvatarUtilityClass(slot) {\n return generateUtilityClass(\"MuiAvatar\", slot);\n}\nconst avatarClasses = generateUtilityClasses(\"MuiAvatar\", [\n \"root\",\n \"colorDefault\",\n \"circular\",\n \"rounded\",\n \"square\",\n \"img\",\n \"fallback\",\n]);\nexport default avatarClasses;\n","import Person from \"../internal/svg-icons/Person\";\nimport styled from \"../styles/styled\";\nimport { getAvatarUtilityClass } from \"./avatarClasses\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nimport clsx from \"clsx\";\nimport { createSignal, createEffect, on, splitProps, mergeProps, onCleanup, } from \"solid-js\";\nconst $ = createComponentFactory()({\n name: \"MuiAvatar\",\n selfPropNames: [\n \"alt\",\n \"children\",\n \"classes\",\n \"imgProps\",\n \"sizes\",\n \"src\",\n \"srcSet\",\n \"variant\",\n ],\n utilityClass: getAvatarUtilityClass,\n slotClasses: (ownerState) => ({\n root: [\n \"root\",\n ownerState.variant,\n ownerState.colorDefault && \"colorDefault\",\n ],\n img: [\"img\"],\n fallback: [\"fallback\"],\n }),\n});\nconst AvatarRoot = styled(\"div\", {\n name: \"MuiAvatar\",\n slot: \"Root\",\n overridesResolver: (props, styles) => {\n const { ownerState } = props;\n return [\n styles.root,\n styles[ownerState.variant],\n ownerState.colorDefault && styles.colorDefault,\n ];\n },\n})(({ theme, ownerState }) => ({\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n width: 40,\n height: 40,\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(20),\n lineHeight: 1,\n borderRadius: \"50%\",\n overflow: \"hidden\",\n userSelect: \"none\",\n ...(ownerState.variant === \"rounded\" && {\n borderRadius: theme.shape.borderRadius,\n }),\n ...(ownerState.variant === \"square\" && {\n borderRadius: 0,\n }),\n ...(ownerState.colorDefault && {\n color: theme.palette.background.default,\n backgroundColor: theme.palette.mode === \"light\"\n ? theme.palette.grey[400]\n : theme.palette.grey[600],\n }),\n}));\nconst AvatarImg = styled(\"img\", {\n name: \"MuiAvatar\",\n slot: \"Img\",\n overridesResolver: (props, styles) => styles.img,\n})({\n width: \"100%\",\n height: \"100%\",\n textAlign: \"center\",\n // Handle non-square image. The property isn't supported by IE11.\n objectFit: \"cover\",\n // Hide alt text.\n color: \"transparent\",\n // Hide the image broken icon, only works on Chrome.\n textIndent: \"10000\",\n});\nconst AvatarFallback = styled(Person, {\n name: \"MuiAvatar\",\n slot: \"Fallback\",\n overridesResolver: (props, styles) => styles.fallback,\n})({\n width: \"75%\",\n height: \"75%\",\n});\nfunction useLoaded(props) {\n let active = true;\n const [loaded, setLoaded] = createSignal(false);\n onCleanup(() => {\n active = false;\n });\n createEffect(on(() => [props.crossOrigin, props.referrerPolicy, props.src, props.srcSet], () => {\n if (!props.src && !props.srcSet) {\n return undefined;\n }\n setLoaded(false);\n const image = new Image();\n image.onload = () => {\n if (!active) {\n return;\n }\n setLoaded(\"loaded\");\n };\n image.onerror = () => {\n if (!active) {\n return;\n }\n setLoaded(\"error\");\n };\n image.crossOrigin = props.crossOrigin;\n image.referrerPolicy = props.referrerPolicy;\n image.src = props.src;\n if (props.srcSet) {\n image.srcset = props.srcSet;\n }\n }));\n return loaded;\n}\n/**\n *\n * Demos:\n *\n * - [Avatars](https://mui.com/components/avatars/)\n *\n * API:\n *\n * - [Avatar API](https://mui.com/api/avatar/)\n */\nconst Avatar = $.defineComponent(function Avatar(inProps) {\n const props = $.useThemeProps({ props: inProps });\n const [, other] = splitProps(props, [\n \"alt\",\n \"children\",\n \"className\",\n \"component\",\n \"imgProps\",\n \"sizes\",\n \"src\",\n \"srcSet\",\n \"variant\",\n ]);\n const baseProps = mergeProps({\n component: \"div\",\n variant: \"circular\",\n }, props);\n // Use a hook instead of onError on the img element to support server-side rendering.\n const loaded = useLoaded(mergeProps(() => props.imgProps || {}, {\n get src() {\n return props.src;\n },\n get srcSet() {\n return props.srcSet;\n },\n }));\n const hasImg = () => props.src || props.srcSet;\n const hasImgNotFailing = () => hasImg() && loaded() !== \"error\";\n const ownerState = mergeProps(props, {\n get colorDefault() {\n return !hasImgNotFailing();\n },\n get component() {\n return baseProps.component;\n },\n get variant() {\n return baseProps.variant;\n },\n });\n const classes = $.useClasses(ownerState);\n const children = () => {\n if (hasImgNotFailing()) {\n return ();\n }\n const children = props.children;\n if (children !== null && children !== undefined) {\n return children;\n }\n else if (hasImg() && props.alt) {\n return props.alt[0];\n }\n else {\n return ;\n }\n };\n return (\n {children}\n );\n});\nexport default Avatar;\n","import { generateUtilityClass, generateUtilityClasses } from \"@suid/base\";\nexport function getCardActionsUtilityClass(slot) {\n return generateUtilityClass(\"MuiCardActions\", slot);\n}\nconst cardActionsClasses = generateUtilityClasses(\"MuiCardActions\", [\"root\", \"spacing\"]);\nexport default cardActionsClasses;\n","import styled from \"../styles/styled\";\nimport { getCardActionsUtilityClass } from \"./cardActionsClasses\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nimport clsx from \"clsx\";\nconst $ = createComponentFactory()({\n name: \"MuiActions\",\n selfPropNames: [\"children\", \"classes\", \"disableSpacing\"],\n propDefaults: ({ set }) => set({\n disableSpacing: false,\n }),\n utilityClass: getCardActionsUtilityClass,\n slotClasses: (ownerState) => ({\n root: [\"root\", !ownerState.disableSpacing && \"spacing\"],\n }),\n});\nconst CardActionsRoot = styled(\"div\", {\n name: \"MuiCardActions\",\n slot: \"Root\",\n overridesResolver: (props, styles) => {\n const { ownerState } = props;\n return [styles.root, !ownerState.disableSpacing && styles.spacing];\n },\n})(({ ownerState }) => ({\n display: \"flex\",\n alignItems: \"center\",\n padding: 8,\n ...(!ownerState.disableSpacing && {\n \"& > :not(:first-of-type)\": {\n marginLeft: 8,\n },\n }),\n}));\n/**\n *\n * Demos:\n *\n * - [Cards](https://mui.com/components/cards/)\n *\n * API:\n *\n * - [CardActions API](https://mui.com/api/card-actions/)\n */\nconst CardActions = $.component(function CardActions({ allProps, classes, otherProps, props, }) {\n return (\n {props.children}\n );\n});\nexport default CardActions;\n","import createSvgIcon from \"../../utils/createSvgIcon\";\n/**\n * @ignore - internal component.\n */\nexport default createSvgIcon(() => (), \"Cancel\");\n","import { generateUtilityClass, generateUtilityClasses } from \"@suid/base\";\nexport function getChipUtilityClass(slot) {\n return generateUtilityClass(\"MuiChip\", slot);\n}\nconst chipClasses = generateUtilityClasses(\"MuiChip\", [\n \"root\",\n \"sizeSmall\",\n \"sizeMedium\",\n \"colorPrimary\",\n \"colorSecondary\",\n \"disabled\",\n \"clickable\",\n \"clickableColorPrimary\",\n \"clickableColorSecondary\",\n \"deletable\",\n \"deletableColorPrimary\",\n \"deletableColorSecondary\",\n \"outlined\",\n \"filled\",\n \"outlinedPrimary\",\n \"outlinedSecondary\",\n \"avatar\",\n \"avatarSmall\",\n \"avatarMedium\",\n \"avatarColorPrimary\",\n \"avatarColorSecondary\",\n \"icon\",\n \"iconSmall\",\n \"iconMedium\",\n \"iconColorPrimary\",\n \"iconColorSecondary\",\n \"label\",\n \"labelSmall\",\n \"labelMedium\",\n \"deleteIcon\",\n \"deleteIconSmall\",\n \"deleteIconMedium\",\n \"deleteIconColorPrimary\",\n \"deleteIconColorSecondary\",\n \"deleteIconOutlinedColorPrimary\",\n \"deleteIconOutlinedColorSecondary\",\n \"focusVisible\",\n]);\nexport default chipClasses;\n","import ButtonBase from \"../ButtonBase\";\nimport CancelIcon from \"../internal/svg-icons/Cancel\";\nimport styled from \"../styles/styled\";\nimport capitalize from \"../utils/capitalize\";\nimport chipClasses, { getChipUtilityClass } from \"./chipClasses\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nimport { alpha } from \"@suid/system\";\nimport createElementRef from \"@suid/system/createElementRef\";\nimport clsx from \"clsx\";\nimport { children, createMemo } from \"solid-js\";\nconst $ = createComponentFactory()({\n name: \"MuiChip\",\n propDefaults: ({ set }) => set({\n color: \"default\",\n disabled: false,\n size: \"medium\",\n variant: \"filled\",\n }),\n selfPropNames: [\n \"avatar\",\n \"children\",\n \"classes\",\n \"clickable\",\n \"color\",\n \"deleteIcon\",\n \"disabled\",\n \"icon\",\n \"label\",\n \"onDelete\",\n \"size\",\n \"variant\",\n ],\n utilityClass: getChipUtilityClass,\n slotClasses: (ownerState) => ({\n root: [\n \"root\",\n ownerState.variant,\n ownerState.disabled && \"disabled\",\n `size${capitalize(ownerState.size)}`,\n `color${capitalize(ownerState.color)}`,\n !!ownerState.clickable && \"clickable\",\n !!ownerState.clickable && `clickableColor${capitalize(ownerState.color)}`,\n !!ownerState.onDelete && \"deletable\",\n !!ownerState.onDelete && `deletableColor${capitalize(ownerState.color)}`,\n `${ownerState.variant}${capitalize(ownerState.color)}`,\n ],\n label: [\"label\", `label${capitalize(ownerState.size)}`],\n avatar: [\n \"avatar\",\n `avatar${capitalize(ownerState.size)}`,\n `avatarColor${capitalize(ownerState.color)}`,\n ],\n icon: [\n \"icon\",\n `icon${capitalize(ownerState.size)}`,\n `iconColor${capitalize(ownerState.color)}`,\n ],\n deleteIcon: [\n \"deleteIcon\",\n `deleteIcon${capitalize(ownerState.size)}`,\n `deleteIconColor${capitalize(ownerState.color)}`,\n `deleteIconOutlinedColor${capitalize(ownerState.color)}`,\n ],\n }),\n});\nconst ChipRoot = styled(\"div\", {\n name: \"MuiChip\",\n slot: \"Root\",\n overridesResolver: (props, styles) => {\n const { ownerState } = props;\n const { color, clickable, onDelete, size, variant } = ownerState;\n return [\n { [`& .${chipClasses.avatar}`]: styles.avatar },\n { [`& .${chipClasses.avatar}`]: styles[`avatar${capitalize(size)}`] },\n {\n [`& .${chipClasses.avatar}`]: styles[`avatarColor${capitalize(color)}`],\n },\n { [`& .${chipClasses.icon}`]: styles.icon },\n { [`& .${chipClasses.icon}`]: styles[`icon${capitalize(size)}`] },\n { [`& .${chipClasses.icon}`]: styles[`iconColor${capitalize(color)}`] },\n { [`& .${chipClasses.deleteIcon}`]: styles.deleteIcon },\n {\n [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(size)}`],\n },\n {\n [`& .${chipClasses.deleteIcon}`]: styles[`deleteIconColor${capitalize(color)}`],\n },\n {\n [`& .${chipClasses.deleteIcon}`]: styles[`deleteIconOutlinedColor${capitalize(color)}`],\n },\n styles.root,\n styles[`size${capitalize(size)}`],\n styles[`color${capitalize(color)}`],\n clickable && styles.clickable,\n clickable &&\n color !== \"default\" &&\n styles[`clickableColor${capitalize(color)})`],\n onDelete && styles.deletable,\n onDelete &&\n color !== \"default\" &&\n styles[`deletableColor${capitalize(color)}`],\n styles[variant],\n variant === \"outlined\" && styles[`outlined${capitalize(color)}`],\n ];\n },\n})(({ theme, ownerState }) => {\n const deleteIconColor = alpha(theme.palette.text.primary, 0.26);\n return {\n maxWidth: \"100%\",\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(13),\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: 32,\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.action.selected,\n borderRadius: 32 / 2,\n whiteSpace: \"nowrap\",\n transition: theme.transitions.create([\"background-color\", \"box-shadow\"]),\n // label will inherit this from root, then `clickable` class overrides this for both\n cursor: \"default\",\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n textDecoration: \"none\",\n border: 0,\n padding: 0,\n verticalAlign: \"middle\",\n boxSizing: \"border-box\",\n [`&.${chipClasses.disabled}`]: {\n opacity: theme.palette.action.disabledOpacity,\n pointerEvents: \"none\",\n },\n [`& .${chipClasses.avatar}`]: {\n marginLeft: 5,\n marginRight: -6,\n width: 24,\n height: 24,\n color: theme.palette.mode === \"light\"\n ? theme.palette.grey[700]\n : theme.palette.grey[300],\n fontSize: theme.typography.pxToRem(12),\n },\n [`& .${chipClasses.avatarColorPrimary}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.dark,\n },\n [`& .${chipClasses.avatarColorSecondary}`]: {\n color: theme.palette.secondary.contrastText,\n backgroundColor: theme.palette.secondary.dark,\n },\n [`& .${chipClasses.avatarSmall}`]: {\n marginLeft: 4,\n marginRight: -4,\n width: 18,\n height: 18,\n fontSize: theme.typography.pxToRem(10),\n },\n [`& .${chipClasses.icon}`]: {\n color: theme.palette.mode === \"light\"\n ? theme.palette.grey[700]\n : theme.palette.grey[300],\n marginLeft: 5,\n marginRight: -6,\n ...(ownerState.size === \"small\" && {\n fontSize: 18,\n marginLeft: 4,\n marginRight: -4,\n }),\n ...(ownerState.color !== \"default\" && {\n color: \"inherit\",\n }),\n },\n [`& .${chipClasses.deleteIcon}`]: {\n WebkitTapHighlightColor: \"transparent\",\n color: deleteIconColor,\n fontSize: 22,\n cursor: \"pointer\",\n margin: \"0 5px 0 -6px\",\n \"&:hover\": {\n color: alpha(deleteIconColor, 0.4),\n },\n ...(ownerState.size === \"small\" && {\n fontSize: 16,\n marginRight: 4,\n marginLeft: -4,\n }),\n ...(ownerState.color !== \"default\" && {\n color: alpha(theme.palette[ownerState.color].contrastText, 0.7),\n \"&:hover, &:active\": {\n color: theme.palette[ownerState.color].contrastText,\n },\n }),\n },\n ...(ownerState.size === \"small\" && {\n height: 24,\n }),\n ...(ownerState.color !== \"default\" && {\n backgroundColor: theme.palette[ownerState.color].main,\n color: theme.palette[ownerState.color].contrastText,\n }),\n ...(ownerState.onDelete && {\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity +\n theme.palette.action.focusOpacity),\n },\n }),\n ...(ownerState.onDelete &&\n ownerState.color !== \"default\" && {\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: theme.palette[ownerState.color].dark,\n },\n }),\n };\n}, ({ theme, ownerState }) => ({\n ...(ownerState.clickable && {\n userSelect: \"none\",\n WebkitTapHighlightColor: \"transparent\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity +\n theme.palette.action.hoverOpacity),\n },\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity +\n theme.palette.action.focusOpacity),\n },\n \"&:active\": {\n boxShadow: theme.shadows[1],\n },\n }),\n ...(ownerState.clickable &&\n ownerState.color !== \"default\" && {\n [`&:hover, &.${chipClasses.focusVisible}`]: {\n backgroundColor: theme.palette[ownerState.color].dark,\n },\n }),\n}), ({ theme, ownerState }) => ({\n ...(ownerState.variant === \"outlined\" && {\n backgroundColor: \"transparent\",\n border: `1px solid ${theme.palette.mode === \"light\"\n ? theme.palette.grey[400]\n : theme.palette.grey[700]}`,\n [`&.${chipClasses.clickable}:hover`]: {\n backgroundColor: theme.palette.action.hover,\n },\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: theme.palette.action.focus,\n },\n [`& .${chipClasses.avatar}`]: {\n marginLeft: 4,\n },\n [`& .${chipClasses.avatarSmall}`]: {\n marginLeft: 2,\n },\n [`& .${chipClasses.icon}`]: {\n marginLeft: 4,\n },\n [`& .${chipClasses.iconSmall}`]: {\n marginLeft: 2,\n },\n [`& .${chipClasses.deleteIcon}`]: {\n marginRight: 5,\n },\n [`& .${chipClasses.deleteIconSmall}`]: {\n marginRight: 3,\n },\n }),\n ...(ownerState.variant === \"outlined\" &&\n ownerState.color !== \"default\" && {\n color: theme.palette[ownerState.color].main,\n border: `1px solid ${alpha(theme.palette[ownerState.color].main, 0.7)}`,\n [`&.${chipClasses.clickable}:hover`]: {\n backgroundColor: alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n },\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: alpha(theme.palette[ownerState.color].main, theme.palette.action.focusOpacity),\n },\n [`& .${chipClasses.deleteIcon}`]: {\n color: alpha(theme.palette[ownerState.color].main, 0.7),\n \"&:hover, &:active\": {\n color: theme.palette[ownerState.color].main,\n },\n },\n }),\n}));\nconst ChipLabel = styled(\"span\", {\n name: \"MuiChip\",\n slot: \"Label\",\n overridesResolver: (props, styles) => {\n const { ownerState } = props;\n const { size } = ownerState;\n return [styles.label, styles[`label${capitalize(size)}`]];\n },\n})(({ ownerState }) => ({\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n paddingLeft: 12,\n paddingRight: 12,\n whiteSpace: \"nowrap\",\n ...(ownerState.size === \"small\" && {\n paddingLeft: 8,\n paddingRight: 8,\n }),\n}));\nfunction isDeleteKeyboardEvent(keyboardEvent) {\n return keyboardEvent.key === \"Backspace\" || keyboardEvent.key === \"Delete\";\n}\n/**\n * Chips represent complex entities in small blocks, such as a contact.\n *\n * Demos:\n *\n * - [Chips](https://mui.com/components/chips/)\n *\n * API:\n *\n * - [Chip API](https://mui.com/api/chip/)\n */\nconst Chip = $.component(function Chip({ allProps, classes, otherProps, props, }) {\n const element = createElementRef(otherProps);\n const handleDeleteIconClick = (event) => {\n // Stop the event from bubbling up to the `Chip`\n event.stopPropagation();\n props.onDelete?.();\n };\n const handleKeyDown = (event) => {\n // Ignore events from children of `Chip`.\n if (event.currentTarget === event.target && isDeleteKeyboardEvent(event)) {\n // Will be handled in keyUp, otherwise some browsers\n // might init navigation\n event.preventDefault();\n }\n if (typeof otherProps.onKeyDown === \"function\")\n otherProps.onKeyDown(event);\n };\n const handleKeyUp = (event) => {\n // Ignore events from children of `Chip`.\n if (event.currentTarget === event.target) {\n if (props.onDelete && isDeleteKeyboardEvent(event)) {\n props.onDelete();\n }\n else if (event.key === \"Escape\" && element.ref) {\n element.ref.blur();\n }\n }\n if (typeof otherProps.onKeyUp === \"function\")\n otherProps.onKeyUp(event);\n };\n const clickable = () => props.clickable !== false && otherProps.onClick ? true : props.clickable;\n const component = () => clickable() || props.onDelete ? ButtonBase : otherProps.component || \"div\";\n const moreProps = createMemo(() => component() === ButtonBase\n ? {\n component: otherProps.component || \"div\",\n //focusVisibleClassName: classes.focusVisible,\n ...(props.onDelete && { disableRipple: true }),\n }\n : {});\n const deleteIcon = createMemo(() => {\n if (!props.onDelete)\n return undefined;\n const node = children(() => props.deleteIcon)();\n if (node && node instanceof Element) {\n node.setAttribute(\"class\", clsx(node.getAttribute(\"class\"), classes.deleteIcon));\n if (node instanceof SVGElement || node instanceof HTMLElement)\n node.onclick = handleDeleteIconClick;\n }\n else {\n return ();\n }\n });\n const avatar = createMemo(() => {\n const node = children(() => props.avatar)();\n if (node && node instanceof Element) {\n node.setAttribute(\"class\", clsx(node.getAttribute(\"class\"), classes.avatar));\n }\n return node;\n });\n const icon = createMemo(() => {\n const node = children(() => props.icon)();\n if (node && node instanceof Element) {\n node.setAttribute(\"class\", clsx(node.getAttribute(\"class\"), classes.icon));\n }\n return node;\n });\n if (process.env.NODE_ENV !== \"production\") {\n if (avatar() && icon()) {\n console.error(\"MUI: The Chip component can not handle the avatar \" +\n \"and the icon prop at the same time. Pick one.\");\n }\n }\n return (\n {avatar() || icon()}\n \n {props.label}\n \n {deleteIcon}\n );\n});\nexport default Chip;\n","import { generateUtilityClass, generateUtilityClasses } from \"@suid/base\";\nexport function getDividerUtilityClass(slot) {\n return generateUtilityClass(\"MuiDivider\", slot);\n}\nconst dividerClasses = generateUtilityClasses(\"MuiDivider\", [\n \"root\",\n \"absolute\",\n \"fullWidth\",\n \"inset\",\n \"middle\",\n \"flexItem\",\n \"light\",\n \"vertical\",\n \"withChildren\",\n \"withChildrenVertical\",\n \"textAlignRight\",\n \"textAlignLeft\",\n \"wrapper\",\n \"wrapperVertical\",\n]);\nexport default dividerClasses;\n","import styled from \"../styles/styled\";\nimport { getDividerUtilityClass } from \"./dividerClasses\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nimport { alpha } from \"@suid/system\";\nimport clsx from \"clsx\";\nimport { Show } from \"solid-js\";\nconst $ = createComponentFactory()({\n name: \"MuiDivider\",\n selfPropNames: [\n \"absolute\",\n \"children\",\n \"classes\",\n \"flexItem\",\n \"light\",\n \"orientation\",\n \"textAlign\",\n \"variant\",\n ],\n propDefaults: ({ set, inProps }) => set({\n absolute: false,\n get component() {\n return inProps.children ? \"div\" : \"hr\";\n },\n flexItem: false,\n light: false,\n orientation: \"horizontal\",\n get role() {\n return inProps.component !== \"hr\" ? \"separator\" : undefined;\n },\n textAlign: \"center\",\n variant: \"fullWidth\",\n }),\n utilityClass: getDividerUtilityClass,\n slotClasses: (o) => ({\n root: [\n \"root\",\n o.absolute && \"absolute\",\n o.variant,\n o.light && \"light\",\n o.orientation === \"vertical\" && \"vertical\",\n o.flexItem && \"flexItem\",\n !!o.children && \"withChildren\",\n !!o.children && o.orientation === \"vertical\" && \"withChildrenVertical\",\n o.textAlign === \"right\" &&\n o.orientation !== \"vertical\" &&\n \"textAlignRight\",\n o.textAlign === \"left\" && o.orientation !== \"vertical\" && \"textAlignLeft\",\n ],\n wrapper: [\"wrapper\", o.orientation === \"vertical\" && \"wrapperVertical\"],\n }),\n});\nconst DividerRoot = styled(\"div\", {\n name: \"MuiDivider\",\n slot: \"Root\",\n overridesResolver: (props, styles) => {\n const { ownerState } = props;\n return [\n styles.root,\n ownerState.absolute && styles.absolute,\n styles[ownerState.variant],\n ownerState.light && styles.light,\n ownerState.orientation === \"vertical\" && styles.vertical,\n ownerState.flexItem && styles.flexItem,\n ownerState.children && styles.withChildren,\n ownerState.children &&\n ownerState.orientation === \"vertical\" &&\n styles.withChildrenVertical,\n ownerState.textAlign === \"right\" &&\n ownerState.orientation !== \"vertical\" &&\n styles.textAlignRight,\n ownerState.textAlign === \"left\" &&\n ownerState.orientation !== \"vertical\" &&\n styles.textAlignLeft,\n ];\n },\n})(({ theme, ownerState }) => ({\n margin: 0,\n flexShrink: 0,\n borderWidth: 0,\n borderStyle: \"solid\",\n borderColor: theme.palette.divider,\n borderBottomWidth: \"thin\",\n ...(ownerState.absolute && {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n width: \"100%\",\n }),\n ...(ownerState.light && {\n borderColor: alpha(theme.palette.divider, 0.08),\n }),\n ...(ownerState.variant === \"inset\" && {\n marginLeft: 72,\n }),\n ...(ownerState.variant === \"middle\" &&\n ownerState.orientation === \"horizontal\" && {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n }),\n ...(ownerState.variant === \"middle\" &&\n ownerState.orientation === \"vertical\" && {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n }),\n ...(ownerState.orientation === \"vertical\" && {\n height: \"100%\",\n borderBottomWidth: 0,\n borderRightWidth: \"thin\",\n }),\n ...(ownerState.flexItem && {\n alignSelf: \"stretch\",\n height: \"auto\",\n }),\n}), ({ theme, ownerState }) => ({\n ...(ownerState.children && {\n display: \"flex\",\n whiteSpace: \"nowrap\",\n textAlign: \"center\",\n border: 0,\n \"&::before, &::after\": {\n position: \"relative\",\n width: \"100%\",\n borderTop: `thin solid ${theme.palette.divider}`,\n top: \"50%\",\n content: '\"\"',\n transform: \"translateY(50%)\",\n },\n }),\n}), ({ theme, ownerState }) => ({\n ...(ownerState.children &&\n ownerState.orientation === \"vertical\" && {\n flexDirection: \"column\",\n \"&::before, &::after\": {\n height: \"100%\",\n top: \"0%\",\n left: \"50%\",\n borderTop: 0,\n borderLeft: `thin solid ${theme.palette.divider}`,\n transform: \"translateX(0%)\",\n },\n }),\n}), ({ ownerState }) => ({\n ...(ownerState.textAlign === \"right\" &&\n ownerState.orientation !== \"vertical\" && {\n \"&::before\": {\n width: \"90%\",\n },\n \"&::after\": {\n width: \"10%\",\n },\n }),\n ...(ownerState.textAlign === \"left\" &&\n ownerState.orientation !== \"vertical\" && {\n \"&::before\": {\n width: \"10%\",\n },\n \"&::after\": {\n width: \"90%\",\n },\n }),\n}));\nconst DividerWrapper = styled(\"span\", {\n name: \"MuiDivider\",\n slot: \"Wrapper\",\n overridesResolver: (props, styles) => {\n const { ownerState } = props;\n return [\n styles.wrapper,\n ownerState.orientation === \"vertical\" && styles.wrapperVertical,\n ];\n },\n})(({ theme, ownerState }) => ({\n display: \"inline-block\",\n paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n paddingRight: `calc(${theme.spacing(1)} * 1.2)`,\n ...(ownerState.orientation === \"vertical\" && {\n paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n paddingBottom: `calc(${theme.spacing(1)} * 1.2)`,\n }),\n}));\n/**\n *\n * Demos:\n *\n * - [Dividers](https://mui.com/components/dividers/)\n * - [Lists](https://mui.com/components/lists/)\n *\n * API:\n *\n * - [Divider API](https://mui.com/api/divider/)\n */\nconst Divider = $.component(function Divider({ allProps, otherProps, classes, }) {\n return (\n \n \n {allProps.children}\n \n \n );\n});\nexport default Divider;\n","import Button from \"@suid/material/Button\";\nimport TextField from \"@suid/material/TextField\";\nimport AppBar from \"@suid/material/AppBar\";\nimport Box from \"@suid/material/Box\";\nimport Toolbar from \"@suid/material/Toolbar\";\nimport Typography from \"@suid/material/Typography\";\nimport Fab from \"@suid/material/Fab\";\nimport AddIcon from \"@suid/icons-material/Add\";\nimport Card from \"@suid/material/Card\";\nimport List from \"@suid/material/List\";\nimport Avatar from \"@suid/material/Avatar\";\nimport CardActions from \"@suid/material/CardActions\";\nimport Modal from \"@suid/material/Modal\";\nimport ListItem from \"@suid/material/ListItem\";\nimport { Navigate, useNavigate } from \"solid-app-router\";\nimport { Component, For, Match, Show, Switch, createEffect, createResource, createSignal } from \"solid-js\";\nimport { createSupabaseAuth } from \"solid-supabase\";\nimport { useBroadClient } from \"../../helpers/BroadClient/solid\";\nimport CardContent from \"@suid/material/CardContent\";\nimport Popover from \"@suid/material/Popover\";\nimport Chip from \"@suid/material/Chip\";\nimport ListItemText from \"@suid/material/ListItemText\";\nimport { Room } from \"../../helpers/BroadClient\";\nimport Divider from \"@suid/material/Divider\";\n\nconst UserAvatar: Component = () => {//头像组件\n const auth = createSupabaseAuth();\n const user = auth.user();\n let buttomRef: HTMLButtonElement;\n const navigate = useNavigate();\n const UserSignOut = async () => {\n await auth.signOut();\n navigate(\"/login\");\n };\n const [datailPopoverOpen, setdatailPopoverOpen] = createSignal(false);\n return (\n <>\n setdatailPopoverOpen(true)}\n //@ts-expect-error :The value is assigned by SolidJS when it is used\n ref={buttomRef}\n\n disableElevation\n disableRipple\n sx={{\n padding: 0,\n minWidth: \"25px\",\n }}\n >\n ?}>\n \n \n \n \n \n setdatailPopoverOpen(false)}\n //@ts-expect-error :The value is assigned by SolidJS when it is used\n anchorEl={buttomRef}\n >\n \n \n \n \n \n 用户ID:

\n {user?.id}\n\n
\n \n
\n
\n
\n \n \n \n\n
\n \n \n );\n};\n\ninterface RoomListItemProps {\n name: string;\n owner_id: string;\n room_id: string;\n onClick?: ((event: Record, room_id: string) => void);\n}\n\nconst RoomListItem: Component = (props) => {\n const auth = createSupabaseAuth();\n\n const [ownerName, ownerNameCtl] = createResource(() => props.owner_id, (owner_id: string) => {\n const user = auth.user();\n if (user) {\n if (user.id === owner_id) {\n if (typeof user.user_metadata[\"name\"] === \"string\") {\n return user.user_metadata[\"name\"];\n }\n }\n }\n return owner_id;\n }, { initialValue: \"You\" });\n\n createEffect(() => {\n ownerNameCtl.refetch(props.owner_id);\n });\n\n return <>\n {\n if (props.onClick) {\n props.onClick({}, props.room_id);\n }\n }} sx={{ cursor: \"pointer\" }}>\n {props.name}}\n secondary={\n ?}>\n \n \n \n \n } label={ownerName()}>\n }\n />\n \n ;\n};\n\ninterface RoomCreatingDialogProps {\n open: boolean,\n onClose: ((event: Record, reason: \"backdropClick\" | \"escapeKeyDown\" | \"roomCreated\") => void),\n onRoomCreated: ((room: Room) => void),\n onSignInNeeded: (() => void),\n}\n\nconst RoomCreatingDialog: Component = (props) => {\n const [roomName, setRoomName] = createSignal(\"\");\n const [isCreating, setIsCreating] = createSignal(false);\n\n const broadCli = useBroadClient();\n const auth = createSupabaseAuth();\n\n const creating = async () => {\n setIsCreating(true);\n const user = auth.user();\n if (user) {\n const room = await broadCli.createRoom(roomName());\n setRoomName(\"\");\n props.onRoomCreated(room);\n } else {\n props.onSignInNeeded();\n }\n setIsCreating(false);\n };\n\n return props.onClose(event, reason)}\n >\n \n \n New Room\n \n \n setRoomName(val)} value={roomName()}> \n \n \n \n \n \n \n \n \n ;\n};\n\nconst Index: Component = () => {\n const auth = createSupabaseAuth();\n const navigate = useNavigate();\n const broadCli = useBroadClient();\n\n const getAllRooms = async () => {\n const user = auth.user();\n if (user) {\n return await broadCli.getAllRooms();\n } else {\n navigate(\"/login\");\n }\n };\n\n const [rooms, { refetch }] = createResource(getAllRooms, {\n initialValue: []\n });\n\n const [open, setOpen] = createSignal(false);\n const handleOpen = () => setOpen(true);\n const handleClose = () => setOpen(false);\n\n const onSignInNeeded = () => {\n navigate(\"/login\");\n };\n\n const onNavigateRoom = (event: Record, room_id: string) => {\n navigate(`/rooms/${room_id}`);\n };\n\n return }>\n {/*---------------------App bar--------------------*/}\n \n \n \n\n \n 画板\n \n \n \n \n \n {/*-------------------App bar----------------------*/}\n\n {/*---------------------FAB--------------------*/}\n \n
\n \n \n \n refetch()} onSignInNeeded={onSignInNeeded} />\n
\n
\n {/*--------------------FAB---------------------*/}\n\n {/*--------------------List---------------------*/}\n
\n \n \n \n \n \n \n\n \n \n \n No rooms here.}>\n {\n (item) => {\n return ;\n }\n }\n \n \n \n \n \n
\n\n {/*------------------List-----------------------*/}\n\n
;\n};\n\nexport default Index;\n"],"names":["$","createComponentFactory","name","propDefaults","set","color","component","disabled","disableFocusRipple","size","variant","selfPropNames","utilityClass","getFabUtilityClass","slotClasses","ownerState","root","capitalize","FabRoot","styled","ButtonBase","slot","overridesResolver","props","styles","colorInherit","theme","typography","button","minHeight","transition","transitions","create","duration","short","borderRadius","padding","minWidth","width","height","boxShadow","shadows","palette","getContrastText","grey","backgroundColor","A100","textDecoration","fabClasses","focusVisible","action","disabledBackground","contrastText","main","dark","Fab","allProps","classes","otherProps","_$createComponent","_$mergeProps","clsx","className","focusVisibleClassName","children","_tmpl$","_tmpl$2","createSvgIcon","getAvatarUtilityClass","colorDefault","img","fallback","AvatarRoot","position","display","alignItems","justifyContent","flexShrink","fontFamily","fontSize","pxToRem","lineHeight","overflow","userSelect","shape","background","default","mode","AvatarImg","textAlign","objectFit","textIndent","AvatarFallback","Person","active","loaded","setLoaded","createSignal","onCleanup","createEffect","on","crossOrigin","referrerPolicy","src","srcSet","image","Image","onload","onerror","srcset","Avatar","defineComponent","inProps","useThemeProps","other","splitProps","baseProps","mergeProps","useLoaded","imgProps","hasImg","hasImgNotFailing","useClasses","alt","sizes","disableSpacing","getCardActionsUtilityClass","CardActionsRoot","spacing","marginLeft","CardActions","getChipUtilityClass","clickable","onDelete","label","avatar","icon","deleteIcon","ChipRoot","chipClasses","deletable","deleteIconColor","alpha","text","primary","maxWidth","selected","whiteSpace","cursor","outline","border","verticalAlign","boxSizing","opacity","disabledOpacity","pointerEvents","marginRight","avatarColorPrimary","avatarColorSecondary","secondary","avatarSmall","WebkitTapHighlightColor","margin","selectedOpacity","focusOpacity","hoverOpacity","hover","focus","iconSmall","deleteIconSmall","ChipLabel","textOverflow","paddingLeft","paddingRight","keyboardEvent","key","Chip","element","createElementRef","handleDeleteIconClick","event","stopPropagation","handleKeyDown","currentTarget","target","isDeleteKeyboardEvent","preventDefault","onKeyDown","handleKeyUp","ref","blur","onKeyUp","onClick","moreProps","createMemo","disableRipple","node","Element","setAttribute","getAttribute","SVGElement","HTMLElement","onclick","undefined","_$memo","absolute","flexItem","light","orientation","role","getDividerUtilityClass","o","wrapper","DividerRoot","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","borderWidth","borderStyle","borderColor","divider","borderBottomWidth","bottom","left","marginTop","marginBottom","borderRightWidth","alignSelf","borderTop","top","content","transform","flexDirection","borderLeft","DividerWrapper","wrapperVertical","paddingTop","paddingBottom","Divider","UserAvatar","auth","createSupabaseAuth","user","buttomRef","navigate","useNavigate","UserSignOut","signOut","datailPopoverOpen","setdatailPopoverOpen","user_metadata","avatar_url","horizontal","id","ml","RoomListItem","ownerName","ownerNameCtl","createResource","owner_id","initialValue","refetch","room_id","maxHeight","RoomCreatingDialog","roomName","setRoomName","isCreating","setIsCreating","broadCli","useBroadClient","creating","room","createRoom","onRoomCreated","onSignInNeeded","open","reason","onClose","p","_","val","Index","getAllRooms","rooms","setOpen","handleOpen","handleClose","onNavigateRoom","flexGrow","right","zIndex","_$insert","item","owner"],"mappings":"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"} \ No newline at end of file diff --git a/source/files/magicbroad/assets/index.79b5287a.js b/source/files/magicbroad/assets/index.79b5287a.js deleted file mode 100644 index b58407d..0000000 --- a/source/files/magicbroad/assets/index.79b5287a.js +++ /dev/null @@ -1,2 +0,0 @@ -import{b as p,v as A}from"./getDeviceId.e8f3946a.js";import{W as L}from"./index.13b310ab.js";var S={exports:{}};(function(r,e){(function(n,s){r.exports=s(),r.exports.default=r.exports})(L,function(){var n=function(){this.listeners={},this.registerListener=function(t,i,o){var a=t.constructor.name;o=this.validateNumber(o||"any"),a!=="Array"&&(t=[t]),t.forEach(function(d){if(d.constructor.name!=="String")throw new Error("Only `String` and array of `String` are accepted for the event names!");s.listeners[d]=s.listeners[d]||[],s.listeners[d].push({callback:i,number:o})})},this.validateNumber=function(t){var i=t.constructor.name;if(i==="Number")return t;if(i==="String"&&t.toLowerCase()==="any")return"any";throw new Error("Only `Number` and `any` are accepted in the number of possible executions!")},this.toBeRemoved=function(t){var i=t.number;return t.execution=t.execution||0,t.execution++,!(i==="any"||t.execution=0)){var d=a.replace(/\*\*/,"([^.]+.?)+");d=d.replace(/\*/g,"[^.]+");var l=t.match(d);l&&t===l[0]&&Array.prototype.push.apply(o,s.listeners[a])}var m=arguments;i=i||this,o.forEach(function(u,R){var g=u.callback;u.number,i&&(g=g.bind(i));var y=[];Object.keys(m).map(function(D){D>1&&y.push(m[D])}),s.toBeRemoved(u)&&s.listeners[t].splice(R,1),g.apply(null,y)})}}};return n})})(S);var f=S.exports;const c=class{constructor(r){this.buffer=r}static zero(r){const e=r>c.SHORT_MAX_LENGTH,n=(e?c.LONG_HEADER_SIZE:c.SHORT_HEADER_SIZE)+r,s=new Uint8Array(n),t=new c(s);return t.setFlag("long",e),t.length=r,t}getFlags(){const r=this.buffer.at(0);return{more:(r&c.FLAG_MORE)>0,long:(r&c.FLAG_LONG)>0}}setFlag(r,e){const n=this.buffer.at(0);return r==="more"?this.buffer[0]=e?n|c.FLAG_MORE:n&~c.FLAG_MORE:r==="long"&&(this.buffer[0]=e?n|c.FLAG_LONG:n&~c.FLAG_LONG),this.getFlags()}validateLength(){if(this.byteLength>1){const r=this.getFlags().long?c.LONG_HEADER_SIZE:c.SHORT_HEADER_SIZE;if(this.byteLength>=r&&this.byteLength>=r+this.length)return this.length}return null}get length(){return this.getFlags().long?new DataView(this.buffer.buffer,1+this.buffer.byteOffset,4).getUint32(0):new DataView(this.buffer.buffer,1+this.buffer.byteOffset,2).getUint16(0)}set length(r){this.getFlags().long?new DataView(this.buffer.buffer,1+this.buffer.byteOffset,4).setInt32(0,r):new DataView(this.buffer.buffer,1+this.buffer.byteOffset,2).setInt16(0,r)}get byteLength(){return this.buffer.length}data(){return this.getFlags().long?this.buffer.subarray(c.LONG_HEADER_SIZE,c.LONG_HEADER_SIZE+this.length):this.buffer.subarray(c.SHORT_HEADER_SIZE,c.SHORT_HEADER_SIZE+this.length)}dataView(r){const e=typeof r!="undefined"?Math.min(r,this.length):this.length,n=this.headerLength;return new DataView(this.buffer.buffer,n+this.buffer.byteOffset,e)}static fromArray(r,e){const n=c.zero(r.length);return n.data().set(r),n.setFlag("more",e||!1),n}static fromString(r,e){const s=new TextEncoder().encode(r);return this.fromArray(s,e)}toString(){return new TextDecoder("utf-8").decode(this.data())}static fromUInt(r,e){const n=new Uint8Array(4);return new DataView(n.buffer).setUint32(0,r),c.fromArray(n,e)}toUInt(){return this.dataView().getUint32(0)}isUInt(){return this.length===4}static fromBigUInt(r,e){const n=new Uint8Array(8);return new DataView(n.buffer).setBigUint64(0,r),c.fromArray(n,e)}toBigUInt(){return this.dataView().getBigUint64(0)}isBigUInt(){return this.length===8}static pack(...r){const e=r.map(t=>t.byteLength).reduce((t,i)=>t+i,0),n=new Uint8Array(e);let s=0;for(const t of r)n.set(t.buffer,s),s+=t.byteLength;return n}static readHeader(r){if(r.length===0)return null;const e=r[0],n=(e&this.FLAG_MORE)>0,s=(e&this.FLAG_LONG)>0,t=s?this.LONG_HEADER_SIZE:this.SHORT_HEADER_SIZE;if(r.length0;){const s=this.readHeader(e);if(s){const[t,i]=s,o=t.long?this.LONG_HEADER_SIZE:this.SHORT_HEADER_SIZE;if(e.length>=i+o){if(n.push(new c(e.subarray(0,o+i))),e=e.subarray(o+i),!t.more)break}else return[n,e,i+o-e.length]}else e=new Uint8Array(0)}return[n,e,0]}get headerLength(){return this.getFlags().long?c.LONG_HEADER_SIZE:c.SHORT_HEADER_SIZE}get paddingLength(){return this.byteLength-this.headerLength-this.length}clone(r){const e=new Uint8Array(this.headerLength+this.length+(r||0));return e.set(this.buffer.slice(0,this.headerLength+this.length)),new c(e)}};let h=c;h.FLAG_MORE=1;h.FLAG_LONG=1<<1;h.SHORT_MAX_LENGTH=2^16-(1+2);h.LONG_MAX_LENGTH=2^32-(1+4);h.SHORT_HEADER_SIZE=1+2;h.LONG_HEADER_SIZE=1+4;class T{constructor(e){this.bus=new f,this.rtcDataChan=e;const n=async s=>this.onRemoteData(s);this.rtcDataChan.addEventListener("open",()=>{this.bus.emit("open",this),this.rtcDataChan.addEventListener("message",n)}),this.rtcDataChan.addEventListener("close",()=>{this.rtcDataChan.removeEventListener("message",n),this.bus.emit("close",this)})}async send(e){const n=[h.fromString(e.dstUserDeviceId,!0),h.fromString(e.roomId,!0),h.fromString(e.srcUserDeviceId,!0),...e.message];this.rtcDataChan.send(h.pack(...n))}async onRemoteData(e){const n=e.data,[s]=h.unpack(new Uint8Array(await n.arrayBuffer())),[t,i,o,...a]=s,d={dstUserDeviceId:t.toString(),roomId:i.toString(),srcUserDeviceId:o.toString(),message:a};this.bus.emit("data",this,d)}close(){this.rtcDataChan.close()}}var U=(r,e=!1,n="Timeout")=>new Promise((s,t)=>setTimeout(e?()=>t(n):s,r));const b=1,E=2,v=3,_=4,P=255,k="magicmesh",B=64,H={iceServers:[{urls:"stun:stun.stunprotocol.org"}]};var M=(r=>(r.connecting="connecting",r.connected="connected",r.disconnected="disconnected",r.closed="closed",r.failed="failed",r.unknown="unknown",r))(M||{});class w{constructor(e,n){this.userDeviceId=e,this.connection=new RTCPeerConnection(H),this.clk=n,this.datachannel=new T(this.connection.createDataChannel(k,{protocol:"magicmesh-rtc0",id:B,negotiated:!0})),this.connectionState="unknown",this.bus=new f,this.makingOffer=!1,this.setupConnectionState(),this.connection.addEventListener("negotiationneeded",()=>this.bus.emit("negotiationneeded",void 0,this)),this.connection.addEventListener("icecandidate",s=>this.bus.emit("icecandidate",void 0,this,s)),this.connection.addEventListener("iceconnectionstatechange",()=>{this.connection.iceConnectionState==="failed"&&this.connection.restartIce()})}setupConnectionState(){typeof this.connection.connectionState!="undefined"?this.connection.addEventListener("connectionstatechange",()=>{switch(this.connection.connectionState){case"new":case"connecting":this.connectionState="connecting";break;case"closed":this.connectionState="closed";break;case"connected":this.connectionState="connected";break;case"disconnected":this.connectionState="disconnected";break;case"failed":this.connectionState="failed";break;default:this.connectionState="unknown";break}this.bus.emit("connectionstatechange",this,this.connectionState)}):this.connection.addEventListener("iceconnectionstatechange",()=>{const e=this.connection.iceConnectionState;e==="new"||e==="checking"||e==="completed"?this.connectionState="connecting":e==="connected"?this.connectionState="connected":e==="disconnected"?this.connectionState="disconnected":e==="closed"?this.connectionState="closed":e==="failed"?this.connectionState="failed":this.connectionState="unknown",this.bus.emit("connectionstatechange",this,this.connectionState)})}isConnectionAvaliable(){return this.connectionState==="connected"}async send(e,n,s){await this.datachannel.send({roomId:e,srcUserDeviceId:n,dstUserDeviceId:this.userDeviceId,message:s})}disconnect(){this.datachannel.close(),this.connection.close()}}class V{constructor(e,n,s){this.peers=[],this.alterChan=n,this.clk=BigInt(0),this.userDeviceId=e,this.bus=new f,this.roomId=s,this.onMessageCallback=t=>{(t.dstUserDeviceId===this.userDeviceId||t.dstUserDeviceId===p)&&(t.message[0].isUInt()&&t.message[0].toUInt()<=P&&t.message[1].isBigUInt()?this.handleProtocolMessage(t):this.bus.emit("data",this,t))},this.onNegotiate=t=>{t.makingOffer=!0,t.connection.setLocalDescription().then(()=>{const i=t.connection.localDescription;if(i){const{sdp:o,type:a}=i;return this.provideRTCOffer(t.userDeviceId,{sdp:o,type:a})}}).finally(()=>t.makingOffer=!1)},this.onIceCandidate=(t,i)=>{i.candidate&&this.sendRTCIceCandidate(t.userDeviceId,i.candidate)},n.bus.on("data",this.onMessageCallback)}async broadcast(e,n){const s=[];for(const t of this.peers)t.isConnectionAvaliable()&&s.push(t.send(this.roomId,this.userDeviceId,e));!n&&s.length===0?await this.sendToAlternativeChannel(p,e):await Promise.all(s)}findPeerById(e){for(const n of this.peers)if(n.userDeviceId===e)return n;return null}loopbackSend(e,n){this.bus.emit("data",this,{srcUserDeviceId:this.userDeviceId,dstUserDeviceId:e,message:n,roomId:this.roomId})}async send(e,n){if(e===this.userDeviceId){this.loopbackSend(e,n);return}const s=this.findPeerById(e);s&&(s.isConnectionAvaliable()?await s.send(this.roomId,this.userDeviceId,n):await this.sendToAlternativeChannel(e,n))}async broadcastPeerList(e,n){const s=e||[this.userDeviceId,...this.peers.map(i=>i.userDeviceId)],t=this.buildProtocolMessage(n?v:b,s);await this.broadcast(t)}async sendToAlternativeChannel(e,n){await this.alterChan.send({srcUserDeviceId:this.userDeviceId,dstUserDeviceId:e,roomId:this.roomId,message:n})}addPeer(e){e.datachannel.bus.on("data",this.onMessageCallback),e.bus.on("negotiationneeded",this.onNegotiate),e.bus.on("icecandidate",this.onIceCandidate),this.peers.push(e),this.bus.emit("addpeer",this,e)}removePeer(e){const n=this.peers.indexOf(e);this.peers.splice(n,1),e.datachannel.bus.detach("data",this.onMessageCallback),e.bus.detach("negotiationneeded",this.onNegotiate),e.bus.detach("icecandidate",this.onIceCandidate),this.bus.emit("removepeer",this,e)}async onSyncPeerMessage(e){const n=e.message[0].toUInt(),s=JSON.parse(e.message[2].toString()),t=Array.isArray(s)?s.filter(i=>typeof i=="string"&&A(i)):[];if(t.filter(i=>this.findPeerById(i)==null).forEach(i=>{const o=new w(i,BigInt(0));this.addPeer(o)}),n===b){const i=Math.random()*2e3;await U(i);const o=this.peers.map(a=>a.userDeviceId).filter(a=>!t.includes(a));t.includes(this.userDeviceId)||o.push(this.userDeviceId),o.length>0&&await this.broadcastPeerList(o,!0)}}handleProtocolMessage(e){if(e.srcUserDeviceId===this.userDeviceId)return;const n=e.message[0].toUInt(),s=e.message[1].toBigUInt();let t=this.findPeerById(e.srcUserDeviceId);if(!t)t=new w(e.srcUserDeviceId,s),this.addPeer(t);else if(t.clk>=s)return;n===b||n===v?this.onSyncPeerMessage(e).catch(i=>console.error(i)):n===E?this.onProvideRTCOfferMessage(e).catch(i=>console.error(i)):n===_?this.onRTCIceCandidateMessage(e).catch(i=>console.error(i)):console.error("unknown message type #%d",n)}tick(){return this.clk++}buildProtocolMessage(e,n){return[h.fromUInt(e,!0),h.fromBigUInt(this.tick(),!0),h.fromString(JSON.stringify(n),!1)]}async stop(){const e=this.alterChan.close();typeof e!="undefined"&&await e;for(const n of this.peers)n.disconnect();for(let n=0;n{if(r.length%4!==0)throw Error("data's length must be divisible by 4");const e=r.length;let n="",s=0,t=0;for(;s=1;){const a=Math.floor(t/o)%85;n+=N[a],o/=85}t=0}}return n},F=r=>{if(r.length%5!==0)throw Error("string's length must be divisible by 5");const e=new Uint8Array(r.length*4/5),n=r.length;let s=0,t=0,i=0;for(;t=C.length)return;if(i=i*85+C[o],t%5===0){let a=16777216;for(;a>=1;)e[s++]=i/a%256,a/=256;i=0}}return e};var I={encode:G,decode:F};class O{constructor(e,n,s,t){this.rtDbChannel=e,this.rtDbBroadcastChan=n,this.supabase=s,this.bus=new f,this.rtDbChannel.on("INSERT",void 0,i=>this.onRemoteMessage(i)),this.rtDbBroadcastChan.on("INSERT",void 0,i=>this.onRemoteMessage(i)),this.rtDbChannel.onClose(()=>this.onAnyChannelClose()),this.rtDbBroadcastChan.onClose(()=>this.onAnyChannelClose()),this.roomId=t,this.rtDbChannel.isJoined()||this.rtDbChannel.isJoining()||this.rtDbChannel.subscribe(),this.rtDbBroadcastChan.isJoined()||this.rtDbBroadcastChan.isJoining()||this.rtDbBroadcastChan.subscribe()}static ofRoom(e,n,s){const t=e.channel(`realtime:public:room_message_queue:dst_user_dev_id=eq.${s}`,{selfBroadcast:!0}),i=e.channel(`realtime:public:room_message_queue:dst_user_dev_id=eq.${p}`,{selfBroadcast:!1});return new O(t,i,e,n)}async send(e){const{error:n}=await this.supabase.from("room_message_queue").insert({room:e.roomId,dst_user_dev_id:e.dstUserDeviceId,src_user_dev_id:e.srcUserDeviceId,message:e.message.map(s=>{if(s.byteLength%4!==0){const t=4-s.byteLength%4;return I.encode(s.clone(t).buffer)}else return I.encode(s.buffer)})});if(n)throw n}onAnyChannelClose(){this.close(),this.rtDbBroadcastChan.isClosed()&&this.rtDbChannel.isClosed()&&this.bus.emit("close",this)}onRemoteMessage(e){if(e.errors)return;let n=!0;const s=e.record,t={roomId:s.room,dstUserDeviceId:s.dst_user_dev_id,srcUserDeviceId:s.src_user_dev_id,message:s.message.map(i=>{if(i.length%5!==0)return n=!1,h.zero(0);const o=I.decode(i);return o?new h(o):(n=!1,h.zero(0))})};n&&this.bus.emit("data",this,t)}close(){this.rtDbChannel.isClosed()||this.rtDbChannel.unsubscribe(),this.rtDbBroadcastChan.isClosed()||this.rtDbBroadcastChan.unsubscribe()}}export{h as F,M as P,V as R,O as S}; -//# sourceMappingURL=index.79b5287a.js.map diff --git a/source/files/magicbroad/assets/index.79b5287a.js.map b/source/files/magicbroad/assets/index.79b5287a.js.map deleted file mode 100644 index 0d91bd2..0000000 --- a/source/files/magicbroad/assets/index.79b5287a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.79b5287a.js","sources":["../../node_modules/js-event-bus/src/index.js","../../src/helpers/mesh/datachannel/index.ts","../../src/helpers/mesh/webrtc/index.ts","../../node_modules/@solid-primitives/utils/dist/index.js","../../src/helpers/mesh/index.ts","../../src/helpers/mesh/supabase/z85.ts","../../src/helpers/mesh/supabase/index.ts"],"sourcesContent":["(function(caller, bus) {\n if (typeof exports === 'object' && typeof module === 'object') {\n module.exports = bus();\n module.exports.default = module.exports;\n } else if (typeof exports === 'object') {\n exports.EventBus = bus();\n } else {\n caller.EventBus = bus();\n }\n})(this, function() {\n var EventBus = function() {\n this.listeners = {};\n\n this.registerListener = function(event, callback, number) {\n var type = event.constructor.name;\n number = this.validateNumber(number || 'any');\n\n if (type !== 'Array') {\n event = [event];\n }\n\n event.forEach(function(e) {\n if (e.constructor.name !== 'String') {\n throw new Error(\n 'Only `String` and array of `String` are accepted for the event names!'\n );\n }\n\n that.listeners[e] = that.listeners[e] || [];\n that.listeners[e].push({\n callback: callback,\n number: number,\n });\n });\n };\n\n // valiodate that the number is a vild number for the number of executions\n this.validateNumber = function(n) {\n var type = n.constructor.name;\n\n if (type === 'Number') {\n return n;\n } else if (type === 'String' && n.toLowerCase() === 'any') {\n return 'any';\n }\n\n throw new Error(\n 'Only `Number` and `any` are accepted in the number of possible executions!'\n );\n };\n\n // return wether or not this event needs to be removed\n this.toBeRemoved = function(info) {\n var number = info.number;\n info.execution = info.execution || 0;\n info.execution++;\n\n if (number === 'any' || info.execution < number) {\n return false;\n }\n\n return true;\n };\n\n var that = this;\n return {\n /**\n * Attach a callback to an event\n * @param {string} eventName - name of the event.\n * @param {function} callback - callback executed when this event is triggered\n */\n on: function(eventName, callback) {\n that.registerListener.bind(that)(eventName, callback, 'any');\n },\n\n /**\n * Attach a callback to an event. This callback will not be executed more than once if the event is trigger mutiple times\n * @param {string} eventName - name of the event.\n * @param {function} callback - callback executed when this event is triggered\n */\n once: function(eventName, callback) {\n that.registerListener.bind(that)(eventName, callback, 1);\n },\n\n /**\n * Attach a callback to an event. This callback will be executed will not be executed more than the number if the event is trigger mutiple times\n * @param {number} number - max number of executions\n * @param {string} eventName - name of the event.\n * @param {function} callback - callback executed when this event is triggered\n */\n exactly: function(number, eventName, callback) {\n that.registerListener.bind(that)(eventName, callback, number);\n },\n\n /**\n * Kill an event with all it's callbacks\n * @param {string} eventName - name of the event.\n */\n die: function(eventName) {\n delete that.listeners[eventName];\n },\n\n /**\n * Kill an event with all it's callbacks\n * @param {string} eventName - name of the event.\n */\n off: function(eventName) {\n this.die(eventName);\n },\n\n /**\n * Remove the callback for the given event\n * @param {string} eventName - name of the event.\n * @param {callback} callback - the callback to remove (undefined to remove all of them).\n */\n detach: function(eventName, callback) {\n if (callback === undefined) {\n that.listeners[eventName] = [];\n return true;\n }\n\n for (var k in that.listeners[eventName]) {\n if (\n that.listeners[eventName].hasOwnProperty(k) &&\n that.listeners[eventName][k].callback === callback\n ) {\n that.listeners[eventName].splice(k, 1);\n return this.detach(eventName, callback);\n }\n }\n\n return true;\n },\n\n /**\n * Remove all the events\n */\n detachAll: function() {\n for (var eventName in that.listeners) {\n if (that.listeners.hasOwnProperty(eventName)) {\n this.detach(eventName);\n }\n }\n },\n\n /**\n * Emit the event\n * @param {string} eventName - name of the event.\n */\n emit: function(eventName, context) {\n var listeners = [];\n for (var name in that.listeners) {\n if (that.listeners.hasOwnProperty(name)) {\n if (name === eventName) {\n //TODO: this lib should definitely use > ES5\n Array.prototype.push.apply(listeners, that.listeners[name]);\n }\n\n if (name.indexOf('*') >= 0) {\n var newName = name.replace(/\\*\\*/, '([^.]+.?)+');\n newName = newName.replace(/\\*/g, '[^.]+');\n\n var match = eventName.match(newName);\n if (match && eventName === match[0]) {\n Array.prototype.push.apply(listeners, that.listeners[name]);\n }\n }\n }\n }\n\n var parentArgs = arguments;\n\n context = context || this;\n listeners.forEach(function(info, index) {\n var callback = info.callback;\n var number = info.number;\n\n if (context) {\n callback = callback.bind(context);\n }\n\n var args = [];\n Object.keys(parentArgs).map(function(i) {\n if (i > 1) {\n args.push(parentArgs[i]);\n }\n });\n\n // this event cannot be fired again, remove from the stack\n if (that.toBeRemoved(info)) {\n that.listeners[eventName].splice(index, 1);\n }\n\n callback.apply(null, args);\n });\n },\n };\n };\n\n return EventBus;\n});\n","import EventBus from \"js-event-bus\";\n\nexport interface FrameFlags {\n more: boolean,\n long: boolean,\n}\n\nexport class Frame {\n buffer: Uint8Array;\n \n static FLAG_MORE = 1;\n static FLAG_LONG = 1 << 1;\n static SHORT_MAX_LENGTH = 2 ^ 16 - (1 + 2);\n static LONG_MAX_LENGTH = 2 ^ 32 - (1 + 4);\n static SHORT_HEADER_SIZE = 1 + 2;\n static LONG_HEADER_SIZE = 1 + 4;\n\n constructor(buffer: Uint8Array) {\n this.buffer = buffer;\n }\n\n static zero(expected_data_length: number): Frame {\n const isLongHeader = (expected_data_length > Frame.SHORT_MAX_LENGTH);\n const totalLength = (isLongHeader ? Frame.LONG_HEADER_SIZE : Frame.SHORT_HEADER_SIZE) + expected_data_length;\n const buffer = new Uint8Array(totalLength);\n const f = new Frame(buffer);\n f.setFlag(\"long\", isLongHeader);\n f.length = expected_data_length;\n return f;\n }\n\n getFlags(): FrameFlags {\n const flags = this.buffer.at(0) as number;\n return {\n more: (flags & Frame.FLAG_MORE) > 0,\n long: (flags & Frame.FLAG_LONG) > 0,\n };\n }\n\n setFlag(key: K, value: boolean): FrameFlags {\n const oldFlags = this.buffer.at(0) as number;\n if (key === \"more\") {\n this.buffer[0] = value ? (oldFlags | Frame.FLAG_MORE) : (oldFlags & (~Frame.FLAG_MORE));\n } else if (key === \"long\") {\n this.buffer[0] = value ? (oldFlags | Frame.FLAG_LONG) : (oldFlags & (~Frame.FLAG_LONG));\n }\n return this.getFlags();\n }\n \n /**\n * Get the payload's length if it's valid.\n */\n validateLength(): number | null {\n if (this.byteLength > 1) {\n const headerSize = this.getFlags().long? Frame.LONG_HEADER_SIZE: Frame.SHORT_HEADER_SIZE;\n if (this.byteLength >= headerSize) {\n if (this.byteLength >= (headerSize + this.length)) {\n return this.length;\n }\n }\n }\n return null;\n }\n\n /**\n * Get the length attribute (the length of payload) from header.\n * For the total size of the frame, see `byteLength`; for verified length, see `validateLength`.\n */\n get length(): number {\n if (this.getFlags().long) {\n const view = new DataView(this.buffer.buffer, 1 + this.buffer.byteOffset, 4);\n return view.getUint32(0);\n } else {\n const view = new DataView(this.buffer.buffer, 1 + this.buffer.byteOffset, 2);\n return view.getUint16(0);\n }\n }\n\n /**\n * Set the length attribute (the length of payload) in the header.\n */\n set length(len: number) {\n if (this.getFlags().long) {\n new DataView(this.buffer.buffer, 1 + this.buffer.byteOffset, 4).setInt32(0, len);\n } else {\n new DataView(this.buffer.buffer, 1 + this.buffer.byteOffset, 2).setInt16(0, len);\n }\n }\n\n /**\n * Get the total length of the header and payload.\n */\n get byteLength(): number {\n return this.buffer.length;\n }\n\n /**\n * Get the payload as a subarray.\n * \n * WARNING: The length must be valid when using this method.\n */\n data(): Uint8Array {\n if (this.getFlags().long) {\n return this.buffer.subarray(Frame.LONG_HEADER_SIZE, Frame.LONG_HEADER_SIZE+this.length);\n } else {\n return this.buffer.subarray(Frame.SHORT_HEADER_SIZE, Frame.SHORT_HEADER_SIZE+this.length);\n }\n }\n\n /**\n * Get the payload as a `DataView`.\n * @param expected_length the length you expected, it will be set to the length of the data if it is larger than the length.\n */\n dataView(expected_length?: number): DataView {\n const length = typeof expected_length !== \"undefined\" ? Math.min(expected_length, this.length) : this.length;\n const headerSize = this.headerLength;\n return new DataView(this.buffer.buffer, headerSize + this.buffer.byteOffset, length);\n }\n\n static fromArray(array: Uint8Array, more?: boolean): Frame {\n const f = Frame.zero(array.length);\n const data = f.data();\n data.set(array);\n f.setFlag(\"more\", more || false);\n return f;\n }\n\n static fromString(s: string, more?: boolean): Frame {\n const encoder = new TextEncoder();\n const result = encoder.encode(s);\n return this.fromArray(result, more);\n }\n\n toString(): string {\n const decoder = new TextDecoder(\"utf-8\");\n return decoder.decode(this.data());\n }\n\n static fromUInt(int: number, more?: boolean): Frame {\n const buffer = new Uint8Array(4);\n new DataView(buffer.buffer).setUint32(0, int);\n return Frame.fromArray(buffer, more);\n }\n\n toUInt(): number {\n return this.dataView().getUint32(0);\n }\n\n isUInt(): boolean {\n return this.length === 4;\n }\n\n static fromBigUInt(int: bigint, more?: boolean): Frame {\n const buffer = new Uint8Array(8);\n new DataView(buffer.buffer).setBigUint64(0, int);\n return Frame.fromArray(buffer, more);\n }\n\n toBigUInt(): bigint {\n return this.dataView().getBigUint64(0);\n }\n\n isBigUInt(): boolean {\n return this.length === 8;\n }\n\n /// Packing frames.\n static pack(...frames: Frame[]): Uint8Array {\n const length = frames.map((v) => v.byteLength).reduce((prev, curr) => prev + curr, 0);\n const bundle = new Uint8Array(length);\n let offest = 0;\n for (const f of frames) {\n bundle.set(f.buffer, offest);\n offest += f.byteLength;\n }\n return bundle;\n }\n\n /**\n * Read the header of the `Uint8Array`.\n * @param array the array to read.\n * @returns the flags of header and the length of payload.\n */\n static readHeader(array: Uint8Array): [FrameFlags, number] | null {\n if (array.length === 0) return null;\n const flags = array[0];\n const more = (flags & this.FLAG_MORE) > 0;\n const long = (flags & this.FLAG_LONG) > 0;\n const headerSize = (long? this.LONG_HEADER_SIZE: this.SHORT_HEADER_SIZE);\n if (array.length < headerSize) return null;\n const lengthSize = headerSize - 1;\n const buffer = new Uint8Array(lengthSize);\n buffer.set(array.subarray(1, headerSize), 0);\n const lengthView = new DataView(buffer.buffer, 0, lengthSize);\n const flagsObject = {\n more, long\n };\n const length = long? lengthView.getUint32(0): lengthView.getUint16(0);\n return [flagsObject, length];\n }\n\n /**\n * Unpack an `Uint8Array`.\n * @param array the array to unpack.\n * @returns the frames read, the rest data and the length required for next frame.\n */\n static unpack(array: Uint8Array): [Frame[], Uint8Array, number] {\n let rest = array;\n const frames: Frame[] = [];\n while (rest.length > 0) {\n const headerResult = this.readHeader(rest);\n if (headerResult) {\n const [flags, length] = headerResult;\n const headerSize = flags.long? this.LONG_HEADER_SIZE: this.SHORT_HEADER_SIZE;\n if (rest.length >= (length + headerSize)) {\n frames.push(new Frame(rest.subarray(0, headerSize + length)));\n rest = rest.subarray(headerSize + length);\n if (!flags.more) break;\n } else {\n return [frames, rest, (length + headerSize) - rest.length];\n }\n } else {\n rest = new Uint8Array(0);\n }\n }\n return [frames, rest, 0];\n }\n\n /**\n * Get current header length.\n */\n get headerLength(): number {\n return this.getFlags().long? Frame.LONG_HEADER_SIZE: Frame.SHORT_HEADER_SIZE;\n }\n\n /**\n * Get current padding size.\n */\n get paddingLength(): number {\n return this.byteLength - this.headerLength - this.length;\n }\n\n /**\n * Get a clone of this frame.\n * @param padding the padding the clone will contain.\n * @returns a new frame.\n */\n clone(padding?: number): Frame {\n const array = new Uint8Array(this.headerLength + this.length + (padding || 0));\n array.set(this.buffer.slice(0, this.headerLength + this.length));\n return new Frame(array);\n }\n}\n\nexport interface Message {\n dstUserDeviceId: string,\n roomId: string,\n srcUserDeviceId: string,\n message: Frame[],\n}\n\nexport interface DataChannel {\n send(message: Message) : Promise;\n close(): Promise | void;\n\n get bus(): EventBus;\n}\n","import EventBus from \"js-event-bus\";\nimport { DataChannel, Frame, Message } from \"../datachannel\";\n\nexport class WebRTCDatachannel implements DataChannel {\n bus: EventBus;\n rtcDataChan: RTCDataChannel;\n\n constructor(rtcDataChan: RTCDataChannel) {\n this.bus = new EventBus();\n this.rtcDataChan = rtcDataChan;\n const onRemoteData = async (ev: MessageEvent) => this.onRemoteData(ev);\n this.rtcDataChan.addEventListener(\"open\", () => {\n this.bus.emit(\"open\", this);\n this.rtcDataChan.addEventListener(\"message\", onRemoteData);\n });\n this.rtcDataChan.addEventListener(\"close\", () => {\n this.rtcDataChan.removeEventListener(\"message\", onRemoteData);\n this.bus.emit(\"close\", this);\n });\n }\n\n async send(message: Message): Promise {\n const frames = [Frame.fromString(message.dstUserDeviceId, true), Frame.fromString(message.roomId, true), Frame.fromString(message.srcUserDeviceId, true), ...message.message];\n this.rtcDataChan.send(Frame.pack(...frames));\n }\n\n async onRemoteData(ev: MessageEvent) {\n const data = ev.data as Blob;\n const [frames,] = Frame.unpack(new Uint8Array(await data.arrayBuffer()));\n const [dstId, roomId, srcId, ...payload] = frames;\n const message: Message = {\n dstUserDeviceId: dstId.toString(),\n roomId: roomId.toString(),\n srcUserDeviceId: srcId.toString(),\n message: payload,\n };\n this.bus.emit(\"data\", this, message);\n }\n\n close() {\n this.rtcDataChan.close();\n }\n}\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\n\n// src/index.ts\nimport { getOwner, onCleanup, createSignal, DEV, untrack, batch } from \"solid-js\";\nimport { isServer as _isServer } from \"solid-js/web\";\nvar noop = () => void 0;\nvar isServer = _isServer;\nvar isClient = !isServer;\nvar isDev = DEV && isClient;\nvar isProd = !isDev;\nvar warn = (...a) => isDev && console.warn(...a);\nvar ofClass = (v, c) => v instanceof c || v && v.constructor === c;\nfunction isObject(value) {\n return value !== null && (typeof value === \"object\" || typeof value === \"function\");\n}\nvar compare = (a, b) => a < b ? -1 : a > b ? 1 : 0;\nfunction chain(callbacks) {\n return (...args) => {\n for (const callback of callbacks) {\n if (typeof callback === \"function\")\n callback(...args);\n }\n };\n}\nvar clamp = (n, min, max) => Math.min(Math.max(n, min), max);\nvar access = (v) => typeof v === \"function\" && !v.length ? v() : v;\nvar asArray = (value) => Array.isArray(value) ? value : [value];\nvar accessArray = (list) => list.map((v) => access(v));\nvar withAccess = (value, fn) => {\n const _value = access(value);\n typeof _value !== \"undefined\" && _value !== null && fn(_value);\n};\nvar asAccessor = (v) => typeof v === \"function\" ? v : () => v;\nfunction accessWith(valueOrFn, ...args) {\n return typeof valueOrFn === \"function\" ? valueOrFn(...args) : valueOrFn;\n}\nfunction forEachEntry(object, iterator) {\n Object.entries(object).forEach(([key, item], index, pairs) => iterator(key, item, index, pairs, object));\n}\nvar entries = Object.entries;\nvar keys = Object.keys;\nvar promiseTimeout = (ms, throwOnTimeout = false, reason = \"Timeout\") => new Promise((resolve, reject) => throwOnTimeout ? setTimeout(() => reject(reason), ms) : setTimeout(resolve, ms));\nfunction raceTimeout(input, ms, throwOnTimeout = false, reason = \"Timeout\") {\n const promises = asArray(input);\n const race = Promise.race([...promises, promiseTimeout(ms, throwOnTimeout, reason)]);\n race.finally(() => {\n promises.forEach((p) => p && typeof p === \"object\" && typeof p.dispose === \"function\" && p.dispose());\n });\n return race;\n}\nvar onRootCleanup = (fn) => getOwner() ? onCleanup(fn) : fn;\nvar createCallbackStack = () => {\n let stack = [];\n const clear = () => stack = [];\n return {\n push: (...callbacks) => stack.push(...callbacks),\n execute(arg0, arg1, arg2, arg3) {\n stack.forEach((cb) => cb(arg0, arg1, arg2, arg3));\n clear();\n },\n clear\n };\n};\nfunction createMicrotask(fn) {\n let calls = 0;\n let args;\n return (...a) => {\n args = a, calls++;\n queueMicrotask(() => --calls === 0 && fn(...args));\n };\n}\nfunction createProxy(traps) {\n return new Proxy({}, {\n get: (_, k) => traps.get(k),\n set: (_, k, v) => {\n var _a;\n (_a = traps.set) == null ? void 0 : _a.call(traps, k, v);\n return false;\n }\n });\n}\nfunction createTrigger(options) {\n return createSignal(void 0, { equals: false, name: options == null ? void 0 : options.name });\n}\nfunction createTriggerCache(options) {\n const cache = /* @__PURE__ */ new Map();\n return {\n dirty: (key) => {\n var _a;\n return (_a = cache.get(key)) == null ? void 0 : _a[1]();\n },\n dirtyAll: () => cache.forEach((s) => s[1]()),\n track(key) {\n let trigger = cache.get(key);\n if (!trigger) {\n trigger = createTrigger(options);\n cache.set(key, trigger);\n }\n trigger[0]();\n }\n };\n}\nfunction createStaticStore(init) {\n const copy = __spreadValues({}, init);\n const store = {};\n const cache = /* @__PURE__ */ new Map();\n const getValue = (key) => {\n const saved = cache.get(key);\n if (saved)\n return saved[0]();\n const signal = createSignal(copy[key], {\n name: typeof key === \"string\" ? key : void 0\n });\n cache.set(key, signal);\n delete copy[key];\n return signal[0]();\n };\n const setValue = (key, value) => {\n const saved = cache.get(key);\n if (saved)\n return saved[1](value);\n if (key in copy)\n copy[key] = accessWith(value, [copy[key]]);\n };\n for (const key of keys(init)) {\n store[key] = void 0;\n Object.defineProperty(store, key, {\n get: getValue.bind(void 0, key)\n });\n }\n const setter = (a, b) => {\n if (isObject(a))\n untrack(() => {\n batch(() => {\n for (const [key, value] of entries(accessWith(a, store)))\n setValue(key, () => value);\n });\n });\n else\n setValue(a, b);\n return store;\n };\n return [store, setter];\n}\nexport {\n access,\n accessArray,\n accessWith,\n asAccessor,\n asArray,\n chain,\n clamp,\n compare,\n createCallbackStack,\n createMicrotask,\n createProxy,\n createStaticStore,\n createTrigger,\n createTriggerCache,\n entries,\n forEachEntry,\n isClient,\n isDev,\n isObject,\n isProd,\n isServer,\n keys,\n noop,\n ofClass,\n onRootCleanup,\n promiseTimeout,\n raceTimeout,\n warn,\n withAccess\n};\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport adapter from \"webrtc-adapter\";\nimport EventBus from \"js-event-bus\";\nimport { broadcastId } from \"../getDeviceId\";\nimport { DataChannel, Frame, Message } from \"./datachannel\";\nimport { WebRTCDatachannel } from \"./webrtc\";\nimport { promiseTimeout } from \"@solid-primitives/utils\";\nimport {validate as uuidValidate} from \"uuid\";\n\nconst PROTO_TYPE_SYNC_PEERS = 1;\nconst PROTO_TYPE_RTC_PROVIDE_OFFER = 2;\nconst PROTO_TYPE_SYNC_PEERS_REP = 3;\nconst PROTO_TYPE_RTC_ICE_CANDIDATE = 4;\nconst PROTO_TYPE_MAX_NUM = 255;\nconst DATACHANNEL_LABEL = \"magicmesh\";\nconst DATACHANNEL_ID = 64;\n\nconst RTCPEERCONNECTION_OPTIONS: RTCConfiguration = {\n iceServers: [\n {\n urls: \"stun:stun.stunprotocol.org\",\n },\n ]\n};\n\nexport enum PeerConnectionState {\n connecting = \"connecting\",\n connected = \"connected\",\n disconnected = \"disconnected\",\n closed = \"closed\",\n failed = \"failed\",\n unknown = \"unknown\",\n}\n\nexport class Peer {\n userDeviceId: string;\n connection: RTCPeerConnection;\n clk: bigint;\n datachannel: WebRTCDatachannel;\n connectionState: PeerConnectionState;\n bus: EventBus;\n makingOffer: boolean;\n\n constructor(userDeviceId: string, clk: bigint) {\n this.userDeviceId = userDeviceId;\n this.connection = new RTCPeerConnection(RTCPEERCONNECTION_OPTIONS);\n this.clk = clk;\n this.datachannel = new WebRTCDatachannel(\n this.connection.createDataChannel(\n DATACHANNEL_LABEL, {\n protocol: \"magicmesh-rtc0\",\n id: DATACHANNEL_ID,\n negotiated: true\n }\n )\n );\n this.connectionState = PeerConnectionState.unknown;\n this.bus = new EventBus();\n this.makingOffer = false;\n this.setupConnectionState();\n this.connection.addEventListener(\"negotiationneeded\", () => this.bus.emit(\"negotiationneeded\", undefined, this));\n this.connection.addEventListener(\"icecandidate\", (ev) => this.bus.emit(\"icecandidate\", undefined, this, ev));\n this.connection.addEventListener(\"iceconnectionstatechange\", () => {\n if (this.connection.iceConnectionState === \"failed\") {\n this.connection.restartIce();\n }\n });\n }\n\n setupConnectionState() {\n if (typeof this.connection.connectionState !== \"undefined\") { // Firefox does not support connectionState and connectionstatechange\n this.connection.addEventListener(\"connectionstatechange\", () => {\n switch (this.connection.connectionState) {\n case \"new\":\n case \"connecting\":\n this.connectionState = PeerConnectionState.connecting;\n break;\n case \"closed\":\n this.connectionState = PeerConnectionState.closed;\n break;\n case \"connected\":\n this.connectionState = PeerConnectionState.connected;\n break;\n case \"disconnected\":\n this.connectionState = PeerConnectionState.disconnected;\n break;\n case \"failed\":\n this.connectionState = PeerConnectionState.failed;\n break;\n default:\n this.connectionState = PeerConnectionState.unknown;\n break;\n }\n this.bus.emit(\"connectionstatechange\", this, this.connectionState);\n });\n } else {\n this.connection.addEventListener(\"iceconnectionstatechange\", () => {\n const state = this.connection.iceConnectionState;\n if (state === \"new\" || state === \"checking\" || state === \"completed\") {\n this.connectionState = PeerConnectionState.connecting;\n } else if (state === \"connected\") {\n this.connectionState = PeerConnectionState.connected;\n } else if (state === \"disconnected\") {\n this.connectionState = PeerConnectionState.disconnected;\n } else if (state === \"closed\") {\n this.connectionState = PeerConnectionState.closed;\n } else if (state === \"failed\") {\n this.connectionState = PeerConnectionState.failed;\n } else {\n this.connectionState = PeerConnectionState.unknown;\n }\n this.bus.emit(\"connectionstatechange\", this, this.connectionState);\n });\n }\n }\n\n isConnectionAvaliable(): boolean {\n if (this.connectionState === \"connected\") {\n return true;\n } else {\n return false;\n }\n }\n\n async send(roomId: string, srcUserDeviceId: string, frames: Frame[]) {\n await this.datachannel.send({\n roomId: roomId,\n srcUserDeviceId: srcUserDeviceId,\n dstUserDeviceId: this.userDeviceId,\n message: frames,\n });\n }\n\n disconnect() {\n this.datachannel.close();\n this.connection.close();\n }\n}\n\nexport class Router {\n peers: Peer[];\n alterChan: DataChannel;\n clk: bigint;\n userDeviceId: string;\n bus: EventBus;\n onMessageCallback: ((msg: Message) => void);\n onNegotiate: ((peer: Peer) => void);\n onIceCandidate: ((peer: Peer, ev: RTCPeerConnectionIceEvent) => void);\n roomId: string;\n\n constructor(userDeviceId: string, alterChan: DataChannel, roomId: string) {\n this.peers = [];\n this.alterChan = alterChan;\n this.clk = BigInt(0);\n this.userDeviceId = userDeviceId;\n this.bus = new EventBus();\n this.roomId = roomId;\n this.onMessageCallback = (msg) => {\n if (msg.dstUserDeviceId === this.userDeviceId || msg.dstUserDeviceId === broadcastId) {\n if (msg.message[0].isUInt() && msg.message[0].toUInt() <= PROTO_TYPE_MAX_NUM && msg.message[1].isBigUInt()) {\n this.handleProtocolMessage(msg);\n } else {\n this.bus.emit(\"data\", this, msg);\n }\n }\n };\n this.onNegotiate = (peer) => {\n peer.makingOffer = true;\n peer.connection.setLocalDescription()\n .then(() => {\n const offer = peer.connection.localDescription;\n if (offer) {\n const {sdp, type} = offer;\n return this.provideRTCOffer(peer.userDeviceId, {sdp, type});\n }\n })\n .finally(() => peer.makingOffer = false);\n };\n this.onIceCandidate = (peer, ev) => {\n if (ev.candidate) {\n this.sendRTCIceCandidate(peer.userDeviceId, ev.candidate);\n }\n };\n alterChan.bus.on(\"data\", this.onMessageCallback);\n }\n\n async broadcast(frames: Frame[], noAlternativeChannel?: boolean) {\n const sendingPromises: Promise[] = [];\n for (const peer of this.peers) {\n if (peer.isConnectionAvaliable()) {\n sendingPromises.push(peer.send(this.roomId, this.userDeviceId, frames));\n }\n }\n if (!noAlternativeChannel && sendingPromises.length === 0) {\n await this.sendToAlternativeChannel(broadcastId, frames);\n } else {\n await Promise.all(sendingPromises);\n }\n }\n\n findPeerById(userDeviceId: string): Peer | null {\n for (const peer of this.peers) {\n if (peer.userDeviceId === userDeviceId) {\n return peer;\n }\n }\n return null;\n }\n\n loopbackSend(dstUserDeviceId: string, frames: Frame[]) {\n this.bus.emit(\"data\", this, {\n srcUserDeviceId: this.userDeviceId,\n dstUserDeviceId: dstUserDeviceId,\n message: frames,\n roomId: this.roomId,\n });\n }\n\n async send(dstUserDeviceId: string, frames: Frame[]) {\n if (dstUserDeviceId === this.userDeviceId) {\n this.loopbackSend(dstUserDeviceId, frames);\n return;\n }\n const peer = this.findPeerById(dstUserDeviceId);\n if (peer) {\n if (peer.isConnectionAvaliable()) {\n await peer.send(this.roomId, this.userDeviceId, frames);\n } else {\n await this.sendToAlternativeChannel(dstUserDeviceId, frames);\n }\n }\n }\n\n async broadcastPeerList(customPeerIdList?: string[], isReply?: boolean) {\n const peerIdList = customPeerIdList || [this.userDeviceId, ...this.peers.map(p => p.userDeviceId)];\n const frames = this.buildProtocolMessage(isReply ? PROTO_TYPE_SYNC_PEERS_REP : PROTO_TYPE_SYNC_PEERS, peerIdList);\n await this.broadcast(frames);\n }\n\n async sendToAlternativeChannel(dstUserDeviceId: string, frames: Frame[]) {\n await this.alterChan.send({\n srcUserDeviceId: this.userDeviceId,\n dstUserDeviceId: dstUserDeviceId,\n roomId: this.roomId,\n message: frames,\n });\n }\n\n addPeer(peer: Peer) {\n peer.datachannel.bus.on(\"data\", this.onMessageCallback);\n peer.bus.on(\"negotiationneeded\", this.onNegotiate);\n peer.bus.on(\"icecandidate\", this.onIceCandidate);\n this.peers.push(peer);\n this.bus.emit(\"addpeer\", this, peer);\n }\n\n removePeer(peer: Peer) {\n const index = this.peers.indexOf(peer);\n this.peers.splice(index, 1);\n peer.datachannel.bus.detach(\"data\", this.onMessageCallback);\n peer.bus.detach(\"negotiationneeded\", this.onNegotiate);\n peer.bus.detach(\"icecandidate\", this.onIceCandidate);\n this.bus.emit(\"removepeer\", this, peer);\n }\n\n async onSyncPeerMessage(message: Message) {\n const code = message.message[0].toUInt();\n const receivedPeerList = JSON.parse(message.message[2].toString()) as unknown; // JSON\n const remotePeerList = Array.isArray(receivedPeerList) ? receivedPeerList.filter(v => typeof v === \"string\" && uuidValidate(v)) : [];\n remotePeerList.filter(id => this.findPeerById(id) == null).forEach(id => {\n const peer = new Peer(id, BigInt(0));\n this.addPeer(peer);\n }); // add all unknown peers\n if (code === PROTO_TYPE_SYNC_PEERS) {\n const waitingTime = Math.random() * 2000;\n await promiseTimeout(waitingTime); // wait random seconds to avoid network flood\n const remoteUnknownPeerIds = this.peers.map(p => p.userDeviceId).filter(id => !remotePeerList.includes(id));\n if (!remotePeerList.includes(this.userDeviceId)) {\n remoteUnknownPeerIds.push(this.userDeviceId);\n }\n if (remoteUnknownPeerIds.length > 0) {\n await this.broadcastPeerList(remoteUnknownPeerIds, true);\n }\n }\n }\n\n handleProtocolMessage(message: Message) {\n if (message.srcUserDeviceId === this.userDeviceId) {\n return;\n }\n const msgTypeCode = message.message[0].toUInt();\n const clkUpdate = message.message[1].toBigUInt();\n let peer = this.findPeerById(message.srcUserDeviceId);\n if (!peer) {\n peer = new Peer(message.srcUserDeviceId, clkUpdate);\n this.addPeer(peer);\n } else {\n if (peer.clk >= clkUpdate) return;\n }\n if (msgTypeCode === PROTO_TYPE_SYNC_PEERS || msgTypeCode === PROTO_TYPE_SYNC_PEERS_REP) {\n this.onSyncPeerMessage(message).catch((reason) => console.error(reason));\n } else if (msgTypeCode === PROTO_TYPE_RTC_PROVIDE_OFFER) {\n this.onProvideRTCOfferMessage(message).catch(reason => console.error(reason));\n } else if (msgTypeCode === PROTO_TYPE_RTC_ICE_CANDIDATE) {\n this.onRTCIceCandidateMessage(message).catch(reason => console.error(reason));\n } else {\n console.error(\"unknown message type #%d\", msgTypeCode);\n }\n }\n\n tick() {\n return this.clk++;\n }\n\n buildProtocolMessage(msgType: number, obj: unknown): Frame[] {\n return [Frame.fromUInt(msgType, true), Frame.fromBigUInt(this.tick(), true), Frame.fromString(JSON.stringify(obj), false)];\n }\n\n async stop(): Promise {\n const closePromise = this.alterChan.close();\n if (typeof closePromise !== \"undefined\") {\n await closePromise;\n }\n for (const peer of this.peers) {\n peer.disconnect();\n }\n for (let i=0; i()[]{}@%$#\".split(\"\");\n\nconst decoder = [\n 0x00, 0x44, 0x00, 0x54, 0x53, 0x52, 0x48, 0x00, \n 0x4B, 0x4C, 0x46, 0x41, 0x00, 0x3F, 0x3E, 0x45, \n 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, \n 0x08, 0x09, 0x40, 0x00, 0x49, 0x42, 0x4A, 0x47, \n 0x51, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, \n 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, \n 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, \n 0x3B, 0x3C, 0x3D, 0x4D, 0x00, 0x4E, 0x43, 0x00, \n 0x00, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, \n 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, \n 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, \n 0x21, 0x22, 0x23, 0x4F, 0x00, 0x50, 0x00, 0x00\n];\n\nexport const encode = (data: Uint8Array): string => {\n if ((data.length % 4) !== 0) {\n throw Error(\"data's length must be divisible by 4\");\n }\n\n const size = data.length;\n let str = \"\",\n byte_nbr = 0,\n value = 0;\n while (byte_nbr < size) {\n const characterCode = data[byte_nbr++];\n value = (value * 256) + characterCode;\n if ((byte_nbr % 4) === 0) {\n let divisor = 85 * 85 * 85 * 85;\n while (divisor >= 1) {\n const idx = Math.floor(value / divisor) % 85;\n str += encoder[idx];\n divisor /= 85;\n }\n value = 0;\n }\n }\n\n return str;\n};\n\nexport const decode = (s: string) => {\n if ((s.length % 5) !== 0) {\n throw Error(\"string's length must be divisible by 5\");\n }\n\n const dest = new Uint8Array(s.length * 4 / 5),\n string_len = s.length;\n let byte_nbr = 0,\n char_nbr = 0,\n value = 0;\n while (char_nbr < string_len) {\n const idx = s.charCodeAt(char_nbr++) - 32;\n if ((idx < 0) || (idx >= decoder.length)) {\n return;\n }\n value = (value * 85) + decoder[idx];\n if ((char_nbr % 5) === 0) {\n let divisor = 256 * 256 * 256;\n while (divisor >= 1) {\n dest[byte_nbr++] = (value / divisor) % 256;\n divisor /= 256;\n }\n value = 0;\n }\n }\n\n return dest;\n};\n\nexport default {\n encode, decode\n};\n","import { RealtimeChannel, SupabaseClient } from \"@supabase/supabase-js\";\nimport { DataChannel, Frame, Message } from \"../datachannel\";\nimport EventBus from \"js-event-bus\";\nimport { broadcastId } from \"../../getDeviceId\";\nimport z85 from \"./z85\";\n\ninterface MessagePushPayload {\n room: string,\n dst_user_dev_id: string,\n src_user_dev_id: string,\n message: string[]\n id: number,\n created_at: string,\n}\n\ninterface MessagePush {\n columns: ({type: string, name: string})[],\n commit_timestamp: string,\n errors: unknown | null,\n type: string,\n record: MessagePushPayload,\n schema: string,\n table: string,\n}\n\nexport class SupabaseDatachannel implements DataChannel {\n rtDbChannel: RealtimeChannel;\n rtDbBroadcastChan: RealtimeChannel;\n supabase: SupabaseClient;\n bus: EventBus;\n roomId: string;\n\n constructor(rtDbChannel: RealtimeChannel, rtDbBroadcastChan: RealtimeChannel, supabase: SupabaseClient, roomId: string) {\n this.rtDbChannel = rtDbChannel;\n this.rtDbBroadcastChan = rtDbBroadcastChan;\n this.supabase = supabase;\n this.bus = new EventBus();\n this.rtDbChannel.on(\"INSERT\", undefined, (ev: MessagePush) => this.onRemoteMessage(ev));\n this.rtDbBroadcastChan.on(\"INSERT\", undefined, (ev: MessagePush) => this.onRemoteMessage(ev));\n this.rtDbChannel.onClose(() => this.onAnyChannelClose());\n this.rtDbBroadcastChan.onClose(() => this.onAnyChannelClose());\n this.roomId = roomId;\n if (!(this.rtDbChannel.isJoined() || this.rtDbChannel.isJoining())) {\n this.rtDbChannel.subscribe();\n }\n if (!(this.rtDbBroadcastChan.isJoined() || this.rtDbBroadcastChan.isJoining())) {\n this.rtDbBroadcastChan.subscribe();\n }\n }\n\n static ofRoom(supabase: SupabaseClient, roomId: string, myUserDeviceId: string) {\n const rtChan = supabase.channel(`realtime:public:room_message_queue:dst_user_dev_id=eq.${myUserDeviceId}`, {selfBroadcast: true});\n const rtBroadcast = supabase.channel(`realtime:public:room_message_queue:dst_user_dev_id=eq.${broadcastId}`, {selfBroadcast: false});\n return new SupabaseDatachannel(rtChan, rtBroadcast, supabase, roomId);\n }\n\n async send(message: Message): Promise {\n const {error} = await this.supabase.from(\"room_message_queue\").insert({\n room: message.roomId,\n dst_user_dev_id: message.dstUserDeviceId,\n src_user_dev_id: message.srcUserDeviceId,\n message: message.message.map((f) => {\n if ((f.byteLength % 4) !== 0) {\n const padding = 4 - (f.byteLength % 4);\n return z85.encode(f.clone(padding).buffer);\n } else {\n return z85.encode(f.buffer);\n }\n }),\n });\n if (error) {\n throw error;\n }\n }\n\n onAnyChannelClose() {\n this.close();\n if (this.rtDbBroadcastChan.isClosed() && this.rtDbChannel.isClosed()) {\n this.bus.emit(\"close\", this);\n }\n }\n\n onRemoteMessage(push: MessagePush): void {\n if (push.errors) {\n return;\n }\n let allFramesDecodedMark = true;\n const payload = push.record;\n const message: Message = {\n roomId: payload.room,\n dstUserDeviceId: payload.dst_user_dev_id,\n srcUserDeviceId: payload.src_user_dev_id,\n message: payload.message.map((s) => {\n if ((s.length % 5) !== 0) { // Invalid z85 data\n allFramesDecodedMark = false;\n return Frame.zero(0);\n }\n const decodedBuf = z85.decode(s); \n if (decodedBuf) {\n return new Frame(decodedBuf);\n } else {\n allFramesDecodedMark = false;\n return Frame.zero(0);\n }\n })\n };\n if (allFramesDecodedMark) {\n this.bus.emit(\"data\", this, message);\n }\n }\n\n close() {\n if (!this.rtDbChannel.isClosed()) {\n this.rtDbChannel.unsubscribe();\n }\n if (!this.rtDbBroadcastChan.isClosed()) this.rtDbBroadcastChan.unsubscribe();\n }\n}\n"],"names":["this","Frame","constructor","buffer","zero","expected_data_length","isLongHeader","SHORT_MAX_LENGTH","totalLength","LONG_HEADER_SIZE","SHORT_HEADER_SIZE","Uint8Array","f","setFlag","length","getFlags","flags","at","more","FLAG_MORE","long","FLAG_LONG","key","value","oldFlags","validateLength","byteLength","headerSize","view","DataView","byteOffset","getUint32","getUint16","len","setInt32","setInt16","data","subarray","dataView","expected_length","Math","min","headerLength","fromArray","array","set","fromString","s","result","encoder","TextEncoder","encode","toString","decoder","TextDecoder","decode","fromUInt","int","setUint32","toUInt","isUInt","fromBigUInt","setBigUint64","toBigUInt","getBigUint64","isBigUInt","pack","frames","map","v","reduce","prev","curr","bundle","offest","readHeader","lengthSize","lengthView","flagsObject","unpack","rest","headerResult","push","paddingLength","clone","padding","slice","LONG_MAX_LENGTH","WebRTCDatachannel","rtcDataChan","bus","EventBus","onRemoteData","ev","addEventListener","emit","removeEventListener","send","message","dstUserDeviceId","roomId","srcUserDeviceId","arrayBuffer","dstId","srcId","payload","close","PROTO_TYPE_SYNC_PEERS","PROTO_TYPE_RTC_PROVIDE_OFFER","PROTO_TYPE_SYNC_PEERS_REP","PROTO_TYPE_RTC_ICE_CANDIDATE","PROTO_TYPE_MAX_NUM","DATACHANNEL_LABEL","DATACHANNEL_ID","RTCPEERCONNECTION_OPTIONS","iceServers","urls","PeerConnectionState","Peer","userDeviceId","clk","connection","RTCPeerConnection","datachannel","createDataChannel","protocol","id","negotiated","connectionState","makingOffer","setupConnectionState","undefined","iceConnectionState","restartIce","state","isConnectionAvaliable","disconnect","Router","alterChan","peers","BigInt","onMessageCallback","msg","broadcastId","handleProtocolMessage","onNegotiate","peer","setLocalDescription","then","offer","localDescription","sdp","type","provideRTCOffer","finally","onIceCandidate","candidate","sendRTCIceCandidate","on","broadcast","noAlternativeChannel","sendingPromises","sendToAlternativeChannel","Promise","all","findPeerById","loopbackSend","broadcastPeerList","customPeerIdList","isReply","peerIdList","p","buildProtocolMessage","addPeer","removePeer","index","indexOf","splice","detach","onSyncPeerMessage","code","receivedPeerList","JSON","parse","remotePeerList","Array","isArray","filter","uuidValidate","forEach","waitingTime","random","promiseTimeout","remoteUnknownPeerIds","includes","msgTypeCode","clkUpdate","catch","reason","console","error","onProvideRTCOfferMessage","onRTCIceCandidateMessage","tick","msgType","obj","stringify","stop","closePromise","i","pop","detachAll","dstUserDevId","offerTyped","setRemoteDescription","description","dstUsrDevId","toJSON","candidateTyped","remoteDescription","addIceCandidate","split","Error","size","str","byte_nbr","characterCode","divisor","idx","floor","dest","string_len","char_nbr","charCodeAt","SupabaseDatachannel","rtDbChannel","rtDbBroadcastChan","supabase","onRemoteMessage","onClose","onAnyChannelClose","isJoined","isJoining","subscribe","ofRoom","myUserDeviceId","rtChan","channel","selfBroadcast","rtBroadcast","from","insert","room","dst_user_dev_id","src_user_dev_id","z85","isClosed","errors","allFramesDecodedMark","record","decodedBuf","unsubscribe"],"mappings":"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"} \ No newline at end of file diff --git a/source/files/magicbroad/assets/index.7d797b7f.js b/source/files/magicbroad/assets/index.7d797b7f.js deleted file mode 100644 index 997ff69..0000000 --- a/source/files/magicbroad/assets/index.7d797b7f.js +++ /dev/null @@ -1,2 +0,0 @@ -var N=Object.defineProperty;var p=Object.getOwnPropertySymbols;var T=Object.prototype.hasOwnProperty,M=Object.prototype.propertyIsEnumerable;var v=(e,t,r)=>t in e?N(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,m=(e,t)=>{for(var r in t||(t={}))T.call(t,r)&&v(e,r,t[r]);if(p)for(var r of p(t))M.call(t,r)&&v(e,r,t[r]);return e};import{c as x,a as f,b as y,d as a,m as l,S as h,e as b,g as R,u as $,E as k,N as B,i as A,J as F,t as C}from"./index.13b310ab.js";import{g as U}from"./getDeviceId.e8f3946a.js";import{g as S,a as L,s as c,c as w,B as W}from"./ButtonBase.9bf595f5.js";import{T as d,u as _,C as j,L as P,a as z,b as D,S as E}from"./SvgIcon.c425712b.js";import{L as G}from"./ListItemText.52d31dfa.js";import"./isHostComponent.9ebad583.js";function J(e){return L("MuiCardHeader",e)}const I=S("MuiCardHeader",["root","avatar","action","content","title","subheader"]),X=x()({name:"MuiCardHeader",selfPropNames:["action","avatar","classes","disableTypography","subheader","subheaderTypographyProps","title","titleTypographyProps"],propDefaults:({set:e})=>e({component:"div",disableTypography:!1}),utilityClass:J,slotClasses:()=>({root:["root"],avatar:["avatar"],action:["action"],content:["content"],title:["title"],subheader:["subheader"]})}),q=c("div",{name:"MuiCardHeader",slot:"Root",overridesResolver:(e,t)=>m({[`& .${I.title}`]:t.title,[`& .${I.subheader}`]:t.subheader},t.root)})({display:"flex",alignItems:"center",padding:16}),K=c("div",{name:"MuiCardHeader",slot:"Avatar",overridesResolver:(e,t)=>t.avatar})({display:"flex",flex:"0 0 auto",marginRight:16}),O=c("div",{name:"MuiCardHeader",slot:"Action",overridesResolver:(e,t)=>t.action})({flex:"0 0 auto",alignSelf:"flex-start",marginTop:-4,marginRight:-8,marginBottom:-4}),Q=c("div",{name:"MuiCardHeader",slot:"Content",overridesResolver:(e,t)=>t.content})({flex:"1 1 auto"}),V=X.component(function({allProps:t,classes:r,otherProps:i,props:n}){const u=o=>o instanceof HTMLElement&&o.classList.contains(d.toString()),g=f(()=>{const o=y(()=>n.title)();return o!==void 0&&!u(o)&&!n.disableTypography?a(d,l({get variant(){return n.avatar?"body2":"h5"},get className(){return r.title},component:"span",sx:{display:"block"}},()=>{var s;return(s=n.titleTypographyProps)!=null?s:{}},{children:o})):o}),H=f(()=>{const o=y(()=>n.subheader)();return o!==void 0&&!u(o)&&!n.disableTypography?a(d,l({get variant(){return n.avatar?"body2":"body1"},get className(){return r.subheader},component:"span",sx:{display:"block",color:"text.secondary"}},()=>{var s;return(s=n.subheaderTypographyProps)!=null?s:{}},{children:o})):o});return a(q,l(i,{get className(){return w(r.root,i.className)},ownerState:t,get children(){return[a(h,{get when(){return!!n.avatar},get children(){return a(K,{get className(){return r.avatar},ownerState:t,get children(){return n.avatar}})}}),a(Q,{get className(){return r.content},ownerState:t,get children(){return[b(()=>g()),b(()=>H())]}}),a(h,{get when(){return!!n.action},get children(){return a(O,{get className(){return r.action},ownerState:t,get children(){return n.action}})}})]}}))});function Y(e){return L("MuiListItemIcon",e)}S("MuiListItemIcon",["root","alignItemsFlexStart"]);const Z=x()({name:"MuiListItemIcon",selfPropNames:["alignItems","children","classes"],propDefaults:({set:e})=>e({component:"div"}),utilityClass:Y,slotClasses:e=>({root:["root",e.alignItems==="flex-start"&&"alignItemsFlexStart"]})}),tt=c("div",{name:"MuiListItemIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.alignItems==="flex-start"&&t.alignItemsFlexStart]}})(({theme:e,ownerState:t})=>m({minWidth:56,color:e.palette.action.active,flexShrink:0,display:"inline-flex"},t.alignItems==="flex-start"&&{marginTop:8})),et=Z.component(function({allProps:t,classes:r,otherProps:i,props:n}){const u=_(),g=l({get alignItems(){return u.alignItems}},t);return a(tt,l(i,{get className(){return w(r.root,i.className)},ownerState:g,get children(){return n.children}}))}),rt=C('',4,!0),at=C('
'),ut=()=>{const e=R(),t=$(),r=async()=>{await e.signIn({provider:"github"})};return k((i,n)=>{n&&(U(),n.user&&t("/"))}),a(h,{get when(){return!e.user()},get fallback(){return a(B,{href:"/"})},get children(){return[(()=>{const i=at.cloneNode(!0);return A(i,a(j,{sx:{minWidth:300},get children(){return[a(V,{get title(){return a(d,{variant:"h6",children:"\u767B\u5F55"})}}),a(d,{sx:{fontSize:14},color:"text.secondary",gutterBottom:!0,get children(){return a(W,{sx:{width:"100%",minWidth:360,bgcolor:"background.paper"},get children(){return a(P,{get children(){return a(z,{disablePadding:!0,onClick:r,id:"login-with-github",get children(){return a(D,{get children(){return[a(et,{get children(){return a(E,{sx:{width:32,height:32},viewBox:"0 0 16 16",get children(){return rt.cloneNode(!0)}})}}),a(G,{primary:"\u4F7F\u7528GitHub\u767B\u5F55"})]}})}})}})}})}})]}})),i})(),a(F,{id:"4185707993",children:["#login-methods.jsx-4185707993{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);}"]})]}})};export{ut as default}; -//# sourceMappingURL=index.7d797b7f.js.map diff --git a/source/files/magicbroad/assets/index.7d797b7f.js.map b/source/files/magicbroad/assets/index.7d797b7f.js.map deleted file mode 100644 index 610588c..0000000 --- a/source/files/magicbroad/assets/index.7d797b7f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.7d797b7f.js","sources":["../../node_modules/@suid/material/CardHeader/cardHeaderClasses.js","../../node_modules/@suid/material/CardHeader/CardHeader.jsx","../../node_modules/@suid/material/ListItemIcon/listItemIconClasses.js","../../node_modules/@suid/material/ListItemIcon/ListItemIcon.jsx","../../src/pages/Login/index.tsx"],"sourcesContent":["import { generateUtilityClass, generateUtilityClasses } from \"@suid/base\";\nexport function getCardHeaderUtilityClass(slot) {\n return generateUtilityClass(\"MuiCardHeader\", slot);\n}\nconst cardHeaderClasses = generateUtilityClasses(\"MuiCardHeader\", [\"root\", \"avatar\", \"action\", \"content\", \"title\", \"subheader\"]);\nexport default cardHeaderClasses;\n","import Typography from \"../Typography\";\nimport styled from \"../styles/styled\";\nimport cardHeaderClasses, { getCardHeaderUtilityClass, } from \"./cardHeaderClasses\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nimport clsx from \"clsx\";\nimport { children, createMemo, Show } from \"solid-js\";\nconst $ = createComponentFactory()({\n name: \"MuiCardHeader\",\n selfPropNames: [\n \"action\",\n \"avatar\",\n \"classes\",\n \"disableTypography\",\n \"subheader\",\n \"subheaderTypographyProps\",\n \"title\",\n \"titleTypographyProps\",\n ],\n propDefaults: ({ set }) => set({\n component: \"div\",\n disableTypography: false,\n }),\n utilityClass: getCardHeaderUtilityClass,\n slotClasses: () => ({\n root: [\"root\"],\n avatar: [\"avatar\"],\n action: [\"action\"],\n content: [\"content\"],\n title: [\"title\"],\n subheader: [\"subheader\"],\n }),\n});\nconst CardHeaderRoot = styled(\"div\", {\n name: \"MuiCardHeader\",\n slot: \"Root\",\n overridesResolver: (props, styles) => ({\n [`& .${cardHeaderClasses.title}`]: styles.title,\n [`& .${cardHeaderClasses.subheader}`]: styles.subheader,\n ...styles.root,\n }),\n})({\n display: \"flex\",\n alignItems: \"center\",\n padding: 16,\n});\nconst CardHeaderAvatar = styled(\"div\", {\n name: \"MuiCardHeader\",\n slot: \"Avatar\",\n overridesResolver: (props, styles) => styles.avatar,\n})({\n display: \"flex\",\n flex: \"0 0 auto\",\n marginRight: 16,\n});\nconst CardHeaderAction = styled(\"div\", {\n name: \"MuiCardHeader\",\n slot: \"Action\",\n overridesResolver: (props, styles) => styles.action,\n})({\n flex: \"0 0 auto\",\n alignSelf: \"flex-start\",\n marginTop: -4,\n marginRight: -8,\n marginBottom: -4,\n});\nconst CardHeaderContent = styled(\"div\", {\n name: \"MuiCardHeader\",\n slot: \"Content\",\n overridesResolver: (props, styles) => styles.content,\n})({\n flex: \"1 1 auto\",\n});\n/**\n *\n * Demos:\n *\n * - [Cards](https://mui.com/components/cards/)\n *\n * API:\n *\n * - [CardHeader API](https://mui.com/api/card-header/)\n */\nconst CardHeader = $.component(function CardHeader({ allProps, classes, otherProps, props, }) {\n const isTypography = (v) => v instanceof HTMLElement && v.classList.contains(Typography.toString());\n const Title = createMemo(() => {\n const title = children(() => props.title)();\n if (title !== undefined && !isTypography(title) && !props.disableTypography)\n return (\n {title}\n );\n return title;\n });\n const Subheader = createMemo(() => {\n const subheader = children(() => props.subheader)();\n if (subheader !== undefined &&\n !isTypography(subheader) &&\n !props.disableTypography)\n return (\n {subheader}\n );\n return subheader;\n });\n return (\n \n \n {props.avatar}\n \n \n\n \n {Title()}\n {Subheader()}\n \n\n \n \n {props.action}\n \n \n );\n});\nexport default CardHeader;\n","import { generateUtilityClass, generateUtilityClasses } from \"@suid/base\";\nexport function getListItemIconUtilityClass(slot) {\n return generateUtilityClass(\"MuiListItemIcon\", slot);\n}\nconst listItemIconClasses = generateUtilityClasses(\"MuiListItemIcon\", [\"root\", \"alignItemsFlexStart\"]);\nexport default listItemIconClasses;\n","import { useListContext } from \"../List/ListContext\";\nimport styled from \"../styles/styled\";\nimport { getListItemIconUtilityClass } from \"./listItemIconClasses\";\nimport createComponentFactory from \"@suid/base/createComponentFactory\";\nimport clsx from \"clsx\";\nimport { mergeProps } from \"solid-js\";\nconst $ = createComponentFactory()({\n name: \"MuiListItemIcon\",\n selfPropNames: [\"alignItems\", \"children\", \"classes\"],\n propDefaults: ({ set }) => set({\n component: \"div\",\n }),\n utilityClass: getListItemIconUtilityClass,\n slotClasses: (ownerState) => ({\n root: [\n \"root\",\n ownerState.alignItems === \"flex-start\" && \"alignItemsFlexStart\",\n ],\n }),\n});\nconst ListItemIconRoot = styled(\"div\", {\n name: \"MuiListItemIcon\",\n slot: \"Root\",\n overridesResolver: (props, styles) => {\n const { ownerState } = props;\n return [\n styles.root,\n ownerState.alignItems === \"flex-start\" && styles.alignItemsFlexStart,\n ];\n },\n})(({ theme, ownerState }) => ({\n minWidth: 56,\n color: theme.palette.action.active,\n flexShrink: 0,\n display: \"inline-flex\",\n ...(ownerState.alignItems === \"flex-start\" && {\n marginTop: 8,\n }),\n}));\n/**\n * A simple wrapper to apply `List` styles to an `Icon` or `SvgIcon`.\n *\n * Demos:\n *\n * - [Lists](https://mui.com/components/lists/)\n *\n * API:\n *\n * - [ListItemIcon API](https://mui.com/api/list-item-icon/)\n */\nconst ListItemIcon = $.component(function ListItemIcon({ allProps, classes, otherProps, props, }) {\n const context = useListContext();\n const ownerState = mergeProps({\n get alignItems() {\n return context.alignItems;\n },\n }, allProps);\n return (\n {props.children}\n );\n});\nexport default ListItemIcon;\n","import { Component, Show } from \"solid-js\";\nimport { createOnAuthStateChange, createSupabaseAuth } from \"solid-supabase\";\nimport { Navigate, useNavigate } from \"solid-app-router\";\nimport getDeviceId from \"../../helpers/getDeviceId\";\nimport Box from \"@suid/material/Box\";\n\nimport Card from \"@suid/material/Card\";\nimport Typography from \"@suid/material/Typography\";\nimport CardHeader from \"@suid/material/CardHeader\";\n\nimport List from \"@suid/material/List\";\nimport ListItem from \"@suid/material/ListItem\";\nimport ListItemButton from \"@suid/material/ListItemButton\";\nimport ListItemIcon from \"@suid/material/ListItemIcon\";\nimport ListItemText from \"@suid/material/ListItemText\";\nimport SvgIcon from \"@suid/material/SvgIcon\";\n\nconst Login: Component = () => {\n const auth = createSupabaseAuth();\n const navigate = useNavigate();\n const signInWithGithub = async () => {\n await auth.signIn({\n provider: \"github\",\n });\n };\n createOnAuthStateChange((_, session) => {\n // Check again to force jump back.\n // The Show's fallback could not be rendered when jumping back from supabase.\n // TODO: allow jumping back to specific address.\n if (session) {\n getDeviceId(); // Ensure we have a device identity.\n if (session.user) {\n navigate(\"/\");\n }\n }\n });\n return (<>\n\n }>\n
\n \n 登录} />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n \n \n
\n \n
\n );\n};\n\nexport default Login;\n"],"names":["$","createComponentFactory","name","selfPropNames","propDefaults","set","component","disableTypography","utilityClass","getCardHeaderUtilityClass","slotClasses","root","avatar","action","content","title","subheader","CardHeaderRoot","styled","slot","overridesResolver","props","styles","cardHeaderClasses","display","alignItems","padding","CardHeaderAvatar","flex","marginRight","CardHeaderAction","alignSelf","marginTop","marginBottom","CardHeaderContent","CardHeader","allProps","classes","otherProps","isTypography","v","HTMLElement","classList","contains","Typography","toString","Title","createMemo","children","undefined","_$mergeProps","titleTypographyProps","Subheader","color","subheaderTypographyProps","_$createComponent","clsx","className","_$memo","getListItemIconUtilityClass","ownerState","ListItemIconRoot","alignItemsFlexStart","theme","minWidth","palette","active","flexShrink","ListItemIcon","context","useListContext","mergeProps","Login","auth","createSupabaseAuth","navigate","useNavigate","signInWithGithub","signIn","provider","createOnAuthStateChange","_","session","getDeviceId","user","_$insert","fontSize","width","bgcolor","height","_JSXStyle"],"mappings":"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"} \ No newline at end of file diff --git a/source/files/magicbroad/assets/index.9a756780.js b/source/files/magicbroad/assets/index.9a756780.js deleted file mode 100644 index fc08ce7..0000000 --- a/source/files/magicbroad/assets/index.9a756780.js +++ /dev/null @@ -1,2 +0,0 @@ -import{g as c,u as d,i as r,d as o,N as p,S as m,t as n}from"./index.13b310ab.js";import{B as g}from"./Button.f5ab4cd7.js";import{g as f}from"./getDeviceId.e8f3946a.js";import{u as h}from"./solid.5ae8e60d.js";import"./ButtonBase.9bf595f5.js";const _=n("

User Infomation

"),C=n("

Deivce Id:

"),N=n("

Id:

"),$=n("

User-Device Id:

"),D=()=>{const s=c(),i=s.user(),l=d(),a=async()=>{await s.signOut(),l("/login")},u=h();return[_.cloneNode(!0),(()=>{const e=C.cloneNode(!0);return e.firstChild,r(e,f,null),e})(),o(m,{when:i,get fallback(){return o(p,{href:"/login"})},children:e=>[(()=>{const t=N.cloneNode(!0);return t.firstChild,r(t,()=>e.id,null),t})(),(()=>{const t=$.cloneNode(!0);return t.firstChild,r(t,()=>u.getUserDeviceId(),null),t})(),o(g,{onClick:a,children:"Sign out"})]})]};export{D as default}; -//# sourceMappingURL=index.9a756780.js.map diff --git a/source/files/magicbroad/assets/index.9a756780.js.map b/source/files/magicbroad/assets/index.9a756780.js.map deleted file mode 100644 index 3c0f82d..0000000 --- a/source/files/magicbroad/assets/index.9a756780.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.9a756780.js","sources":["../../src/pages/User/index.tsx"],"sourcesContent":["import { Component, Show } from \"solid-js\";\nimport { createSupabaseAuth } from \"solid-supabase\";\nimport { Navigate, useNavigate } from \"solid-app-router\";\nimport Button from \"@suid/material/Button\";\nimport getDeviceId from \"../../helpers/getDeviceId\";\nimport { useBroadClient } from \"../../helpers/BroadClient/solid\";\n\nconst User: Component = () => {\n const auth = createSupabaseAuth();\n const user_option = auth.user();\n const navigate = useNavigate();\n const signOut = async () => {\n await auth.signOut();\n navigate(\"/login\");\n };\n const broadClient = useBroadClient();\n return (<>\n

User Infomation

\n

Deivce Id: {getDeviceId()}

\n }>\n {\n (user) => {\n return <>\n

Id: {user.id}

\n

User-Device Id: {broadClient.getUserDeviceId()}

\n \n ;\n }\n }\n
\n );\n};\n\nexport default User;\n"],"names":["User","auth","createSupabaseAuth","user_option","user","navigate","useNavigate","signOut","broadClient","useBroadClient","_$insert","getDeviceId","_$createComponent","id","getUserDeviceId"],"mappings":"oWAOMA,EAAkB,IAAM,CAC1B,KAAMC,GAAOC,IACPC,EAAcF,EAAKG,OACnBC,EAAWC,IACXC,EAAU,SAAY,CACxB,KAAMN,GAAKM,UACXF,EAAS,QAAD,GAENG,EAAcC,IACpB,MAAA,CAAA,EAAA,UAAA,EAAA,EAAA,KAAA,CAAA,KAAA,GAAA,EAAA,UAAA,EAAA,EAAA,SAAA,WAAAC,EAAA,EAEmBC,EAFnB,IAAA,EAAA,CAAA,GAAA,EAAAC,EAGK,EAHL,CAGU,KAAMT,EAHhB,GAG6B,WAH7B,CAAA,MAAAS,GAGwC,EAHxC,CAGiD,KAAK,QAHtD,CAAA,CAAA,EAAA,SAKaR,GACG,CAAA,KAAA,CAAA,KAAA,GAAA,EAAA,UAAA,EAAA,EAAA,SAAA,WAAAM,EACYN,EAAAA,IAAAA,EAAKS,GADjB,IAAA,EAAA,CAAA,GAAA,EAAA,KAAA,CAAA,KAAA,GAAA,EAAA,UAAA,EAAA,EAAA,SAAA,WAAAH,EAEwBF,EAAAA,IAAAA,EAAYM,gBAFpC,EAAA,IAAA,EAAA,CAAA,GAAA,EAAAF,EAGK,EAHL,CAGY,QAASL,EAHrB,SAAA,UAAA,CAAA,CAAA,CANhB,CAAA,CAAA,CATJ"} \ No newline at end of file diff --git a/source/files/magicbroad/assets/index.b2b53b3b.js b/source/files/magicbroad/assets/index.b2b53b3b.js deleted file mode 100644 index 007344e..0000000 --- a/source/files/magicbroad/assets/index.b2b53b3b.js +++ /dev/null @@ -1,2 +0,0 @@ -import{q as d,g as F,H as G,v as B,i as t,d as l,S as J,I as y,t as S,r as M,z as T}from"./index.13b310ab.js";import{B as P}from"./Button.f5ab4cd7.js";import{T as D}from"./TextField.2ea54ac2.js";import{u as j}from"./solid.5ae8e60d.js";import{P as z,S as H,R as O}from"./index.79b5287a.js";import{v as V}from"./getDeviceId.e8f3946a.js";import"./ButtonBase.9bf595f5.js";import"./isHostComponent.9ebad583.js";const A=S('

Peer "" [changed x], clk , connectionState , singalingState

'),K=S("

Loading participants...

"),Q=S("

User:



User-Device Id:

Participants:

    Peers:

      "),W=S("
    • User Id:
    • "),X=S("
    • No peers.
    • "),Y=S("
    • "),Z=i=>{const[h,s]=d(z.unknown),[b,R]=d("stable"),[f,o]=d(0),C=n=>{s(n),o(g=>g+1)},u=()=>{R(i.peer.connection.signalingState),o(n=>n+1)};return M(()=>{s(i.peer.connectionState)}),T(()=>{i.peer.bus.on("connectionstatechange",C),i.peer.connection.addEventListener("signalingstatechange",u)}),B(()=>{i.peer.bus.detach("connectionstatechange",C),i.peer.connection.removeEventListener("signalingstatechange",u)}),(()=>{const n=A.cloneNode(!0),g=n.firstChild,_=g.nextSibling,$=_.nextSibling,v=$.nextSibling,w=v.nextSibling,x=w.nextSibling,e=x.nextSibling,c=e.nextSibling;return c.nextSibling,t(n,()=>i.peer.userDeviceId,_),t(n,f,v),t(n,()=>i.peer.clk.toString(),x),t(n,h,c),t(n,b,null),n})()},se=()=>{const[i,h]=d(""),[s,b]=d(""),[R,f]=d([],{equals:!1}),o=j(),C=F(),[u,n]=d(),[g,_]=G(()=>V(s())?o.getParticipants(s()):[]),$=async e=>{await o.isJoinedRoomById(e)||await o.joinRoomById(e),_.refetch();const c=H.ofRoom(o.supabase,e,o.getUserDeviceId()),r=new O(o.getUserDeviceId(),c,e);r.bus.on("addpeer",()=>{f(r.peers)}),r.bus.on("removepeer",m=>{m.disconnect(),f(r.peers)}),await r.broadcastPeerList(),n(r)},v=async()=>{const e=await o.createRoom(i());b(e.id),h(e.name),await $(e.id)},w=async()=>{const e=await o.findRoomById(s());e?(b(e.id),h(e.name),await $(e.id)):alert(`Could not found room ${s()}`)};B(async()=>{const e=u();e&&(await e.stop(),n())});const x=()=>{const e=u();if(e)return e.userDeviceId};return(()=>{const e=Q.cloneNode(!0),c=e.firstChild;c.firstChild;const r=c.nextSibling,m=r.nextSibling,N=m.nextSibling;N.firstChild;const I=N.nextSibling,k=I.firstChild,L=k.nextSibling,U=I.nextSibling,E=U.firstChild,q=E.nextSibling;return t(c,()=>JSON.stringify(C.user(),void 0,2),null),t(e,l(D,{variant:"standard",get value(){return i()},label:"Room Name",onChange:a=>h(a.target.value)}),r),t(e,l(P,{onClick:v,children:"Create New Room"}),r),t(e,l(D,{variant:"standard",get value(){return s()},label:"Room ID",onChange:a=>b(a.target.value)}),m),t(e,l(P,{onClick:w,children:"Enter Room"}),m),t(e,l(P,{onClick:()=>{const a=u();a&&a.broadcastPeerList()},children:"Sync Peer List"}),m),t(N,()=>x()||"unknown",null),t(I,l(J,{get when(){return g.loading},get children(){return K.cloneNode(!0)}}),k),t(L,l(y,{get each(){return g()},children:a=>(()=>{const p=W.cloneNode(!0);return p.firstChild,t(p,()=>a.user_id,null),p})()})),t(q,l(y,{get each(){return R()},get fallback(){return X.cloneNode(!0)},children:a=>(()=>{const p=Y.cloneNode(!0);return t(p,l(Z,{peer:a})),p})()})),e})()};export{se as default}; -//# sourceMappingURL=index.b2b53b3b.js.map diff --git a/source/files/magicbroad/assets/index.b2b53b3b.js.map b/source/files/magicbroad/assets/index.b2b53b3b.js.map deleted file mode 100644 index bf7c2fc..0000000 --- a/source/files/magicbroad/assets/index.b2b53b3b.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.b2b53b3b.js","sources":["../../src/pages/DevMesh/index.tsx"],"sourcesContent":["import Button from \"@suid/material/Button\";\nimport TextField from \"@suid/material/TextField\";\nimport { Component, For, Show, createEffect, createResource, createSignal, onCleanup, onMount } from \"solid-js\";\nimport { useBroadClient } from \"../../helpers/BroadClient/solid\";\nimport { createSupabaseAuth } from \"solid-supabase\";\nimport { Participant } from \"../../helpers/BroadClient\";\nimport { validate as uuidValidate } from \"uuid\";\nimport { Peer, PeerConnectionState, Router } from \"../../helpers/mesh\";\nimport { SupabaseDatachannel } from \"../../helpers/mesh/supabase\";\n\nconst PeerView: Component<{peer: Peer}> = (props) => {\n const [connectionState, setConnectionState] = createSignal(PeerConnectionState.unknown);\n const [singalingState, setSingalingState] = createSignal(\"stable\");\n const [stateChangedCounter, setStateChangedCounter] = createSignal(0);\n\n const onConnectionStateChanged = (newState: PeerConnectionState) => {\n setConnectionState(newState);\n setStateChangedCounter(prev => prev+1);\n };\n\n const onSingalingStateChanged = () => {\n setSingalingState(props.peer.connection.signalingState);\n setStateChangedCounter(prev => prev+1);\n };\n\n createEffect(() => {\n setConnectionState(props.peer.connectionState);\n });\n\n onMount(() => {\n props.peer.bus.on(\"connectionstatechange\", onConnectionStateChanged);\n props.peer.connection.addEventListener(\"signalingstatechange\", onSingalingStateChanged);\n });\n\n onCleanup(() => {\n props.peer.bus.detach(\"connectionstatechange\", onConnectionStateChanged);\n props.peer.connection.removeEventListener(\"signalingstatechange\", onSingalingStateChanged);\n });\n\n return

      Peer \"{props.peer.userDeviceId}\" [changed x{stateChangedCounter()}], clk {props.peer.clk.toString()}, connectionState {connectionState()}, singalingState {singalingState()}

      ;\n};\n\nconst DevMesh: Component = () => {\n const [roomName, setRoomName] = createSignal(\"\");\n const [roomId, setRoomId] = createSignal(\"\");\n const [peers, setPeers] = createSignal([], {equals: false});\n const broadClient = useBroadClient();\n const auth = createSupabaseAuth();\n\n const [routerG, setRouterG] = createSignal();\n\n const [participants, participantsCtl] = createResource(() => {\n if (uuidValidate(roomId())) {\n return broadClient.getParticipants(roomId());\n }\n return [];\n });\n\n const connectNetwork = async (roomId: string) => {\n if (!await broadClient.isJoinedRoomById(roomId)) {\n await broadClient.joinRoomById(roomId);\n }\n participantsCtl.refetch();\n const alterChan = SupabaseDatachannel.ofRoom(broadClient.supabase, roomId, broadClient.getUserDeviceId());\n const router = new Router(broadClient.getUserDeviceId(), alterChan, roomId);\n router.bus.on(\"addpeer\", () => {\n setPeers(router.peers);\n });\n router.bus.on(\"removepeer\", (peer: Peer) => {\n peer.disconnect();\n setPeers(router.peers);\n });\n await router.broadcastPeerList();\n setRouterG(router);\n };\n\n const createRoom = async () => {\n const room = await broadClient.createRoom(roomName());\n setRoomId(room.id);\n setRoomName(room.name);\n await connectNetwork(room.id);\n };\n\n const enterRoom = async () => {\n const room = await broadClient.findRoomById(roomId());\n if (room) {\n setRoomId(room.id);\n setRoomName(room.name);\n await connectNetwork(room.id);\n } else {\n alert(`Could not found room ${roomId()}`);\n }\n };\n\n // We just need some cleanup:\n // eslint-disable-next-line solid/reactivity\n onCleanup(async () => {\n const routerg = routerG();\n if (routerg) {\n await routerg.stop();\n setRouterG();\n }\n });\n\n const getRouterId = () => {\n const routerg = routerG();\n if (routerg) {\n return routerg.userDeviceId;\n }\n };\n\n return
      \n

      User: {JSON.stringify(auth.user(), undefined, 2)}

      \n setRoomName(ev.target.value)} />
      \n setRoomId(ev.target.value)} />\n \n \n
      \n

      User-Device Id: {getRouterId() || \"unknown\"}

      \n
      \n

      Loading participants...

      \n

      Participants:

      \n
        \n {(p) =>
      • User Id: {p.user_id}
      • }
        \n
      \n
      \n
      \n

      Peers:

      \n
        \n No peers.}>{(p) =>
      • }
        \n
      \n
      \n
      ;\n};\n\nexport default DevMesh;\n"],"names":["PeerView","props","connectionState","setConnectionState","createSignal","PeerConnectionState","unknown","singalingState","setSingalingState","stateChangedCounter","setStateChangedCounter","onConnectionStateChanged","newState","prev","onSingalingStateChanged","peer","connection","signalingState","createEffect","onMount","bus","on","addEventListener","onCleanup","detach","removeEventListener","_$insert","userDeviceId","clk","toString","DevMesh","roomName","setRoomName","roomId","setRoomId","peers","setPeers","equals","broadClient","useBroadClient","auth","createSupabaseAuth","routerG","setRouterG","participants","participantsCtl","createResource","uuidValidate","getParticipants","connectNetwork","isJoinedRoomById","joinRoomById","refetch","alterChan","SupabaseDatachannel","ofRoom","supabase","getUserDeviceId","router","Router","disconnect","broadcastPeerList","createRoom","room","id","name","enterRoom","findRoomById","alert","routerg","stop","getRouterId","JSON","stringify","user","undefined","_$createComponent","ev","target","value","loading","p","user_id"],"mappings":"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"} \ No newline at end of file diff --git a/source/files/magicbroad/assets/index.b61bf03f.js b/source/files/magicbroad/assets/index.b61bf03f.js deleted file mode 100644 index 35d1263..0000000 --- a/source/files/magicbroad/assets/index.b61bf03f.js +++ /dev/null @@ -1,2 +0,0 @@ -import{q as s,i as n,d as i,t as O}from"./index.13b310ab.js";import{B as c}from"./Button.f5ab4cd7.js";import{T as X}from"./TextField.2ea54ac2.js";import{a as Y,D as u,b as q}from"./index.c1adcc6d.js";import"./ButtonBase.9bf595f5.js";import"./isHostComponent.9ebad583.js";const j=O('

      Current Point: (x: , y: , lineWidth: , color: )
      hasForce:
      Pressure:
      Touch Type:

      Scroll Range X:
      Scroll Range Y:
      Current Tool:

      '),Q=()=>{const[o,g]=s(),[F,b]=s(!1),[D,S]=s(0),[w,y]=s(),l=new Y("blue",20);return l.setOffscreenSize([3e3,3e3]),[(()=>{const e=j.cloneNode(!0),r=e.firstChild,x=r.nextSibling,P=x.nextSibling,d=P.nextSibling,v=d.nextSibling,_=v.nextSibling,B=_.nextSibling,$=B.nextSibling,R=$.nextSibling,W=R.nextSibling,k=W.nextSibling,h=k.nextSibling,z=h.nextSibling,p=z.nextSibling,E=p.nextSibling,C=E.nextSibling,m=C.nextSibling,H=m.nextSibling,T=H.nextSibling,L=T.nextSibling,f=L.nextSibling,N=f.nextSibling,a=N.nextSibling;return n(e,()=>{var t;return(t=o())==null?void 0:t.x},x),n(e,()=>{var t;return(t=o())==null?void 0:t.y},d),n(e,()=>{var t;return(t=o())==null?void 0:t.lineWidth},_),n(e,()=>{var t;return(t=o())==null?void 0:t.color.toString()},$),n(e,()=>String(F()),h),n(e,D,p),n(e,w,C),n(e,i(X,{variant:"standard",label:"Line Width Factor",onChange:t=>{t.preventDefault(),l.setLineWidthFactor(new Number(t.target.value).valueOf())},get value(){return l.lineWidthFactor().toString()}}),m),n(e,()=>l.scrollCtl.getRangeX().toString(),T),n(e,()=>l.scrollCtl.getRangeY().toString(),f),n(e,()=>l.tool(),a),n(e,i(c,{onClick:()=>l.setTool(u.hand),children:"Hand"}),a),n(e,i(c,{onClick:()=>l.setTool(u.pen),children:"Pen"}),a),n(e,i(c,{onClick:()=>l.setTool(u.erase),children:"Erase"}),a),n(e,i(c,{onClick:()=>l.resetCanvas(),children:"Reset Canvas"}),null),e})(),i(q,{onStart:(e,r)=>{g(e[e.length-1]),b(r.hasForce),S(r.pressure)},onDrawing:(e,r)=>{g(e[e.length-1]),b(r.hasForce),S(r.pressure)},onEnd:e=>{g(),b(e.hasForce),S(e.pressure)},onTouchTypeChanged:y,ctl:l})]};export{Q as default}; -//# sourceMappingURL=index.b61bf03f.js.map diff --git a/source/files/magicbroad/assets/index.b61bf03f.js.map b/source/files/magicbroad/assets/index.b61bf03f.js.map deleted file mode 100644 index 624cb1d..0000000 --- a/source/files/magicbroad/assets/index.b61bf03f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.b61bf03f.js","sources":["../../src/pages/DevDrawBroad/index.tsx"],"sourcesContent":["import Button from \"@suid/material/Button\";\nimport TextField from \"@suid/material/TextField\";\nimport { Component, createSignal } from \"solid-js\";\nimport {default as DrawBroad, DrawBroadController, DrawPoint, DrawTool, DrawTouchType} from \"../../widgets/DrawBroad\";\n\nconst DevDrawBroad: Component = () => {\n const [currentPoint, setCurrentPoint] = createSignal();\n const [hasForce, setHasForce] = createSignal(false);\n const [pressure, setPressure] = createSignal(0);\n const [touchType, setTouchType] = createSignal();\n const broadCtl = new DrawBroadController(\"blue\", 20);\n broadCtl.setOffscreenSize([3000, 3000]);\n\n return <>\n

      \n Current Point: (x: {currentPoint()?.x}, y: {currentPoint()?.y}, lineWidth: {currentPoint()?.lineWidth}, color: {currentPoint()?.color.toString()})
      \n hasForce: {String(hasForce())}
      \n Pressure: {pressure()}
      \n Touch Type: {touchType()}
      \n {\n e.preventDefault();\n broadCtl.setLineWidthFactor(new Number((e.target as HTMLInputElement).value).valueOf());\n }}\n value={broadCtl.lineWidthFactor().toString()}/>
      \n Scroll Range X: {broadCtl.scrollCtl.getRangeX().toString()}
      \n Scroll Range Y: {broadCtl.scrollCtl.getRangeY().toString()}
      \n Current Tool: {broadCtl.tool()}\n \n \n \n
      \n \n

      \n {\n setCurrentPoint(stroke[stroke.length-1]);\n setHasForce(ev.hasForce);\n setPressure(ev.pressure);\n }}\n onDrawing={(stroke, ev) => {\n setCurrentPoint(stroke[stroke.length-1]);\n setHasForce(ev.hasForce);\n setPressure(ev.pressure);\n }}\n onEnd={(ev) => {\n setCurrentPoint();\n setHasForce(ev.hasForce);\n setPressure(ev.pressure);\n }}\n onTouchTypeChanged={setTouchType}\n ctl={broadCtl}\n />\n ;\n};\n\nexport default DevDrawBroad;\n"],"names":["DevDrawBroad","currentPoint","setCurrentPoint","createSignal","hasForce","setHasForce","pressure","setPressure","touchType","setTouchType","broadCtl","DrawBroadController","setOffscreenSize","_$insert","x","y","lineWidth","color","toString","String","_$createComponent","e","preventDefault","setLineWidthFactor","Number","target","value","valueOf","lineWidthFactor","scrollCtl","getRangeX","getRangeY","tool","setTool","DrawTool","hand","pen","erase","resetCanvas","stroke","ev","length"],"mappings":"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"} \ No newline at end of file diff --git a/source/files/magicbroad/assets/index.c1adcc6d.js b/source/files/magicbroad/assets/index.c1adcc6d.js deleted file mode 100644 index 13e146f..0000000 --- a/source/files/magicbroad/assets/index.c1adcc6d.js +++ /dev/null @@ -1,57 +0,0 @@ -var Fi=Object.defineProperty,Ei=Object.defineProperties;var Ti=Object.getOwnPropertyDescriptors;var Yt=Object.getOwnPropertySymbols;var Li=Object.prototype.hasOwnProperty,Pi=Object.prototype.propertyIsEnumerable;var Xt=(E,h,u)=>h in E?Fi(E,h,{enumerable:!0,configurable:!0,writable:!0,value:u}):E[h]=u,ve=(E,h)=>{for(var u in h||(h={}))Li.call(h,u)&&Xt(E,u,h[u]);if(Yt)for(var u of Yt(h))Pi.call(h,u)&&Xt(E,u,h[u]);return E},he=(E,h)=>Ei(E,Ti(h));import{W as Bi,q as yr,z as Ar,v as Vr,X as Ai,m as zi,r as je,t as Oi}from"./index.13b310ab.js";var Nt={exports:{}};/** - * chroma.js - JavaScript library for color conversions - * - * Copyright (c) 2011-2019, Gregor Aisch - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name Gregor Aisch may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ------------------------------------------------------- - * - * chroma.js includes colors from colorbrewer2.org, which are released under - * the following license: - * - * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, - * and The Pennsylvania State University. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - * - * ------------------------------------------------------ - * - * Named colors are taken from X11 Color Names. - * http://www.w3.org/TR/css3-color/#svg-color - * - * @preserve - */(function(E,h){(function(u,v){E.exports=v()})(Bi,function(){for(var u=function(r,e,a){return e===void 0&&(e=0),a===void 0&&(a=1),ra?a:r},v=u,M=function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var e=0;e<=3;e++)e<3?((r[e]<0||r[e]>255)&&(r._clipped=!0),r[e]=v(r[e],0,255)):e===3&&(r[e]=v(r[e],0,1));return r},U={},P=0,H=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];P=3?Array.prototype.slice.call(r):hr(r[0])=="object"&&e?e.split("").filter(function(a){return r[0][a]!==void 0}).map(function(a){return r[0][a]}):r[0]},Q=K,zr=function(r){if(r.length<2)return null;var e=r.length-1;return Q(r[e])=="string"?r[e].toLowerCase():null},ur=Math.PI,m={clip_rgb:M,limit:u,type:K,unpack:fr,last:zr,PI:ur,TWOPI:ur*2,PITHIRD:ur/3,DEG2RAD:ur/180,RAD2DEG:180/ur},I={format:{},autodetect:[]},gr=m.last,A=m.clip_rgb,Or=m.type,dr=I,Ur=function(){for(var e=[],a=arguments.length;a--;)e[a]=arguments[a];var t=this;if(Or(e[0])==="object"&&e[0].constructor&&e[0].constructor===this.constructor)return e[0];var o=gr(e),f=!1;if(!o){f=!0,dr.sorted||(dr.autodetect=dr.autodetect.sort(function(g,y){return y.p-g.p}),dr.sorted=!0);for(var n=0,i=dr.autodetect;n4?r[4]:1;return f===1?[0,0,0,n]:[a>=1?0:255*(1-a)*(1-f),t>=1?0:255*(1-t)*(1-f),o>=1?0:255*(1-o)*(1-f),n]},me=be,ye=Z,Qr=C,jr=I,Kr=m.unpack,re=m.type,ee=de;Qr.prototype.cmyk=function(){return ee(this._rgb)},ye.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["cmyk"])))},jr.format.cmyk=me,jr.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"cmyk"),re(r)==="array"&&r.length===4)return"cmyk"}});var we=m.unpack,$e=m.last,Wr=function(r){return Math.round(r*100)/100},ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=we(r,"hsla"),t=$e(r)||"lsa";return a[0]=Wr(a[0]||0),a[1]=Wr(a[1]*100)+"%",a[2]=Wr(a[2]*100)+"%",t==="hsla"||a.length>3&&a[3]<1?(a[3]=a.length>3?a[3]:1,t="hsla"):a.length=3,t+"("+a.join(",")+")"},ae=ke,_e=m.unpack,xe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];r=_e(r,"rgba");var a=r[0],t=r[1],o=r[2];a/=255,t/=255,o/=255;var f=Math.min(a,t,o),n=Math.max(a,t,o),i=(n+f)/2,l,c;return n===f?(l=0,c=Number.NaN):l=i<.5?(n-f)/(n+f):(n-f)/(2-n-f),a==n?c=(t-o)/(n-f):t==n?c=2+(o-a)/(n-f):o==n&&(c=4+(a-t)/(n-f)),c*=60,c<0&&(c+=360),r.length>3&&r[3]!==void 0?[c,l,i,r[3]]:[c,l,i]},qr=xe,s=m.unpack,b=m.last,w=ae,_=qr,S=Math.round,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=s(r,"rgba"),t=b(r)||"rgb";return t.substr(0,3)=="hsl"?w(_(a),t):(a[0]=S(a[0]),a[1]=S(a[1]),a[2]=S(a[2]),(t==="rgba"||a.length>3&&a[3]<1)&&(a[3]=a.length>3?a[3]:1,t="rgba"),t+"("+a.slice(0,t==="rgb"?3:4).join(",")+")")},Y=B,J=m.unpack,or=Math.round,wr=function(){for(var r,e=[],a=arguments.length;a--;)e[a]=arguments[a];e=J(e,"hsl");var t=e[0],o=e[1],f=e[2],n,i,l;if(o===0)n=i=l=f*255;else{var c=[0,0,0],g=[0,0,0],y=f<.5?f*(1+o):f+o-f*o,d=2*f-y,k=t/360;c[0]=k+1/3,c[1]=k,c[2]=k-1/3;for(var $=0;$<3;$++)c[$]<0&&(c[$]+=1),c[$]>1&&(c[$]-=1),6*c[$]<1?g[$]=d+(y-d)*6*c[$]:2*c[$]<1?g[$]=y:3*c[$]<2?g[$]=d+(y-d)*(2/3-c[$])*6:g[$]=d;r=[or(g[0]*255),or(g[1]*255),or(g[2]*255)],n=r[0],i=r[1],l=r[2]}return e.length>3?[n,i,l,e[3]]:[n,i,l,1]},ra=wr,ea=ra,aa=I,ta=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,na=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,oa=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,fa=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ia=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,ua=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,la=Math.round,sa=function(r){r=r.toLowerCase().trim();var e;if(aa.format.named)try{return aa.format.named(r)}catch{}if(e=r.match(ta)){for(var a=e.slice(1,4),t=0;t<3;t++)a[t]=+a[t];return a[3]=1,a}if(e=r.match(na)){for(var o=e.slice(1,5),f=0;f<4;f++)o[f]=+o[f];return o}if(e=r.match(oa)){for(var n=e.slice(1,4),i=0;i<3;i++)n[i]=la(n[i]*2.55);return n[3]=1,n}if(e=r.match(fa)){for(var l=e.slice(1,5),c=0;c<3;c++)l[c]=la(l[c]*2.55);return l[3]=+l[3],l}if(e=r.match(ia)){var g=e.slice(1,4);g[1]*=.01,g[2]*=.01;var y=ea(g);return y[3]=1,y}if(e=r.match(ua)){var d=e.slice(1,4);d[1]*=.01,d[2]*=.01;var k=ea(d);return k[3]=+e[4],k}};sa.test=function(r){return ta.test(r)||na.test(r)||oa.test(r)||fa.test(r)||ia.test(r)||ua.test(r)};var Rt=sa,St=Z,ca=C,va=I,Dt=m.type,Ft=Y,ha=Rt;ca.prototype.css=function(r){return Ft(this._rgb,r)},St.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ca,[null].concat(r,["css"])))},va.format.css=ha,va.autodetect.push({p:5,test:function(r){for(var e=[],a=arguments.length-1;a-- >0;)e[a]=arguments[a+1];if(!e.length&&Dt(r)==="string"&&ha.test(r))return"css"}});var ga=C,Et=Z,Tt=I,Lt=m.unpack;Tt.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=Lt(r,"rgba");return a[0]*=255,a[1]*=255,a[2]*=255,a},Et.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ga,[null].concat(r,["gl"])))},ga.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var Pt=m.unpack,Bt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=Pt(r,"rgb"),t=a[0],o=a[1],f=a[2],n=Math.min(t,o,f),i=Math.max(t,o,f),l=i-n,c=l*100/255,g=n/(255-l)*100,y;return l===0?y=Number.NaN:(t===i&&(y=(o-f)/l),o===i&&(y=2+(f-t)/l),f===i&&(y=4+(t-o)/l),y*=60,y<0&&(y+=360)),[y,c,g]},At=Bt,zt=m.unpack,Ot=Math.floor,Wt=function(){for(var r,e,a,t,o,f,n=[],i=arguments.length;i--;)n[i]=arguments[i];n=zt(n,"hcg");var l=n[0],c=n[1],g=n[2],y,d,k;g=g*255;var $=c*255;if(c===0)y=d=k=g;else{l===360&&(l=0),l>360&&(l-=360),l<0&&(l+=360),l/=60;var X=Ot(l),D=l-X,T=g*(1-c),z=T+$*(1-D),ar=T+$*D,er=T+$;switch(X){case 0:r=[er,ar,T],y=r[0],d=r[1],k=r[2];break;case 1:e=[z,er,T],y=e[0],d=e[1],k=e[2];break;case 2:a=[T,er,ar],y=a[0],d=a[1],k=a[2];break;case 3:t=[T,z,er],y=t[0],d=t[1],k=t[2];break;case 4:o=[ar,T,er],y=o[0],d=o[1],k=o[2];break;case 5:f=[er,T,z],y=f[0],d=f[1],k=f[2];break}}return[y,d,k,n.length>3?n[3]:1]},qt=Wt,Ht=m.unpack,It=m.type,Gt=Z,da=C,pa=I,Vt=At;da.prototype.hcg=function(){return Vt(this._rgb)},Gt.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(da,[null].concat(r,["hcg"])))},pa.format.hcg=qt,pa.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"hcg"),It(r)==="array"&&r.length===3)return"hcg"}});var Ut=m.unpack,Zt=m.last,te=Math.round,Jt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=Ut(r,"rgba"),t=a[0],o=a[1],f=a[2],n=a[3],i=Zt(r)||"auto";n===void 0&&(n=1),i==="auto"&&(i=n<1?"rgba":"rgb"),t=te(t),o=te(o),f=te(f);var l=t<<16|o<<8|f,c="000000"+l.toString(16);c=c.substr(c.length-6);var g="0"+te(n*255).toString(16);switch(g=g.substr(g.length-2),i.toLowerCase()){case"rgba":return"#"+c+g;case"argb":return"#"+g+c;default:return"#"+c}},ba=Jt,Qt=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,jt=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,Kt=function(r){if(r.match(Qt)){(r.length===4||r.length===7)&&(r=r.substr(1)),r.length===3&&(r=r.split(""),r=r[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16),a=e>>16,t=e>>8&255,o=e&255;return[a,t,o,1]}if(r.match(jt)){(r.length===5||r.length===9)&&(r=r.substr(1)),r.length===4&&(r=r.split(""),r=r[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var f=parseInt(r,16),n=f>>24&255,i=f>>16&255,l=f>>8&255,c=Math.round((f&255)/255*100)/100;return[n,i,l,c]}throw new Error("unknown hex color: "+r)},ma=Kt,rn=Z,ya=C,en=m.type,wa=I,an=ba;ya.prototype.hex=function(r){return an(this._rgb,r)},rn.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ya,[null].concat(r,["hex"])))},wa.format.hex=ma,wa.autodetect.push({p:4,test:function(r){for(var e=[],a=arguments.length-1;a-- >0;)e[a]=arguments[a+1];if(!e.length&&en(r)==="string"&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var tn=m.unpack,$a=m.TWOPI,nn=Math.min,on=Math.sqrt,fn=Math.acos,un=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=tn(r,"rgb"),t=a[0],o=a[1],f=a[2];t/=255,o/=255,f/=255;var n,i=nn(t,o,f),l=(t+o+f)/3,c=l>0?1-i/l:0;return c===0?n=NaN:(n=(t-o+(t-f))/2,n/=on((t-o)*(t-o)+(t-f)*(o-f)),n=fn(n),f>o&&(n=$a-n),n/=$a),[n*360,c,l]},ln=un,sn=m.unpack,Me=m.limit,Nr=m.TWOPI,Ce=m.PITHIRD,Rr=Math.cos,cn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];r=sn(r,"hsi");var a=r[0],t=r[1],o=r[2],f,n,i;return isNaN(a)&&(a=0),isNaN(t)&&(t=0),a>360&&(a-=360),a<0&&(a+=360),a/=360,a<1/3?(i=(1-t)/3,f=(1+t*Rr(Nr*a)/Rr(Ce-Nr*a))/3,n=1-(i+f)):a<2/3?(a-=1/3,f=(1-t)/3,n=(1+t*Rr(Nr*a)/Rr(Ce-Nr*a))/3,i=1-(f+n)):(a-=2/3,n=(1-t)/3,i=(1+t*Rr(Nr*a)/Rr(Ce-Nr*a))/3,f=1-(n+i)),f=Me(o*f*3),n=Me(o*n*3),i=Me(o*i*3),[f*255,n*255,i*255,r.length>3?r[3]:1]},vn=cn,hn=m.unpack,gn=m.type,dn=Z,ka=C,_a=I,pn=ln;ka.prototype.hsi=function(){return pn(this._rgb)},dn.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ka,[null].concat(r,["hsi"])))},_a.format.hsi=vn,_a.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=hn(r,"hsi"),gn(r)==="array"&&r.length===3)return"hsi"}});var bn=m.unpack,mn=m.type,yn=Z,xa=C,Ma=I,wn=qr;xa.prototype.hsl=function(){return wn(this._rgb)},yn.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(xa,[null].concat(r,["hsl"])))},Ma.format.hsl=ra,Ma.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=bn(r,"hsl"),mn(r)==="array"&&r.length===3)return"hsl"}});var $n=m.unpack,kn=Math.min,_n=Math.max,xn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];r=$n(r,"rgb");var a=r[0],t=r[1],o=r[2],f=kn(a,t,o),n=_n(a,t,o),i=n-f,l,c,g;return g=n/255,n===0?(l=Number.NaN,c=0):(c=i/n,a===n&&(l=(t-o)/i),t===n&&(l=2+(o-a)/i),o===n&&(l=4+(a-t)/i),l*=60,l<0&&(l+=360)),[l,c,g]},Mn=xn,Cn=m.unpack,Yn=Math.floor,Xn=function(){for(var r,e,a,t,o,f,n=[],i=arguments.length;i--;)n[i]=arguments[i];n=Cn(n,"hsv");var l=n[0],c=n[1],g=n[2],y,d,k;if(g*=255,c===0)y=d=k=g;else{l===360&&(l=0),l>360&&(l-=360),l<0&&(l+=360),l/=60;var $=Yn(l),X=l-$,D=g*(1-c),T=g*(1-c*X),z=g*(1-c*(1-X));switch($){case 0:r=[g,z,D],y=r[0],d=r[1],k=r[2];break;case 1:e=[T,g,D],y=e[0],d=e[1],k=e[2];break;case 2:a=[D,g,z],y=a[0],d=a[1],k=a[2];break;case 3:t=[D,T,g],y=t[0],d=t[1],k=t[2];break;case 4:o=[z,D,g],y=o[0],d=o[1],k=o[2];break;case 5:f=[g,D,T],y=f[0],d=f[1],k=f[2];break}}return[y,d,k,n.length>3?n[3]:1]},Nn=Xn,Rn=m.unpack,Sn=m.type,Dn=Z,Ca=C,Ya=I,Fn=Mn;Ca.prototype.hsv=function(){return Fn(this._rgb)},Dn.hsv=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Ca,[null].concat(r,["hsv"])))},Ya.format.hsv=Nn,Ya.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Rn(r,"hsv"),Sn(r)==="array"&&r.length===3)return"hsv"}});var ne={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},Sr=ne,En=m.unpack,Xa=Math.pow,Tn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=En(r,"rgb"),t=a[0],o=a[1],f=a[2],n=Ln(t,o,f),i=n[0],l=n[1],c=n[2],g=116*l-16;return[g<0?0:g,500*(i-l),200*(l-c)]},Ye=function(r){return(r/=255)<=.04045?r/12.92:Xa((r+.055)/1.055,2.4)},Xe=function(r){return r>Sr.t3?Xa(r,1/3):r/Sr.t2+Sr.t0},Ln=function(r,e,a){r=Ye(r),e=Ye(e),a=Ye(a);var t=Xe((.4124564*r+.3575761*e+.1804375*a)/Sr.Xn),o=Xe((.2126729*r+.7151522*e+.072175*a)/Sr.Yn),f=Xe((.0193339*r+.119192*e+.9503041*a)/Sr.Zn);return[t,o,f]},Na=Tn,Dr=ne,Pn=m.unpack,Bn=Math.pow,An=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];r=Pn(r,"lab");var a=r[0],t=r[1],o=r[2],f,n,i,l,c,g;return n=(a+16)/116,f=isNaN(t)?n:n+t/500,i=isNaN(o)?n:n-o/200,n=Dr.Yn*Re(n),f=Dr.Xn*Re(f),i=Dr.Zn*Re(i),l=Ne(3.2404542*f-1.5371385*n-.4985314*i),c=Ne(-.969266*f+1.8760108*n+.041556*i),g=Ne(.0556434*f-.2040259*n+1.0572252*i),[l,c,g,r.length>3?r[3]:1]},Ne=function(r){return 255*(r<=.00304?12.92*r:1.055*Bn(r,1/2.4)-.055)},Re=function(r){return r>Dr.t1?r*r*r:Dr.t2*(r-Dr.t0)},Ra=An,zn=m.unpack,On=m.type,Wn=Z,Sa=C,Da=I,qn=Na;Sa.prototype.lab=function(){return qn(this._rgb)},Wn.lab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Sa,[null].concat(r,["lab"])))},Da.format.lab=Ra,Da.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=zn(r,"lab"),On(r)==="array"&&r.length===3)return"lab"}});var Hn=m.unpack,In=m.RAD2DEG,Gn=Math.sqrt,Vn=Math.atan2,Un=Math.round,Zn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=Hn(r,"lab"),t=a[0],o=a[1],f=a[2],n=Gn(o*o+f*f),i=(Vn(f,o)*In+360)%360;return Un(n*1e4)===0&&(i=Number.NaN),[t,n,i]},Fa=Zn,Jn=m.unpack,Qn=Na,jn=Fa,Kn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=Jn(r,"rgb"),t=a[0],o=a[1],f=a[2],n=Qn(t,o,f),i=n[0],l=n[1],c=n[2];return jn(i,l,c)},ro=Kn,eo=m.unpack,ao=m.DEG2RAD,to=Math.sin,no=Math.cos,oo=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=eo(r,"lch"),t=a[0],o=a[1],f=a[2];return isNaN(f)&&(f=0),f=f*ao,[t,no(f)*o,to(f)*o]},Ea=oo,fo=m.unpack,io=Ea,uo=Ra,lo=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];r=fo(r,"lch");var a=r[0],t=r[1],o=r[2],f=io(a,t,o),n=f[0],i=f[1],l=f[2],c=uo(n,i,l),g=c[0],y=c[1],d=c[2];return[g,y,d,r.length>3?r[3]:1]},Ta=lo,so=m.unpack,co=Ta,vo=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=so(r,"hcl").reverse();return co.apply(void 0,a)},ho=vo,go=m.unpack,po=m.type,La=Z,oe=C,Se=I,Pa=ro;oe.prototype.lch=function(){return Pa(this._rgb)},oe.prototype.hcl=function(){return Pa(this._rgb).reverse()},La.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(oe,[null].concat(r,["lch"])))},La.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(oe,[null].concat(r,["hcl"])))},Se.format.lch=Ta,Se.format.hcl=ho,["lch","hcl"].forEach(function(r){return Se.autodetect.push({p:2,test:function(){for(var e=[],a=arguments.length;a--;)e[a]=arguments[a];if(e=go(e,r),po(e)==="array"&&e.length===3)return r}})});var bo={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},Ba=bo,mo=C,Aa=I,yo=m.type,Hr=Ba,wo=ma,$o=ba;mo.prototype.name=function(){for(var r=$o(this._rgb,"rgb"),e=0,a=Object.keys(Hr);e0;)e[a]=arguments[a+1];if(!e.length&&yo(r)==="string"&&Hr[r.toLowerCase()])return"named"}});var ko=m.unpack,_o=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=ko(r,"rgb"),t=a[0],o=a[1],f=a[2];return(t<<16)+(o<<8)+f},xo=_o,Mo=m.type,Co=function(r){if(Mo(r)=="number"&&r>=0&&r<=16777215){var e=r>>16,a=r>>8&255,t=r&255;return[e,a,t,1]}throw new Error("unknown num color: "+r)},Yo=Co,Xo=Z,za=C,Oa=I,No=m.type,Ro=xo;za.prototype.num=function(){return Ro(this._rgb)},Xo.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(za,[null].concat(r,["num"])))},Oa.format.num=Yo,Oa.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r.length===1&&No(r[0])==="number"&&r[0]>=0&&r[0]<=16777215)return"num"}});var So=Z,De=C,Wa=I,qa=m.unpack,Ha=m.type,Ia=Math.round;De.prototype.rgb=function(r){return r===void 0&&(r=!0),r===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Ia)},De.prototype.rgba=function(r){return r===void 0&&(r=!0),this._rgb.slice(0,4).map(function(e,a){return a<3?r===!1?e:Ia(e):e})},So.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(De,[null].concat(r,["rgb"])))},Wa.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=qa(r,"rgba");return a[3]===void 0&&(a[3]=1),a},Wa.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=qa(r,"rgba"),Ha(r)==="array"&&(r.length===3||r.length===4&&Ha(r[3])=="number"&&r[3]>=0&&r[3]<=1))return"rgb"}});var fe=Math.log,Do=function(r){var e=r/100,a,t,o;return e<66?(a=255,t=e<6?0:-155.25485562709179-.44596950469579133*(t=e-2)+104.49216199393888*fe(t),o=e<20?0:-254.76935184120902+.8274096064007395*(o=e-10)+115.67994401066147*fe(o)):(a=351.97690566805693+.114206453784165*(a=e-55)-40.25366309332127*fe(a),t=325.4494125711974+.07943456536662342*(t=e-50)-28.0852963507957*fe(t),o=255),[a,t,o,1]},Ga=Do,Fo=Ga,Eo=m.unpack,To=Math.round,Lo=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var a=Eo(r,"rgb"),t=a[0],o=a[2],f=1e3,n=4e4,i=.4,l;n-f>i;){l=(n+f)*.5;var c=Fo(l);c[2]/c[0]>=o/t?n=l:f=l}return To(l)},Po=Lo,Fe=Z,ie=C,Ee=I,Bo=Po;ie.prototype.temp=ie.prototype.kelvin=ie.prototype.temperature=function(){return Bo(this._rgb)},Fe.temp=Fe.kelvin=Fe.temperature=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ie,[null].concat(r,["temp"])))},Ee.format.temp=Ee.format.kelvin=Ee.format.temperature=Ga;var Ao=m.unpack,Te=Math.cbrt,zo=Math.pow,Oo=Math.sign,Wo=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=Ao(r,"rgb"),t=a[0],o=a[1],f=a[2],n=[Le(t/255),Le(o/255),Le(f/255)],i=n[0],l=n[1],c=n[2],g=Te(.4122214708*i+.5363325363*l+.0514459929*c),y=Te(.2119034982*i+.6806995451*l+.1073969566*c),d=Te(.0883024619*i+.2817188376*l+.6299787005*c);return[.2104542553*g+.793617785*y-.0040720468*d,1.9779984951*g-2.428592205*y+.4505937099*d,.0259040371*g+.7827717662*y-.808675766*d]},Va=Wo;function Le(r){var e=Math.abs(r);return e<.04045?r/12.92:(Oo(r)||1)*zo((e+.055)/1.055,2.4)}var qo=m.unpack,ue=Math.pow,Ho=Math.sign,Io=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];r=qo(r,"lab");var a=r[0],t=r[1],o=r[2],f=ue(a+.3963377774*t+.2158037573*o,3),n=ue(a-.1055613458*t-.0638541728*o,3),i=ue(a-.0894841775*t-1.291485548*o,3);return[255*Pe(4.0767416621*f-3.3077115913*n+.2309699292*i),255*Pe(-1.2684380046*f+2.6097574011*n-.3413193965*i),255*Pe(-.0041960863*f-.7034186147*n+1.707614701*i),r.length>3?r[3]:1]},Ua=Io;function Pe(r){var e=Math.abs(r);return e>.0031308?(Ho(r)||1)*(1.055*ue(e,1/2.4)-.055):r*12.92}var Go=m.unpack,Vo=m.type,Uo=Z,Za=C,Ja=I,Zo=Va;Za.prototype.oklab=function(){return Zo(this._rgb)},Uo.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Za,[null].concat(r,["oklab"])))},Ja.format.oklab=Ua,Ja.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Go(r,"oklab"),Vo(r)==="array"&&r.length===3)return"oklab"}});var Jo=m.unpack,Qo=Va,jo=Fa,Ko=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var a=Jo(r,"rgb"),t=a[0],o=a[1],f=a[2],n=Qo(t,o,f),i=n[0],l=n[1],c=n[2];return jo(i,l,c)},rf=Ko,ef=m.unpack,af=Ea,tf=Ua,nf=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];r=ef(r,"lch");var a=r[0],t=r[1],o=r[2],f=af(a,t,o),n=f[0],i=f[1],l=f[2],c=tf(n,i,l),g=c[0],y=c[1],d=c[2];return[g,y,d,r.length>3?r[3]:1]},of=nf,ff=m.unpack,uf=m.type,lf=Z,Qa=C,ja=I,sf=rf;Qa.prototype.oklch=function(){return sf(this._rgb)},lf.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qa,[null].concat(r,["oklch"])))},ja.format.oklch=of,ja.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ff(r,"oklch"),uf(r)==="array"&&r.length===3)return"oklch"}});var Ka=C,cf=m.type;Ka.prototype.alpha=function(r,e){return e===void 0&&(e=!1),r!==void 0&&cf(r)==="number"?e?(this._rgb[3]=r,this):new Ka([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]};var vf=C;vf.prototype.clipped=function(){return this._rgb._clipped||!1};var Mr=C,hf=ne;Mr.prototype.darken=function(r){r===void 0&&(r=1);var e=this,a=e.lab();return a[0]-=hf.Kn*r,new Mr(a,"lab").alpha(e.alpha(),!0)},Mr.prototype.brighten=function(r){return r===void 0&&(r=1),this.darken(-r)},Mr.prototype.darker=Mr.prototype.darken,Mr.prototype.brighter=Mr.prototype.brighten;var gf=C;gf.prototype.get=function(r){var e=r.split("."),a=e[0],t=e[1],o=this[a]();if(t){var f=a.indexOf(t)-(a.substr(0,2)==="ok"?2:0);if(f>-1)return o[f];throw new Error("unknown channel "+t+" in mode "+a)}else return o};var Fr=C,df=m.type,pf=Math.pow,bf=1e-7,mf=20;Fr.prototype.luminance=function(r){if(r!==void 0&&df(r)==="number"){if(r===0)return new Fr([0,0,0,this._rgb[3]],"rgb");if(r===1)return new Fr([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),a="rgb",t=mf,o=function(n,i){var l=n.interpolate(i,.5,a),c=l.luminance();return Math.abs(r-c)r?o(n,l):o(l,i)},f=(e>r?o(new Fr([0,0,0]),this):o(this,new Fr([255,255,255]))).rgb();return new Fr(f.concat([this._rgb[3]]))}return yf.apply(void 0,this._rgb.slice(0,3))};var yf=function(r,e,a){return r=Be(r),e=Be(e),a=Be(a),.2126*r+.7152*e+.0722*a},Be=function(r){return r/=255,r<=.03928?r/12.92:pf((r+.055)/1.055,2.4)},lr={},rt=C,et=m.type,le=lr,at=function(r,e,a){a===void 0&&(a=.5);for(var t=[],o=arguments.length-3;o-- >0;)t[o]=arguments[o+3];var f=t[0]||"lrgb";if(!le[f]&&!t.length&&(f=Object.keys(le)[0]),!le[f])throw new Error("interpolation mode "+f+" is not defined");return et(r)!=="object"&&(r=new rt(r)),et(e)!=="object"&&(e=new rt(e)),le[f](r,e,a).alpha(r.alpha()+a*(e.alpha()-r.alpha()))},tt=C,wf=at;tt.prototype.mix=tt.prototype.interpolate=function(r,e){e===void 0&&(e=.5);for(var a=[],t=arguments.length-2;t-- >0;)a[t]=arguments[t+2];return wf.apply(void 0,[this,r,e].concat(a))};var nt=C;nt.prototype.premultiply=function(r){r===void 0&&(r=!1);var e=this._rgb,a=e[3];return r?(this._rgb=[e[0]*a,e[1]*a,e[2]*a,a],this):new nt([e[0]*a,e[1]*a,e[2]*a,a],"rgb")};var Ae=C,$f=ne;Ae.prototype.saturate=function(r){r===void 0&&(r=1);var e=this,a=e.lch();return a[1]+=$f.Kn*r,a[1]<0&&(a[1]=0),new Ae(a,"lch").alpha(e.alpha(),!0)},Ae.prototype.desaturate=function(r){return r===void 0&&(r=1),this.saturate(-r)};var ot=C,ft=m.type;ot.prototype.set=function(r,e,a){a===void 0&&(a=!1);var t=r.split("."),o=t[0],f=t[1],n=this[o]();if(f){var i=o.indexOf(f)-(o.substr(0,2)==="ok"?2:0);if(i>-1){if(ft(e)=="string")switch(e.charAt(0)){case"+":n[i]+=+e;break;case"-":n[i]+=+e;break;case"*":n[i]*=+e.substr(1);break;case"/":n[i]/=+e.substr(1);break;default:n[i]=+e}else if(ft(e)==="number")n[i]=e;else throw new Error("unsupported value for Color.set");var l=new ot(n,o);return a?(this._rgb=l._rgb,this):l}throw new Error("unknown channel "+f+" in mode "+o)}else return n};var kf=C,_f=function(r,e,a){var t=r._rgb,o=e._rgb;return new kf(t[0]+a*(o[0]-t[0]),t[1]+a*(o[1]-t[1]),t[2]+a*(o[2]-t[2]),"rgb")};lr.rgb=_f;var xf=C,ze=Math.sqrt,Er=Math.pow,Mf=function(r,e,a){var t=r._rgb,o=t[0],f=t[1],n=t[2],i=e._rgb,l=i[0],c=i[1],g=i[2];return new xf(ze(Er(o,2)*(1-a)+Er(l,2)*a),ze(Er(f,2)*(1-a)+Er(c,2)*a),ze(Er(n,2)*(1-a)+Er(g,2)*a),"rgb")};lr.lrgb=Mf;var Cf=C,Yf=function(r,e,a){var t=r.lab(),o=e.lab();return new Cf(t[0]+a*(o[0]-t[0]),t[1]+a*(o[1]-t[1]),t[2]+a*(o[2]-t[2]),"lab")};lr.lab=Yf;var it=C,Tr=function(r,e,a,t){var o,f,n,i;t==="hsl"?(n=r.hsl(),i=e.hsl()):t==="hsv"?(n=r.hsv(),i=e.hsv()):t==="hcg"?(n=r.hcg(),i=e.hcg()):t==="hsi"?(n=r.hsi(),i=e.hsi()):t==="lch"||t==="hcl"?(t="hcl",n=r.hcl(),i=e.hcl()):t==="oklch"&&(n=r.oklch().reverse(),i=e.oklch().reverse());var l,c,g,y,d,k;(t.substr(0,1)==="h"||t==="oklch")&&(o=n,l=o[0],g=o[1],d=o[2],f=i,c=f[0],y=f[1],k=f[2]);var $,X,D,T;return!isNaN(l)&&!isNaN(c)?(c>l&&c-l>180?T=c-(l+360):c180?T=c+360-l:T=c-l,X=l+a*T):isNaN(l)?isNaN(c)?X=Number.NaN:(X=c,(d==1||d==0)&&t!="hsv"&&($=y)):(X=l,(k==1||k==0)&&t!="hsv"&&($=g)),$===void 0&&($=g+a*(y-g)),D=d+a*(k-d),t==="oklch"?new it([D,$,X],t):new it([X,$,D],t)},Xf=Tr,ut=function(r,e,a){return Xf(r,e,a,"lch")};lr.lch=ut,lr.hcl=ut;var Nf=C,Rf=function(r,e,a){var t=r.num(),o=e.num();return new Nf(t+a*(o-t),"num")};lr.num=Rf;var Sf=Tr,Df=function(r,e,a){return Sf(r,e,a,"hcg")};lr.hcg=Df;var Ff=Tr,Ef=function(r,e,a){return Ff(r,e,a,"hsi")};lr.hsi=Ef;var Tf=Tr,Lf=function(r,e,a){return Tf(r,e,a,"hsl")};lr.hsl=Lf;var Pf=Tr,Bf=function(r,e,a){return Pf(r,e,a,"hsv")};lr.hsv=Bf;var Af=C,zf=function(r,e,a){var t=r.oklab(),o=e.oklab();return new Af(t[0]+a*(o[0]-t[0]),t[1]+a*(o[1]-t[1]),t[2]+a*(o[2]-t[2]),"oklab")};lr.oklab=zf;var Of=Tr,Wf=function(r,e,a){return Of(r,e,a,"oklch")};lr.oklch=Wf;var Oe=C,qf=m.clip_rgb,We=Math.pow,qe=Math.sqrt,He=Math.PI,lt=Math.cos,st=Math.sin,Hf=Math.atan2,If=function(r,e,a){e===void 0&&(e="lrgb"),a===void 0&&(a=null);var t=r.length;a||(a=Array.from(new Array(t)).map(function(){return 1}));var o=t/a.reduce(function(X,D){return X+D});if(a.forEach(function(X,D){a[D]*=o}),r=r.map(function(X){return new Oe(X)}),e==="lrgb")return Gf(r,a);for(var f=r.shift(),n=f.get(e),i=[],l=0,c=0,g=0;g=360;)$-=360;n[k]=$}else n[k]=n[k]/i[k];return d/=t,new Oe(n,e).alpha(d>.99999?1:d,!0)},Gf=function(r,e){for(var a=r.length,t=[0,0,0,0],o=0;o.9999999&&(t[3]=1),new Oe(qf(t))},sr=Z,Lr=m.type,Vf=Math.pow,Ie=function(r){var e="rgb",a=sr("#ccc"),t=0,o=[0,1],f=[],n=[0,0],i=!1,l=[],c=!1,g=0,y=1,d=!1,k={},$=!0,X=1,D=function(p){if(p=p||["#fff","#000"],p&&Lr(p)==="string"&&sr.brewer&&sr.brewer[p.toLowerCase()]&&(p=sr.brewer[p.toLowerCase()]),Lr(p)==="array"){p.length===1&&(p=[p[0],p[0]]),p=p.slice(0);for(var x=0;x=i[R];)R++;return R-1}return 0},z=function(p){return p},ar=function(p){return p},er=function(p,x){var R,N;if(x==null&&(x=!1),isNaN(p)||p===null)return a;if(x)N=p;else if(i&&i.length>2){var tr=T(p);N=tr/(i.length-2)}else y!==g?N=(p-g)/(y-g):N=1;N=ar(N),x||(N=z(N)),X!==1&&(N=Vf(N,X)),N=n[0]+N*(1-n[0]-n[1]),N=Math.min(1,Math.max(0,N));var G=Math.floor(N*1e4);if($&&k[G])R=k[G];else{if(Lr(l)==="array")for(var L=0;L=O&&L===f.length-1){R=l[L];break}if(N>O&&N2){var L=p.map(function(W,q){return q/(p.length-1)}),O=p.map(function(W){return(W-g)/(y-g)});O.every(function(W,q){return L[q]===W})||(ar=function(W){if(W<=0||W>=1)return W;for(var q=0;W>=O[q+1];)q++;var vr=(W-O[q])/(O[q+1]-O[q]),_r=L[q]+vr*(L[q+1]-L[q]);return _r})}}return o=[g,y],F},F.mode=function(p){return arguments.length?(e=p,ir(),F):e},F.range=function(p,x){return D(p),F},F.out=function(p){return c=p,F},F.spread=function(p){return arguments.length?(t=p,F):t},F.correctLightness=function(p){return p==null&&(p=!0),d=p,ir(),d?z=function(x){for(var R=er(0,!0).lab()[0],N=er(1,!0).lab()[0],tr=R>N,G=er(x,!0).lab()[0],L=R+(N-R)*x,O=G-L,W=0,q=1,vr=20;Math.abs(O)>.01&&vr-- >0;)(function(){return tr&&(O*=-1),O<0?(W=x,x+=(q-x)*.5):(q=x,x+=(W-x)*.5),G=er(x,!0).lab()[0],O=G-L})();return x}:z=function(x){return x},F},F.padding=function(p){return p!=null?(Lr(p)==="number"&&(p=[p,p]),n=p,F):n},F.colors=function(p,x){arguments.length<2&&(x="hex");var R=[];if(arguments.length===0)R=l.slice(0);else if(p===1)R=[F(.5)];else if(p>1){var N=o[0],tr=o[1]-N;R=Uf(0,p,!1).map(function(q){return F(N+q/(p-1)*tr)})}else{r=[];var G=[];if(i&&i.length>2)for(var L=1,O=i.length,W=1<=O;W?LO;W?L++:L--)G.push((i[L-1]+i[L])*.5);else G=o;R=G.map(function(q){return F(q)})}return sr[x]&&(R=R.map(function(q){return q[x]()})),R},F.cache=function(p){return p!=null?($=p,F):$},F.gamma=function(p){return p!=null?(X=p,F):X},F.nodata=function(p){return p!=null?(a=sr(p),F):a},F};function Uf(r,e,a){for(var t=[],o=rf;o?n++:n--)t.push(n);return t}var Ir=C,Zf=Ie,Jf=function(r){for(var e=[1,1],a=1;a=5){var c,g,y;c=r.map(function(d){return d.lab()}),y=r.length-1,g=Jf(y),o=function(d){var k=1-d,$=[0,1,2].map(function(X){return c.reduce(function(D,T,z){return D+g[z]*Math.pow(k,y-z)*Math.pow(d,z)*T[X]},0)});return new Ir($,"lab")}}else throw new RangeError("No point in running bezier with only one color.");return o},jf=function(r){var e=Qf(r);return e.scale=function(){return Zf(e)},e},Ge=Z,cr=function(r,e,a){if(!cr[a])throw new Error("unknown blend mode "+a);return cr[a](r,e)},$r=function(r){return function(e,a){var t=Ge(a).rgb(),o=Ge(e).rgb();return Ge.rgb(r(t,o))}},kr=function(r){return function(e,a){var t=[];return t[0]=r(e[0],a[0]),t[1]=r(e[1],a[1]),t[2]=r(e[2],a[2]),t}},Kf=function(r){return r},ri=function(r,e){return r*e/255},ei=function(r,e){return r>e?e:r},ai=function(r,e){return r>e?r:e},ti=function(r,e){return 255*(1-(1-r/255)*(1-e/255))},ni=function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-e/255))},oi=function(r,e){return 255*(1-(1-e/255)/(r/255))},fi=function(r,e){return r===255?255:(r=255*(e/255)/(1-r/255),r>255?255:r)};cr.normal=$r(kr(Kf)),cr.multiply=$r(kr(ri)),cr.screen=$r(kr(ti)),cr.overlay=$r(kr(ni)),cr.darken=$r(kr(ei)),cr.lighten=$r(kr(ai)),cr.dodge=$r(kr(fi)),cr.burn=$r(kr(oi));for(var ii=cr,Ve=m.type,ui=m.clip_rgb,li=m.TWOPI,si=Math.pow,ci=Math.sin,vi=Math.cos,ct=Z,hi=function(r,e,a,t,o){r===void 0&&(r=300),e===void 0&&(e=-1.5),a===void 0&&(a=1),t===void 0&&(t=1),o===void 0&&(o=[0,1]);var f=0,n;Ve(o)==="array"?n=o[1]-o[0]:(n=0,o=[o,o]);var i=function(l){var c=li*((r+120)/360+e*l),g=si(o[0]+n*l,t),y=f!==0?a[0]+l*f:a,d=y*g*(1-g)/2,k=vi(c),$=ci(c),X=g+d*(-.14861*k+1.78277*$),D=g+d*(-.29227*k-.90649*$),T=g+d*(1.97294*k);return ct(ui([X*255,D*255,T*255,1]))};return i.start=function(l){return l==null?r:(r=l,i)},i.rotations=function(l){return l==null?e:(e=l,i)},i.gamma=function(l){return l==null?t:(t=l,i)},i.hue=function(l){return l==null?a:(a=l,Ve(a)==="array"?(f=a[1]-a[0],f===0&&(a=a[1])):f=0,i)},i.lightness=function(l){return l==null?o:(Ve(l)==="array"?(o=l,n=l[1]-l[0]):(o=[l,l],n=0),i)},i.scale=function(){return ct.scale(i)},i.hue(a),i},gi=C,di="0123456789abcdef",pi=Math.floor,bi=Math.random,mi=function(){for(var r="#",e=0;e<6;e++)r+=di.charAt(pi(bi()*16));return new gi(r,"hex")},Ue=K,vt=Math.log,yi=Math.pow,wi=Math.floor,$i=Math.abs,ht=function(r,e){e===void 0&&(e=null);var a={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return Ue(r)==="object"&&(r=Object.values(r)),r.forEach(function(t){e&&Ue(t)==="object"&&(t=t[e]),t!=null&&!isNaN(t)&&(a.values.push(t),a.sum+=t,ta.max&&(a.max=t),a.count+=1)}),a.domain=[a.min,a.max],a.limits=function(t,o){return gt(a,t,o)},a},gt=function(r,e,a){e===void 0&&(e="equal"),a===void 0&&(a=7),Ue(r)=="array"&&(r=ht(r));var t=r.min,o=r.max,f=r.values.sort(function(Je,Qe){return Je-Qe});if(a===1)return[t,o];var n=[];if(e.substr(0,1)==="c"&&(n.push(t),n.push(o)),e.substr(0,1)==="e"){n.push(t);for(var i=1;i 0");var l=Math.LOG10E*vt(t),c=Math.LOG10E*vt(o);n.push(t);for(var g=1;g200&&(ar=!1)}for(var xr={},Pr=0;Prt?(a+.05)/(t+.05):(t+.05)/(a+.05)},bt=C,br=Math.sqrt,j=Math.pow,_i=Math.min,xi=Math.max,mt=Math.atan2,yt=Math.abs,se=Math.cos,wt=Math.sin,Mi=Math.exp,$t=Math.PI,Ci=function(r,e,a,t,o){a===void 0&&(a=1),t===void 0&&(t=1),o===void 0&&(o=1);var f=function(Yr){return 360*Yr/(2*$t)},n=function(Yr){return 2*$t*Yr/360};r=new bt(r),e=new bt(e);var i=Array.from(r.lab()),l=i[0],c=i[1],g=i[2],y=Array.from(e.lab()),d=y[0],k=y[1],$=y[2],X=(l+d)/2,D=br(j(c,2)+j(g,2)),T=br(j(k,2)+j($,2)),z=(D+T)/2,ar=.5*(1-br(j(z,7)/(j(z,7)+j(25,7)))),er=c*(1+ar),ir=k*(1+ar),F=br(j(er,2)+j(g,2)),p=br(j(ir,2)+j($,2)),x=(F+p)/2,R=f(mt(g,er)),N=f(mt($,ir)),tr=R>=0?R:R+360,G=N>=0?N:N+360,L=yt(tr-G)>180?(tr+G+360)/2:(tr+G)/2,O=1-.17*se(n(L-30))+.24*se(n(2*L))+.32*se(n(3*L+6))-.2*se(n(4*L-63)),W=G-tr;W=yt(W)<=180?W:G<=tr?W+360:W-360,W=2*br(F*p)*wt(n(W)/2);var q=d-l,vr=p-F,_r=1+.015*j(X-50,2)/br(20+j(X-50,2)),xr=1+.045*x,Pr=1+.015*x*O,Br=30*Mi(-j((L-275)/25,2)),mr=2*br(j(x,7)/(j(x,7)+j(25,7))),Cr=-mr*wt(2*n(Br)),Gr=br(j(q/(a*_r),2)+j(vr/(t*xr),2)+j(W/(o*Pr),2)+Cr*(vr/(t*xr))*(W/(o*Pr)));return xi(0,_i(100,Gr))},kt=C,Yi=function(r,e,a){a===void 0&&(a="lab"),r=new kt(r),e=new kt(e);var t=r.get(a),o=e.get(a),f=0;for(var n in t){var i=(t[n]||0)-(o[n]||0);f+=i*i}return Math.sqrt(f)},Xi=C,Ni=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];try{return new(Function.prototype.bind.apply(Xi,[null].concat(r))),!0}catch{return!1}},_t=Z,xt=Ie,Ri={cool:function(){return xt([_t.hsl(180,1,.9),_t.hsl(250,.7,.4)])},hot:function(){return xt(["#000","#f00","#ff0","#fff"]).mode("rgb")}},ce={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},Ze=0,Mt=Object.keys(ce);Ze{const[E,h]=yr({width:window.innerHeight*window.devicePixelRatio,height:window.innerWidth*window.devicePixelRatio}),u=()=>{const v=window.innerHeight*window.devicePixelRatio,M=window.innerWidth*window.devicePixelRatio;h({width:M,height:v})};return Ar(()=>{u(),window.addEventListener("resize",u)}),Vr(()=>{window.removeEventListener("resize",u)}),[E,h]},qi=()=>{const[E,h]=yr(window.devicePixelRatio);let u;const v=()=>{h(window.devicePixelRatio),u&&(u.removeEventListener("change",v),u=void 0),u=window.matchMedia(`(resolution: ${E}dppx)`),u.addEventListener("change",v,{once:!0})};return Ar(()=>{v()}),Vr(()=>{u&&(u.removeEventListener("change",v),u=void 0)}),E};class Hi{constructor(){const[h,u]=yr([1,0,1]),[v,M]=yr([1,0,1]);[this.x,this.setX]=[h,u],[this.y,this.setY]=[v,M]}setAxisX(h,u,v){this.setX([h,u,v])}setAxisY(h,u,v){this.setY([h,u,v])}getDrawPositionX(h){const[u,v,M]=this.x();return v>M||v>u||M>u?[0,0]:[Math.round(h*(v/u)),Math.round(h*(M/u))]}getDrawPositionY(h){const[u,v,M]=this.y();return v>M||v>u||M>u?[0,0]:[Math.round(h*(v/u)),Math.round(h*(M/u))]}getXOfTotal(){const[h,u,v]=this.x();return(v-u)/h}getYOfTotal(){const[h,u,v]=this.y();return(v-u)/h}getProgressX(){const[h,,u]=this.x();return u/h}getProgressY(){const[h,,u]=this.y();return u/h}getRangeX(){const[,h,u]=this.x();return[h,u]}getRangeY(){const[,h,u]=this.y();return[h,u]}isHitScrollX(h,u){if(this.prevX){const[v,M,U,P]=this.prevX;return h>=v&&h<=v+U&&u>=M&&u<=M+P}else return!1}isHitScrollY(h,u){if(this.prevY){const[v,M,U,P]=this.prevY;return h>=v&&h<=v+U&&u>=M&&u<=M+P}else return!1}isHitScroll(h,u){return this.isHitScrollX(h,u)||this.isHitScrollY(h,u)}canScrollX(h){const[u,v,M]=this.x();return v+h<0?!1:!(M+h>u)}canScrollY(h){const[u,v,M]=this.y();return v+h<0?!1:!(M+h>u)}}function Ii(E){const[h,u]=yr(!1);let v=0;const M=H=>{v=requestAnimationFrame(M),E(H)},U=()=>{h()||(u(!0),v=requestAnimationFrame(M))},P=()=>{u(!1),cancelAnimationFrame(v)};return Vr(P),[h,U,P]}const Gi=Oi('');let ge;(function(E){E[E.direct=0]="direct",E[E.stylus=1]="stylus"})(ge||(ge={}));let V;(function(E){E[E.hand=0]="hand",E[E.pen=1]="pen",E[E.erase=2]="erase"})(V||(V={}));class Vi{constructor(h,u){const[v,M]=yr(h);[this.color,this.setColor]=[v,M];const[U,P]=yr(u);[this.lineWidthFactor,this.setLineWidthFactor]=[U,P];const[H,nr]=yr(V.pen);[this.tool,this.setTool]=[H,nr],this.offscreen=document.createElement("canvas");const K=this.offscreen.getContext("2d");if(!K)throw new Error("unable get 2d context");this.ctx2d=K,this.scrollCtl=new Hi,this.isBufferDirty=!0,this.viewpointBufferRefreshNeeded=!1}setOffscreenSize([h,u]){this.offscreen.width=h,this.offscreen.height=u}resetCanvas(){this.ctx2d.clearRect(0,0,this.offscreen.width,this.offscreen.height),this.viewpointBufferRefreshNeeded=!0,this.isBufferDirty=!0}translateColor(h){return typeof h=="string"?h==="erase"?"white":h:h.hex()}draw(h){const u=this.ctx2d;if(u.lineCap="round",u.lineJoin="round",h.length<=0)return;const v=h.length-1;if(h.length>=3){const M=(h[v].x+h[v-1].x)/2,U=(h[v].y+h[v-1].y)/2;u.lineWidth=h[v-1].lineWidth,u.quadraticCurveTo(h[v-1].x,h[v-1].y,M,U),u.strokeStyle=Ke.mix(this.translateColor(h[v-1].color),this.translateColor(h[v].color)).hex(),u.stroke(),u.beginPath(),u.moveTo(M,U)}else{const M=h[v];u.lineWidth=M.lineWidth,u.strokeStyle=this.translateColor(M.color),u.beginPath(),u.moveTo(M.x,M.y),u.stroke()}this.isBufferDirty=!0}}const Ji=E=>{const h=zi({width:1280,height:720},E),u=h.ctl||new Vi("red",40),v=u.scrollCtl;let M,U,P,H,nr=!1,K=!1,hr=!1,fr=0,Q=[];const[zr]=Wi(),[ur,m]=yr(),I=()=>v.getRangeX()[0],gr=()=>v.getRangeY()[0],A=qi(),Or=s=>Ke("black").alpha(s?1:.5).hex(),dr=(s,b)=>{const w=Math.round(s?20:12),_=w+(s||b?0:2);return[w,_]},Ur=()=>{if(!!U)if(v.getXOfTotal()<1){const{width:s,height:b}=zr(),[w,_]=v.getDrawPositionX(s);U.fillStyle=Or(P);const[S,B]=dr(nr,P),Y=[w,b-B,_-w,S];v.prevX&&v.prevX!==Y&&U.clearRect(...v.prevX),U.fillRect(...Y),v.prevX=Y}else v.prevX=void 0},C=()=>{if(!!U)if(v.getYOfTotal()<1){const{width:s,height:b}=zr(),[w,_]=v.getDrawPositionY(b);U.fillStyle=Or(H);const[S,B]=dr(K,H),Y=[s-B,w,S,_-w];v.prevY&&v.prevY!==Y&&U.clearRect(...v.prevY),U.fillRect(...Y),v.prevY=Y}else v.prevY=void 0},Xr=()=>{if(!U)return;const s=U,b=u.offscreen;u.viewpointBufferRefreshNeeded&&(s.clearRect(0,0,M.width,M.height),u.viewpointBufferRefreshNeeded=!1),s.drawImage(b,I(),gr(),M.width,M.height,0,0,M.width,M.height),Ur(),C(),u.isBufferDirty=!1},[,Z]=Ii(()=>u.isBufferDirty?Xr():void 0),Zr=()=>{const{width:s,height:b}=zr();M.width=s,M.height=b,v.setX([u.offscreen.width,0,s]),v.setY([u.offscreen.height,0,b]),u.viewpointBufferRefreshNeeded=!0,u.isBufferDirty=!0},Jr=()=>{nr=!1,K=!1,P=void 0,H=void 0,hr=!1,Q=[],fr=0,pr(Q)},pr=function(s){const b=u.ctx2d;if(b.lineCap="round",b.lineJoin="round",s.length<=0)return;const w=s.length-1;if(s.length>=3){const _=(s[w].x+s[w-1].x)/2,S=(s[w].y+s[w-1].y)/2;b.lineWidth=s[w-1].lineWidth,b.quadraticCurveTo(s[w-1].x,s[w-1].y,_,S),b.strokeStyle=Ke.mix(u.translateColor(s[w-1].color),u.translateColor(s[w].color)).hex(),b.stroke(),b.beginPath(),b.moveTo(_,S)}else{const _=s[w];b.lineWidth=_.lineWidth,b.strokeStyle=u.translateColor(_.color),b.beginPath(),b.moveTo(_.x,_.y),b.stroke()}u.isBufferDirty=!0},de=s=>{if(s.touches.length===1){s.preventDefault();const b=s.touches[0],w=b.pageX*A(),_=b.pageY*A();if(v.isHitScrollX(w,_))nr=!0,P=w;else if(v.isHitScrollY(w,_))K=!0,H=_;else{const S=b.force>0?b.force:.1,B=w+I(),Y=_+gr();if(hr=!0,Q.push({x:B,y:Y,lineWidth:fr,color:u.tool()===V.erase?"erase":u.color()}),pr(Q),h.onStart){const J={x:B,y:Y,pressure:S,hasForce:!0};ur()&&(J.touch=he(ve({},b),{type:ur()})),h.onStart(Q,J)}}}},pe=s=>{if(s.button!==0)return;s.preventDefault();const b=s.pageX*A(),w=s.pageY*A();if(v.isHitScrollX(b,w))nr=!0,P=b;else if(v.isHitScrollY(b,w))K=!0,H=w;else{const S=b+I(),B=w+gr();if(hr=!0,fr=Math.log(1+1)*u.lineWidthFactor(),Q.push({x:S,y:B,lineWidth:fr,color:u.tool()===V.erase?"erase":u.color()}),pr(Q),h.onStart){const Y={x:S,y:B,pressure:1,hasForce:!1};h.onStart(Q,Y)}}},be=s=>{if(s.touches.length===1){s.preventDefault();const b=s.touches[0],w=b.pageX*A(),_=b.pageY*A(),S=nr,B=K;if(nr=typeof P=="number"||v.isHitScrollX(w,_),K=typeof H=="number"||v.isHitScrollY(w,_),(S!==nr||B!==K)&&(u.isBufferDirty=!0),P){s.preventDefault();const Y=Math.round((w-(P||0))*v.getXOfTotal()*A());v.canScrollX(Y)&&(v.setX(([J,or,wr])=>[J,or+Y,wr+Y]),u.isBufferDirty=!0,u.viewpointBufferRefreshNeeded=!0),P=w}else if(H){s.preventDefault();const Y=Math.round((_-(H||0))*v.getYOfTotal()*A());v.canScrollY(Y)&&(v.setY(([J,or,wr])=>[J,or+Y,wr+Y]),u.isBufferDirty=!0,u.viewpointBufferRefreshNeeded=!0),H=_}else if(hr){s.preventDefault();const Y=b.force>0?b.force:.1,J=w+I(),or=_+gr();if(fr=Math.log(Y+1)*u.lineWidthFactor()*.2+fr*.8,Q.push({x:J,y:or,lineWidth:fr,color:u.tool()===V.erase?"erase":u.color()}),pr(Q),h.onDrawing){const wr={x:J,y:or,pressure:Y,hasForce:!0};ur()&&(wr.touch=he(ve({},b),{type:ur()})),h.onDrawing(Q,wr)}}}},me=s=>{const b=s.pageX*A(),w=s.pageY*A(),_=nr,S=K;if(nr=typeof P=="number"||v.isHitScrollX(b,w),K=typeof H=="number"||v.isHitScrollY(b,w),(_!==nr||S!==K)&&(u.isBufferDirty=!0),P){s.preventDefault();const B=Math.round((b-(P||0))*v.getXOfTotal()*A());v.canScrollX(B)&&(v.setX(([Y,J,or])=>[Y,J+B,or+B]),u.isBufferDirty=!0,u.viewpointBufferRefreshNeeded=!0),P=b}else if(H){s.preventDefault();const B=Math.round((w-(H||0))*v.getYOfTotal()*A());v.canScrollY(B)&&(v.setY(([Y,J,or])=>[Y,J+B,or+B]),u.isBufferDirty=!0,u.viewpointBufferRefreshNeeded=!0),H=w}else if(hr){s.preventDefault();const B=1,Y=b+I(),J=w+gr();if(fr=Math.log(B+1)*u.lineWidthFactor()*.2+fr*.8,Q.push({x:Y,y:J,lineWidth:fr,color:u.tool()===V.erase?"erase":u.color()}),pr(Q),h.onDrawing){const or={x:Y,y:J,pressure:B,hasForce:!1};h.onDrawing(Q,or)}}},ye=s=>{if(s.touches.length===1){const b=s.touches[0],w=b.pageX*A(),_=b.pageY*A();if(P=void 0,H=void 0,hr){const S=b.force>0?b.force:.1;hr=!1,Q=[],fr=0,pr(Q);const B=w+I(),Y=_+gr();if(h.onEnd){const J={x:B,y:Y,pressure:S,hasForce:!0};ur()&&(J.touch=he(ve({},b),{type:ur()})),h.onEnd(J)}}}},Qr=s=>{const w=s.pageX*A(),_=s.pageY*A();P=void 0,H=void 0;const S=w+I(),B=_+gr();if(hr=!1,Q=[],fr=0,pr(Q),h.onEnd){const Y={x:S,y:B,pressure:1,hasForce:!1};h.onEnd(Y)}},jr=s=>{if(nr){s.preventDefault();const b=s.deltaY;v.canScrollX(b)&&(v.setX(([w,_,S])=>[w,_+b,S+b]),u.viewpointBufferRefreshNeeded=!0,u.isBufferDirty=!0)}else if(K){s.preventDefault();const b=s.deltaY;v.canScrollY(b)&&(v.setY(([w,_,S])=>[w,_+b,S+b]),u.viewpointBufferRefreshNeeded=!0,u.isBufferDirty=!0)}else if(s.shiftKey){if(s.preventDefault(),s.deltaX!==0){const b=s.deltaX;v.canScrollX(b)&&(v.setX(([w,_,S])=>[w,_+b,S+b]),u.viewpointBufferRefreshNeeded=!0,u.isBufferDirty=!0)}if(s.deltaY!==0){const b=s.deltaY;v.canScrollY(b)&&(v.setY(([w,_,S])=>[w,_+b,S+b]),u.viewpointBufferRefreshNeeded=!0,u.isBufferDirty=!0)}}},Kr=s=>{s.preventDefault();let b,w;if(typeof s.touches!="undefined")if(s.touches.length===1){const _=s.touches[0];b=_.pageX*A(),w=_.pageY*A()}else return;else b=s.pageX*A(),w=s.pageY*A();P=b,H=w},re=s=>{s.preventDefault();let b,w;if(typeof s.touches!="undefined")if(s.touches.length===1){const _=s.touches[0];b=_.pageX*A(),w=_.pageY*A()}else return;else b=s.pageX*A(),w=s.pageY*A();if(P){const _=-Math.round((b-(P||0))*v.getXOfTotal()*A());v.canScrollX(_)&&(v.setX(([S,B,Y])=>[S,B+_,Y+_]),u.isBufferDirty=!0,u.viewpointBufferRefreshNeeded=!0),P=b}if(H){const _=-Math.round((w-(H||0))*v.getYOfTotal()*A());v.canScrollY(_)&&(v.setY(([S,B,Y])=>[S,B+_,Y+_]),u.isBufferDirty=!0,u.viewpointBufferRefreshNeeded=!0),H=w}u.viewpointBufferRefreshNeeded=!0},ee=s=>{s.preventDefault(),P=void 0,H=void 0,u.isBufferDirty=!0},we=s=>{m(void 0),u.tool()===V.pen||u.tool()===V.erase?pe(s):u.tool()===V.hand&&Kr(s)},$e=s=>{const b=s.touches[0].touchType||"direct";m(b==="direct"?ge.direct:ge.stylus),u.tool()===V.pen||u.tool()===V.erase?de(s):u.tool()===V.hand&&Kr(s)},Wr=s=>{u.tool()===V.pen||u.tool()===V.erase?be(s):u.tool()===V.hand&&re(s)},ke=s=>{u.tool()===V.pen||u.tool()===V.erase?me(s):u.tool()===V.hand&&re(s)},ae=s=>{u.tool()===V.pen||u.tool()===V.erase?ye(s):u.tool()===V.hand&&ee(s)},_e=s=>{u.tool()===V.pen||u.tool()===V.erase?Qr(s):u.tool()===V.hand&&ee(s)},xe=s=>{if(h.onContextMenu){s.preventDefault();const b=s.pageX*A(),w=s.pageY*A(),_=b+I(),S=w+gr();h.onContextMenu({pageX:s.pageX,pageY:s.pageY,broadX:_,broadY:S,devicePixelRatio:A()})}};je(()=>{if(h.onTouchTypeChanged){const s=ur();s&&h.onTouchTypeChanged(s)}}),je(()=>{Zr()}),je(()=>{u.tool()===V.hand?M.style.cursor="grab":M.style.cursor="default"}),Ar(()=>{const s=M.getContext("2d");s?(U=s,s.strokeStyle="black"):console.error("browser does not support 2d context")}),Ar(()=>{const s=document.querySelector("body");s&&s.classList.add("draw-broad-body")}),Vr(()=>{const s=document.querySelector("body");s&&s.classList.remove("draw-broad-body")}),Ar(()=>Z());const qr=()=>{Zr()};return Ar(()=>{u.offscreen.addEventListener("resize",qr)}),Vr(()=>{u.offscreen.removeEventListener("resize",qr)}),(()=>{const s=Gi.cloneNode(!0);s.addEventListener("mouseleave",Jr),s.addEventListener("wheel",jr),s.$$contextmenu=xe,s.$$mouseup=_e,s.addEventListener("touchcancel",ae),s.$$touchend=ae,s.$$mousemove=ke,s.$$touchmove=Wr,s.$$mousedown=we,s.$$touchstart=$e;const b=M;return typeof b=="function"?b(s):M=s,s})()};Ai(["touchstart","mousedown","touchmove","mousemove","touchend","mouseup","contextmenu"]);export{V as D,Vi as a,Ji as b}; -//# sourceMappingURL=index.c1adcc6d.js.map diff --git a/source/files/magicbroad/assets/index.c1adcc6d.js.map b/source/files/magicbroad/assets/index.c1adcc6d.js.map deleted file mode 100644 index 84fd55e..0000000 --- a/source/files/magicbroad/assets/index.c1adcc6d.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.c1adcc6d.js","sources":["../../node_modules/chroma-js/chroma.js","../../src/widgets/DrawBroad/utils.ts","../../src/widgets/DrawBroad/ScrollbarController.ts","../../node_modules/@solid-primitives/raf/dist/index.js","../../src/widgets/DrawBroad/index.tsx"],"sourcesContent":["/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.chroma = factory());\n})(this, (function () { 'use strict';\n\n var limit$2 = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var limit$1 = limit$2;\n\n var clip_rgb$3 = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit$1(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit$1(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i$1 = 0, list$1 = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i$1 < list$1.length; i$1 += 1) {\n var name = list$1[i$1];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type$p = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var type$o = type$p;\n\n var unpack$B = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type$o(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var type$n = type$p;\n\n var last$4 = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type$n(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI$2 = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb$3,\n \tlimit: limit$2,\n \ttype: type$p,\n \tunpack: unpack$B,\n \tlast: last$4,\n \tPI: PI$2,\n \tTWOPI: PI$2*2,\n \tPITHIRD: PI$2/3,\n \tDEG2RAD: PI$2 / 180,\n \tRAD2DEG: 180 / PI$2\n };\n\n var input$h = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$3 = utils.last;\n var clip_rgb$2 = utils.clip_rgb;\n var type$m = utils.type;\n var _input = input$h;\n\n var Color$D = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$m(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$3(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!_input.sorted) {\n _input.autodetect = _input.autodetect.sort(function (a,b) { return b.p - a.p; });\n _input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = _input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (_input.format[mode]) {\n var rgb = _input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$2(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color$D.prototype.toString = function toString () {\n if (type$m(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color$D;\n\n var chroma$k = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma$k.Color, [ null ].concat( args) ));\n };\n\n chroma$k.Color = Color_1;\n chroma$k.version = '2.4.2';\n\n var chroma_1 = chroma$k;\n\n var unpack$A = utils.unpack;\n var max$2 = Math.max;\n\n var rgb2cmyk$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$A(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max$2(r,max$2(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk$1;\n\n var unpack$z = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$z(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var chroma$j = chroma_1;\n var Color$C = Color_1;\n var input$g = input$h;\n var unpack$y = utils.unpack;\n var type$l = utils.type;\n\n var rgb2cmyk = rgb2cmyk_1;\n\n Color$C.prototype.cmyk = function() {\n return rgb2cmyk(this._rgb);\n };\n\n chroma$j.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$C, [ null ].concat( args, ['cmyk']) ));\n };\n\n input$g.format.cmyk = cmyk2rgb_1;\n\n input$g.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$y(args, 'cmyk');\n if (type$l(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$x = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$x(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css$1;\n\n var unpack$w = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl$3 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$w(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl$3;\n\n var unpack$v = utils.unpack;\n var last$1 = utils.last;\n var hsl2css = hsl2css_1;\n var rgb2hsl$2 = rgb2hsl_1;\n var round$6 = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$v(args, 'rgba');\n var mode = last$1(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css(rgb2hsl$2(rgba), mode);\n }\n rgba[0] = round$6(rgba[0]);\n rgba[1] = round$6(rgba[1]);\n rgba[2] = round$6(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css$1;\n\n var unpack$u = utils.unpack;\n var round$5 = Math.round;\n\n var hsl2rgb$1 = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$u(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$5(c[0]*255),round$5(c[1]*255),round$5(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb$1;\n\n var hsl2rgb = hsl2rgb_1;\n var input$f = input$h;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$4 = Math.round;\n\n var css2rgb$1 = function (css) {\n css = css.toLowerCase().trim();\n var m;\n\n if (input$f.format.named) {\n try {\n return input$f.format.named(css);\n } catch (e) {\n // eslint-disable-next-line\n }\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb$1.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb$1;\n\n var chroma$i = chroma_1;\n var Color$B = Color_1;\n var input$e = input$h;\n var type$k = utils.type;\n\n var rgb2css = rgb2css_1;\n var css2rgb = css2rgb_1;\n\n Color$B.prototype.css = function(mode) {\n return rgb2css(this._rgb, mode);\n };\n\n chroma$i.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$B, [ null ].concat( args, ['css']) ));\n };\n\n input$e.format.css = css2rgb;\n\n input$e.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$k(h) === 'string' && css2rgb.test(h)) {\n return 'css';\n }\n }\n });\n\n var Color$A = Color_1;\n var chroma$h = chroma_1;\n var input$d = input$h;\n var unpack$t = utils.unpack;\n\n input$d.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$t(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma$h.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$A, [ null ].concat( args, ['gl']) ));\n };\n\n Color$A.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$s = utils.unpack;\n\n var rgb2hcg$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$s(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg$1;\n\n var unpack$r = utils.unpack;\n var floor$3 = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$r(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor$3(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$q = utils.unpack;\n var type$j = utils.type;\n var chroma$g = chroma_1;\n var Color$z = Color_1;\n var input$c = input$h;\n\n var rgb2hcg = rgb2hcg_1;\n\n Color$z.prototype.hcg = function() {\n return rgb2hcg(this._rgb);\n };\n\n chroma$g.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$z, [ null ].concat( args, ['hcg']) ));\n };\n\n input$c.format.hcg = hcg2rgb_1;\n\n input$c.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'hcg');\n if (type$j(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$p = utils.unpack;\n var last = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$p(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex$2;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;\n\n var hex2rgb$1 = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 5 || hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n // expand short-notation to full eight-digit\n if (hex.length === 4) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3];\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb$1;\n\n var chroma$f = chroma_1;\n var Color$y = Color_1;\n var type$i = utils.type;\n var input$b = input$h;\n\n var rgb2hex$1 = rgb2hex_1;\n\n Color$y.prototype.hex = function(mode) {\n return rgb2hex$1(this._rgb, mode);\n };\n\n chroma$f.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$y, [ null ].concat( args, ['hex']) ));\n };\n\n input$b.format.hex = hex2rgb_1;\n input$b.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$i(h) === 'string' && [3,4,5,6,7,8,9].indexOf(h.length) >= 0) {\n return 'hex';\n }\n }\n });\n\n var unpack$o = utils.unpack;\n var TWOPI$2 = utils.TWOPI;\n var min$2 = Math.min;\n var sqrt$4 = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min$2(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt$4((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI$2 - h;\n }\n h /= TWOPI$2;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi$1;\n\n var unpack$n = utils.unpack;\n var limit = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos$4 = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$n(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit(i*r*3);\n g = limit(i*g*3);\n b = limit(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$m = utils.unpack;\n var type$h = utils.type;\n var chroma$e = chroma_1;\n var Color$x = Color_1;\n var input$a = input$h;\n\n var rgb2hsi = rgb2hsi_1;\n\n Color$x.prototype.hsi = function() {\n return rgb2hsi(this._rgb);\n };\n\n chroma$e.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$x, [ null ].concat( args, ['hsi']) ));\n };\n\n input$a.format.hsi = hsi2rgb_1;\n\n input$a.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'hsi');\n if (type$h(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$l = utils.unpack;\n var type$g = utils.type;\n var chroma$d = chroma_1;\n var Color$w = Color_1;\n var input$9 = input$h;\n\n var rgb2hsl$1 = rgb2hsl_1;\n\n Color$w.prototype.hsl = function() {\n return rgb2hsl$1(this._rgb);\n };\n\n chroma$d.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$w, [ null ].concat( args, ['hsl']) ));\n };\n\n input$9.format.hsl = hsl2rgb_1;\n\n input$9.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'hsl');\n if (type$g(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$k = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$k(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv$1 = rgb2hsl;\n\n var unpack$j = utils.unpack;\n var floor$2 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$j(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$2(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$i = utils.unpack;\n var type$f = utils.type;\n var chroma$c = chroma_1;\n var Color$v = Color_1;\n var input$8 = input$h;\n\n var rgb2hsv = rgb2hsv$1;\n\n Color$v.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma$c.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$v, [ null ].concat( args, ['hsv']) ));\n };\n\n input$8.format.hsv = hsv2rgb_1;\n\n input$8.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$i(args, 'hsv');\n if (type$f(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var LAB_CONSTANTS$3 = labConstants;\n var unpack$h = utils.unpack;\n var pow$a = Math.pow;\n\n var rgb2lab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$h(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow$a((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > LAB_CONSTANTS$3.t3) { return pow$a(t, 1 / 3); }\n return t / LAB_CONSTANTS$3.t2 + LAB_CONSTANTS$3.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS$3.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS$3.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS$3.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab$2;\n\n var LAB_CONSTANTS$2 = labConstants;\n var unpack$g = utils.unpack;\n var pow$9 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = LAB_CONSTANTS$2.Yn * lab_xyz(y);\n x = LAB_CONSTANTS$2.Xn * lab_xyz(x);\n z = LAB_CONSTANTS$2.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$9(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > LAB_CONSTANTS$2.t1 ? t * t * t : LAB_CONSTANTS$2.t2 * (t - LAB_CONSTANTS$2.t0)\n };\n\n var lab2rgb_1 = lab2rgb$1;\n\n var unpack$f = utils.unpack;\n var type$e = utils.type;\n var chroma$b = chroma_1;\n var Color$u = Color_1;\n var input$7 = input$h;\n\n var rgb2lab$1 = rgb2lab_1;\n\n Color$u.prototype.lab = function() {\n return rgb2lab$1(this._rgb);\n };\n\n chroma$b.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$u, [ null ].concat( args, ['lab']) ));\n };\n\n input$7.format.lab = lab2rgb_1;\n\n input$7.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'lab');\n if (type$e(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$e = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$3 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var round$2 = Math.round;\n\n var lab2lch$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$e(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$3(a * a + b * b);\n var h = (atan2$2(b, a) * RAD2DEG + 360) % 360;\n if (round$2(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch$2;\n\n var unpack$d = utils.unpack;\n var rgb2lab = rgb2lab_1;\n var lab2lch$1 = lab2lch_1;\n\n var rgb2lch$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch$1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch$1;\n\n var unpack$c = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin$3 = Math.sin;\n var cos$3 = Math.cos;\n\n var lch2lab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$c(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$3(h) * c, sin$3(h) * c]\n };\n\n var lch2lab_1 = lch2lab$2;\n\n var unpack$b = utils.unpack;\n var lch2lab$1 = lch2lab_1;\n var lab2rgb = lab2rgb_1;\n\n var lch2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab$1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb$1;\n\n var unpack$a = utils.unpack;\n var lch2rgb = lch2rgb_1;\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$a(args, 'hcl').reverse();\n return lch2rgb.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$9 = utils.unpack;\n var type$d = utils.type;\n var chroma$a = chroma_1;\n var Color$t = Color_1;\n var input$6 = input$h;\n\n var rgb2lch = rgb2lch_1;\n\n Color$t.prototype.lch = function() { return rgb2lch(this._rgb); };\n Color$t.prototype.hcl = function() { return rgb2lch(this._rgb).reverse(); };\n\n chroma$a.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['lch']) ));\n };\n chroma$a.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['hcl']) ));\n };\n\n input$6.format.lch = lch2rgb_1;\n input$6.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input$6.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$9(args, m);\n if (type$d(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11$1 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11$1;\n\n var Color$s = Color_1;\n var input$5 = input$h;\n var type$c = utils.type;\n\n var w3cx11 = w3cx11_1;\n var hex2rgb = hex2rgb_1;\n var rgb2hex = rgb2hex_1;\n\n Color$s.prototype.name = function() {\n var hex = rgb2hex(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input$5.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11[name]) { return hex2rgb(w3cx11[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input$5.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$c(h) === 'string' && w3cx11[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n var rgb2num$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$8(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num$1;\n\n var type$b = utils.type;\n\n var num2rgb = function (num) {\n if (type$b(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var chroma$9 = chroma_1;\n var Color$r = Color_1;\n var input$4 = input$h;\n var type$a = utils.type;\n\n var rgb2num = rgb2num_1;\n\n Color$r.prototype.num = function() {\n return rgb2num(this._rgb);\n };\n\n chroma$9.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$r, [ null ].concat( args, ['num']) ));\n };\n\n input$4.format.num = num2rgb_1;\n\n input$4.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$a(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var chroma$8 = chroma_1;\n var Color$q = Color_1;\n var input$3 = input$h;\n var unpack$7 = utils.unpack;\n var type$9 = utils.type;\n var round$1 = Math.round;\n\n Color$q.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$1);\n };\n\n Color$q.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$1(v)) : v;\n });\n };\n\n chroma$8.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$q, [ null ].concat( args, ['rgb']) ));\n };\n\n input$3.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$7(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input$3.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$7(args, 'rgba');\n if (type$9(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$9(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log$1 = Math.log;\n\n var temperature2rgb$1 = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = temp < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log$1(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log$1(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log$1(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log$1(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb$1;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n var temperature2rgb = temperature2rgb_1;\n var unpack$6 = utils.unpack;\n var round = Math.round;\n\n var rgb2temperature$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$6(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature$1;\n\n var chroma$7 = chroma_1;\n var Color$p = Color_1;\n var input$2 = input$h;\n\n var rgb2temperature = rgb2temperature_1;\n\n Color$p.prototype.temp =\n Color$p.prototype.kelvin =\n Color$p.prototype.temperature = function() {\n return rgb2temperature(this._rgb);\n };\n\n chroma$7.temp =\n chroma$7.kelvin =\n chroma$7.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$p, [ null ].concat( args, ['temp']) ));\n };\n\n input$2.format.temp =\n input$2.format.kelvin =\n input$2.format.temperature = temperature2rgb_1;\n\n var unpack$5 = utils.unpack;\n var cbrt = Math.cbrt;\n var pow$8 = Math.pow;\n var sign$1 = Math.sign;\n\n var rgb2oklab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // OKLab color space implementation taken from\n // https://bottosson.github.io/posts/oklab/\n var ref = unpack$5(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = [rgb2lrgb(r / 255), rgb2lrgb(g / 255), rgb2lrgb(b / 255)];\n var lr = ref$1[0];\n var lg = ref$1[1];\n var lb = ref$1[2];\n var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);\n var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);\n var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);\n\n return [\n 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s\n ];\n };\n\n var rgb2oklab_1 = rgb2oklab$2;\n\n function rgb2lrgb(c) {\n var abs = Math.abs(c);\n if (abs < 0.04045) {\n return c / 12.92;\n }\n return (sign$1(c) || 1) * pow$8((abs + 0.055) / 1.055, 2.4);\n }\n\n var unpack$4 = utils.unpack;\n var pow$7 = Math.pow;\n var sign = Math.sign;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var oklab2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$4(args, 'lab');\n var L = args[0];\n var a = args[1];\n var b = args[2];\n\n var l = pow$7(L + 0.3963377774 * a + 0.2158037573 * b, 3);\n var m = pow$7(L - 0.1055613458 * a - 0.0638541728 * b, 3);\n var s = pow$7(L - 0.0894841775 * a - 1.291485548 * b, 3);\n\n return [\n 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),\n 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),\n 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),\n args.length > 3 ? args[3] : 1\n ];\n };\n\n var oklab2rgb_1 = oklab2rgb$1;\n\n function lrgb2rgb(c) {\n var abs = Math.abs(c);\n if (abs > 0.0031308) {\n return (sign(c) || 1) * (1.055 * pow$7(abs, 1 / 2.4) - 0.055);\n }\n return c * 12.92;\n }\n\n var unpack$3 = utils.unpack;\n var type$8 = utils.type;\n var chroma$6 = chroma_1;\n var Color$o = Color_1;\n var input$1 = input$h;\n\n var rgb2oklab$1 = rgb2oklab_1;\n\n Color$o.prototype.oklab = function () {\n return rgb2oklab$1(this._rgb);\n };\n\n chroma$6.oklab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$o, [ null ].concat( args, ['oklab']) ));\n };\n\n input$1.format.oklab = oklab2rgb_1;\n\n input$1.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'oklab');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'oklab';\n }\n }\n });\n\n var unpack$2 = utils.unpack;\n var rgb2oklab = rgb2oklab_1;\n var lab2lch = lab2lch_1;\n\n var rgb2oklch$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$2(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2oklab(r, g, b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch(l, a, b_);\n };\n\n var rgb2oklch_1 = rgb2oklch$1;\n\n var unpack$1 = utils.unpack;\n var lch2lab = lch2lab_1;\n var oklab2rgb = oklab2rgb_1;\n\n var oklch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$1(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab(l, c, h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = oklab2rgb(L, a, b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var oklch2rgb_1 = oklch2rgb;\n\n var unpack = utils.unpack;\n var type$7 = utils.type;\n var chroma$5 = chroma_1;\n var Color$n = Color_1;\n var input = input$h;\n\n var rgb2oklch = rgb2oklch_1;\n\n Color$n.prototype.oklch = function () {\n return rgb2oklch(this._rgb);\n };\n\n chroma$5.oklch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$n, [ null ].concat( args, ['oklch']) ));\n };\n\n input.format.oklch = oklch2rgb_1;\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack(args, 'oklch');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'oklch';\n }\n }\n });\n\n var Color$m = Color_1;\n var type$6 = utils.type;\n\n Color$m.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$6(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color$m([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n var Color$l = Color_1;\n\n Color$l.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n var Color$k = Color_1;\n var LAB_CONSTANTS$1 = labConstants;\n\n Color$k.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= LAB_CONSTANTS$1.Kn * amount;\n \treturn new Color$k(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color$k.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color$k.prototype.darker = Color$k.prototype.darken;\n Color$k.prototype.brighter = Color$k.prototype.brighten;\n\n var Color$j = Color_1;\n\n Color$j.prototype.get = function (mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var Color$i = Color_1;\n var type$5 = utils.type;\n var pow$6 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color$i.prototype.luminance = function(lum) {\n if (lum !== undefined && type$5(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color$i([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color$i([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color$i([0,0,0]), this) : test(this, new Color$i([255,255,255]))).rgb();\n return new Color$i(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$6((x+0.055)/1.055, 2.4);\n };\n\n var interpolator$1 = {};\n\n var Color$h = Color_1;\n var type$4 = utils.type;\n var interpolator = interpolator$1;\n\n var mix$1 = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$4(col1) !== 'object') { col1 = new Color$h(col1); }\n if (type$4(col2) !== 'object') { col2 = new Color$h(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n var Color$g = Color_1;\n var mix = mix$1;\n\n Color$g.prototype.mix =\n Color$g.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n var Color$f = Color_1;\n\n Color$f.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color$f([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n var Color$e = Color_1;\n var LAB_CONSTANTS = labConstants;\n\n Color$e.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += LAB_CONSTANTS.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color$e(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color$e.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var Color$d = Color_1;\n var type$3 = utils.type;\n\n Color$d.prototype.set = function (mc, value, mutate) {\n if ( mutate === void 0 ) mutate = false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) {\n if (type$3(value) == 'string') {\n switch (value.charAt(0)) {\n case '+':\n src[i] += +value;\n break;\n case '-':\n src[i] += +value;\n break;\n case '*':\n src[i] *= +value.substr(1);\n break;\n case '/':\n src[i] /= +value.substr(1);\n break;\n default:\n src[i] = +value;\n }\n } else if (type$3(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color$d(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var Color$c = Color_1;\n\n var rgb = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color$c(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator$1.rgb = rgb;\n\n var Color$b = Color_1;\n var sqrt$2 = Math.sqrt;\n var pow$5 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color$b(\n sqrt$2(pow$5(x1,2) * (1-f) + pow$5(x2,2) * f),\n sqrt$2(pow$5(y1,2) * (1-f) + pow$5(y2,2) * f),\n sqrt$2(pow$5(z1,2) * (1-f) + pow$5(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator$1.lrgb = lrgb;\n\n var Color$a = Color_1;\n\n var lab = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color$a(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator$1.lab = lab;\n\n var Color$9 = Color_1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n } else if (m === 'oklch') {\n xyz0 = col1.oklch().reverse();\n xyz1 = col2.oklch().reverse();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h' || m === 'oklch') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1 - (hue0 + 360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1 + 360 - hue0;\n } else {\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1 - lbv0);\n return m === 'oklch' ? new Color$9([lbv, sat, hue], m) : new Color$9([hue, sat, lbv], m);\n };\n\n var interpolate_hsx$5 = _hsx;\n\n var lch = function (col1, col2, f) {\n \treturn interpolate_hsx$5(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator$1.lch = lch;\n interpolator$1.hcl = lch;\n\n var Color$8 = Color_1;\n\n var num = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color$8(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator$1.num = num;\n\n var interpolate_hsx$4 = _hsx;\n\n var hcg = function (col1, col2, f) {\n \treturn interpolate_hsx$4(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator$1.hcg = hcg;\n\n var interpolate_hsx$3 = _hsx;\n\n var hsi = function (col1, col2, f) {\n \treturn interpolate_hsx$3(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator$1.hsi = hsi;\n\n var interpolate_hsx$2 = _hsx;\n\n var hsl = function (col1, col2, f) {\n \treturn interpolate_hsx$2(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator$1.hsl = hsl;\n\n var interpolate_hsx$1 = _hsx;\n\n var hsv = function (col1, col2, f) {\n \treturn interpolate_hsx$1(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator$1.hsv = hsv;\n\n var Color$7 = Color_1;\n\n var oklab = function (col1, col2, f) {\n var xyz0 = col1.oklab();\n var xyz1 = col2.oklab();\n return new Color$7(\n xyz0[0] + f * (xyz1[0] - xyz0[0]),\n xyz0[1] + f * (xyz1[1] - xyz0[1]),\n xyz0[2] + f * (xyz1[2] - xyz0[2]),\n 'oklab'\n );\n };\n\n // register interpolator\n interpolator$1.oklab = oklab;\n\n var interpolate_hsx = _hsx;\n\n var oklch = function (col1, col2, f) {\n return interpolate_hsx(col1, col2, f, 'oklch');\n };\n\n // register interpolator\n interpolator$1.oklch = oklch;\n\n var Color$6 = Color_1;\n var clip_rgb$1 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$1 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$2 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode, weights) {\n if ( mode === void 0 ) mode='lrgb';\n if ( weights === void 0 ) weights=null;\n\n var l = colors.length;\n if (!weights) { weights = Array.from(new Array(l)).map(function () { return 1; }); }\n // normalize weights\n var k = l / weights.reduce(function(a, b) { return a + b; });\n weights.forEach(function (w,i) { weights[i] *= k; });\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color$6(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors, weights)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color$6(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors, weights) {\n var l = colors.length;\n var xyz = [0,0,0,0];\n for (var i=0; i < colors.length; i++) {\n var col = colors[i];\n var f = weights[i] / l;\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$1(xyz[0]);\n xyz[1] = sqrt$1(xyz[1]);\n xyz[2] = sqrt$1(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color$6(clip_rgb$1(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n var chroma$4 = chroma_1;\n var type$2 = utils.type;\n\n var pow$3 = Math.pow;\n\n var scale$2 = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma$4('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$2(colors) === 'string' && chroma$4.brewer &&\n chroma$4.brewer[colors.toLowerCase()]) {\n colors = chroma$4.brewer[colors.toLowerCase()];\n }\n if (type$2(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tMapLightness = function (t) { return t; };\n var tMapDomain = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n // domain map\n t = tMapDomain(t);\n\n if (!bypassMap) {\n t = tMapLightness(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$3(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$2(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma$4.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$2(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma$4(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$2(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma$4.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma$4.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c 2) {\n // set domain map\n var tOut = domain.map(function (d,i) { return i/(domain.length-1); });\n var tBreaks = domain.map(function (d) { return (d - _min) / (_max - _min); });\n if (!tBreaks.every(function (val, i) { return tOut[i] === val; })) {\n tMapDomain = function (t) {\n if (t <= 0 || t >= 1) { return t; }\n var i = 0;\n while (t >= tBreaks[i+1]) { i++; }\n var f = (t - tBreaks[i]) / (tBreaks[i+1] - tBreaks[i]);\n var out = tOut[i] + f * (tOut[i+1] - tOut[i]);\n return out;\n };\n }\n\n }\n }\n _domain = [_min, _max];\n return f;\n };\n\n f.mode = function(_m) {\n if (!arguments.length) {\n return _mode;\n }\n _mode = _m;\n resetCache();\n return f;\n };\n\n f.range = function(colors, _pos) {\n setColors(colors);\n return f;\n };\n\n f.out = function(_o) {\n _out = _o;\n return f;\n };\n\n f.spread = function(val) {\n if (!arguments.length) {\n return _spread;\n }\n _spread = val;\n return f;\n };\n\n f.correctLightness = function(v) {\n if (v == null) { v = true; }\n _correctLightness = v;\n resetCache();\n if (_correctLightness) {\n tMapLightness = function(t) {\n var L0 = getColor(0, true).lab()[0];\n var L1 = getColor(1, true).lab()[0];\n var pol = L0 > L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tMapLightness = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$2(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma$4[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma$4(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n var Color$5 = Color_1;\n\n var scale$1 = scale$2;\n\n // nth row of the pascal triangle\n var binom_row = function(n) {\n var row = [1, 1];\n for (var i = 1; i < n; i++) {\n var newrow = [1];\n for (var j = 1; j <= row.length; j++) {\n newrow[j] = (row[j] || 0) + row[j - 1];\n }\n row = newrow;\n }\n return row;\n };\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color$5(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length >= 5) {\n // general case (degree n bezier)\n var labs, row, n;\n labs = colors.map(function (c) { return c.lab(); });\n n = colors.length - 1;\n row = binom_row(n);\n I = function (t) {\n var u = 1 - t;\n var lab = ([0, 1, 2].map(function (i) { return labs.reduce(function (sum, el, j) { return (sum + row[j] * Math.pow( u, (n - j) ) * Math.pow( t, j ) * el[i]); }, 0); }));\n return new Color$5(lab, 'lab');\n };\n } else {\n throw new RangeError(\"No point in running bezier with only one color.\")\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale$1(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n var chroma$3 = chroma_1;\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma$3(top).rgb();\n var c1 = chroma$3(bottom).rgb();\n return chroma$3.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$1 = utils.type;\n var clip_rgb = utils.clip_rgb;\n var TWOPI = utils.TWOPI;\n var pow$2 = Math.pow;\n var sin$1 = Math.sin;\n var cos$1 = Math.cos;\n var chroma$2 = chroma_1;\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$1(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI * (((start+120)/360) + (rotations * fract));\n var l = pow$2(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$1(a);\n var sin_a = sin$1(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma$2(clip_rgb([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$1(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$1(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma$2.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var Color$4 = Color_1;\n var digits = '0123456789abcdef';\n\n var floor$1 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$1(random() * 16));\n }\n return new Color$4(code, 'hex');\n };\n\n var type = type$p;\n var log = Math.log;\n var pow$1 = Math.pow;\n var floor = Math.floor;\n var abs$1 = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i 0');\n }\n var min_log = Math.LOG10E * log(min);\n var max_log = Math.LOG10E * log(max);\n limits.push(min);\n for (var i$1=1; i$1 pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var Color$2 = Color_1;\n var sqrt = Math.sqrt;\n var pow = Math.pow;\n var min = Math.min;\n var max = Math.max;\n var atan2 = Math.atan2;\n var abs = Math.abs;\n var cos = Math.cos;\n var sin = Math.sin;\n var exp = Math.exp;\n var PI = Math.PI;\n\n var deltaE = function(a, b, Kl, Kc, Kh) {\n if ( Kl === void 0 ) Kl=1;\n if ( Kc === void 0 ) Kc=1;\n if ( Kh === void 0 ) Kh=1;\n\n // Delta E (CIE 2000)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html\n var rad2deg = function(rad) {\n return 360 * rad / (2 * PI);\n };\n var deg2rad = function(deg) {\n return (2 * PI * deg) / 360;\n };\n a = new Color$2(a);\n b = new Color$2(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var avgL = (L1 + L2)/2;\n var C1 = sqrt(pow(a1, 2) + pow(b1, 2));\n var C2 = sqrt(pow(a2, 2) + pow(b2, 2));\n var avgC = (C1 + C2)/2;\n var G = 0.5*(1-sqrt(pow(avgC, 7)/(pow(avgC, 7) + pow(25, 7))));\n var a1p = a1*(1+G);\n var a2p = a2*(1+G);\n var C1p = sqrt(pow(a1p, 2) + pow(b1, 2));\n var C2p = sqrt(pow(a2p, 2) + pow(b2, 2));\n var avgCp = (C1p + C2p)/2;\n var arctan1 = rad2deg(atan2(b1, a1p));\n var arctan2 = rad2deg(atan2(b2, a2p));\n var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360;\n var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360;\n var avgHp = abs(h1p - h2p) > 180 ? (h1p + h2p + 360)/2 : (h1p + h2p)/2;\n var T = 1 - 0.17*cos(deg2rad(avgHp - 30)) + 0.24*cos(deg2rad(2*avgHp)) + 0.32*cos(deg2rad(3*avgHp + 6)) - 0.2*cos(deg2rad(4*avgHp - 63));\n var deltaHp = h2p - h1p;\n deltaHp = abs(deltaHp) <= 180 ? deltaHp : h2p <= h1p ? deltaHp + 360 : deltaHp - 360;\n deltaHp = 2*sqrt(C1p*C2p)*sin(deg2rad(deltaHp)/2);\n var deltaL = L2 - L1;\n var deltaCp = C2p - C1p; \n var sl = 1 + (0.015*pow(avgL - 50, 2))/sqrt(20 + pow(avgL - 50, 2));\n var sc = 1 + 0.045*avgCp;\n var sh = 1 + 0.015*avgCp*T;\n var deltaTheta = 30*exp(-pow((avgHp - 275)/25, 2));\n var Rc = 2*sqrt(pow(avgCp, 7)/(pow(avgCp, 7) + pow(25, 7)));\n var Rt = -Rc*sin(2*deg2rad(deltaTheta));\n var result = sqrt(pow(deltaL/(Kl*sl), 2) + pow(deltaCp/(Kc*sc), 2) + pow(deltaHp/(Kh*sh), 2) + Rt*(deltaCp/(Kc*sc))*(deltaHp/(Kh*sh)));\n return max(0, min(100, result));\n };\n\n var Color$1 = Color_1;\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color$1(a);\n b = new Color$1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var Color = Color_1;\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n var chroma$1 = chroma_1;\n\n var scale = scale$2;\n\n var scales = {\n \tcool: function cool() { return scale([chroma$1.hsl(180,1,.9), chroma$1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff']).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i = 0, list = Object.keys(colorbrewer); i < list.length; i += 1) {\n var key = list[i];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n var chroma = chroma_1;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma.average = average;\n chroma.bezier = bezier_1;\n chroma.blend = blend_1;\n chroma.cubehelix = cubehelix;\n chroma.mix = chroma.interpolate = mix$1;\n chroma.random = random_1;\n chroma.scale = scale$2;\n\n // other utility methods\n chroma.analyze = analyze_1.analyze;\n chroma.contrast = contrast;\n chroma.deltaE = deltaE;\n chroma.distance = distance;\n chroma.limits = analyze_1.limits;\n chroma.valid = valid;\n\n // scale\n chroma.scales = scales;\n\n // colors\n chroma.colors = w3cx11_1;\n chroma.brewer = colorbrewer_1;\n\n var chroma_js = chroma;\n\n return chroma_js;\n\n}));\n","import { Accessor, Signal, createSignal, onCleanup, onMount } from \"solid-js\";\n\nexport const useWindowSize = (): Signal<{width: number, height: number}> => {\n const [size, setSize] = createSignal<{width: number, height: number}>({\n width: window.innerHeight * window.devicePixelRatio,\n height: window.innerWidth * window.devicePixelRatio,\n });\n const onResize = () => {\n const height = window.innerHeight * window.devicePixelRatio;\n const width = window.innerWidth * window.devicePixelRatio;\n setSize({width, height});\n };\n\n onMount(() => {\n onResize();\n window.addEventListener(\"resize\", onResize);\n });\n\n onCleanup(() => {\n window.removeEventListener(\"resize\", onResize);\n });\n\n return [size, setSize];\n};\n\nexport const useDevicePixelRatio = (): Accessor => {\n const [ratio, setRatio] = createSignal(window.devicePixelRatio);\n\n let currentQueryList: MediaQueryList | undefined;\n\n const updateRatio = () => {\n setRatio(window.devicePixelRatio);\n if (currentQueryList) {\n currentQueryList.removeEventListener(\"change\", updateRatio);\n currentQueryList = undefined;\n }\n currentQueryList = window.matchMedia(`(resolution: ${ratio}dppx)`);\n currentQueryList.addEventListener(\"change\", updateRatio, {once: true});\n };\n\n onMount(() => {\n updateRatio();\n });\n\n onCleanup(() => {\n if (currentQueryList) {\n currentQueryList.removeEventListener(\"change\", updateRatio);\n currentQueryList = undefined;\n }\n });\n \n return ratio;\n};\n","import { Accessor, Setter, createSignal } from \"solid-js\";\n\nexport type ScrollRangePair = [number, number, number];\n\nexport type BoxDescription = [number, number, number, number];\n\nexport class ScrollbarController {\n x: Accessor; // total, start, end\n y: Accessor; // total, start, end\n setX: Setter;\n setY: Setter;\n prevX: BoxDescription | undefined;\n prevY: BoxDescription | undefined;\n\n constructor() {\n const [x, setX] = createSignal([1, 0, 1]);\n const [y, setY] = createSignal([1, 0, 1]);\n [this.x, this.setX] = [x, setX];\n [this.y, this.setY] = [y, setY];\n }\n\n setAxisX(total: number, start: number, end: number) {\n this.setX([total, start, end]);\n }\n\n setAxisY(total: number, start: number, end: number) {\n this.setY([total, start, end]);\n }\n\n getDrawPositionX(width: number): [number, number] {\n // -------\n // ^ start\n // ^ end\n const [total, start, end] = this.x();\n if (start > end || start > total || end > total) {\n return [0, 0];\n }\n return [Math.round(width * (start / total)), Math.round(width * (end / total))];\n }\n\n getDrawPositionY(height: number): [number, number] {\n // | <-start\n // |\n // | <-end\n const [total, start, end] = this.y();\n if (start > end || start > total || end > total) {\n return [0, 0];\n }\n return [Math.round(height * (start / total)), Math.round(height * (end / total))];\n }\n\n getXOfTotal(): number {\n const [total, start, end] = this.x();\n return (end - start) / total;\n }\n\n getYOfTotal(): number {\n const [total, start, end] = this.y();\n return (end - start) / total;\n }\n\n getProgressX(): number {\n const [total, , end] = this.x();\n return end / total;\n }\n\n getProgressY(): number {\n const [total, , end] = this.y();\n return end / total;\n }\n\n getRangeX(): [number, number] {\n const [, start, end] = this.x();\n return [start, end];\n }\n\n getRangeY(): [number, number] {\n const [, start, end] = this.y();\n return [start, end];\n }\n\n /// Check if the mouse hit the x-axis scroll bar.\n /// `hitX` and `hitY` use screen basis, you need to multiply factor to the position from events.\n isHitScrollX(hitX: number, hitY: number) : boolean {\n if (this.prevX) {\n const [x, y, w, h] = this.prevX;\n return (\n hitX >= x &&\n hitX <= x + w &&\n hitY >= y &&\n hitY <= y + h\n );\n } else {\n return false;\n }\n }\n\n /// Check if the mouse hit the y-axis scroll bar.\n /// `hitX` and `hitY` use screen basis, you need to multiply factor to the position from events.\n isHitScrollY(hitX: number, hitY: number) : boolean {\n if (this.prevY) {\n const [x, y, w, h] = this.prevY;\n return (\n hitX >= x &&\n hitX <= x + w &&\n hitY >= y &&\n hitY <= y + h\n );\n } else {\n return false;\n }\n }\n\n isHitScroll(hitX: number, hitY: number): boolean {\n return this.isHitScrollX(hitX, hitY) || this.isHitScrollY(hitX, hitY);\n }\n\n canScrollX(offest: number): boolean {\n const [total, start, end] = this.x();\n if ((start + offest) < 0) {\n return false;\n } else if ((end + offest) > total) {\n return false;\n } else {\n return true;\n }\n }\n\n canScrollY(offest: number): boolean {\n const [total, start, end] = this.y();\n if ((start + offest) < 0) {\n return false;\n } else if ((end + offest) > total) {\n return false;\n } else {\n return true;\n }\n }\n}\n\nexport default ScrollbarController;\n","// src/index.ts\nimport { createSignal, createMemo, onCleanup } from \"solid-js\";\nfunction createRAF(callback) {\n const [running, setRunning] = createSignal(false);\n let requestID = 0;\n const loop = (timeStamp) => {\n requestID = requestAnimationFrame(loop);\n callback(timeStamp);\n };\n const start = () => {\n if (running())\n return;\n setRunning(true);\n requestID = requestAnimationFrame(loop);\n };\n const stop = () => {\n setRunning(false);\n cancelAnimationFrame(requestID);\n };\n onCleanup(stop);\n return [running, start, stop];\n}\nfunction targetFPS(callback, fps) {\n const interval = typeof fps === \"function\" ? createMemo(() => Math.floor(1e3 / fps())) : (() => {\n const interval2 = Math.floor(1e3 / fps);\n return () => interval2;\n })();\n let elapsed = 0;\n let lastRun = 0;\n let missedBy = 0;\n return (timeStamp) => {\n elapsed = timeStamp - lastRun;\n if (Math.ceil(elapsed + missedBy) >= interval()) {\n lastRun = timeStamp;\n missedBy = Math.max(elapsed - interval(), 0);\n callback(timeStamp);\n }\n };\n}\nexport {\n createRAF,\n createRAF as default,\n targetFPS\n};\n","import { Accessor, Component, Setter, createEffect, createSignal, mergeProps, onCleanup, onMount } from \"solid-js\";\nimport \"./draw_broad.styl\";\nimport chroma from \"chroma-js\";\nimport { useDevicePixelRatio, useWindowSize } from \"./utils\";\nimport ScrollbarController from \"./ScrollbarController\";\nimport createRAF from \"@solid-primitives/raf\";\n\nexport interface DrawPoint {\n x: number,\n y: number,\n lineWidth: number,\n color: string,\n}\n\nexport enum DrawTouchType {\n \"direct\",\n \"stylus\",\n}\n\nexport interface DrawTouchEvent {\n type: DrawTouchType,\n radiusX?: number,\n radiusY?: number,\n rotationAngle?: number,\n altitudeAngle?: number,\n azimuthAngle?: number,\n}\n\nexport interface DrawEvent {\n hasForce: boolean,\n pressure: number,\n x: number,\n y: number,\n touch?: DrawTouchEvent,\n}\n\nexport enum DrawTool {\n \"hand\",\n \"pen\",\n \"erase\",\n}\n\nexport class DrawBroadController {\n color: Accessor;\n setColor: Setter;\n offscreen: HTMLCanvasElement;\n ctx2d: CanvasRenderingContext2D;\n lineWidthFactor: Accessor;\n setLineWidthFactor: Setter;\n scrollCtl: ScrollbarController;\n tool: Accessor;\n setTool: Setter;\n isBufferDirty: boolean;\n viewpointBufferRefreshNeeded: boolean;\n\n constructor(defaultColor: string, defaultLinedWidthFactor: number) {\n const [color, setColor] = createSignal(defaultColor);\n [this.color, this.setColor] = [color, setColor];\n const [lineWidthFactor, setLineWidthFactor] = createSignal(defaultLinedWidthFactor);\n [this.lineWidthFactor, this.setLineWidthFactor] = [lineWidthFactor, setLineWidthFactor];\n const [tool, setTool] = createSignal(DrawTool.pen);\n [this.tool, this.setTool] = [tool, setTool];\n this.offscreen = document.createElement(\"canvas\");\n const ctx2d = this.offscreen.getContext(\"2d\");\n if (!ctx2d) {\n throw new Error(\"unable get 2d context\");\n }\n this.ctx2d = ctx2d;\n this.scrollCtl = new ScrollbarController();\n this.isBufferDirty = true;\n this.viewpointBufferRefreshNeeded = false;\n }\n\n setOffscreenSize([width, height]: [number, number]) {\n this.offscreen.width = width;\n this.offscreen.height = height;\n }\n\n resetCanvas() {\n this.ctx2d.clearRect(0, 0, this.offscreen.width, this.offscreen.height);\n this.viewpointBufferRefreshNeeded = true;\n this.isBufferDirty = true;\n }\n\n translateColor(color: string | chroma.Color): string {\n if (typeof color === \"string\") {\n if (color === \"erase\") {\n return \"white\";\n } else {\n return color;\n }\n } else {\n return color.hex();\n }\n }\n\n draw(stroke: DrawPoint[]) {\n const context = this.ctx2d;\n context.lineCap = \"round\";\n context.lineJoin = \"round\";\n if (stroke.length <= 0) {\n return;\n }\n \n const l = stroke.length - 1;\n if (stroke.length >= 3) {\n const xc = (stroke[l].x + stroke[l - 1].x) / 2;\n const yc = (stroke[l].y + stroke[l - 1].y) / 2;\n context.lineWidth = stroke[l - 1].lineWidth;\n context.quadraticCurveTo(stroke[l - 1].x, stroke[l - 1].y, xc, yc);\n context.strokeStyle = chroma.mix(\n this.translateColor(stroke[l-1].color),\n this.translateColor(stroke[l].color)\n ).hex();\n context.stroke();\n context.beginPath();\n context.moveTo(xc, yc);\n } else {\n const point = stroke[l];\n context.lineWidth = point.lineWidth;\n context.strokeStyle = this.translateColor(point.color);\n context.beginPath();\n context.moveTo(point.x, point.y);\n context.stroke();\n }\n\n this.isBufferDirty = true;\n }\n}\n\nexport interface ContextMenuEvent {\n pageX: number,\n pageY: number,\n devicePixelRatio: number,\n broadX: number,\n broadY: number,\n}\n\n\ninterface DrawBroadProps {\n onStart?: (stroke: DrawPoint[], ev: DrawEvent) => void,\n onDrawing?: (stroke: DrawPoint[], ev: DrawEvent) => void,\n onEnd?: (ev: DrawEvent) => void,\n onTouchTypeChanged?: (newTouchType: DrawTouchType) => void,\n ctl?: DrawBroadController, // The controller can control the state of the broad. WARNING: No Reactivity For This Prop.\n\n onContextMenu?: (ev: ContextMenuEvent) => void,\n}\n\n/// Drawing broad of two-canvas. This element including two canvas: viewpoint and offscreen.\n/// The drawing will be first paint to the offscreen canvas, and be synced to viewpoint canvas in the next frame.\nconst DrawBroad: Component = (props) => {\n const merged = mergeProps({\n width: 1280,\n height: 720,\n }, props);\n // eslint-disable-next-line solid/reactivity\n const ctl = merged.ctl || new DrawBroadController(\"red\", 40);\n const scrollCtl = ctl.scrollCtl;\n let element: HTMLCanvasElement;\n let ctx2d: CanvasRenderingContext2D | undefined;\n // Scrollbar:\n let dragStartX: number | undefined;\n let dragStartY: number | undefined;\n let mouseOverX = false;\n let mouseOverY = false;\n let mouseDown = false;\n let lineWidth = 0;\n let points: DrawPoint[] = [];\n\n const [windowSize] = useWindowSize();\n\n const [touchType, setTouchType] = createSignal();\n const viewpointX = () => scrollCtl.getRangeX()[0];\n const viewpointY = () => scrollCtl.getRangeY()[0];\n const devicePixelRatio = useDevicePixelRatio();\n\n const getScrollbarColor = (dragStart: number | undefined) => {\n return chroma(\"black\").alpha(dragStart ? 1 : 0.5).hex();\n };\n\n const getScrollbarWidth = (mouseOver: boolean, dragStart: number | undefined) => {\n const bar_width = Math.round((mouseOver? 20: 12));\n const another_axis = (bar_width + ((mouseOver || dragStart)? 0: 2));\n return [bar_width, another_axis];\n };\n\n const drawAxisX = () => {\n if (!ctx2d) return;\n if (scrollCtl.getXOfTotal() < 1) {\n const {width, height} = windowSize();\n const [start, end] = scrollCtl.getDrawPositionX(width);\n ctx2d.fillStyle = getScrollbarColor(dragStartX);\n const [bar_width, x_height] = getScrollbarWidth(mouseOverX, dragStartX);\n const x: [number, number, number, number] = [start, height - x_height, end - start, bar_width];\n if (scrollCtl.prevX && scrollCtl.prevX !== x) {\n ctx2d.clearRect(...scrollCtl.prevX);\n }\n ctx2d.fillRect(...x);\n scrollCtl.prevX = x;\n } else {\n scrollCtl.prevX = undefined;\n }\n };\n\n const drawAxisY = () => {\n if (!ctx2d) return;\n if (scrollCtl.getYOfTotal() < 1) {\n const {width, height} = windowSize();\n const [start, end] = scrollCtl.getDrawPositionY(height);\n ctx2d.fillStyle = getScrollbarColor(dragStartY);\n const [bar_width, y_width] = getScrollbarWidth(mouseOverY, dragStartY);\n const y: [number, number, number, number] = [width - y_width, start, bar_width, end - start];\n if (scrollCtl.prevY && scrollCtl.prevY !== y) {\n ctx2d.clearRect(...scrollCtl.prevY);\n }\n ctx2d.fillRect(...y);\n scrollCtl.prevY = y;\n } else {\n scrollCtl.prevY = undefined;\n }\n };\n\n const syncViewpointWithOffScreen = () => {\n if (!ctx2d) return;\n const viewpointCtx = ctx2d;\n const offscreen = ctl.offscreen;\n if (ctl.viewpointBufferRefreshNeeded) {\n viewpointCtx.clearRect(\n 0, 0, element.width, element.height\n );\n ctl.viewpointBufferRefreshNeeded = false;\n }\n viewpointCtx.drawImage(\n offscreen,\n viewpointX(),\n viewpointY(),\n element.width,\n element.height,\n 0,\n 0,\n element.width,\n element.height\n );\n\n drawAxisX();\n drawAxisY();\n\n ctl.isBufferDirty = false;\n };\n\n const [, bufferSyncStart, ] = createRAF(() => (ctl.isBufferDirty? syncViewpointWithOffScreen(): undefined));\n\n const updateViewpointSize = () => {\n const {width, height} = windowSize();\n element.width = width;\n element.height = height;\n scrollCtl.setX([ctl.offscreen.width, 0, width]);\n scrollCtl.setY([ctl.offscreen.height, 0, height]);\n ctl.viewpointBufferRefreshNeeded = true;\n ctl.isBufferDirty = true;\n };\n\n const resetAllIntermediateStatus = () => {\n mouseOverX = false;\n mouseOverY = false;\n dragStartX = undefined;\n dragStartY = undefined;\n mouseDown = false;\n points = [];\n lineWidth = 0;\n draw(points);\n };\n\n /// Draw `stroke` on the broad. This function will mark buffer is dirty after drawing.\n const draw = function (stroke: DrawPoint[]) {\n const context = ctl.ctx2d;\n context.lineCap = \"round\";\n context.lineJoin = \"round\";\n if (stroke.length <= 0) {\n return;\n }\n \n const l = stroke.length - 1;\n if (stroke.length >= 3) {\n const xc = (stroke[l].x + stroke[l - 1].x) / 2;\n const yc = (stroke[l].y + stroke[l - 1].y) / 2;\n context.lineWidth = stroke[l - 1].lineWidth;\n context.quadraticCurveTo(stroke[l - 1].x, stroke[l - 1].y, xc, yc);\n context.strokeStyle = chroma.mix(\n ctl.translateColor(stroke[l-1].color),\n ctl.translateColor(stroke[l].color)\n ).hex();\n context.stroke();\n context.beginPath();\n context.moveTo(xc, yc);\n } else {\n const point = stroke[l];\n context.lineWidth = point.lineWidth;\n context.strokeStyle = ctl.translateColor(point.color);\n context.beginPath();\n context.moveTo(point.x, point.y);\n context.stroke();\n }\n\n ctl.isBufferDirty = true;\n };\n\n const onTouchDrawStart = (e: TouchEvent) => {\n if (e.touches.length === 1) {\n e.preventDefault();\n const touch = e.touches[0];\n const pageX = touch.pageX * devicePixelRatio();\n const pageY = touch.pageY * devicePixelRatio();\n\n if (scrollCtl.isHitScrollX(pageX, pageY)) {\n mouseOverX = true;\n dragStartX = pageX;\n } else if (scrollCtl.isHitScrollY(pageX, pageY)) {\n mouseOverY = true;\n dragStartY = pageY;\n } else {\n const pressure = touch.force > 0 ? touch.force : 0.1;\n const actualX = pageX + viewpointX();\n const actualY = pageY + viewpointY();\n mouseDown = true;\n points.push({\n x: actualX,\n y: actualY,\n lineWidth: lineWidth,\n color: ctl.tool() === DrawTool.erase ? \"erase\" : ctl.color(),\n });\n draw(points);\n if (merged.onStart) {\n const ev: DrawEvent = {x: actualX, y: actualY, pressure, hasForce: true};\n if (touchType()) {\n ev.touch = {...touch, type: touchType() as DrawTouchType};\n }\n merged.onStart(points, ev);\n }\n }\n }\n };\n\n const onMouseDrawStart = (e: MouseEvent) => {\n if (e.button !== 0) {\n return;\n }\n e.preventDefault();\n\n const pageX = e.pageX * devicePixelRatio();\n const pageY = e.pageY * devicePixelRatio();\n\n if (scrollCtl.isHitScrollX(pageX, pageY)) {\n mouseOverX = true;\n dragStartX = pageX;\n } else if (scrollCtl.isHitScrollY(pageX, pageY)) {\n mouseOverY = true;\n dragStartY = pageY;\n } else {\n const pressure = 1;\n const actualX = pageX + viewpointX();\n const actualY = pageY + viewpointY();\n \n mouseDown = true;\n \n lineWidth = Math.log(pressure+1) * ctl.lineWidthFactor();\n points.push({\n x: actualX,\n y: actualY,\n lineWidth: lineWidth,\n color: ctl.tool() === DrawTool.erase ? \"erase\" : ctl.color(),\n });\n draw(points);\n if (merged.onStart) {\n const ev: DrawEvent = {x: actualX, y: actualY, pressure, hasForce: false};\n merged.onStart(points, ev);\n }\n }\n };\n\n const onTouchDrawMoving = (e: TouchEvent) => {\n if (e.touches.length === 1) {\n e.preventDefault();\n const touch = e.touches[0];\n const pageX = touch.pageX * devicePixelRatio();\n const pageY = touch.pageY * devicePixelRatio();\n const oldMouseOverX = mouseOverX;\n const oldMouseOverY = mouseOverY;\n mouseOverX = (typeof dragStartX === \"number\" ? true : false) || scrollCtl.isHitScrollX(pageX, pageY);\n mouseOverY = (typeof dragStartY === \"number\" ? true : false) || scrollCtl.isHitScrollY(pageX, pageY);\n if (oldMouseOverX !== mouseOverX || oldMouseOverY !== mouseOverY) {\n ctl.isBufferDirty = true;\n }\n if (dragStartX) {\n e.preventDefault();\n const offest = Math.round((pageX - (dragStartX || 0)) * scrollCtl.getXOfTotal() * devicePixelRatio());\n if (scrollCtl.canScrollX(offest)) {\n scrollCtl.setX(([total, start, end]) => [total, start + offest, end + offest]);\n ctl.isBufferDirty = true;\n ctl.viewpointBufferRefreshNeeded = true;\n }\n dragStartX = pageX;\n } else if (dragStartY) {\n e.preventDefault();\n const offest = Math.round((pageY - (dragStartY || 0)) * scrollCtl.getYOfTotal() * devicePixelRatio());\n if (scrollCtl.canScrollY(offest)) {\n scrollCtl.setY(([total, start, end]) => [total, start + offest, end + offest]);\n ctl.isBufferDirty = true;\n ctl.viewpointBufferRefreshNeeded = true;\n }\n dragStartY = pageY;\n } else if (mouseDown) {\n e.preventDefault();\n const pressure = touch.force > 0? touch.force : 0.1;\n const actualX = pageX + viewpointX();\n const actualY = pageY + viewpointY();\n \n // smoothen line width\n lineWidth = Math.log(pressure + 1) * ctl.lineWidthFactor() * 0.2 + lineWidth * 0.8;\n points.push({\n x: actualX,\n y: actualY,\n lineWidth: lineWidth,\n color: ctl.tool() === DrawTool.erase ? \"erase\" : ctl.color(),\n });\n draw(points);\n \n if (merged.onDrawing) {\n const ev: DrawEvent = {x: actualX, y: actualY, pressure, hasForce: true};\n if (touchType()) {\n ev.touch = {...touch, type: touchType() as DrawTouchType};\n }\n merged.onDrawing(points, ev);\n }\n }\n }\n };\n\n const onMouseDrawMoving = (e: MouseEvent) => {\n const pageX = e.pageX * devicePixelRatio();\n const pageY = e.pageY * devicePixelRatio();\n const oldMouseOverX = mouseOverX;\n const oldMouseOverY = mouseOverY;\n mouseOverX = (typeof dragStartX === \"number\" ? true : false) || scrollCtl.isHitScrollX(pageX, pageY);\n mouseOverY = (typeof dragStartY === \"number\" ? true : false) || scrollCtl.isHitScrollY(pageX, pageY);\n if (oldMouseOverX !== mouseOverX || oldMouseOverY !== mouseOverY) {\n ctl.isBufferDirty = true;\n }\n if (dragStartX) {\n e.preventDefault();\n const offest = Math.round((pageX - (dragStartX || 0)) * scrollCtl.getXOfTotal() * devicePixelRatio());\n if (scrollCtl.canScrollX(offest)) {\n scrollCtl.setX(([total, start, end]) => [total, start + offest, end + offest]);\n ctl.isBufferDirty = true;\n ctl.viewpointBufferRefreshNeeded = true;\n }\n dragStartX = pageX;\n } else if (dragStartY) {\n e.preventDefault();\n const offest = Math.round((pageY - (dragStartY || 0)) * scrollCtl.getYOfTotal() * devicePixelRatio());\n if (scrollCtl.canScrollY(offest)) {\n scrollCtl.setY(([total, start, end]) => [total, start + offest, end + offest]);\n ctl.isBufferDirty = true;\n ctl.viewpointBufferRefreshNeeded = true;\n }\n dragStartY = pageY;\n } else if (mouseDown) {\n e.preventDefault();\n const pressure = 1.0;\n const actualX = pageX + viewpointX();\n const actualY = pageY + viewpointY();\n \n // smoothen line width\n lineWidth = Math.log(pressure + 1) * ctl.lineWidthFactor() * 0.2 + lineWidth * 0.8;\n points.push({\n x: actualX,\n y: actualY,\n lineWidth: lineWidth,\n color: ctl.tool() === DrawTool.erase ? \"erase\" : ctl.color(),\n });\n draw(points);\n \n if (merged.onDrawing) {\n const ev: DrawEvent = {x: actualX, y: actualY, pressure, hasForce: false};\n merged.onDrawing(points, ev);\n }\n }\n };\n\n const onTouchDrawEnd = (e: TouchEvent) => {\n if (e.touches.length === 1) {\n const touch = e.touches[0];\n const pageX = touch.pageX * devicePixelRatio();\n const pageY = touch.pageY * devicePixelRatio();\n dragStartX = undefined;\n dragStartY = undefined;\n \n if (mouseDown) {\n const pressure = touch.force > 0? touch.force: 0.1;\n mouseDown = false;\n points = [];\n lineWidth = 0;\n draw(points);\n const actualX = pageX + viewpointX();\n const actualY = pageY + viewpointY();\n if (merged.onEnd) {\n const ev: DrawEvent = {x: actualX, y: actualY, pressure, hasForce: true};\n if (touchType()) {\n ev.touch = {...touch, type: touchType() as DrawTouchType};\n }\n merged.onEnd(ev);\n }\n }\n }\n };\n\n const onMouseDrawEnd = (e: MouseEvent) => {\n const pressure = 1.0;\n const pageX = e.pageX * devicePixelRatio();\n const pageY = e.pageY * devicePixelRatio();\n dragStartX = undefined;\n dragStartY = undefined;\n\n const actualX = pageX + viewpointX();\n const actualY = pageY + viewpointY();\n\n mouseDown = false;\n points = [];\n lineWidth = 0;\n draw(points);\n if (merged.onEnd) {\n const ev: DrawEvent = {x: actualX, y: actualY, pressure, hasForce: false};\n merged.onEnd(ev);\n }\n };\n\n const onWheel = (e: WheelEvent) => {\n if (mouseOverX) {\n e.preventDefault();\n const offest = e.deltaY;\n if (scrollCtl.canScrollX(offest)) {\n scrollCtl.setX(([total, start, end]) => [total, start + offest, end + offest]);\n ctl.viewpointBufferRefreshNeeded = true;\n ctl.isBufferDirty = true;\n }\n } else if (mouseOverY) {\n e.preventDefault();\n const offest = e.deltaY;\n if (scrollCtl.canScrollY(offest)) {\n scrollCtl.setY(([total, start, end]) => [total, start + offest, end + offest]);\n ctl.viewpointBufferRefreshNeeded = true;\n ctl.isBufferDirty = true;\n }\n } else if (e.shiftKey) {\n e.preventDefault();\n if (e.deltaX !== 0) {\n const offest = e.deltaX;\n if (scrollCtl.canScrollX(offest)) {\n scrollCtl.setX(([total, start, end]) => [total, start + offest, end + offest]);\n ctl.viewpointBufferRefreshNeeded = true;\n ctl.isBufferDirty = true;\n }\n }\n\n if (e.deltaY !== 0) {\n const offest = e.deltaY;\n if (scrollCtl.canScrollY(offest)) {\n scrollCtl.setY(([total, start, end]) => [total, start + offest, end + offest]);\n ctl.viewpointBufferRefreshNeeded = true;\n ctl.isBufferDirty = true;\n }\n }\n }\n };\n\n // FIXME: use more specific type and make optimizer happy\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const onHandDragStart = (e: any) => {\n e.preventDefault();\n let pageX: number;\n let pageY: number;\n if (typeof e.touches !== \"undefined\") {\n if (e.touches.length === 1) {\n const touch = e.touches[0];\n pageX = touch.pageX * devicePixelRatio();\n pageY = touch.pageY * devicePixelRatio();\n } else {\n return; // We could not accept multi-finger for dragging\n }\n } else {\n pageX = e.pageX * devicePixelRatio();\n pageY = e.pageY * devicePixelRatio();\n }\n dragStartX = pageX;\n dragStartY = pageY;\n };\n\n // FIXME: use more specific type and make optimizer happy\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const onHandDraging = (e: any) => {\n e.preventDefault();\n let pageX: number;\n let pageY: number;\n if (typeof e.touches !== \"undefined\") {\n if (e.touches.length === 1) {\n const touch = e.touches[0];\n pageX = touch.pageX * devicePixelRatio();\n pageY = touch.pageY * devicePixelRatio();\n } else {\n return; // We could not accept multi-finger for dragging\n }\n } else {\n pageX = e.pageX * devicePixelRatio();\n pageY = e.pageY * devicePixelRatio();\n }\n if (dragStartX) {\n const offestX = - Math.round((pageX - (dragStartX || 0)) * scrollCtl.getXOfTotal() * devicePixelRatio());\n if (scrollCtl.canScrollX(offestX)) {\n scrollCtl.setX(([total, start, end]) => [total, start + offestX, end + offestX]);\n ctl.isBufferDirty = true;\n ctl.viewpointBufferRefreshNeeded = true;\n }\n dragStartX = pageX;\n }\n if (dragStartY) {\n const offestY = - Math.round((pageY - (dragStartY || 0)) * scrollCtl.getYOfTotal() * devicePixelRatio());\n if (scrollCtl.canScrollY(offestY)) {\n scrollCtl.setY(([total, start, end]) => [total, start + offestY, end + offestY]);\n ctl.isBufferDirty = true;\n ctl.viewpointBufferRefreshNeeded = true;\n }\n dragStartY = pageY;\n }\n ctl.viewpointBufferRefreshNeeded = true;\n };\n\n // FIXME: use more specific type and make optimizer happy\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const onHandDragEnd = (e: any) => {\n e.preventDefault();\n dragStartX = undefined;\n dragStartY = undefined;\n ctl.isBufferDirty = true;\n };\n\n const onMouseStart = (e: MouseEvent) => {\n setTouchType(undefined);\n if (ctl.tool() === DrawTool.pen || ctl.tool() === DrawTool.erase) {\n onMouseDrawStart(e);\n } else if (ctl.tool() === DrawTool.hand) {\n onHandDragStart(e);\n }\n };\n\n const onTouchStart = (e: TouchEvent) => {\n const touchType = (e.touches[0] as ({touchType?: string}))[\"touchType\"] || \"direct\";\n setTouchType(touchType === \"direct\" ? DrawTouchType.direct: DrawTouchType.stylus);\n if (ctl.tool() === DrawTool.pen || ctl.tool() === DrawTool.erase) {\n onTouchDrawStart(e);\n } else if (ctl.tool() === DrawTool.hand) {\n onHandDragStart(e);\n }\n };\n\n const onTouchMoving = (e: TouchEvent) => {\n if (ctl.tool() === DrawTool.pen || ctl.tool() === DrawTool.erase) {\n onTouchDrawMoving(e);\n } else if (ctl.tool() === DrawTool.hand) {\n onHandDraging(e);\n }\n };\n\n const onMouseMoving = (e: MouseEvent) => {\n if (ctl.tool() === DrawTool.pen || ctl.tool() === DrawTool.erase) {\n onMouseDrawMoving(e);\n } else if (ctl.tool() === DrawTool.hand) {\n onHandDraging(e);\n }\n };\n\n const onTouchEnd = (e: TouchEvent) => {\n if (ctl.tool() === DrawTool.pen || ctl.tool() === DrawTool.erase) {\n onTouchDrawEnd(e);\n } else if (ctl.tool() === DrawTool.hand) {\n onHandDragEnd(e);\n }\n };\n\n const onMouseEnd = (e: MouseEvent) => {\n if (ctl.tool() === DrawTool.pen || ctl.tool() === DrawTool.erase) {\n onMouseDrawEnd(e);\n } else if (ctl.tool() === DrawTool.hand) {\n onHandDragEnd(e);\n }\n };\n\n const onContextMenu = (e: MouseEvent) => {\n if (merged.onContextMenu) {\n e.preventDefault();\n const pageX = e.pageX * devicePixelRatio();\n const pageY = e.pageY * devicePixelRatio();\n const broadX = pageX + viewpointX();\n const broadY = pageY + viewpointY();\n merged.onContextMenu({\n pageX: e.pageX,\n pageY: e.pageY,\n broadX, broadY,\n devicePixelRatio: devicePixelRatio(),\n });\n }\n };\n\n createEffect(() => {\n if (merged.onTouchTypeChanged) {\n const newTouchType = touchType();\n if (newTouchType){\n merged.onTouchTypeChanged(newTouchType);\n }\n }\n });\n\n createEffect(() => {\n updateViewpointSize();\n });\n\n createEffect(() => {\n if (ctl.tool() === DrawTool.hand) {\n element.style.cursor = \"grab\";\n } else {\n element.style.cursor = \"default\";\n }\n });\n\n onMount(() => {\n const ctx = element.getContext(\"2d\");\n if (ctx) {\n ctx2d = ctx;\n ctx.strokeStyle = \"black\";\n } else {\n console.error(\"browser does not support 2d context\");\n // TODO: throw an error\n }\n });\n\n onMount(() => {\n const body = document.querySelector(\"body\");\n if (body) {\n body.classList.add(\"draw-broad-body\");\n }\n });\n\n onCleanup(() => {\n const body = document.querySelector(\"body\");\n if (body) {\n body.classList.remove(\"draw-broad-body\");\n }\n });\n\n onMount(() => bufferSyncStart());\n\n const onOffscreenCanvasResized = () => {\n updateViewpointSize();\n };\n\n onMount(() => {\n ctl.offscreen.addEventListener(\"resize\", onOffscreenCanvasResized);\n });\n\n onCleanup(() => {\n ctl.offscreen.removeEventListener(\"resize\", onOffscreenCanvasResized);\n });\n\n return <>\n ;\n};\n\nexport default DrawBroad;\n"],"names":["this","useWindowSize","size","setSize","createSignal","width","window","innerHeight","devicePixelRatio","height","innerWidth","onResize","onMount","addEventListener","onCleanup","removeEventListener","useDevicePixelRatio","ratio","setRatio","currentQueryList","updateRatio","undefined","matchMedia","once","ScrollbarController","constructor","x","setX","y","setY","setAxisX","total","start","end","setAxisY","getDrawPositionX","Math","round","getDrawPositionY","getXOfTotal","getYOfTotal","getProgressX","getProgressY","getRangeX","getRangeY","isHitScrollX","hitX","hitY","prevX","w","h","isHitScrollY","prevY","isHitScroll","canScrollX","offest","canScrollY","DrawTouchType","DrawTool","DrawBroadController","defaultColor","defaultLinedWidthFactor","color","setColor","lineWidthFactor","setLineWidthFactor","tool","setTool","pen","offscreen","document","createElement","ctx2d","getContext","Error","scrollCtl","isBufferDirty","viewpointBufferRefreshNeeded","setOffscreenSize","resetCanvas","clearRect","translateColor","hex","draw","stroke","context","lineCap","lineJoin","length","l","xc","yc","lineWidth","quadraticCurveTo","strokeStyle","chroma","mix","beginPath","moveTo","point","DrawBroad","props","merged","mergeProps","ctl","element","dragStartX","dragStartY","mouseOverX","mouseOverY","mouseDown","points","windowSize","touchType","setTouchType","viewpointX","viewpointY","getScrollbarColor","dragStart","alpha","getScrollbarWidth","mouseOver","bar_width","another_axis","drawAxisX","fillStyle","x_height","fillRect","drawAxisY","y_width","syncViewpointWithOffScreen","viewpointCtx","drawImage","bufferSyncStart","createRAF","updateViewpointSize","resetAllIntermediateStatus","onTouchDrawStart","e","touches","preventDefault","touch","pageX","pageY","pressure","force","actualX","actualY","push","erase","onStart","ev","hasForce","type","onMouseDrawStart","button","log","onTouchDrawMoving","oldMouseOverX","oldMouseOverY","onDrawing","onMouseDrawMoving","onTouchDrawEnd","onEnd","onMouseDrawEnd","onWheel","deltaY","shiftKey","deltaX","onHandDragStart","onHandDraging","offestX","offestY","onHandDragEnd","onMouseStart","hand","onTouchStart","direct","stylus","onTouchMoving","onMouseMoving","onTouchEnd","onMouseEnd","onContextMenu","broadX","broadY","createEffect","onTouchTypeChanged","newTouchType","style","cursor","ctx","console","error","body","querySelector","classList","add","remove","onOffscreenCanvasResized"],"mappings":"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"} \ No newline at end of file diff --git a/source/files/magicbroad/assets/isHostComponent.9ebad583.js b/source/files/magicbroad/assets/isHostComponent.9ebad583.js deleted file mode 100644 index 4ffed7c..0000000 --- a/source/files/magicbroad/assets/isHostComponent.9ebad583.js +++ /dev/null @@ -1,2 +0,0 @@ -function n(t){return typeof t=="string"}export{n as i}; -//# sourceMappingURL=isHostComponent.9ebad583.js.map diff --git a/source/files/magicbroad/assets/isHostComponent.9ebad583.js.map b/source/files/magicbroad/assets/isHostComponent.9ebad583.js.map deleted file mode 100644 index bcf9f80..0000000 --- a/source/files/magicbroad/assets/isHostComponent.9ebad583.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"isHostComponent.9ebad583.js","sources":["../../node_modules/@suid/base/utils/isHostComponent.js"],"sourcesContent":["/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n return typeof element === \"string\";\n}\nexport default isHostComponent;\n"],"names":[],"mappings":"AAGA,WAAyB,EAAS,CAC9B,MAAO,OAAO,IAAY,QAC9B"} \ No newline at end of file diff --git a/source/files/magicbroad/assets/roboto-all-400-normal.e41533d5.woff b/source/files/magicbroad/assets/roboto-all-400-normal.e41533d5.woff deleted file mode 100644 index 462480009cc36f6f5ac1b0bf6c25d7ba8d7c3e5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65456 zcmZU)19W9g&@Oy3(ZtEbwr$%JCo{2a+qP}nwr$(C?cB_J|9jW>ue;Avr`M@f)zwwC z8>e?~Cm9hD01)8&`l<%}`YwQ8>Arve$N9(opO>hRu*kPS{5Mg5)2Vg6#j>cZi~<1g zqaOeuxBvj8PxUoJb3_&X3IG7a^#B0acRi4&F(*d-G77W|003q4cYX5Tq@CnjQ>>Z~6&9G%|NF{N_;s04*;7AP4RKEo&BIeG6v*;GFDR@7pf$^CQImk+Fe} zJ^*mx{;kLIkKRpZU5&q)-@NZO1Mt3y2(lF-+}OhYTlZof0Qe~h0KiqJPcqt?Tj_nv zJ$}o8$9&W3wy9UIg^u%gTR#4eE*=;bFodO!g~2!PTNg0#ZQCB>FFU-om7P5R@R|S3 zL;NPZFAIRawXMOo?&rU_JblZF=Ni6_IIqG?F~+0G0)%E*zlJPz)Bc*THD2Uz&=_K` zDWb1Qr!K2lwH&59O=h^l`%nO~%Rs`W*GSlEHbWw$&24ns5II*Yo@|FR?RTk? zg4OMI!B{UeNG~~WrbCLP+wFImtn%VR}nA_hD_2kic1_54cA^$tx!#K zG)fB`TNGCpR4tZFD>`y8g*N7~eLu<3$q6L|bWGXwrUKj^`JMH)0;V3#hHG8$r%?KX zbx)KR6@&kpH#9Hd1cRUNIQQd(4PA^l4{C;)41;F>nue7NsJl$(yrO9iQ;+W|3s5Ea z9oH>RVO<&8Z~Wuxp@c?(@giN zFHRdA}jTzau4Yz`FfGr1yW2+buRNJpJT7WI=I%i%K23 z)p|=Z9d7Z}MhpH3DaZHQT~|tQ1;X9?fYmR({WTMZVRt&95XL*DgbJ%hn9yi%1{WLV zClTXS^-;}j9JSh7w}NiZ<2YI%wFAZL41RNPnZV4`{+epK&EDVNFw`5Q{5&>!yE8gC znuM9<-_$xdwDWm7IDu7r>H74y8QW6O@eHp$!YX*ac5rmg8kh1CA`0#WtpkC+12f7n zxP%t1a6*(PuYd`nn+)` z;P8(G?Z+8b$@7Rb;c!s>d~G}-`YWzEf-vDDT5seg!|9lm{nu82-KA2VlH-my*Zpg@ z9Q9$#Upqljb~Xz*`Z{&C!g@=8}_?bfGkJ?Ig`b`jqmniZ?uzV!#U1mGE&YnvEI~nO*4Ptt$_o z>wZXq))q8L_AgJ2+XlEC4$*Ba#8XQal0@+Ol`BCQHGyrDMz?P14U#j1{x)RPbAyL> zqR{6LX=1oxC%We4t`dl-m}|0_EM@r`Vp2x}sIlM^gdcE#fPL7gm|gqReuWdW<|f?} zwuWmEa-6CUg!NCgIDb;BKk;Q59`10;AR?DSXzop^(JYFs@sT zZJemt&~Ad;ZZ&WBB!m^H^GlvDxRte;&kLe#YKxCP7aU?+Dhu_~22WwNDex}9ny)Cn z;Uv`!-#CM+&zs$=0Qg=CF~}uJg{fDgBTRED)w)E6a;p9$RhjK4$*s7V#D0{@XJ@qM zKKZI_KpQvT{_Z#vt3uD4-AQI@I=US;==KrKNPLQDz&P2p20>OHNC z^~Z|WnmucCT5@8`W(G)oVd4H7N0e&w)`!ESzO^Uv@Pe(YxkmFN1o4$6H-p3{j=aHgD)rI)y}5cdd?&!m@e z7N(K*AB{w|t-_8r9Lrl?5W}Qf%zyS`$J3-iy+Ff$7Ef6*K?7q1$wi^mL$5*h8V@tC zixFBLCRRVNTyjsqa{;_<0DJ(>@nVaAcgFvP;~T`MXrZ>VKEJdOpC=L@6Osr*KVOYD zRXp^dh)KL4)}Nmwd7`wjDl7PU#thhX&w zY0gCy&j&p9hxpU^Xwo52dfC_cbk=(%;``3Dx!t=-=ZBQs1qt8rru`4Ej3>RG;Z$$D zKBE@H`^k*^*uwoDC42rHch^fsO^y$T9}kX?hhL75mLK=Dj|XK^4cQ(~K$d&+l=uHW z9y2ZX@jM^;L>u0--EVXpU*R&Xn zrZmxXC-$@$mZmIIbtiPS7zU>_V|6EnqZk;ctjTpRBV-L6b3L^OQR7w1bB}r4vKaKxKTJ_nnmSmG^6C9Cjyo ze3vY8)IIW2nQGf#x}QM$P@n1$NqT5^a+ibZ$hC6l(sH};e5dkqR0rp92J5m0XRIdk zSRCu9By$uZ^AbJ%SS52{By*2FeYatAxMcHuBK@FZb8uyI2Rr?YdvnNzXB$}kSdgbz znCDPW{S=X>$AISmO8ruzv)|!!fR4L+xj`5RP1Efv)vwHG&9lKmt*7qewB{nESVVTM zaU(74by0+=%qy1mt7mZ=L}R+#TE}U#+#Yp9xNcIzF=@iJGra1d9&13H+d?%vEVEHu zj2}b5bu|HRI2o`N8T54u@>%3@h<>w7vb%Q`t3756dZ-i7%l07tV{8`DA#318MivP(>7D9SE9wh1an zrgV3dm{Qh=2oI!nRLj#10Pf~z)QwQkY9U7B#59&ou;`CpJ2PjCP`K|uw}spNlWrh2 z2h3b2IwM)HNj7JbJut7TKikUha6Ga+`FQhj8IKg)BWZ7#RdbnFbGbQk8C!EXU3Hx= z5Z@3#K)dk8xmZ9=hV{41_X%(V$VAwWl1DnBY7*HoT^ds?4_;s^ooqY8aP%+o!XauD z{TW4EJaJHMLTZ$bsb7CKge$;smMv*`M6`g_lc(BU%;ZdtapFGA9XWsg(ClAxM!nk8 z8}tmFn(=*047VD1UaW_)kXV~}tOvdjNt#z_GQw?gJK`vGos)_`2Fmu zXdRf4uETt{sK==1IIZ#XmZ!Jb4kK>q`A|koqJymBKCpf!8tdRQKa+0iSa{CYaR#w5 zB+&eq6hFrA`#|bFmH%>%*Wb3*-WK-eT#T0&K|20l1@VeH*p7N|IA-H)?ZHYj2z&HEyaa!DB{3MHL#RUPa5|xA-LH8Kk~5J7 ze0l)@tvAEA!9;U4HI~E0@SxiRwl2Chw5t1Z#Nb=BF>B4AsObE1F((G1eX4OR5gG#rFIUbBlc7YHGL03fF#DtH<%z(dxO zwOW@OHAxl|-$2ab&Fmh{Z?wX>_Z4F+s0G<6WJ4&ZbkWP6eIZF~S+YSHlly)oR{JuS z>mgdrceloi<_h7ElQwt5SVHI>Ao7Z(s0@q1+R}$Ar0@M&Y98R8k8ktiHXhN!XUJFE z*Hw4zN7~#;;<1#DvL)IWrI)q|v^zO$yv=9Y2IZ~ph2{Ox4~`IHDeWp_iqA0}fTO;L z@-*EirqP$1X~ft%69xkQh-4uS3ktaJT*7f%{Xf%Q+gsJYIWUdcZDL51l(hJFr97)& za=-mz^-|Mq_=?bhmM%h&Gf_5x`b8fMAy|xv05QN`9}iK5Ob8)V&R4NM2m4NC6obZQ zfhz9?aYT%tB6T)BvA&S{;zZ1-bv7gO-Vn;Dg1Bj66Rv;&Q3b7^sIV?DqQ{c*b0YLA zNcewLkF*XK#V167kV2ME2%Iu3fFCLw{;NJ0<|27Ye$hIltmotB%yWo-J|41^iL`|3 zT;ijBKBLBow2W(AK;2>-cYHr=0wk$ zex|K7J*&%z3_qko{BC?clL7gZ@e)UHwI z^@bCNkpH%+G7-J2^=8#YtfbJ(z7f3qKM1$$Bb&$|ZOmDjg{6V(rE%yUE9b9}(uq7op6Z#l?*4FC_|k5SPkE zV9e*jJ{a>c?x{|Pvef4RXB_8tU~(T5UlBgu{bBd!ht@$OL>oYR!X5%CZ2MAW!KhnU z{z9t-4iEl87T)WNH{YtN04Q-p#sCuQwiCxA-k5_t?K2pMw(dL{a=U*UIWl_MeN%cm z^tuY)TyE;?#O@b$|AxQl^DiEMxE%zX9SLWDxP`6Ebcx)q;K<`(PXgDFPdpZmJlo>% zQL^yX;;>fpV;je_%k>VoXHK#3{{PTSY#E}qo7jwR864L9|Dss6G_kb6wB%orLy?r(>aPJOYBb7M-u)ag)$Fw<5+~Xbtd9+Sj17E z5OZb*Yhs2gRrF3QayvL;Iatc$R3YnizKG|cBlR7oh9|&Y_IoSm2jB3NZ-rNM z8NQ+Si{+8yf3V{@vUOVCdY@QHpICDL|1hyW{tsB=J^wGb#>(19OWsE^)<@FX|KY!O z{r|tQg1z3;n$p)mtrdqhhiHmgg1Z2%7(>)n6f`Hg3m%QE(N{Zu5Hx0OHcvxBF32E}*vERiGSfGgoCtCBGVU?=`bwd?CThze2QD0py$k0ozmSWg zv_d&<#qI;@=c(QyyZF(gdUcHb8vSd~dMLm6Bsj6KxTcmOHJ?(%9okH^6` z$-yIJgDCN?muz?0a#53=9d+(*4u281wmTmd1H!E7E5pa;8yWVe2b3wOwLX8C$99Ry zD2ocF+-@~1;#(nC3`+kS1f+8u=dP}~F?Jo~x;@#*Xb!+ttH4KdS#BDSu}rXIH;cnL zAe=((I;tphD|FG07*QA&3B@5Nfpp49eATQS0>CDHUr8tX$iPMq?MFU?aLD%cC)q zj(0}qQ_v7;#Us9(9!4veV@+Pc*MWlLEm<$@X5a5D*{?4dl9bPyr|cZ|dN12ot9?M9 zXePkw+Q7`Mr3%C%PRa0f7ZJ#C1G#j%Hx=H2Ef=(pU8#7+(D2!hc1IHWgxG{3~IRopSGAa>eQy^?}wu&l2p%u1Cr>BRcJAu1A62(BTa1p&h*-(m^P2 zS*0FH7j>a}Eq$Pj*5RZTAm{jR&_WLlF^kAHApB`_@+gLU**)89mE~gPwu zdrJdmJkF_Se!iZ)mHZ5^shV&S`ndVM<|lY?f$I@WyyK>u?#&c_Lsm4bhu`#1SZl0W69 zi<|C=Un0Y}RBdEnzjt-9?4Rfz8P7e}=yht-{J;4SEX1Lb$Pk|DaalGZ>4kpRe7(CT z<_MaEL3drCIKZUQQe~hNFUy0$SGZDj*k+YKA?%M5Fx!E0=WGxJS4T@K^3YaXrNP~#VPzrlud{_rb>AiX zwb+zsu3DaZq)^y*h_%xklJ@7AZeXDHYZb2L01t|1d5b6ivXc19v{YPDXwWTFGzQX; zfjSnkJ0sZ`*I1rJ=HCplsj1F5Z1V8&OOJK3fQ2|x4)rx zLtAqbmn+2jYEiVk1I?@DHSwOnoYk`Un#Af6|8)V4HL0$?C*x~sglb$^20vx=JUjmv zj$CObD2*9xkAjHoq-_TEh?rSh4~g{PG;1i!z6)i4>g7NN#&OhoEZ)~du|2xF@0pFl zor6PPL^)9YPd3h5X8e2s;|$8h zzrU9VadP3*nQqnWCqHFq;kI_c_XbVOnBe_l&dRD03)>tAIyY&Ex~j4xG%Ev)?~R#V zYa;1Iq`P^q^*^|)7Pj6z`n)b`OkdRkKzFa^{*obV{%)GXrb-mZ11~LkB7f-sa3_6Y zW)^w525!w$CZzAoxhNC0FYO^2-jUWrPt3@edm~=?p!xUA2Fh;UTSI(|6yb3}LB%{H z9iKiMBs%k!BYy^0<#KtBaNTf}wIdYFPLFPVkY$@)fi}gB?PU-iqp%W5XEQzH%AD^!Vk<=|D3n zs^+qmN63-GSUZipF@xAKgZe=a?>94#nE6ba-$9%HOln-?mL#@D(VjuV1Nj;kC6MO0 z=hi=R?5r1+<=ZG!cpWnvHF&d2nv4AFiiJDra<3}-k@wb75bj<8_r4DR-3t%hHx(0s zFskl5W(`^?09)DP@LZH>y@cCKD8{u@U*e@FZN4wAw!iwj6(fQtGF)He8Wj69qT8yY zNX|IMy~hXwu3uXVV`aCcx3h6BW8I>)y{{MWS@s<@{ALgZdMKzGFf%!vTCN>5nPrq` zKQ05Mc9A>Ceu5LK~#WL3-n`?*)VO zaX6Lz|LC$*d=QO#qT5-$KE@$?HUz3W=JugZ1#Qy^%^*oTkm>V9X}0GwVz=O1$k zX`)KH4UMd>PNf2{8qk!#YgZT8%uECO$MUM)2-Mt(9B9_(*XH{B6ds(oxD<)sq2Qt# zw7u*k?CyGLqyJ0OUFLbOr917E4^>mQ>qE(c1EU0tQO=eSYw?nl4a^v{)aBnJO-1_s z|JDtQ!_{m$_Apl+FrMv&OvSqq*$mZib7}L0AlAIf1*OXDJaynkQm{qV`aEoE2Rf zNN~*CjHZivGKHX|MpQ$9Js_tMpS0q6bU10^)5){)@XE_8`ou8Mv3_s4diqhIwAyzW zT*>ORi59MB@>q$_fT%=SNAF1;KU1|)wO&3M&-MJpN4D)wG zm)CP~4ww7-wcc~SPM)KBKK9#*-@qyZSv)I~@z_qLXW65^KO2vF8til-G~tQt!PXQowfoam9I?S_*R;>`&F^EnZSG zeF9&-Vsz*#{zn87@jDo;O4A*U|A zZm(Lln|kTzdg+So`u%D8(zSWU{$?2Uktf(8^%#V&P*PypEZ^d!d{{L)p>#>zkyUk$ zVPI62fq-G<6cv@57LDmuY(y!Te~;VohS|`{g;helc0j!ld!bq_1=Z*}`l!8M6GJ-Y z<}y4z)iqb;pd+lFk1G)ojynGWoaeB{LrP`!Zr>XV>*zh&2&Z&1(3pdMrh(CQ_EIKj z*~hiWIj0d+vk9{J#!Kxwfw)+^9!KQ}6~?_M&f4;1rE>0w(iSx!;(D9qt2uppF}QC& z)v=X~b+KZF9w&nqmlrW28a_gLKdRtrP^h`0FBuuK3h9)XiQHu&d0OynL;XdJ89A$F zplTO{^QOi9SW5qrOrKIh9T(@+wz9bez$rym^P?Z`^(#0@*nc-_;CaSVMpfyiir$}! z?+SR=8p}eMUDYhj5YcMaIH4C=YkSnSo8Y62-z1wnEBunU|4QDc#qs52HDdO1Bfg;f znr%ljYI$qP$*Y-Tw@+G}D*a%MyZ{mj2ZZJxr|}xh7yq|sMrmlV78%;y=(jqk+C!jz zH#HGrk(G*Za%zozT8njBgN0#|XjaaiT14_5c=#TO(pti4T2fS5q1o!_da-&I^j18Pe$m^2t1KV%lS|7kIH(aIu$gu~%=g7jdyyVX>EUvDa;}7ksf- zbg`FovDawLqU~YeaaGf!;iFM&>pUBK-igyZ=%FuiRqjKd<-In}QLbwR8p1rV-k6b$ zbQO9ug2nGPcOv`Un6bEqXo*N8OpB(%B&g6tOe?Tc>bvynJM`)>dLQ)a zcSF&Nic%We%a$NINT021&K@Z{Fy~sMnXw5V6|v#FEIj?iAm8WCvr-eLWTAuTRfH% zcH1j;U$o-AkS?(quHksXD0+#h;?k}3fP`N_#}Bn6>+DjJ#ST{P5(b%|VChl?kd)#O z?EZG;KT!`mbV{1)YhZzDF^I;F{TpD=a=$95ENVcIv$IJPOFG~`?5-)=+~k0NMLH@r zVqk|Zid$9L5g%{-Omam2)eQboB*{LXpn*Iw6FRGIIo(7f$Ozr3DF)5L6ZZQ(X*mKw;2c;MC%baT} z)xt9e{SRM%SXn$V#v`raNM!)a_A!vs+2o8x+%6A|f{6GetcBb;g= zoqQlZ;zR#lR%B$h>H*a9vJfjn?xzn!CZjkYvLAh5CdD{WP)f# z&G!3olQF3{f_HA{ydFn}2&SP4!JVPP))D3*xlYVqeBXuxOjQ34*F|8kjGjdb|8THq znEuy9Jii_=KYw2gWDeP~dB&;NX})Ow#_E~hGuWJN;x!;h8NfT)b#=g;ND(MRpz8MW z>AdLn^o~QckT(mn%6Uo4))2!{L~6h&uyGTU3!*l#63xgHwMQDZE0n z;>MOF2d;({Yjl5etSbGMlHh-$KtG_&wX%IEJ)lo#OJrkYZ%~9pAu0MRIcU49x@%a( zSk1^S|Fjf-O=g?TI;cx=s7t=6OZm84%=e49Xg|s9Kyd_OxIxVMvM;GJVUU&x*~y*# zq{ZxDr)ksWPPOFr(T=z(p($?DW$a^D+^QLpPfsa&VkR0?B_^W_5es;C}%lS_`bq;$tSn6@??J3Ye!$uWgO}I*?5p`tGFr#9p-%a`}~^wf}Tj(@*pi57iSM{Dpm}+9S4-k z`X7;C%~9sE7a`*eawNmfDMWDwp5?-!%;^Fv3) zvSEl#h)yEL2|1pvxukfkqtwB6ESq+li@Tjs8I?n4bDaZA4;s`ZxPHv_M1LgA(3eJ^ zHO-7$7Z(F37v^8#yKdHRqdJeg8rUVj77JG~4%MuxG;&r|+z6!IY`^k6!XP4NzUZ`) zPE9v{&K&$~m0vnj+<>_ge>~MG#+l#4aa*7NMcsDL=<7&5f2*pKjNEv3q1eAN;aId` z6}37itJ}_PLA!ePSed|-wH5kCeWGeYxu=R=rq4{ZVX7v0WcFHd(L^(Tx|a0Vv1WB) z^oD5KwbrHip=D-iQBn7BuP%CKC1_DE<-aWEKU{ahf@;WU(McV!s;hPqLut`r(Xin- z9m(0W71?`UoB<1D!!M{ijAI+*E1P?b@~Ad{)qrE;(agM#jRPIkc7>J+LmR}p;RG$7 zV^6l%saK3->TmyqEqF0a=YH|>Nm0x)Jq*?%akXf4uks{}!N*OwLeD<$|2h&u0O*<> zhu4qj6j^b+LB;l%T4XI1q7FskT@qTkt$K(0PS#GifbIfp^VS58(>d`QcH3%PB=>%_ zo)hN&^4y?k>1N;Xh%CA#BD$Ba6A{;JsFLvLunjTiSq>m8Y% zV@(w!oVN!j@DO@Vx=JWp{mD1QzKs~B)yt?luF@VaRnC$;pG$Tncyk}&;jNxRdsG<< zUqHxvL+i@Cabt5*Wax@z?}zNNtMg*$BwvX5Q#a@3>&YU*GoZ=7Vn*jCmF-GPSY*8^ zu74ZrlI4kWn5dm3KaM@R{u!P!XhMl-WDSm6Gf8#mDNsn2!mck(Z-(JKl2yg}wha-!wnQZrn z+XLI3fvs}jH~DRlgvH(cF>fG7w;kONj-=i9j%eJkjx68zk8s`(k2INtq1J<1JaK%V zT|TJVLV)J}n**2wnt=FZ0iah$^zYdA6dAFaR!9wsnmrUObiwJG&4MTLf6(Y6AoxM5 z79{b3MzTO%^q;Y=0ph77{nqA**pN$NT)H6BF)7zd3lOm|utxvRQKnA;*KhE_d+(&2 z&o|C>l>Cq5P?oVyr;jUQvn3PkM`1O*05Zwy=JtUnH^{A&Cr>)0Ucsp+86m%(Y9y9k z61E>jJCIz!GS&28gS~%}!RmBj%zZ7a>0o=v*|3v#6z>H@#dG)NPRYR&7)RL;Vs&f+cgXQ%N==;RSQU9YVc5Wrd+*a} zPTtuqE=G|PE!ixs!boqA4JXPQR%XcjQ$R8|T+R?QP75^}TU&%hpfvhmo3~E#G$vSS zUCCDYOf!+Nny|8w2M*+EBDK@oM&ResRe^aDQf?8L^n_wzcJ)v zx4n6Afv<#|GNG_^-nUiW3qwM}gxjJB*goJg78BH8p?5%@pSm3OZ&E2wDXx-VIF;Tg z8-q_g1G17)(hHALRdm?_Smh=uoTtLZww^wZt$XYnM`yR2YRyR31>wlwZ>8i1i_ zo!`o&`Jv-z`H|yrxoPV-2p|y7jx`fqCSqWaNiURMKFj2uk>cbG*J>X1EbM;e71|?w zlfSA&$!#0QNM^tL`Yj>PIX0{-i*(!%3bC{5E0@%r+da~62h|Uomxn%~$&6Q%6Ea&! zUq!`XFo9GXKPY3PeDyhO|F|zhTm9LR|a^iGF zrELVK)9KOre6I6+&GUTelgXfp59@{~S}eAZS&)G|KUSpGkXaNgML$Lgwk37x#|x6I z7{Wljv7AJ_ya+q;AJY}h`rN;6a~OaBCss5iw5`s_<3nD?r#ZQ00SIHUAWehgu{0vd(aDjfR=z`HIu_ zbc`OUWD2{(U<{%W&18%1-lZ?NjApyWt<6Dd6{e>pVJlQC90D8;w+rkHJd_P>Oz=|l zGb#w&Aj0=p0&;YyyM{9`nHRJy4IvKo0=vmF_O1bjR&N~DF<#eAAn~|zl?`lO*GJ=q zvV7z%7|GVCpMogOzPFAa)Plzs9gSQT$!5CluNSFSXPGHcIi70QD_+!m7^rsHeB>jV zDVe&Pf~u+EFu=UDVLeB^>C9>|n2pc#ydP$T$?`&P9;WsAOsYG?VxouC_LxyW4WIyI z0K5UA0B68FKp!9tPz3}5v;m3$rXO5@c0es467c=L0RZV!8-Vm94S)xX4}b#U03d-x z0N_EZ0Z3qI0A!#-00LMy02XWo0QN2WJ+^5?0*Qj~qXinRR$P|;geNpCFKc7m1N@|N zjKVU%(CL&d;B4jd!b2IrxL4Z*ee`}~e) zAes9y8A1co8$n{u6xqIAfWWkpJ(JW^nJETxl+w{i_REJ2KPO(YW|T@XL{G5xhoei@YJ@1!+@ae>D_PRi^J5{qz)RYdSEEmUWSiww7+ zdJ)a##BB`=-o&~iU_Bi8cfftGA?W`C2lVg81pN5=0>C-1mb-zgD=58v-KBHJ(lP$z z7s3|`DHDbO5qb%e#|>j@CR9s&I^ob3nyGYBCQzN1Imd>3-2Ejt+3 z;GkF`GDmpZmqkN^sHQb--h5LE9f0Xw@k&X4cqEa0vrkPsJk zyrF~d#bmDEfKl!XG~?}yoMDW7>YPRRCVxC-j~cj6^rJwmU328&8Bu&MLtrogZP@vW zb3eoW78d?F`&=eHUkv^S%omtC9VQ5)wWW$J=)#q0hwMj`B~Cnq;B+;@Do9XtdMpw; z{t&5l6im(+dpbw6&0bGQvj`LK=WfbT*41V?I>5(%M$DYSd$|4&jJiN>5C}vldq4!j`6_2~-V z6qu)Y_<^4>OYos-B|`6vjN^h>xUJu{5Ji&merZop7_MJf^1h`-cTtb4k}?7>Mwq&4 z2c^J^s(uXAeI?n!Zz&p|gq$Y!3KB{;c92ioWQ)0=P9AOE+8x3$g)>3)Ci2 zi#Otns0~ZIj{J*QtogXadjqySz1j&yZxGzffp{XBsua@5$X!m#v>s$?78z zkNzM=w!cf~bRxr<)?yLOZ)({Ii)@_|{RDX|W8Fr$P zX&m5~7N$=2L!lZ)cS#c&2_bu*%nLK8`$1Xhq0g7K1<%j9QzS6hbU9be={_x_l5S5J zmbk;i>5zE*sw+{mR3^Os0!&1F3`~I|JT9Olxw80G5isVGnwEn6!j;)VP5k#`M8_L) zK!RzTfAfMTINkOtkGdueXE%m<@7XLuEjSRlOMD}`B&5ujhvU8*|O-c(mU+5>;u~gqqR)_V}G!*1l#G9D9_d9PM~45 zQBC1_zKk08+A-6~Iw@fnf!?-%Fx9!rRdhD`Xf;R9xRhk!&Q$7JTSX2j$I65N%dY3maPj76kRJL@IIb4pJ zl6ynVD}*YK5bTyEl4`d?#a2=g_}rQzG^t5_f%B3W5khh7yEF5*(~bPIR-VU|r=b`Y zr4zUNIwjHY0WEs^OQb@biAF-r0+)JRy#8pX0O?q$Uc5=xJAyPVxs;b&Q>qG~7W?yZ ziE!Ph(hQ0kWsNn06eeHop{3&zqZ^ftQoQmvDsE5h+sXlb8;#cY9w~Sn45xSdb{q6Me zCZ#D?Dg5VS-}vkv@SqpFV#((CT_QAtsK$km?wUt9Vq8o4nL|(JL;M%IRo?w6)%l{^Z#xzYqthF(_jhSh`NNs}RZSxqc%SK27`y z{(qkw)qdE?#E4F-J?GuKHqmSYb5AMZ)Cpg?WiNyvBlr?$sQ%{TuMdr!O}gH>mWC3c zR!)fO9mpF9zmz1}n!txCs<>jZU1<#n!p(HZDmpS@<#R47S9b2dChjJ}?UV&0um7RN z%u+mP5F|@H$e(+p)}5L8;7!OC@~%PK9aAaWFcCx%4|{*<58zJug=DBGbrnjkE9z8k zs)#N5t3xI_ba=R~2u*1$iM=J=5p!}PIYEWR)28z&4e^Nt28*{0`WT?vNNIPv{Ry%vE1PG-wB7AvzA}Eoac*1vB-RM3^{Wh@H^LiBl#gF) za0s5%76Os;JDqi@E`5y9qAi`{FplFiB8+Knj)f*nO*!ES!WWI1U=~X40J_*6%D$=*T{{JGN+%KXsPP zl^GldZy)MN>rI4cV(ik6i&5@p8qVh3F3-s4)XfrGG9C4@HzvGwTT1-u+#j2F-ckTEdzz~e)U_AxrmB}V9Q3K`3 zws7XR97Q6j(*DP`3K3T`OX`cwF5@$>qMde+VLYL|Pt?)V=IkJYlJV|^svQDv(XbBB zPw?XDlYHlyxMOrDXMG33f~zvLp(E=v$exlKg+{E3Ym;2qzz@)uV%dvS)g0r@59Z4= zv!yPKwj#N{_8v}Jb+QlZ-P7}+D_WGiqX--pug`=4zHBX(lxx|TdX#&Bm&zafq7WEK zb?KgdjX*?b_;@FhhLTd?4$5X*|LuFRn2R`X^2_Xo5#HvY^^m< zyQk8G00RTMB!fZx-LPoDU>AUyYK$9R#D@ouMda>&uu~=J;7s~F&G9j#td}gFANNN# z-1g2WE6@(|vq&;oCm4ee*fRQCe1L0!QI5U{X{wxrNMfe8oOz=YuC!_(;*$;U*x*1f z@s1iiUti|Hd!P-ZqZe!O`#QCv^mDq^&!pc^KPz4&oF4_PdcfCDk9v7_YM)zu2eazg zF-nGsZI~cYiexu9#g5feMNzV=gC;dZj*tL8OJko%gS9V_KPc^=)51}Pz-+kk{wDoU zFKo@ktSt`mnl#-WGo>mhDC8M2CGXVF)`?%%l6WE&x0*atdj9!+F$6s zoppU^2E{&lz=&nBw2q2`#c{Bj#9XII^W3Xy0G~CyWhaM9pT+?5qZ}Dht%t5tEQt%{ z+7VZcr01F;H0gWctk~S}2Wi%bp%lNWyzJ^7TXPkzbPcgo>mIP~Xd{+Op@q_Q90*iU z2v?^F!?T;z1u<(EW2%+gCk&GZfsdORo^3G}QrTfHA*qCU5gQJ$Xv-i+uj=R;N8-`3 zQf)i2h?5!Cqm$}|x?E%F zC~%?I2(t;R4)W_YVsmA=q%UJHE4Mn=6Y8pEZK-h=Yn(@H?#opy36-TfqLx%+2u2xO zs`-1hwwgiX!t2IIi_KGf!?>gm?fpm4)(6ZtJCBr%&Hs!-YzhO^v{j>F39rs)oX}U1 zDAf0F;W>nSeSnZs%fG$=En+MK)@ul@!JR$gW`k=1#HG4k*kLyy2*Rs@T~3j#k_ zV{YT~@&~%TJTlwVaQu~WN0^HaV?n1b)pYn6nU!@01su$Xp^311`ByR!f?@zBa;kd{ zN5>~)!Tq&7^r|~}9#y~si~c2-OZQz*AsUxW8;GdxXm4KfJNd)rt1b0Mf&Prl{p4%~ zACeTVb}B3wBa>TbX3M3(dv&v+AZ3|6ld7^QDzmQ-sQn@m-lMvD9k^M=(8K+1=bUII zSF@Y6twp{l>=PG%l)DI#o;a9Dyn|~n$q#SH#3UrD?~zmaZ?bwd*5V4<951x{1 zam9PgQ2QCAf6HcJK5fcDMlUWZ*iXci40S`tUr>HuGUxl`4)H~WwBSpU>#a?PP0Zp` z6+6s&FD1egO)DcBgz!ohD*OB+lW1sZ%wZAAdm*xx5?mv}Nm_Yu>Nu+D!qYx6tn>_x zcmbN^T)|6^u%E-?tcV|*J|>uSFUL&o$l#mYL5i=G)R<4C9jnz4o$ZT7qT*%a2X3b= ze~?2d5EUkBp`1s0kj`7G`ZCqJ7Bm)O5HbfiGz*TMJ97JCd=M++&D1ww9qq+d1+3ip zfm-B;4V#koZ#!i~ZdW#XVE5u7n+6qB=SDlQ*ebKVJ&@tk%X2vfHvw9wG|eUt9!*hB{>YpD)BuaFt)5%(y@qOfLLgzuHV&) z2-T~qEwOU76+y~0isqG7SEFGX^i&TeN%oN#S(< zu44kpJx2>S=3n!f*my=^4Fg+wI<{Let$-hmI$2mFd;2ELd?6Za0xtQx;de ztU3a{NOs8E@%EYqj2M@_t$6PpyPdM@$F2?!qPV%XMdDQ=D+-H_UG3}ADb{c zYs#>0lLk!sWSINxs6*3cubO;r3?MWD5VI7XoTwH^Jq5B}O$~~Cx>eF^7HzPXJ|hm0 zjE{eoj5%Ce3z@d^*jN6C^i;Yo!S}o4?Evz60bHfaq1aCyhOz;Z>8G5UK;9D$D^2 zN_?xW5PSz=t9hrqH}kx=PL_%8$8CKv^?3mKCq>3?>Hwh%rhXSyv4sk=4rhaKCEg1` zJhIBZQ>b!c@>^2T!44*l!>-|A@Q0YX821rYs}p;pkgnfM&sZ$<@Mii!0Uj;*LU>rJ zb?p;wK5i@49yYAxJ0&wU0T53pxpGZ8YN3%DsUMFDsUMv0c|0jPNPnDsi3SzWpv&Ye`L1-B_d1Ccmh$^|1`sDI zdGICpXCk7CEF$oD!#fyKz*U{3VOM=bz{$HAW^5v~D!DAwEWIy0ShsG8I5TGvf8sKF zhy=^iK?AjbVRmV%aBM+k@GPBjhE0O^?xpi^f^_H6_-xHiey2KYJ)?2OdIm`h^e6U1 zZXtDCq_<0QJ>slJM-SmF<+*m{+nDGgDiK^*iQb!dM~2Z09ZsZk3k&7x4`0ca)A^HI zl8Zuw;z@SDC#ej+$b%a0GW;=!yR5Y>rJs+EYd?2eM(*xT?~dyCa=WaqyFZ~}E4%6!b${i`!7hCOh!Tb4 zWPmWJ1_M0C=;|DvQP0{)z~YmiZ$_)*U!^vPq!knj8lp^aNR{&5q9zo)kEG$;J0;F& zuqz#W1CQKd+|7dH!*zN2!*Rj&{AKfZwC%KY&I)39NKY@FB7^sv40?`wrLRxq(FS=Z z0O4P3#){dD)qvMM`kJxq;Q{Tu=t_J?pW1B+$}BLI zljeO_Xg5n^_YeJ^mW;l*V*9V!&DzCji`J~3HNJb#js4J$5S#N?`lT<^<{d4t?LNY_ z+>7D-MFt3mXr|?;>M>kRQ9dopiK=d^isGyJnk0lMT2@Y6%ciF+GMbVZ>$NZ)+qf+e z-^PVh0~e!L@!mbd^7C}V4t(`fe)e2fyAGeHXOo0Sm^hOpKZeoinEX()vnU6DU3H41 z@5#{r&a`Z1dLHc2DtdNl{ftZj7+u*FqP4)k7tPA^=x?J*&&tgdec-~H@4MPc)J%#8 z=aX)^H8RrIUc`7=V`ckM$eWjG@ucr(oWAF^iCY%*Nq3A$rx%B38%a%VdIVa3i~rEO znBJq_H$T|lwsqH&!jX@chb>wIfbbjuIU<{xMEyPCk=!K%B#8?&_2|I#Tv*Y^ebx_7LCu4_-fnjO`CS*wQLcT=k|Yt4F(`+Q#3u!225?#i6E zxqYX+dCbtfSbyR8l53}a>(^!2^6UjYr(@FZJ5H|0pVyq?ybwURDgzkcHBXSyq|A*z zQPt&Fu|Z`J#s*>jmH^LVL8_RO;)vtru;Ru_-H&Z1?Z+-cKBf)po}Q4OFYL&oQ@l=c zY|QZ9Z)q9yv6O-J274ECLlEwN;RctxB?_?$!isrt6fSf5_MH z7n@@2GtHZKe~uev*n#7 zsobtY?g%!Bs2EgdgX#*0*D9;-l5%os)!q6iPKzu&N~DzAYjTCXCfnlq37bmej{ML* z<%_Y{PtG4W<-PRaUAMQtkS{hJzwpbqdeeE{`sB#yQIr1dO(Oe?*OcB9n?i+8F}V!T z(GzSmspV3OqE78qDiBWJc~l5id6%WKdtozq@*%%_F?{K31Ko?kBG7|zk7R}_9I8Vb zPe@FS@_n_Yz)HVzN_3ml)VP{DJn>`!EKl=AD5%)2r)aUql&g!sN5h2c%P!OVyEZIb z^jYr0`5TFSJzYRg(9oQcg_u;T+j{BygP!j%ab`q&i!~K=(J!V+sBc(!Ej1NH5XH;*K*by(KG7E9`^z7VeizGDOWjo}Nd1rXHc1fyzAOX=3=(h0RcfgxuR- zFigv+-mZOj^ViM!v`g2I=H`%uGORme$m0Yej>kr&+FfUs5#!>sJ_{yUOomW+*&~L9 za|`ynoCL+TJREtI%UZN{p~Vv&IWz(!>DOwGq=J#8hm|4J~3vm4gfF7G{jzWi4VycdbgBace!LKM_n zV6-ZE`Gy`N4{HX_c$DckE42-0LeyJsWyx9A0t5zYI5t$3f z`o$;%LORp_Wfm{=e2vy%RCm=>z$&L7e<|SG{zd+d8Pw)zl-?18#_6(9XYk1{wqgFE zGcV=422DG>pA>l8{FNh^N)7;m6+qa<(EM%3NM(A_RXRqJs$+z|V#wEY@*+C^>k^?w z$pK%at`8ucW^Y5Fw?_&MQ{P`@=c=Uh^zsaX1tsbDPC>!tIFybNhhj20#Mg@Q>HbXm zs0=dcft_bdSC$FQN)8CgrN_jkrRRitfKV4eIKr?6LkBe|e~&2o={=$#r8<_CQ(42E*GiG@2dcVh&bP%x-3m`<&*98|t6V7-d=nYjg z<>!T}X^G%C!gvT!?cf0Ju09aNX16;ne9r;{@^k3{`ey&jwl+!cq{Y{zQ;%S{P`@OW z{w9QGif{BEDn83+tt)`Ag<(WnkM=*aml_g^YJ^ zIdg_=-jZ-~!v^65U6yp~tAoEU{jF%nb;qa|=zov=(5?He6ZEInfUueVhA;l(-dW_l z>cy2S>2LBLj@QKSjx5J3`S9}gNK~T75Ug-q1H)@zc#Q#gC8I&XYe`{Ss8bncJ*zk( z*^;}%9M5yS#&lG(ZQIENw+GLh*|xc)6$V|t-Ld`MqZs|dsHE%pr|vKP{m550k^o^A zE)(wy@nC@$JqBe>0sPb^O6gCz!j*17M4~F9g;$Aa!Q4)GD1Mgk(5&HsnxSGA;}q}j zp8v}9+}G;8)$zlf8E-6fwXE?*FF}`c(Yd15pm)dzCt7|OL`L@l0vR+L2Z(Pfm4(A! zStvZ8B&r-+{iivEI}PvUnQSJ`;CV%nxADne=8(@zilsLy>IsCjvS8tnlmJ#1Jt5x4 z<@U4F=*sP8O_8ce5~MUqB6twz$0&YuSFh44k$rz4LYPe%l|LX+^-Ess$NDAmfhGA{ z4jpmlXBNo5cFCGq6S_@39DVm*JjPtMoxvK`8&@r7GAo)U2t5EqUVB+#nkS|*^2$pB zp4bSb?u$+I^oqrip2e{^!m~FPd#dD7?}B8~y0k?;&v(V@UE%*EBw8XgRt;->GG}qx zS>6&j2Fw4Z*U`}5GAD|@F6OPi^~7G&t<)jig&)6MFw{eB&a z2Y)`}9yEFN6k56t2%DcW`1^TfZcoOqz6N;-u4) zCZ3)!{!B$zzLw;INEqP(OH|dB6m=;WjLI4@@+!!`9Z({w?SMM}kWZ0DnIcKCMnP$< zATM=&U45%r`KK&5DgV$xs$=q5x)lExYwrOU#qs_D&&=-L(K+A>y&c7VD9zZgcSU0_ z*gGm>?;7mA3l+a25Rx5a@}$#3^LH#(}0_u551BoHmU_B*nk6q_SWp z`m2miEbhpt%T2O};Tw}w%bEw7nY?)>#>_B%F}mDDyQe{kG3sB5E@nYbybht@P9 z6`xoRL9c`;A&;u`_eCCx!Q}UakR2xz>D1{?W|~cQ60=ctOhX z#x0=h!yloTw|B|%ZM7G`kbUWOY+v_m)1ghmJQ!H5edi_c@R=?(7Y^EcrS^O2H&I6B zgnm7SH;75wl$PI}Jl=ivo0~H>jT_LcL!%BY`+so2H^66bv*sNdzwf0V+^qX3Iu?V) z-_a8i9Yzd;AQ(`W2$Jj!=4>{wB|%1{%%~Dsb}?9mQhunsOT8$1vR=Ka>b59=UL^MH z2k9bPb?<=M4W>C`ERuk-&fe zmZQK$=RzKMu;|BJFT|@xZ*JuP=Do8f5NEqxpjr*Go<(j5nXJs~0xEhuQtwSd3%m*F zEW%9Tm&7w4N*wbl3PS9AXiN5)bDMGwuI}5b&&ZK|dZ*Z64)lQyp?A&}{M)u1{Oi_n zr(hd68@4`m6d${M2_HL-x@_3?>G9FlPj{{x*k$pw^vR1m51xAv-`~9(MjqS`!}sjM z5B6V&J+EBByRToudp|CM-Py`PM+8sSpOGL<_K1q6ZS$bOeI7P0i%|w8{)GC2kZ54e z681)=0RwS{+a3R2uJi{C=pk^9yq2`4^$W))ph#Nw8?P`5@OwkW~`WxFZS;^tx~{pm=xOw z5S;W7kSPojj({k*`V|IRxEeMs#Q=g?aFTFV2n7;pIc*dqdy<6*<}q1_;h4|n+olOg za1wOd27m~9k~#Q2=`#;9zvDoCa7a#Qkfh8BI=@Nj!%8!UEpZIn_2Hu-1K!-qp-j#v zXl6NFLCS@b`5CSYC-XBtG+d2M8j5&1{tDM$BN(R9rI|%u#XCQPI({O0bW)r{lyMN2X@ZHmJ|e#=o+u2@94% z{f2$Br$Vn)9)fP1b#u$^?FTJJcO7Qm6*@cj!SI6zU>Kd9&+&&s$2l{mHLA6-e%B~n zM4neaaW-n4(5gN?rIt%Zp@y^z2*6K)2Fgiqac1){PjpX3enS>q`?_w@yfG(?%>9wt3U= z5$o3*TfA4NP4dXr0D=Ah2+zg8$Y1sZEm>?Hr-M7|-WjWBb>|@^k_VL-kGe_$5=!9% z`B+TdA~+JS-GgVr5B9)DC1->tLf1?@0B*^I*{|KRXs404_9e&E4Ekn~0>_OdRA<#>4(Y^(P~Vd#KuAFMX2VZAmjviCrz zjj5fja0S{l68aBmRcW`l8Lv8?W2HaPICc$xWKK+T2|nQa`48o!H6) zrcD`^*vqf-iV-trrdF?4FE$+k2&RemP+*zI8xfB;f+>n&<|u6pN}-~pKs?|A3lgRJ ze!Z{ovvnGP@39yzVi|lw^j2@sQFiAsII1a_*JV|6ir&E-#6@_yYTcDV^)fPJpW=aJ z#!T1=4jq4`LH-`+l>KWu5~Hwf!H&&YLg?$u;}*2SRV7xZCIAQx8OE-vj2I>#{5$ke zhQLXI8G4azh>A2}UTA*jAMiiWd{lP0NYa z{7%3FWv!~AqHB~;QFNEaidvGA==aCtc5pwSp7O@B z?2lNXVrK|bra`nKktM<)w+%Tfw8`BX4hW44SlvH8HO^A43c=D)#5CFjpE6`cBN;M_ z)4v6H8u=C}(#h2cyoX!wCg<$p_4sXW3lSaPtn{B5*D?EefY zvWAh9o%7~-2wJVuudy0M`k@g=%ped?XEACEEB8C;ipGx`G$Rjved6L5Iinh@5k_e5 zh*=X02S$z>m)>jJN7s%VI-K5qHLOpB1VG!3p})PsG!F4s0eoHd(g4Md zQ$bXM>_)$D`(n%gOkyh0D>Oimhh!G5V(Tcj2FO}IbSHo-o=^OLPf!uzCjmJ zo$*q!tQB3@hZIYX4}^&jnjq9d*aNo4Cnv#Hu+=1d61JX%kKtqFt^-V-hI3hgtVJVd!q_o0K=&S@u<)U z`kQj29AVH5UXvKbVrQ8DMQikt^d{=@Kw2p-8XDgKq7TgJzkKCcirD>P?a*ag7on1B z15n(M-2@md7;4+@_nK0Uj(&gB;{rIW6UFY%*j0K8-y8UBnXoX8z<1q`&na2akOFuS z*bRV~LS~OUFwzykONSQ?7ItZaF}mBkD7(mZIHKX~xG(MeV|V z(6r{kB>duA{3Jgg8kXnekf z96=4dwG9O^vBym^F<&Nu__!6h5oyEZ0PAsMfD?b^({#{eNk`JJ`;lr85FosA~9~i(E*JNIYiAGPw?x7jlNm7 z=k&K!qO2!hjHt?kpF!B z(XM?CWoCcaC3V{9jy@}nb?TJd4VV5j&U&tG$igY>TPOU6Mt5qLBE%h75;AuU)r)7+ z7MAA@4H;Jd8R*m2EVpqB0T$n6BouD_d-rENjo1&-% zkj^M#`xBxSL#%RE2yrhb+?l`N!IUvYAMBVCv+Q20g1IN&dwTdxt6?Z?N$*wL_spKL zK{DVMcxcKN+sY5Vn!o0!jIkG%tsOY0SIw;nOFkG>@>lKptms550Hn zc$%$)-~Bv*z&hMdjD82g(Cuv;=l}m01+TX-3egOske7b`9S{X=j_vx~w=fE1r5q&n zH-T`F0jzpEUAJQ2rl%gJ$QD}o2zs^|TlfgrVp-Ibc@3#)+O*Un? z$#@1~U{>W=Lo9p)U=RWKo3`glfQI$~2%*ra+R|cs> zWF7*EM*I4Z_Kvc1M7o{Pm{Qm`8m7lM8wl@MGCNaT=odpgFpTRZ{k?74o-mAZGYJ)8a^BVF@VV}DLn5SKi{Am zn?;a~1LQ++1vall-d*Ta%$Q`DQO|{rK%_xpA+p-|L{hWiP>WyE7(vqWLYvMrI@^k} z(W)vls-W#asTFe30N@JR*f9=;zQy$-x>Q&zvKtqx0j7+JFVR4uFG>wYZrPH*a%H|S zxc;>IHY3`RI4u!VX%#umMt1jLObXr}s^6bs zNg0$hK33tA~T!1w7Q9P|u54#(yU(apRN=s(ewI0!4epdDDZeJd|8gwm(K#rFAZ` z%44_VrEm$}K7GH?oJN<^Nb}cA(}#>2dFVX4U|0`555V|?&?{3<0?xB-B>^7da?kIJ z@Rd)00Rre>`l}X@5ex;@KpgSJXyOx8Pk2-@En~Q|nS+{e@Me42m5!*^g^8Xu*_*Yd z#a?@`nz#T3S+9K7pS>}iiu0sdt1IU@8+=xlNtY%jy1xxIj8x^!{!{KRUv#a0ql;sT zezw)p?wo&ma_dFU7u-y0aAp1j{30)B$)cQXix+Gcs}EdnL>`M!bPirLVbG9q_?Pkf zFO8fzcg&!H=`aR6pSW}T*73Vve6eG(|BUqjf*b%)hQ`3K0|LVi@Q_@7s_^TNqR|t| zkmv@l9BAEMx3j5I>|4-fV`3fIcz^4P){|aRvNevZUBCB#Wad z1Mo9Va&WIpl;t5To(7a^iR79POYW&(A)4r@VH81-hrh*z!n0>z?pjjcV%+j0tN{mY z#y{`b_t3MX=u+GLIeZr_^)v9ju+tE&X@4H<6EF~Km6Wz0Kn4ka2s@*^j9z# zFY7}>Nj2^KQla)c8LtHKz#&E?3HX+{aP6dyThC(Z$MWZ;33bn4Q-s9=l#hVc5R3ZV z*t@ZQEsx+PjanQyfDUh~+u0aZ?|^tiIPe30yRt#96Dt-o^(jjnNt%VZzGdr6PIJ z!WIqJ7qucX`9u6i-kxPk_Uv1-crO#g7ds7_jlYatyw6C4aTxoWAcpVf>5kpIr^d8u zf;0&DgLbl;-Ff6qD(lTf06Q{_$pANtytG_{kP_xhtEE3 zWf$-Ix$B}epM30Qn|TG77)3tpRl!tBp5jX22l~re7V`!E1?UKHGCAefrH8E z=?*IMP6|%);CDL6tvfh)e^%W%y3AUVD2Gw|Wo2bCO??1Cnf@du13d^NwmPSvVAd46 zQusf{i|6jl`@n#A{0Zz0oYcN>Ac*5NC>5$6O?~`fR8uE(p|Dm0+xB4T1L!gR&eYL?a@JUkH+SQOEpr>?e%0j;N~fgxOfLVg0%de~%HL zxa{BW26Ze3MEn;0Bb5Rt5cgb1Kp8s12+&YJF91#KwMh_k@21FyxmL} zAZwn@u+VaU8oIL!Kii$zwpH_F>GqU0YbQ5PZr?(w`x7`!I#25ECnIMnE<3_X?4Tse zROCpv^2i)8MLde4H64I6(1R+nU|?=dLE-!s)NYoOv@nG|WabZV6)C8o^dwe6w#T68 z>AiYSn|5*)YB=%39$w-!fZO9J$b*6-tLwhEG8Zs$xL#=h}oVR zOzT~_UjM3rmFrBOl47piFE*s=d(wlE^YsnflWJ;Hm+I?yH?0m3=pz;j)ud8}!m7($ zbpPVeq~|T8dn?xrX+^c__?D5VJhwQtm=d+ViA{4uoPkC|l-r^3%mk1?-) z9Bpw!S0LzwP$5QWC`c&^6Hi0u80Uu09i00)i)4B`!xVbH3py6kXR>qb6KqwP=r?mv z>lOq0wQ4({TU_&)7;|K;Kb!aO*P?k!pJrxq8&N9`z>+=UJ=~IcZG-8|uQ)^*x7>>H zS1d#s+S0^(rMj|jB5wV??drubWv<@R(vl_O-O~1Ce6?U#i4Fh&ZGFVMc&%nU@BlRc z#SMD`n8Ic;X*S(0EZQWkm_j;Mh6+&I9jH4*bON2li7NTCZ9Ht#yjL6Tx{dAILGkVe zDY$*~h@oBTcW`Y1P)W4-U8z=j!bUTZZ>>6d%FrG6)P!g(8X-l20@AS+$p=N&7_%~# z812KizJ{gi|Gp)D2VL;r(1o<4Hr|eXN+$v*l{Hvvzo4bE1#PRXtmxk-$O2>FSG&@O%%R^t96v^rr1*8x#ovWFnuQFxYXG$wj2RV|kB0pOb=BEp zcNwFV3NfZ5B$%bQkZbVk(}Ne_0@YEMsJv?y;un!Tgsrr+%%2T4U@`zeL)*ai&s+e+ z7{*mpts=q{Q59u*8Wb_c*0@lZ#b`RLbe)6%AdOQqAjJF|XOSZWK*Rcv%|b#g2hsff zsL88?P$RU(Ln-H7wpfYwEbJ@k)(!n>^XMe3 zEg6}eEhJ?N9*o^ZCM|@FGv>Yj>Om$V{5$#0!X#K|t5qN-m(5BDngJlv*aJ7vfNLRd z7U8AYjqM$)2K!MORu!dbs< zEqsih3I%Z2xb#h@kXkb?W5HT z4!z%H@BDQnknG!~(xUKPyI{aGPv`{eZ(C-|KYSq{o<037%~gYEi|wR~RK5lyWxzc0 z%;x0DGuiObsFeVt!>DB89LSo;O3Xp;#%xmHEn6qwFndl^=F%c|0;tAb8_TKN*l(e+gW_aiacb$}C%By@Ihj9=ricbtwZ1Fa*Skqh)a zgXiVrxo4nWh?khu}= zd3q%rnA%|5qJ=s8W-Qz(K3}*sF{f_J1|v7%zb-~^_-h`F{?mOIbTUiPOKk(KH?Ch^ zc;D|P?aP6T2c{i}1Y>0(Dw?E@t_LC(yKtMw_~gV#(<-;`H+`J)#%yAODLJ^y9iiqtU+o?ZOvXBg9N z!03*f@^aVYH;$OvYVGbL%bO4G)jDUbhPG`K{y?}OSwRS~DLFAa>{|;WH;8w58bTT1 z0vUi>U#(qZ0)atQ^dSR9m`r5elg&4pVzVR2DAB;=__x8;WCUlPPQoU(=-|8Da$bb#k!zNkGJJX+e zXS_jY+092^fp>D5@2oD$yd*Q2=hkH?wt{yPgw^pee`;# z*m2?XZtY8+GM^=7prw{=icbm#>tuo1gVl&4fnowGNbMneC~+GeB+kr(N}Z%Qy24|t z2TDJB&ZCID$rcZoE*H@sTIdg-dX$o!XLih_)~kxn$w|r6|&Ne>D`BAv7DG!-rs779Hoh<(yo1jpdauzx8UM_ruga>SVel$q3`PhvC%@7TV&S`sAI`W^Me1t~Z@8y^=Z5tfMAwLIJbXjisv9+`WcAyc z7Y%6KcIh*5CmC-&k&0XmMh9ze1(btK1mFWgb0x>1X=)QG3-UMH&k_Y=5GJN?PH3de z7Mzy1Pi!e{vyE-oh|L+apro&`Z394LujnU+s9Ye#e5!DPc(Zue3Y@qcY|5G0CphXc z@Rq^V+ho$C@-tp|8>LgJ}dfFpERGSTCJa zwmm1ZgEI;-Ml4kS%;UrJ)8=l14d)N&fCjc6V5!->>#r{+-4@$_esuJl`$s}?$-t8pbe@5Jz)o2a%yRIPh_?yK`)R#Tpj+fw|EWEPeK;h`6 zqg@gu#2USHfc<&c>e>hUrHL2Pap}GDR}qPgn1YL59e)hN{=h%sm$>k&+bEN21l@4B z)Rxr24}_ET?5QBkJrysRuZ5?^;Kq`7mKRemxIg5?Ih})DM2Y}Z7%*wHRK--{+zom_ zg1dYYNbRZr7>z6i_?Hi64c_K*Z1>{yjIT5BL;N}~Z~sMUS4Lwm6Y-Gkh1zcOmOel9 zy+8VB_>5&Q*8PQV8*nTdVtlxB-<|gv!wRk>HDPTc!ma9$a_83(*D!AT;^~1PPle^l zqJ$Z-l2<}`k4sF`^inlVA@INjY3lij#LfJ7UMYT^k9Kb-2U~mJ@8ut1z^|nHZMfKg z--FluVFL7lKVXmZ-}wo-K;g63_>r2MK`%KVB9fmGd`;x z9N^=poE}I;`?DIqnL1?&Igpnw5nf!Z9Xn!V`YD*6I%2GL@r4CNr+@EKdFQ0lMGM3_ z`1_|fzCE-XR>!w??*Hbar$ht8KjYtU(US>NU`^7fkYA{egX{}aq{|=#R08R;USYu0 zGpstVM{|&#C{UTE<1VM>mhax6k1_(M_V=BjQ?gPpu+o;Ol|i12UbG zZIf)5Q9ZOE*=c=X=M=i;Ta#H9!1kReqTx6({Hl_Z6maZ>+_><^x)--8%1&NvbUce` z6t$t4LLyywJZp%H7lXsFbKPiQbB#^4xI}WQL&A`)Q6^<#*`(A2ENpoCz#pAD{l5Q9 z!|~F`7>lh-PPGyHbswINPNDP>UHb{!4qn1f@y(}CVGPutlQ-D@-hbulz8l}}*-mkA z+xL6}AgEIMT*_sZr$MrpVtL{Qg5T{;e8WVOvl?OS%$xf}-oOKNtl7#jKn6$Di7Xt8 zd0|!7>b17Nv*$j8-nis9v?&Yi*uH*oA?`1Zki7AGF@NCp->zS^cKP}mww{#I8iHx% zxh)pS0@Kv~*HkF7QBaL#N6#6HjEE=_MwAO#Ns<CH2JSa<~vI4qVX(E*Zzdf0Gw-9BS=d!6Rxd!9+VB7Zxx8Og1&PGZ)6@Vx^ zxKmv=T47+4?5tR*oT)vOcNg%o1h3!$r!w>+KV~|fNfz>Ed~bT_DME)=n2|E)YiZ&U zgfzr~o!9^+`oOZd5aR0@{t#*~erWp?1AosR2UjLlN*NUA8Z1nLeV1;}UMyK{H-z7B zT>eXxylv;mA@*Pq%0}AMpZ`MVZPjfBTjtK*jA(mvNqgHdPVWFPPlilVRj59BtOrMk z!%Nki{R$vYH7%j&hLowx0;2e->%*I`^bW3@Si25TAe3su;aGI50FL+uLR|XD_NlE_ zVWF@b_FbNnwODwMfc3Tr-<&!3lZZCk29X|sw&%;Ij$bMO8dD2^^ck~s_vP5Zn31T$ z@wDn4mZaWEX%}bv1uWIFkGcR=P2PU>?Y8}%bNJPtLLpqVbKmX)JWL!$7G8%+_rAo{ z;jOIsRcsBEb!WvJ#8Spx-ik#@bF+@y&i{3Lo3@5hkQivPh{Ncs>rEX1{lm*qFf z=T!&10S={eVLJdK-KnT2un%LBRb(-tm|yw)j^)aC4{~KY7UH|d*)iZL%x;L^%seF2rzzR`$U*U?)t9Sx?vgVsJ6m)7cc!Rl2O&!zRa3EZ8@90weUts$*y1kDYCax zV{e61RG>r?15_A$7p;!SWc-iU+|aPa3S?bUDM1l;*GrlT7GfHt1aLoWX@cOLWJh>8++ z@n%k>a)`(l9obfkNa2vdKz34NGg-L05750qm75u9J&Y}fmy3Hh7wp1=euqEfdf&o1 zy9&0zIp5%V@aLx}%QlR@1c0ozg=jK+bu1|@%Na3(oEeqC1X*D67B_S3?E31=5jfs( z>Yk4@vNI!+I6@=oVG#+_?Fj{CFU3V=r1}{tbA!22vZohkIWR6j4MP0j*{a{>793xieF|SVdSvx_vGVvu%Z80VIrRR8!MkI+mR|f} z=-D~rHmsfufwV=K2~^*7DdW~p;SPriGXC&RP!S-OQed&TQQR-)iv*Y9tUj9Oyv})- z^D$=%eu0#65>n{Dm{d?;i!Cgq{!umU4D(M~01*EsHSq$;vd9=wxeD=)Sbq5eeh{1; z$xyw_{2?U%U10m${>Y(qdHaxI**uB2=LV})8?IKYB5xz^`TPsa`r&GCw$|#(-2@(p z;^0iRk`RnV*)aK$%@)^lO0Q(2rq}RTzbLG`jRp$sUN;%vKh`-*930m}OaKDtRC-bR zR{E8l?N!Kr;imWx+^CInK=$3U0Z+d+5*7w5Dk`2FHzxp#^Ja*fp zOm=$ItLXHo=)lmtIWS@cGWv(yT*``skl`7$ac(ri&!O<_-!MWq?C6;8cSFq{MBlsznk$Jhn-CG|i+2Y_@^J;(dYke!MORRiBSyf+^K z_28ykf-9%wR&W82;*`0D_8>*y-z@%xtFpnmg*-$P*!zHx2UHT==8*N^GA zoFEp5do2DV66}=2ln8?`Dzfvv@UP(p{B|jOy11(`&3!$o-;5MTlRf)-62I9B&#mN5 zws=y%8U3M!6!a>cW8U=nj{ys6$X~)clfY^2(SU{B_~kmMj|&Qlg_Y3d-I?HWV3jM> z&uJTU3nsoZ9UKBZ01yYMyT(9SXEdpzq6_aqtSDKYmy1f8!G$kM&_w|i@fqUiZefNI zUX1028pFr~g1Oj%t@zWM@O}IP^!f`HmHf7A4fMxPH}67;wrgl)8VoLe{HlZSa&8Vp z4b}ogW3I$X8ZQt4DiI4yAd@;N7qyeU1{>;#w*%fzs-9{B-YlNhTM3&2^m%R|?-?*V zxLwL(EhuOtQ4MC$61PTzNoBNS%M%U#==sDiR}$}l?VqIsveKt7-nGkb&EbVP+ZHX( z*(Q|Wr;ofg{4o!jpZA1a;Oc6AEt6&}4GM|Q+qggL#CF|>H$J+!ArA;38vwDgSchfP z4Fs!XUj@(aO98gDG!{EzEw}``kPV877-39BCX!KftLd-_k)>)P^U~8q7O=&XM4zXb zW|`2~|CWX~;Qvg+8)uG;4b?@Pv*GSLk9&3>FzNnPTnuZCANK@*PR@nD32A=j>NZnC zP4iRMZGrc3e%JQf*TNV{iLDh{koNMJPyhdh`4n1U_k46n*jCb)M(QF^1D_Yyu-?;C z9Z^BLdn+8V$ro|c^tV&ToC|D%3* zPDl4FT9j#u>Hi-zMd6o>ybS#D&u|Xj{uMOM%9{!OzQWt!oS)$rxC(ut803N*!UFoT zJ-2<#IHpT~6Ap^)Koqqu+Hst5!H^8_LaXk=A4ZWb21Q3aYKcsWLw{?#OI4HKO6^bswJCoSZ(OeXr!r5>WDZh>$UBH>-%6 ztOAWuix|r|d$ZRJg_e1F*gcQ1kP(`5L&-113hA{e|rot#35|M1k_4Q%zRq^-d2IugS7D@R}?S z_2o5LrpOXUu8%0>{d$xDgvyR(_Q}Iu~OFKlD(-;;30O{T<0AE0$zrD}; zuLr-${ztZYUdHCB>z&G|>(yao;o|5u9P>C2Z=a1f<^BF#Xhv$~Q}UY-Q9`o@DB}qj zYyA>FaR9e^{!3owG-rw~cP?@!1DNCt)5~%+dpg6hN4Gj3rq`w9GxPx&ZhB>*UrBSG z<%}xG-7JDU?3ter|Hy;4a4j;rRpICMbDzgh`~SbfP>V1Rdyp9avRxhm3c@06g`Mkx00!ZH(r^s`{vZ;>fDdGC%~~oaOei}EsygI6 z<3@t>nDRg{-h<6{xM1E@V79xhTuhKS)*4hXXDHP&l9Dp;2LrH1zF{nhd;?+~^vQ`X z4fC4!Ir+)QC;B(bYux4d$70*1(~>OJn@nF+GAd(g9ZQw^Q|BUQ=m`^oU=glr#@F$K zr}&3Z+y(9pg8t7vKl)l<@`qP}eEhVx;N^9XjV3-PX0Ul!k5RI`JA~2yf3Y)c&WC^I zec-*j!Fp|NozM1x28=w<`q0SJ3a|7Z37r0zOBseTI!q8$>plCFu0F?H2{Y-hhXvrt}<# z6uDWNMe6GUJeXBM*FAZCosSeQuYD}!d{|w}8jvSe z&d+~+TWJHj#9AQMq2q3QR@MqcTOkl(S+yx>^#*nSap!CQzuOe}I(ogMetgaBY6Za{ zf*txwY!5=fJe5y@Uz7Y+=fwMnf}C^;#NwzWC@F}_Z$U-$ZEMisAS%BF%?cv&o8Uy9 zk+NRLG&Kj3pdd$50xGz1`LfEB_J`46WaKn(m38995uZY7((T1Zf443lGHIh59s$>S ztQU^Y?3%KFFfRH#gaFFE+B0Oy$!%Gyb7|ibyFm1+7K~Ry088>z_dnS4hYJKE{9Ruq`hS=I??2yY?<6lmKaWpca4geH}^$ z;B^lZrPFr%=)H%Rb05+iVio{|D=cQ+NGt?;g$q&dxc(~)`|<{msb3aOp4SRxaSc9i zOKfJyAn1ugxryLPKK`lnD%1^2dzk-lWDgjH{~kJ(E*!WE_kx8{TSu%t2JzA4{tylw z3}ESxxDCs}7!DT5?kcV^gxCByEE9*yWO+Aa3oSfp5$qSjfUy=5Jj02*$WMF+>yF67 z3Sk+n(2M1mQ{(x`!YfC8Gd>L(ZZi;n!*V+A&#Ir`Y0hXld<;!Jw{vG63>Nb+Cixvp z9;iY8Lg?hNEDv2?*5ShdKpKlE{KHn~R<=6-b0%3?U`taDP!?SP3C9fx2|#0yo(m`n zpz}50Z~!8rV!)#SI&A}JuLRI(8<0eQoE9*Pd{{mg0LPMb8}N>G8^GyY6=bKSs1BnM zwIumzt;HEVa4WSviO3 zX%!8CWaqE9BegD~Sr+}272*M*6 zeEic-PvFYFMoOEdzG&i**YAh)ck_VnrT|6VKw8 zTpCvKZ03OjiuAl$giM}n&P&g{Ovmk>6^N8?q&c%9O#YdN59MJp9~40nZ-#>u?U9^k z6C^7LrA#Sd;kd4%Cd3)6d+7 zg<}Vd&A2js_=u^*r~UBqgKj-~bi02+jC%d$w8e|2i{{r~&RDo;h8PYgrv}M2afq}h zn6yF@63VxNgV1t@B*$!Syg^uFpsnDRwSRdlqRX`ft__J^(xK}gUhdKN)}8{G2YYoI zkd{BVcaOo4Oy6kh<+W=sSkVKUdB}vxL(yGZ^w7x@hM+HLUfc%&2qhXL@B;pn!%5+{ z)W1R6upxNMX6@y{wj(cxiK{$i@-_7tdNJ`9@mMn_$D@@A*E+f-G2%o!2^+1)=b-PY z&ptbWtDHNR4;ztN@8Ri8%C@5Gn0OY5=@vG_r)(eKW|Ic>pMd}*9+uxUInpH%1s2P} z(UsoK>mEgJqJnvHGd^%t)=5Ech#@6rtC095spIxuDhL|6TdN=IgD~cVPxu$0V5|xx zWTq)N`HHj#Y7YJY{d_52@F+2A1>3&4EbrJCSWpHiyh5O64GUq^mQwH|0S&(XCexpQ z2G__6oKSD;rg(!l5H6x^#EM z)+EnlPkQotKB8})o*|xym}xu@lRM^rl07}?IqaE4Kb+<{i~N{{WqY#UBl4=3CvVUX z+5Iur6_Bld=p*RF zj_56!Ifs;kTk{adFb=^=0Epi)555QJRzaNqzk}XncPFIK7daZUJ)Dr8{aRpz129Yw z7VSU1CF>G$KY+wbwyki@6?h!CrY{CE=!seZ#4>?JvYlGT)yw~Xs26fl>jn9GdA_?| z(OUG|guLmK&cOVw@XT542Q9OGePLyMo4%NwTL|m+=m8M827u-{F?gg-V7NGu1zSPeW>&V?$_6w_}+qMG!Cv6`qY@lj6wFaa)x3t&9$;PtGtx8Ng% zg{T?nYt%#N_Nqf!kHeF=rDQGH&-(l{0Md7)&wYR|n9YeVcCGUNf7vRa^Hx+a;*{rL zsjke$0~w`>p;$I~zq4U%y0bxo6QL&*=mL39rU-I5~_T5 z2WP;^D>IPUmWd`Br!B+N;mkXqq4~C{@J9d;MF>eWHZuT(fC+M-B7+CgF6NB1Tv!?J zwc_>XK)r_j1}2pTQhFqAA2ZQe$s+7bOM6golf8-$8Ub3fsb&Q>!-zsa#w%ggOlMY=b7trQE%8BAaEQ2 zr?F%#!$A~SCr2rf3{kYl-`>J_5F|IS;p8UVF}XU=3+OC4DIhd1`pcO{o={kt$VSEgK-&)@IPP0Ez1aLJ$2cx?Q!$B z;epp%p(>{6-p zXdksDeKb)M!}@5eT!Zxyt$YZJ2ju#Q(`MhraOCy8YMHTBO(75Ln3egt1MM z@Q)i7LZ7=zw+YToI-w2wm$aG`(fIJ%!%DX$?(I*y4aL-Gxn0N-g4AxakymkEeb*GYFojyhT-r}J`?)bMqUqJWQV<33; zD}Dh4#<&_sqplgB(PCLta55sbg3!{)Gp{->6(qWRPS zKy($`0WVq;747}*wdxp6EJMjd%`M~NP!k_D_E4=0yl?W$Zg;SS+29@&Qcs6(FT-=r zziFFDGziJ_(A#8;X)-~*yTXIZLLnf>~=*8%Uh*N~%>Vq`dD9uc7g z?%+@~OC3;Xs|c$FU|FI8$ryp6$ukXNEK1~Af_J?53gd6{zQ=z+=K9@ zz~~2fO32LvtBOMh^bafEwfaW*5C8;Xk@`iGrtJu-frg+J*e|=ZZlf}g)ney%E1rRj z7lf(F1h7HV7RxT~dc}&ulhktCksPXbXUHL{&{(Un6xp?lt+g#AFKBLc^yX_8oi(o5 z8fVF^XZNtS&f2t?)X3V(qR<-f7A^uCG7v8mZ|71h`#uJRL)1VzPazS7lc_Pv_ZqFcE~sx=bJuz*62zt&yBzh8w=UJ>Pm-y z|H5|pv){XP@80Fdo2d0?e{9KKWV^U@)1v9{AnrVM$>yb~&cdzm{H*W}Zeu(nMvwG* zKLD@nP;dB;k+J5N|P!%N6T%59VtJbP@yk0RaTXK9{j{1}j>vcEQ>&|Xv zIivL4e#i&k`naiF^m=-l(qE8RY)!NfE_!QqOKvs0KCZ5_#ui&+ExC2=9wzFnO^U5e zETmr6miB%B?yjd3_dj)gHE}KczRZ;N`(F{X3?lblhJpd1gV3 z@7US1(kiz;F$yA;@ zZ`|%`J8AZXC`)drT^B?#&B<)}KP|ja?SOx=^p>mZ2inNKWlZIE9LR53yIdFvzYE_o#7SJteiQ}b`JiZa2E_{cb9eBIdJH35 z;;-P@gVXlob8z{AX$Rn_12Yc5Hh9>9srvye87l5Bjh0G)7I@R<=L#B*z&<)LEZStS zx$lN30Pd2^GvH4n;T`h5bjegYNMj)Ni(xfn%+tAmPZrF`NhxcVC*p~6*d|32M^GnW ztp*5BOq(@(Y?bP1ize0^Iij$I#xQbpgvS_fOC2;bppzGXwjq)cch+!S+YHy6~7}Y&3r9G~o0q z0AGa1rNbH22$n@wR>KR9L>7iBv%fjoA74-K#rNtr~Hopk#hHMH}+rh;l5;Z z8h3X5nAn&avGC#el)e+v<7-rlZ8;&O@AxtCy<_o>@$9Nb^;lbS*#~Xy#;aHOVc7@c zC(!TG&xwC^9yY9Vjl}pE{7dIyL%YI0t*VO&`#rE-m1P zx(!XQmMr($(CjMu4#DQl@aHApB7CX^tV-FTbMYqWh}I88fd>GP)@_3|VPmKTI&oI% z8Q|k!Y;%7QQ-RJ^*x;MFkxo zQY=ITgw3*1fQli2YmGA~<1f@Zf_0b;No&%Q!xXa0($K)f=tMZY5c&NIeTL2)wPfO6 z=oh(b70!X(2Q(W!ni6wJ)<19Lk6Ao)Lm~`l)GH$!*)9c58A9v56!#O& zjwA`(=bV16JWJsF^@fb@SqphR$(%7{T5XanP`WpHsa>wX=y5}b4gdf$<^{7B0B4X; zp3U3I!YlF>0;8ds=D}z1YqMZ$T!60TNxm9NFbz9U3@HFYV`(DL0tnkWvNE;^7nM`P*}|!7yb;rZNkdThqlLG~ZG^X=lwLHAk`9$| z+L+7O-DMaE>plMtty&2`x^;|ky<-b5!oTAe`0<(xH*S1p>n~XuiuQZqEJXuR)<8Au zzl(*FGx-F$28X&DT-3U{@UB#WlY3ZQDF#tr#zCr9R%n3TM?QtV1NKjdnLSy~8pC3g z@OQZ6_JFJN4XeX8Oj)%T2Z?paz7>EsXfsHyqrg1?fEIqG>CZBS8}J5AebR;~@I-ko z1+wQd&Xk(c&%;~FbJ1Li+5Wdd{D6J_59PVg572Sjq4E~!!9egYRK&a>%BvlW`rp%1 z9@v<|vFk!5$D>r9qtO|eA&Y^h%SZVS#ZT}Uc;*khy~EmJg@wb`wu4QGQ=z>Lq2 z*~XIVSrC*0^nsdbaTeoyoX#r=90HT8AaB-T@+svw-CD+RO0QIgQ-#-5PV<0cIsQxN z?4dTpLF+f{h;{COp^<@3+sb=v1m0njXA zJMbvpKv#kA&oOj4X^;|t%ff3}_$}v8=2JDwZqP~fEi0i7Wx-l2t%W!eZC(#cp4vV` zU4KQ(Nq75Z*=C{)TawL7Wy+bs;^i{_J;J1dnp%+>VZvfYSO^KdN-v8wvCs!;&ZNIV z1=R=6@2q~n!hAd!b(soNzs8;5$1H$|P;Qn*5Yg4J4{wn6vDH&eT@4EXP*=ltwi=$P ztKkE-8upT#xhzv=KhA^Bt%eHx`%0n=*#aR=TEe;KprdJ3$vUV8%fR92p-|s8r@$6Y z9B&QK*sNDS()^^#eg%LuoMCOV?P|q?n<}i8MyFOR4N~U^EP^!72hunn_z2QCA4ubT z;9+`Q3aO17(l{S_Wuae5gR>wS`#(0R4g3RD$4glR5E=|W-%!$5i2_oX5*}%9lGd3( zs_f&D;k>lyX z(ljV1h=xWO`I6du`}wP9G?#FkbIfx`pA1c9P*NwJV-NCpVUwdINDmXO!(l>S!rwVB zV7Q?FctgzeX{U2`DgjYw9yw5=c6=SMI&}Sv)q8Nzn>g6?((k10#P(1LB!C>*H?g)F zLtOb?Ht`U06XGa!s7Ymz7@~@^?r#x$8F&*wHG5PMqHHU2R5hexy(`%hr|5EHIj&A- zkcm*U5U{9f3fxL8w;?EoX(LM)L3*Z)QhNLCBg+rU_`9tWKA8(AuKo2~^V(D94m&gP z_z!7AhE1`}m^@*?uqgxkPYrBEM2E%~59Y$~9lP+|-M`}7?){-*|F;`$%kW3GU$)@C z`}(7}tlwI7$h%2$s$m2?iV2F2z=`_W4wq9nJh6HUY>N>yO3 zxLIC0amCWFXIPd|-fO%Ldhe-o6MAepw7PcT z@2=aSSD%7kUfvq;ZMFgK`(pgK{0SLbmQ5vl?t5gFqDYZ#s>1z5c}ot58?d0CC$5Y%k#QZa=AAZl&qgiD1hmnFcaJ6CxG6g+?z z!AXVi13U}eD$Mde`1%XUHxt6l*YoT+Z$j`n$;hIy+5xLOANa@9;tBl538+Ant8vVx zO!sLQwMGWBU2SUOC+Ol!_-FoX?_DLI2s<(}OP-a5W04+QPfod^tY^PgPr2r-XNQuW z?JL$L&tIxN-T(kQt{xNUAd9|!6?66QenPF1l0wTsH++1QrZgfkk%hjqd@hUw zxEoxQvu?`d!osn$*1dQtN>*HJ<6M}4KXDI3$0?0ZxcieI@7{yA0R(dZ5blzC8%g~% zCSRU8jJF6oE+bC^P`QM(d}yaCfQG4cic;*mCbg=<-TdaA)>}`ZJn8WI&do^BpO5o` zdF~$_gH7z8ORf*!H6bhq9#1Gv=coCtRJICrnu%`1g!v>dG}zPtQ9ZvrGcxnllOLfo5Ad&(C#@N*pL=!8r$5`w;*rH4rll{$ zcgJLTqhP0ndKmU9=)?JIVlu9c#y?|QyPQj_yMHWP-?7GH*(R!c;V;CGB$^eruWV4~ zxd(4Y{r3b@Dq);eq;_RyKdu0D5LOm+Zv=*N@h3VA4k|31hu}B17X&=<@&~kXCAxA2 z|4OFZ3Y2bJXvCkqBGS)yS%ufGe*#&idyGXtra4cO-PIavExb3MUz{A}KG}bXCg4Lg z0a}nNq6zpE`A|)OJ}4p&lpWiVABQK5G#VA1n%R}g83oX+3%3Rx924{6&@P##!(aRr z8Wi%)(UeQmeOABs!{XJbj9-B6jTT}>+{^aNF9875dN{uH40&FS*a=Ut)96p-xiF{n z46|>v5izrG>{IO<6_bmp7C^n@@x=1!$$b%REiFP2Bmg8d3!!v1y_=FFajg6lQ4yRL z$+Tcu;11KmLW?8>$5QdpotF)~-UcO|w`(N8?GL^RD&;OiG3^N-Vf|6(=L2LWJ&?8VCJLz#r{4Vu|Mk`U`x6T`Pg}HO_ZC7NyJZFr_IP~x!jHqxW{lmqdUE#i zOaQ@fJVC5PM#~?h$gT=gI;k+HXaDb&_7%8F`}37{Bq0^tYzu|K5Rd)rNBr#J+}l(0 zx6D|!6JN_A=8TEhOZWAq3y+7Ko0GnE-4qz^lu74m9kL&dXLB#NDF9LMqXP|r7JdzW zXOdrCvU1n68Te~5`{}{ukp7g)hfY8S8c3)_nM~eB^01T1zZUkWGI<*@&`u`*8XW^H zLjwTfV3pJEeOXlE&qWF);-w&-3JgF&h1mlDqLLTyv1YV} zVmGUT`Lcht>I{jfvsSUk$%npc_w^+=zHdbjNrJDU-E$18UhJvtul!KpDCew!oI-9# zG@>!avKA*Ajam}&qfxTusTqKn2V~GU7f+1HLw(yX$`r*$M*=G&H0AE1KiiMIU+^8e z^8U63YgaAY(@8?kG)dkZ)b4eozLQb$nfyC&$dw`cUd|QskCOxru;%@Tr(o#?dfd4)hOG?2JC~vDCg2M%F7` zty-fGZQGlXMrKiiV?)Wui!JD3nri`ThO#Q zueZRDul+cn87}FN+zZ{xJ9Ve~so6Gs+X=R7IC&+Lt7?{hEB+|fA#EHed)l>;nO=B^ zq(jCgtw#tQM^mK`h1iWV7KCtMJ~>ivQaFY*YHN&a-fE%<9@lJ+rmd#%?`XBzCiEEf z9Wzl78y~Ii3&qDL7cA1=xrqvv_3d_|KO4|_@uC{~s9P{l6b1G{Ge{O63 z&vuZ}AcI1iVNwQzZ-@Cjy#Ld4{1c4+a%9)DXW+&G?S^-DA4hO>AM7{& z=IMe@=(h1IzUPhdj{*pi2!gZ@i!~Xn&NR*%$7iPD4d!lq>oj~Kt6)y_l8wP`O6%-n z_|?X#+k^+AATpsQK4llif4FDz$Z2$6G{y*Mo;}26# zGFuci%v&nb0C6 zkZLA@vjVAR5?DmuVcybJm$@TanBPzO_9!&fx zrS<%^qS*LUKvjgM-C2C#m=j6TU5L&S2;srOY3OGDiTiNC^`U!T&k;|ag3-2Fimn16 zSV>OFc4VXj!7e#~Vf!nfwBy2rcyAR;3ooZ>scxbz(o)?-OLY_NBQ4cUv{X0I9;Vl& z~dbpr@p=R2eV1HSlraw~j3gC|BS)I{O@cPH0nE;gI`->{^l~5+FCKb;f1miplDvM^ z1}>hnX?F(d&|~V@^<6jYgSGw%&V0GF@ya?6j)WYz4ul06WWnN=Ham@*frT_n{S{e{vOGkkL9>g1kC3sz*cIlIdgezAG zfZ~sN`;Rygro8pGV*|&d>_wR$&RANn_^FteM{Ul;o>xj{YGp81j;KDgXZw?UC{PsL;7qLS|VLjp3MbAhBTzLbjPW}HUL-#ekUMH zNT|xD2>VZ*iz9`#^o3J1hi1}w*-xwqCu@AjXTwNJco+WM3Z<%vvuY8i@jV(XL*+w{ z5h=pS{u-Z_v(_veKjbQaAVxI878+3Yd-%ORlo6bXih@Z6Cx+n4ve4No|I* z+PE>NFC7}%05%pxHiH^5WkkEaNCVcaoYk`7`Th%Ne-0CCqEn3j5D=-U17q_dwiEqf4 zq|EP+KW({aL*CAjpEhLgsUOol1OPFDaW1sw)#d*R`*5j{O_LsdVgw$UkH^53`EaeU zjipD06Y*l&r`>QrF^>8AX7a#F{tuQ5s@z}KS411idD%QTk(G9tj%9e&lqYNoQ|qhN znK=c;I6NXBkAutTD<7`MBgm^C%*hm7SOYec{7u`i7@1JGa09pllkDO_flq)z#O#E6 z)y=992`^6T-D~XVJ}GH}*loNF>Q@K?|4p~>r?zXDV`d+cMmd@I+m?|DEL{9!{FLEGpDhIsj z_-NMokQ)jZ4NU?&Bg(-8+#TfZgv32_vf3qQ&e^*sV?%P=%#8gu_dRpw?%6drV?P`| z3|$#^q_Y2ELSKBWgn6?;S#;)*(yivAWLMVWs7XacgVwbNB zHp*d4HmN8lXk{h)XJtN;gU75?xI zw;0FFLBkRwSjv+qwv(Fl+A!jHq@q}SG=YM%7Z;^qBKwsoOfcYFp#l05zJAfJQY|Fx z-z{#>);zy@_Tjl%X~Q!#us7Z(!cOpurW<=@XFJd7=hSS*!Wk#7Jozj)b^68`CuS@J z5(oi6lfdlyA;1ixNZ%acQdQbnI(U$Pqt{#KW>QF;XmqKbgwE?j^eBZkEW$!bDty)0 z6AB3S;nOFX8EQkP>Zi(Pp-MtJ-rwm;`j=9+$WbP$n9I@5{wgQB!E7KeFEb2N8QRE; zlD5!Sv{{Oc4~vYAhVf>p+avPtJTAlo3ht7B1+XJrajv94tlR${(tm_M!)+%`LSGFN z4rZ;*!oKiF`XZM|w3Q&Sq*_Z|}2CrDP7Yj(G6RwDb%I&#u*GOt}1 za;6C$!RqKt3;w_Imb0{Va+sdU%V8ESwjh{IvmlGr$iaxX{N^-CEoHo5=rRIJP}%*J zhy$~PuO~Dz$H7+3r_WrWe|+Uy9-MOhH~otI>#qkCELpN(?hWC9t$(9NZtL~y7o)8w z&LA5}`&DopYVa$(dRb=Hazyrty`{f8>6m<+z|OF4Vi)!v0)X@p?KyV(R0T009@GI? zey?sl+M4%hzz{9NSsBgBs;sQe%GhE~KdXrQ#|hDyQYOH$NhtD|9G*0u#kDax!HLlV zX&9S`Nc{`+{PSnmf$Tb%eI}HBCY)VIuguO zy#NUuftR*i&`LC{if&9dWj7_3hqA&7HNHm*Fk+guZ(a~CA&(GZp2QS!L`Qtx^ zob392_me|^{iyPejKKxH{^)uHw;W?WiPA?#9KjDh3?KFdN`xjf7{;RjTu=-8`U;=H z2RI_@d=?Id-_RGiq)*_3lI!Q`KfKvR^T{U~?G1EMdnlL1XaFE>VMx^gFvM=Mb3hFT z?VdMob7nTlOVtl}&P|$ghdJOp>3OFhXJ~*4d1D?VC2=pA!YKdnUNLWQ8a|T;7v;eQ z=|f>2+C}IB3(w&lu~6($7x1Jd-QGgTSr8HuVhJHC&izOJ07NRFrkRY`741WZ2; zB6Ja<5kd-=LWgZY@|Ym{^B`SNXb^2aN2y>9BR>y=>BPwHkhd~aM^A(xH4TNr`ecn@ zfm9K+XXz7f_5pU-kS=?(>r-+Ts^pvKI?{x}XwqA>&uYOi;`D&K3NDj>$S?PogkLWR z==}Gocqwcu+D4&uNw)p4$3fd`)VlK)yq88P2{D;{GM~*IlUb`;=HKu{T%XJy@cXWS zW_SibpeRRwFq{`6_^rr~cQ!(D4ytvg4djnP+E^b|Xy&Xm?#>=6FrG9_OZIFtG?-yD z6%fJ_Nn$Hf2-kmY=yk0|miOQH;cwsCp1_wgHXCebY9ODOzwu*>kS%$4oUlbcYP;x$ zhR=Yhy|Nk04qXq!&+lBm1cTtH@M{1dwq6B>A`1aycB3{Zugl9n9xbO~`mDO{bElg_|SD-#(fj!ud+#9pi_OZ{gEgKB_c7%IWJ z=ZeTb zKfoNKi3Tt|^gVD&4y;pGjrjv?rB`BQ?RVuQizGLZYQPUuK4lLVswy0>;!($=wTFoDj)^!xAiVZ5L*etWBq^ zqG!f)(z=oxjH;rcOcM=_iZ}5}DABLb-mGa;w{4j=W%J@zjT^N~ZdAW5)a`+qy?b!U z{>5c_Ce{o`SB8thqgU=-)FR`+saZ{ouBBY(&juy5^oGnsUAJFQ%^nMA19K z2o24%7zT#QJ_^dxhsrc|6DiaYGof(Z_Czlh|Ie`d zv@3)%=)M+xbpDe8qtpAs?0J(jZyiV-bHB&Xn5dzG;pblht!5MTJ~JoJ$j7@z zm8=UYv`vR-0G7aEvGfAxDh+sZD~Cmfvgn7<$Z{jQItkb`QD;G-It$cXKt!_9?zC+{ zLv0iCVeM0So44fe=-ah(3hdjZb6sUMxOq9Mzv=9$9VyxQr?yE0Qb+U~ z+&?vS;OkA|=+~=>Uu}h$PDg&IkSW$?8UFNOG#`b=sq9=zM44>8ibGol&XBf2fb0Ry z5(X8YJp&VKNavKc4+HoV#qAdp3*vo&IS#_Tm%MhdeRVw_(8ZlIL?U68`* zmFwxk;Rt=++{y;_A-XvjUF@ApEN+6upVXq{fMG1$7ZT$_m{*i&JaKB(vjr<(%$@h` zT)_q=ZM=98ugsi^0>||kn+@Tb6;Rl^v`kg-SsvAIH1o1}Jl70mN zpbF?C84+S*FDnLio?Fa1A zF2+X_ly<$8-E};M@9y`(CSA?(nWO$jiN9dE4S+>SB!VxVIei5i0FVId^_I-;(o_chC zDLErFK}(n~CkX&Ci`3K!)RzU-ccQiY-=IG&r&B8#yQ%&fhGO7>Gq!J*J3^x;!;=7( zT5%h+Tw?$RkR&6ciO2D9=s@Bg;k+Im4pD_tIY69nWR>~M4RG+zE$`Lwt`W8=cU!&A zzL5#XQ@8KcuX4|o{Pv$UEO)&R5Eu-7MOWb&sY6w;N)A+zih;~WMI|mz0jAJ1(%nK< zJ0BTt6;zRvTyO>|chyQtFW4X|%uF&c!xWB+v&?xwF1X-9vqI5H4ccVH5=l-Ynt46P7I96AP?6y?J#c$q))S2zfYbD z^J42DbNi6lXGeu}3PDZleIHvFncIcUJ~Jw$y_ww8)sh7^3HQX$fe+Dkf%AmIbCJ{UstJ2V9EZG>8QxOBa35(wg`7{# zoke(hDO`)kEW;z=7x*U_2z?3sC)!pS-A10aKWu*@4_ez}U=Q3RKBpcr5D8?UrSD<{ zKwvbQf(Uws`Kzn(HRrvWNT=GMRj;LwS;^D&df75qd)YEH1s38YSV%{tk@8bHWWLED5cDaT<&|lG`uCsP2SdW)U4iZdmT}AHsK~)y?$Vx?BpMy_L9jS ztIVxpjx>`4{PICi_Iy4{v0K zSY_x&jO@cYhYcTq&eUg8HBdXa$l% zSJ0Ep*8yM%7y(9uiC`+22{OQZuox_dmu20Gm1^z_P)y4JR>rWh9xEHLvNgC#djYp3gUNK@saU@d0|iPYN1fl|*} zW%4U&&QZd-of~KO)B3vHdM@_2*3@FsNYYx`HT87Xk;T?w#nwT^)}&%<9i6pNv9-C* z+OOE!yV%;j*xIHzx3%5Zdlp;!6k7)rTU!uXRh_jx3v2AiRVH_$-R&gSSyOe^dBxUg ztjlKVtc!}RvuMXzGj!HvOq^rVoML)0`FJt>1EV%KL*5P(>s6NFncaHDlF1iF8Mla6 zA&mGDBjYIp7c>w-DK6TF3f$@o+FkpQpVBxaSY{L>uSmOV;k^$A4VjH*4jVihH90+C zZ0A~W#dt;QMh#oHZrreykl%aw``t&S46B^*@?!c$snV6S7o%YOMd??VkXF)r=FkB* zpwZR~8f?9x9=W`^KAkeLPQ8?pKhoJhZFm~{2R|DyWpbYheWy?EgO8xdR_!{6x;L-B z3ASw3zJ0SXw1CNkk~F1br(OxwO0L1W*VEIl<4c+l7&Lz0zVZ0meI>{Db$VYET90S{ zUe;EAzi_cbN zgSGLIvG8g39XQY%^>}ag1eT+q^f}5FLMfsNw3G#A52up5&fd=A`!>Z=t`2egiCvF4 zuE%J~aA_b5E)ivCEnBh~Zd$S|3uP~!CoY*Q!e-k)Jeae5$A<^AwFO6yoIgexiAbF` zk~&3!@%$k0sUUzK?e*zoRD6%m1}i}h5K?I8Ymq(vU8{0uMA<#nM*;ejLNV-~21P01 z45}Zz;?(fbX6W3xb<3pY@3qO^F@4eI=8f0wUpRO7mgFYQTW#(RZ`6;e0fjw!!d@q~ z@_=bmh9&m$tGr^wjG3tfeHELI0HXeIbV@L=JhiRu&@;Xc&IcJfi)w5MLY%9JS>Q-M zacY<&E+X*_5P~QZ(JWoR7IjEX&Blu~aLP73_mLN@nz3)+5TwCI7#0X9B8K$x9#V?{ zFv!j}r*k9h8CZt{|i#jc+5EEg%+g_I*CE(%rh!p}@C z$4*?Zb?%Zq4{y$lZRgb~sebzwLhu}Pzul@y<2UZkj4l37!lSE&hIj6gJiRS|fKu}8 zV(T}SU%x!UQX;)=S7RWlLkrE+T7!1s9lK!)u8UI9DO)qNCIbi{ne@h1vRZtYJ$#0p zC(qXr))b-fQe3ykA4NQkC?#Iot85CU)M?y*gNaQC6kuq;NNpvH=L9?V`k=}_6?HSw4K>@ zX<|~+n52fN$;8CEb4E;=GNN(+fW(PICr-q5;_B3ii?34${vIDwqjv4yi2#9Cr7zJs z(sFOo@)SFX*4Ht)CGu1WIgiu0dkYd$SVlC&n}`voLius+VlzS6&I~$98(%9Sx>jO* zS^^l;XIEiLMG>d?7K zqxN+Dtsqu9S7xR22Bd25u+6#J=A!A$HYb2BVnZ}qGnQO=f&eg{C&*Axmkphhw8`4O z+BB`0qMWYBlTb41iv(3&ZRq6*LIBM;oD7tN!%pOb)OqGdwsv2(aJ8IA!%xdmQ)$gw zJ8)?tTM$Yoz}zzr#%2s^*>qt4<}C+xiH$JF#F!&%X~v$s-MoLFRxNt>X=bifGa{;1 z9DqOuKnh|O(cyMxJ}xNUksFUs$gM#l+xayX-=hOH<1{2mN35m^d6U;@c$z%f1!~?9 z%f+g+a>$%pP_Q1_C?#H(Ul=8xl`-Nquz3Rrwu;N)dQDvg{S6ewpM$SgO|2{Bb=K7F zG%#&pM!Q3d>0Eq-zS1lP?!XK51La8AhVGu)5UoY4jEp9Q!5Bqub7a;tdf`<}maQVq zH}s?l|16#~31DB(G*4{`O>w9r8EZ15ul6ojxHl`gRf}Z2d*c`qzukB2 z*uIJNlj84P2B>7Gcp87CSp)RI7i=sy+{vZ17()uRvaW9`E2Wg%@90GE5O@Ymfs=3a z#k6GTfQEiaresrJQ<`a(X@zO4>9FaXsmS!m^wi{*!pwg3uP}6Ek|Eh3rBKX(FKL(W zn|859#Xyg&dC_Fr;g9+?k53QRn=PIDHMe|F%^b7r!12k_jMl>&JI6*D+N8FLjly38 zY7Y{>7Q1WK0S#~gDdjCy8MxUhIIb)Lfi)13KaDKDvM4A=1Gy!WivC2w+OvK+u5=6e zhBNIFKdTF^EH!dRYt1lLFvHbZF#OWK{g;LCtJjuEKjN2Lx5A^?2GIZ0-F3iMQEdG) zdw2KVP|_g~h%uCe9*QIs=^->FlqbEZ*n$NMRzAT8wx<+p05u4RPZ2PQJ=i4(SU}oC zM8Sp+Ulecf=eqis$YP=(z<+@R z@;MOc^nwEIOgq=cUfBrA>dRM0MNl8ahY=s)vUyf+=jYZ7;Zc9q#=@y_sIY3?y3L}+ zGH1!1Ti-Nyl$HwnEI~H|Uu1q3srQxu7wiKkcAR!v{Q;z7?x-2 z-#J$*pw(+yjbdngW_)gZzxbl~>G2ra5GN_&hV-g?yqt(BEz{_FyO#Oh0!>6x{8|)q;hq?jAmD@EP00@PQA9m)<+NKv-qd zuDEh)_r87dlIEICGJ200Ik0Q*a9`JjQN|+UA?x{2SZoF`mO)A#my$#*NzcE18Tz+x zVE^`Ix_>+4CL`Zp3HK)9f_7NPA?69|S;TB*F28|1mAQJM%(cX|jk)w);UeT(N&0Um zOw&3(TWRzRZYDDhGww3(BlKG=**~~8l{he9f%(3%%if8lnguuh=f^Gf{Kmc=UB7cv z`=u78S~zC$pdg*ynwh?7<0&zp&G_|RUumZVv?gQMs#|Vdb^q|8LxwNHtLU%k(4zC$ z8G}2^@xa(zwyBHXB>z0(-6BK&u6fxXflFD&E?RsOA8&eARBcL^Y!~j9PeD_i5DhJhKY9vG zeIo~dd-K&-#RD&kRx8Cy=l#uXPi*_>XK{4j;SY8We=kVyV@ z>MtV2a5Dd;(jweX076lEn;&-((zLtf*+Wu$Z#_3n9<7%@8YQNA?+p8rAaICIH1#L> zWu>xY7CC;5#Nk zyJOO($8RD&r%zsBP=3>K>TaQRU%aw!pVQGi-|6s0DF4K^P=1LhC@pnf1mXVRRvWXe z{#YBXju|zy2QEd8xm47>l-ZlLRe)7z&ppYXcM;lZw=f6!SxAh^kM-A_nn~r&bL@GQ zlc%_K`}U(p^9G#SW7y!iHy$`pRb};eep^ym;#Bad4>7W&a*42IyKOF4bKyKA8(IU1 zFcgT+A`epiE4%Urksq+v(b03nD+;aJM0vxLpi5y}0C$2Ni*BLNYoSW?(zxTz7_@y{ zp^M>HqV6qOclnb4CgShI+T5o2)hxZdK5KJ{TOIn+21F0$mWQ>7(dxeU@^*0=nz?5N zpxXzcZ797o04rj!R<**eEjBf52OqXdX;F-M2#{6>-C6uVK5w8jnXF>0fghp17NY~^ zVxBL?bc#Ve7zTcY;ZvM~P_;P{!-sGW){lCysfhoc(mIUuu}bBPx~r!=lX6B!&k=tL zK%c6ky?mS&fE6)Vt4c8!!(z%CKe{#MO(*WZwjk~T%f%Rrh`nHu>+4}8-eOJe2Qczu zuydNZzP?LhZ4c}2Kx_wvm3>#Xt20N0hu(zf0&BBE7rWySomK~3U)1(pcLIbCQH>en z)tIwQO_xTTEA(PA<=|K@9n{V@o=S8^Trhf$m==IOMMrz3b725BRu8LMVb{(yHEgC2 zTcxxphGkTeesoLBkq(?Aw_({IBuyrAD&JIktEcG8lSywKJx7dFXk}q9Ptnm{DracS zoZE~g%_p+vOG$G-x(RBY#hN#EMuf_UeJbnH48YfC)oRXY$xmn-iqB$p-ujT(G-N+D zb~a*vs^%}V;Y}gmR`lE88yt*j`PK&26V1Ljf>{6i7ws5J%;9*&yb62ge2uxGk9j{c zOZ0LO8h3k%1_PQqMYLPc7@G3hDfsme|AJKQ1Im?qIL2Hp*kDnSMyIDyp8rm}#;G+c z*D!AFsN>S7<%hD+(2GBeZ;X!Fy)GZw`Lu?GlO|s9_^r{>+qW1U)`(+xCh)gW9Vd?) zntok}3&$n$@2q@9a(!B2wZ$hRLcSZrJNYhM^1s2+Iy=WpYO8MDYWKgrYwJ_f8r8{< z9C>=B<*B&)6>60bzUirl-x1>I(^p-7?k$y9R$aYmkC~lSn@P8gf3W3U&ibpu*@JI+ z=8nfVoptt=Glz^WnXu^*C;q+(iM4t5&7`3py*d6IkaJ{g_xr=+o=%*!R#p!?X|~D#u9TlT`{kMSHvKV zIl;%gpP424b`TnOmXF(1+^faq0V}K&Gj@jZI&({OZz_9jhJxe*9(Rh&Lb|KtdaV!i zy+Oo%e`;M{lJrK6`Dm2zpSdyoFGAD{`JPs4sy+Txw_lWD`2W!1==3q#*ykJuVI!i}KcltF`UYTbK=O!6>^#GJKj zmz*w>)(&5UXt$%C;Xg!>>~mnPXzgLs(ILp!_o0_ropfdM1%v8Yh`juoS0O^554lp* zru3Wx&W|^IcoRPlan5bsoY(nvh?g$SQwhI#k}0x|Wvz-X;ddfN4K!AH&qM^Q&R4?Y zVvtsMlI-A_@X9Mi-I}A?_Vw6n9Hd^OJ@<86^&UyBC}%k1Lf;Yd2(Pa@3$)o}j*mH4 zF|UH}#RN$4GnciX*1^owmPRmozG_Q~yDUed6?ap`y;`gd&^pJA(VE)Q2u61WUGEMx zdPjdU4_cc&ZovLa9B@ih+V81h5j#YCn4oFMa~`%C$P(+o`TDIG=$i}H+EaLz9v*<` zGZ>vA20$Fp)``dHJ_lf2AMT{=7Hi$pMWJRB343XFA42pD>r1&(U~~&Gv^0l>hkhH; z7u&}a_iVQ>^{D=FEr^leH5j`lJuDDmZv&0~cJIv@^h;D2B zjkzUyG=RpF8g#Edy%Y@m6=C`OL6QtBe@ZrEj$^) znL}=*Uj#24J`@pGJUcydS!7-$bj8y$=cLaJ|qpY0Q1Vi-a{9D@$;O)d)*UUg}Yl zCW`=n#8?VHSC+!ra8&e%6rZI~&3kx-zCo?#XP>X;Uut70gR#UMPE^dRL}SrYV{YMN z-p|a4#=0yt?o1zdzT$pV%nGn?W=DSTc2O0-tN0&8ZIUYiB!@FNw2AU>Jcmzpf06j8 ztMFca&v71>_~=iycy5^`0h+Ib^`fVydHa)SzH+vxtGTlJc0o-_sN{RF#Pdm$xTtH4 zv-)HB1TP$_D7*`%l<}ORr2rD|oM|j)JcYwC3a4F9swq8K^Hl+TN<-E>4tFQ3?dt$p zxSzhy`U@mOMMAplB;=1G{1IctZ=vk+YvEPVOSAbmHe)Sf)yjIdc8aNuiK!yi;{T~) zo(-=nYn5UyOOb6~F>g@Jv!_KEt1NA0$r7t{j#td9;F!qQ{DB(#nD;ZYMBf2I<4*N) z-=(K(vhMw)_Z2g|W!2eZg)lw| z9X^p=`sBvaki60THng-IF?&HKTozzw%fOF}^w@WA>ptFFTUOF|XvL%=v*xs2VseH| zWOAMN1heWSi41C#C=A4ZLc3~LjgOiazqjET@xs{WGdWQ`J#9Dw)@lE`50vxmD?+)>CQ@HUS{?6zMXJ z(OCgD{suhe5V!q{;$AH-4d6~PW4LKGIgQbg0PZA8sjl}*Y>)XGcY>|!O`}48p)qsm zxZeSU$I}Y)CNGV~Hr<}2_ESf?)%ILlAo>nw(rxEfLx#Vl(C$nE-Q1TIyNiNjuPsx@YmM9JJ6nAh(sx@> z^_sr>g0dUXcL(}@PNtK-JF351^qpJtZI7YvE_LE}1vTrnHsg0UCI40W`)RdfKYjNA zwJ%QJedxO6Fvcc|u~E!%k3*{ec@SmyK9?-n zJrVs1quaZ`FPa%r&wPa(e0EuoYoZpW%qYYuZHevbwEyE7y7HU0f+`pyCf zRnqq)^1z(roMB#N4ufWJslUDX1lQ(VYV2*R_)!ruQ{-k*a*8Scu|vuDkMEAjM#&e&lUG03a zSuA*L*sKCkU=DlL*!FRY?xz|$Tl^7EsuXM;%~|(yjM16;{c`SYmx_Tt-Ia9*gtsaod)3Se z$Z3Nm>8JKRS5{{8-EFb21XX0G+jJ$r|H{sEx(qShXFr#BbI=ZU%YI^-rMqk z-?*PY7AXhs|Hn%4`_=kA-M_ly6DeyKZ_>f6N7Niy)cGyE3s*7mgF&eH0}`Fw-u ztosY{7paWHx6P-@pXF)3Eg;4q4+q-49dRnUQx%Wn%w63nY^h4+PRqx;X?6;98BTFt?^uUS**G`)H*i4ZlAhYzR z+YW5J=+?JhZMkW?^5&qPoMs}jWJBBOdkVmR!bge5lF$%ZKUcFo=^eLP>(wH0F%}5Q zxAC538-T3lwzO>jXMBy^SDX=IA~B3q<=W5s2QqxiEvUEq4^5v0pTEj}wSHJNN1Wq(*{QJq6;906SYe>7jGaF*XI*@EYmdj7|?)QN?oG#}#)mS(4N0 z=$)?o6q($W7;{{k}$qKLMkK9J?W zOg385w@u#<ubBe~bCmc1sUKXR)zbbUro0&>3nX;$KXrKl+}oPZf8WKKlaQt z>w+*$HJ5thk24~!GtE)DdEwT43LoW+HjAkT`ap(@!{R~rdAUk<#)Q_JXJYs<4j<&c zAjc)dv)??2e@^%*&S>S0>V=QNaDA=Q3Fq2}C{JDrTzfUc$lYnwJ;0;xFJh3kJJFQ; zs73&`N!onP=;=JFsXEVSP1f)BnT!8JK64!y{rk=~DDVCMgfB5$Cn!BP0o2$ZXtcQn z{--@{=#_o@eXN-iSlitq)wdp~>&bo&@*g#eP`igfeOp^l-b2iAD+nJ0uRzN>N(NOo z!m4f*i>Mf=?Ji}Y%W*4nuLcxoi)t)pKIJZ!C~9I-9B# zV1oNqXg!tNF>hTo4Sd#SDWMZe$d6fDxb`vCU(FV#7_QAL>&tvrJz5rwVCg(UJ&A(n3 zO+fuUY+&6>V;yotpWmUwn;4@B>u?(wnhvpb?H-KrLpTGq{(@yR6cc0&waTw618Y|3 zFs0M=>cL!nCYd7?-doL3J@|-sS2l>@+G>VpV?1-)pk{8fTdLg^^;TaJV~IH&R?Nk4 zNYw*o=93z{3;Rd?m|4OACE-z#OA`E6>(mIJ!(s{VSuRV!7_b&}8I5ryOXe8&1DIPW z6(4g6#3>o7CHm%Z7XXA_qT2kcmx`HOm(_ls-`BeW!0sFlLpB^q0LX!k<_j!ow-~7H z7-gcQHXIXsENh-sjximOF&CNbI41VuTIaNBcsMUz% zH(#|EGrui%UHGehmIZ4;SKn#8SCoX^@TO|HtUXIe;W2JIrQmiYVfV%1KnY!Z624Rt z_P|!rOiM$923(gp4HNBWl!QH(9ML4SLkXRI5)LQ{doc}mpoB)g6Fh5`guNHP7bu~d z#B-fcXD%VfJ98WG2T?WTEnT%esG9vwzjK9IxqEDcVoLCv*dMrc6xCg?4G6wr( zG*U7Sp^U-5BOQm7j6*0RAvhhrl8;v(TO^+Qk{84nZB^F5x6WE9Ss1+l61A1nDLxBrC&j%M zmWo2%qhW7bFMM!Y^Q7q7lPn=bJ9Jv^Dr$Bk&p5+whezMx@Z#G#MGurlCYf7=LK+Q z#|3j2h>-!@IVa&RfPDent$p0jDDEe$24aB5eVUJZq2hkRyf>f~boJ#)hT>iepNj4p zcUv=t+p1=69BF2m8got!GnVT^cD`ihwjRfAeYsg_mJtVqn-9=A?K`nV*HK^6lf%Cz z{B79h9W>>>=|m164YfXJl@ibCJSqyc)A}iq*i*6#B@3f(=3LP|Xo%a+px$`}m;D}P zL*?g(sTM14D}i$50Y;;LfaW{UJT92KKnx~szpq?#ottaQ9^&>}Y?}GFwtdJO^ z>D@M#+n%kspD^!sPiT6#@#RS;#l02|h(b;8Q_NVs_cJ%vl#9O6m@{gaofUS5Z4fip z6!#ae!J4v(YDymt-vr*8+M?YpTvIbobN5`eJ5ed|oX+P&p=J?} z^X*P7lq`%M4vE_CM551Mt%c%VE9X<1zghz`hTE!Ec7?TBrVkstBQf21$6RlNccu|? z#M@$(F$5(Hf|c$}h(JZ|DeUpu#aZt2)je$Vqx@*&Ea&|A$qN@-DExlJZzcT4jCVXc z65?MndrNx(^a>REge7P6SKD;XsKZN+JIeagL_jAs&Ub1lAEY9%4L$>=Oj&2`0 z6U}qwC@;=rxx#%l=EQ&v5^uPB0L*f$43gDN&}uip_v})IQ7^%}MYke8!H~bFF& zuS~|v!_{<|uK)S!RR25Fc%IICMY84!r%)0Q`Th=}T5F zUu2H@F7(;vsxM7*RLQn&(f6YtE}MVDVk208_FvQWPh|a*4Eim}e-^SnU7#2LzpKB1 zkmm^i4Pg|V`~uvHhLM_!@~>~`dohtsc4JUXcFh_7=IaM=5MIM;WRR+z2>HRWx770DuA zT@}m)D=*06D}(dPU#0T&T^nrXmwfU`iSsjG9Sp*K1;A`$1E%9@{f!m&Q23A2k;v(& zqkZCkMSF30e&rWmRDSTmjiUDl&Mji&2jWMkzWG|oV~>?Y-x2Gbl;~3cqGrDg;$eJ6 zy#y&zD-5=NYW35O82W>u^5WHc{0G^zlzOBV{s=w#@v9%)>x@1qt`~C;IHOk>anYZR zxROv}w6*cUiElvE?Af7CGj*MO?~MC0HZ|bMBy}3P+>X5>x;{{y-bo5tbrc+ar1Ib^ z&Z?J0rfBk#vu103XO_6HB((9wfl&5|F(7JuVIT=+f}THQ9@lEF?|tQ@`Udw#5Tljp zg@&n9irZPykiKOG;(z6jS`{}xA~t^JtZq?z{`@Z^Szq9YJ;$tUM+=towafx`{nIrCS`a+HOC+-E?@CwN9WB@al#>aLvuD$Ip zaOO$BPvZ`2Tc`yTiYFJs`RDg1I{{+5k-th~iaQOtex>g;`tA;3j-oxxCf*o}v)qpK z-ITtU;df`NT;4XED!&)vcMEGXemAG@nXVi9g}yTge=Gj|6#7n0g@CiybHvL*XRjmL z*=t7QzxwHGntkf$1PjFZB2Tkr)IZ6Y#R7OcfIB5F)-rplvh%MuFA-fKO~2Dm-J07| zS{um|XfVe}cB8tTIj+{1X*yYbI!K!g$LJyYLYnSpQI^Cp+DfYr$r#2l43^>do>1#) zw;tlYBpDsO7{;e0L%Wj>>np`@!`HIaExv4aY)nef#MjvW~Vu6H`Z#2I89%( z$5<-5$u&ErV=TvLKs@9A@>ddql9FPW8aOLZdCIs zNPa%Mb5*XBtE^{fmb=1tl4^QPiL^CRTTcmd`hv7nGI+svxw0JbSnTN z*)u|Fa9o`Y_ayxtCd#tg^zMpt5c&MejEE+tx%^%IsLS*?t*w;FRHrjoz+~e&USj?O=B!A zpK&|H{4zfiqoJ{X<&UQmr3sMxYBNfff?m8PemY?Hq8_b@`E-HxDWWHNYvPRK+M2kY z;86f`CQ6$3Vhul|9LRFk(+LIS;Be30+y`sSSA_4)HRBkCx5pZ@oA8r4d@O~JL;mXt z-`CgbCm{b*grCOY=g4rUE7qhUtc6&U3Nc(<9({v%v5S1W*pG<0yo+7r+r@qaHgj(< zQSCi>_+GsCRHXKvyl@+U?dvm0pGCFy^?wKC=&ck0004N}VqjokWME+a0O(telI+A{ zAc*3UG9}*r7d*|4X`<~2`{Yjv;QsV=B`FzG)g)sK8M)hYrm6`Haq@&bariuFwp? zK%WntbFd3L?7+^>=cYwGmv|i`Lc@L5INaVl$SUF>ql`NOEzX(uoS$@TZthA*e*L-< zr}L$%pxWG3UCqpAh5?HPER zmfw<>Z}~P&gb<37C*)L5yr?I6V~2)*+7&TsDHvDJ04RX&0tQI%0j>|^=%z_R?>x~d zl3hVixj$!;orvs$umk?APwe1d`cuBhKYGz8TIc~i6B`CNJV7Fs;E%|zC>BuK_6|J) zxvu{JN%|DM0000100002BNC8wi27d-JoNw>2mk;8006}B5iS4#007kiQuO*8{nZID z2y*}c00{sB00000004N}V_;-pV9)u-!@$7l`Ahnr7pDPG1O+g^0RV7t1y^|5G?inR zT}c#0*R48LH@5Ah5!<%y#-ttFcG`&TjBVStZQJway#8i>tZx?%>h3F>Lka*u@Ta1f z%A7L!?2)foEt^>6-Xc?eCpAbV-Q2}a^BAq{G8)KU#sx(*G+k+F>Qi9HP)*~PD_1CU zl?0`$azxpoj8&E>DZzK_3a%$csxm@SI3(@ZWglg9*q$ucLu>!Z<*qBMU4Jf@9A$yd zm$S~@#O0h zhRX5;(@bNE>eYt?tj#{Eg&D2j<9j5~VM5&7<_uwIsgzjD4J1sxvfZK=32is#bSP z*{$D3i8a~Y?EOmn{OGU z^fTL7FMBv*KWDJ1MRD*aD|CIGJ*(VDntO|>zAF=aPZsN0hJ@=PKgbYfM*WjJxF8RZ z?eAxtT*oFUWVqIvEyvg|kCNz)&@lLeqq3YMGM;88hGs6CGa6GEo+cw4LUQmIr`&G! z?Doh?PZpm z#8TNwirmd9F|?CCB*_HkNlO;$xKQ#~XAbh9`r6WdMXEeROzHYqQcGjwnJ9C~cW0Td z9whpMtdrBMl|hj={0K(52(d1O^<@g_Smqqp`)%}dH*uXS&lxXt3I|g^`aJ5|_3m=o zyO6Oyp2_ZYu664;5box>@IJ2d)u`gXrjSPH;>nDW`~c-*Q}z>sZ(9YqW7sqt~nRnWXzQ9P=kAlwWD&yJ_4EWh^Ovw`vOQ zB_r~gjMccuY3)DKoV}61qjkbEnit1bnHG5~jN?}K8;9iu+Q={}hvj+Pm*+13JjL#P z4wMyc37^+zqd61on~aIx56Nb>D@QG{v@4zKvlIqevjv;}ukAXqQihWvf3pJqN>`S` z-)YJ@_@llO@5^$%e9f`wIb3}%$zF0~9%pO;h4QBEISRuw)c48MbVs;BZsV9M%h~9+ z$LBD_ZKt1$aJjs$*Yqrx+)Wgg>8O7HM4|hJrSc*R)#siPOH3F~7dMB-?k*0<0n*)K z)hxEF?)B~IFLy`YDXl$=Bkmvd?pyW#2Ck1jFTR@g_)2?>=W^eV88w9rYXIY@ybYhfP8Z^CtM3| z2>#}zJ;zq~>zw_TMfS%?f>a{Y{-m7b-^R-U#;z!eqVF4F?Z#zPJ5CX&wjDL7ZQHh@ z+P3WmwQcwGtj<4!n|vg>*^_y=_Z{u^M+TO8BY9uacdgNxKhx{s`z<>)N5gdW@rPx* zKPcOEW-s>rlAoyhNS(kyuLa(W*M{185ms=VJjCDpOXV}3nQY;scxcYTL*>5u=w{Uy zx^9?%x(n~jz3@)_G1Msz2-s-1VlyDR>^N z0xu}9tW>X?4Y#PaK>g!&uAvvaCG0_bTn+Y?{p5o=Ky@D+?hjgU9vELg`?m;=V(8}Nh>Ih`WqL))c>#g)aJ{LT~*{Ds<$JwZ1>JFb}KVwc}$62_B-;*Qwh~9xa@q6yE zc)M!xhu8med}(h5HOO4&Oz^7pke$`e0V}~bS)MJwqOH6(u|{4$z8&7M-eM0pig>^_ z@CbjqJ!*Nj9>WjeKbAdb@8%qw!PM&8IKmVzf?bF^-{~qm1@pjBunr9GoXb%;oBDcs zO+RDgeXySFO?I8w!PTm(HP>U4^g7xgI75ynyKcOlR-N88K2N9Fz3uACtT_UATKwq+ z>erZw*%=DSb(UTW1lq{&P)+$3EGvhsp6Cl|pI%kw%@3Ejza{nj3zRL!sCHEyZ}Zt^ zWg;iFG`9S9E3f?;_x=3)J`tlTIv<<)cgW<#w^t0V`+Jk#rT_2@>c!M%zRhpb#QYv- z{bYOF4AOVmJRarFS^GW8%rUjzwfPu2`M0uLTUsAu{{b(YJi!B$VgUdE!0OxC zwr$thwr$(CZQHhO+qP{y?hK2?YEW=8YX>{dUdzdHE^}T1A|L~F1f~PqfV04R5CN-z zgTPBrNoXwe9s<~>n`niUq$!G>?E^Etc+iQ1fpXy*;Ue{T-Pj^c9ME6fG)A!QfH>eFW z4eyNgOw#QgThJYB5WF19hvtP|hFgVagg-?ZMYcq_(bmz!F*H^(wmHs=caOhM6i)0)N|F;( zc&cyeQkt7?kv^F5WtL~&WTV;s*^fDEu1#)L?sNV>U+@6rMgRZ+u(oa6#^4#-c4OOi za+gDG4QkuAZQHiT?k=@zUDfaE2&Os4gt>|3U_;pRI2>*t?mM1^pN+pyC?{A6vx)tP z65>4K4N?!1pLB!Vk35UggA%5EqWY+>X;RuDdQG~Teuy!Qv7Sj|&SpMiaaae~6WPl+ zV>x@dEbc3wo%ftSobTb^7m$Q?h5JO6qJ84lVx@Sxc)j?!q=uxOrTnX+jzX;1t!%AyDPu}Nd0ADVTA=zfX`yZLX zXqvg2+ggTpzpk?`t^;*5^{wo-%PwN6h2Q zv&}y(Cd*~3!ur5gVVh!mY@c9XW8YyvV*mV~za8})EgYR3qZ~X(&@s=k)p5{q*4e;` zcP?|Da$a*jb2V|@as6<2a1VBuyR)7ap4HxRFWEQP2m71)R|Z-HfWV_5GgLcd4A%(D z!u!KF!=EE9B7-7xBL^ZsqaC8u=-pVa*qYeec(eGBxF+t5&yDX%3`m5M4U)d3FFhzd zJ^eV-DkI69%r?)Ovxl=Ea`xPr+~YhYKR3U*P`3~)>@PMd8jDwf{y+|x1FQk|0hfR$ zz;Cb>m;z^khrp}gYw$DpyVShYsnn}PFY*7CmkvRLp(1n&9u1RVCG3Y`cqzOOJ_TQc z-y-#qZpe6qhG>v5G7VXY96+uk@6ZNlPjmuGN401SosO^RP9=b&@T`RJx_^Sf2u=59atgxAX(>n-t=x7)kqz4YSztbQ54hd3s!)QU{5#(E`|_pfXCrY_yHwDc~KSA4E04L(0H^A5oFPRbPYX1 z?{E^F8yClwabr9MFTfsNi;v(7_zwO|Qjol)3TaCEknv;%SxpX+o8&3^NR!jNvd9sY#B;a~V4 zkyxY_nMH0;?PW#uo$+Kym~D003j#wr$(CZQHhOn`7ZS&b31u}uspfacp zI)Ra35m*HdgQMUc_zsi7ys$EC1Bb$Sa68-&F+2$$!QUtqDu}A14rl~gh;|`^uAq-N zDNc)X;-a_??u^IaC3r7(_&R=1;*;#85@|z*l6ho136V?WHHo2FXnER-cB6ynOuB($ zdW_zu-&t~&pVeR;*hsdJ?O~o>V{h3{9*3vkS$JvQi1+4``5F%RF@BGK7s*6HQCoBp zBgF!-T_|x*JQcrXJef*nlZ9kW*+CAM^W;`3J;+ftl|FQK&R0C^>95|&(%xyTD?{8)lf_A^f7%` ze=&(nPE*OWHbcx@v&{tNqIqSaZDw1>HnkmXUpvxHwF~VgyU#M~?KS(tez6fQu}klA zyW+00tM3N78E(DX?XWZMguCJ%xF0^5&*Mw@D!zel<9qlaeuAIlSNJXdfETgBn$^t! z00001000B*0FM9`08{`4009610000E000620we$i00DT~U5*2C0{|36U+rF?9CcJ1 zgE}^bv29%@2g&KOG3J}Qz&1(NSXtizf-ufk*e5v7S2-j*&e!Jp>vQ=A7qrLuCdYKg z`5|6<{7|AyhbkFTq^WbxJ-6IR&M{Duq{x#{Wui!oYh_>LCFi)OSG8f4peC!*l#g?* zPKl_jF4L404e~^&;veqS$WWp<#JuK?2VVG?GI&|IzgqerR7sh4ZX~UtTx(L6#WYQ* zDp4h+X`YOF35wK6$ZoJ=;)g%%c;v5!__uv7d^3gs004N}V_;?gga26!DGXQu04g5= z(Exbb+Q6f|fkB&L6Qcl=HsdBiMj*Le(8@qnT7ZE=n_)Ynhqa!f2#~p*DZ;}-1I%I$ zayC&F1F=}*d~LKPK`d4?9VJPA5R0ua*3C#7#A2UV9%H2pVsX@^2UtphSezlQW@=zl zxXKc|&169=?&cIfh&rB|o4S&1KrCJn0Uk~^5R1>oNL@w{#Nu}_(Ub-26$o&IxQbzu z5H~x}0}8ISnG!C5ishIJKo|yq=&J(u4k->QArg=f2^oO75-NrFVgxBjD7ocNccHbM tVKAWAa>W4-6CPO5YPmzfV8AB4@IjO83?{s=KqX^`zGvsj4^tdfk^n!e$aeq$ diff --git a/source/files/magicbroad/assets/roboto-cyrillic-400-normal.495d38d4.woff2 b/source/files/magicbroad/assets/roboto-cyrillic-400-normal.495d38d4.woff2 deleted file mode 100644 index 47da362999e33cd11a91f4d62dc06d3b18df64f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9628 zcmV;NC1cumPew8T0RR91041CN5&!@I09dd903|s90RR9100000000000000000000 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 O=*P}hnT+8U0002VxO@Nr diff --git a/source/files/magicbroad/assets/roboto-greek-400-normal.daf51ab5.woff2 b/source/files/magicbroad/assets/roboto-greek-400-normal.daf51ab5.woff2 deleted file mode 100644 index fc71d944a5838fcf1a870298679652ccc81ee878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7112 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 diff --git a/source/files/magicbroad/assets/roboto-latin-400-normal.f6734f81.woff2 b/source/files/magicbroad/assets/roboto-latin-400-normal.f6734f81.woff2 deleted file mode 100644 index 020729ef8d353ff843438008300bedee1f519380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15744 zcmV-`J%7S?Pew8T0RR9106l;J5&!@I0FHD306iK20RR9100000000000000000000 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

      3C=zk= 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 in s?d(s,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):s[e]=r,n=(s,e)=>{for(var r in e||(e={}))f.call(e,r)&&i(s,r,e[r]);if(a)for(var r of a(e))h.call(e,r)&&i(s,r,e[r]);return s},u=(s,e)=>m(s,c(e));import{a as l}from"./getDeviceId.e8f3946a.js";import{F as p}from"./index.13b310ab.js";class w{constructor(e){this.supabase=e}async getAllRooms(){const e=this.userOrError(),r=await this.supabase.from("rooms").select("id, owner, name, created_at").eq("owner",e.id);if(r.error)throw r.error;return r.data}async findRoomById(e){const r=await this.supabase.rpc("find_room_by_id",{target_id:e});if(r.error)throw r.error;return r.data&&r.data.id?r.data:null}userOrError(){const e=this.supabase.auth.user();if(e)return e;throw new Error("login required")}async joinRoomById(e){const r=await this.findRoomById(e);if(r){const o=this.userOrError(),t=await this.supabase.from("room_joint").insert({room_id:r.id,user_id:o.id});if(t.error){if(t.error.code==="23505")return r;throw t.error}return null}else return null}async isJoinedRoomById(e){const r=this.userOrError(),o=await this.supabase.from("room_joint").select("created_at").eq("room_id",e).eq("user_id",r.id);if(o.error)throw o.error;return o.data.length>0}async sendMessageTo(e,r){const o=await this.supabase.from("room_message_queue").insert({room:e,message:r});if(o.error)throw o.error}async openRoomMessageQueueChannel(e){const r=await this.findRoomById(e);if(!r)throw Error("Room not found");return this.supabase.channel(`realtime:public:room_message_queue:room=eq.${r.id}`,{selfBroadcast:!1})}async createRoom(e){const r=this.userOrError(),{data:o,error:t}=await this.supabase.from("rooms").insert({name:e,owner:r.id});if(t)throw t;return o[0]}getUserDeviceId(){return l(this.userOrError().id)}async getParticipants(e){const{data:r,error:o}=await this.supabase.from("room_joint").select("user_id").eq("room_id",e);if(o)throw o;return r}async getRoomOpts(e){const{data:r,error:o}=await this.supabase.from("room_opts").select("size_x, size_y").eq("room_id",e).limit(1);if(o)throw o;return typeof r[0]=="object"?r[0]:{}}async setRoomOpts(e,r){const{error:o}=await this.supabase.from("room_opts").upsert(u(n({},r),{room_id:e})).eq("room_id",e);if(o)throw o}}const q=()=>{const s=p();return new w(s)};export{q as u}; -//# sourceMappingURL=solid.5ae8e60d.js.map diff --git a/source/files/magicbroad/assets/solid.5ae8e60d.js.map b/source/files/magicbroad/assets/solid.5ae8e60d.js.map deleted file mode 100644 index 7041234..0000000 --- a/source/files/magicbroad/assets/solid.5ae8e60d.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"solid.5ae8e60d.js","sources":["../../src/helpers/BroadClient/index.ts","../../src/helpers/BroadClient/solid.ts"],"sourcesContent":["import { RealtimeChannel, SupabaseClient, User } from \"@supabase/supabase-js\";\nimport { getUserDeviceId } from \"../getDeviceId\";\n\nexport interface Room {\n id: string,\n owner: string,\n name: string,\n created_at: string,\n}\n\nexport interface Participant {\n user_id: string,\n}\n\nexport interface RoomOpts {\n size_x?: number,\n size_y?: number,\n}\n\nclass BroadClient {\n supabase: SupabaseClient;\n\n constructor(supabase: SupabaseClient) {\n this.supabase = supabase;\n }\n\n async getAllRooms(): Promise {\n const user = this.userOrError();\n const response = await this.supabase.from(\"rooms\").select(\"id, owner, name, created_at\").eq(\"owner\", user.id);\n if (response.error) {\n throw response.error;\n }\n return response.data;\n }\n\n /// Find the room and return the room infomation.\n async findRoomById(id: string): Promise {\n const rooms = await this.supabase.rpc(\"find_room_by_id\", {target_id: id});\n if (rooms.error) {\n throw rooms.error;\n } else {\n if (rooms.data) {\n if ((rooms.data as unknown as Record)[\"id\"]) {\n return rooms.data as unknown as Room;\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n }\n\n /// Return user or throw an error.\n userOrError(): User {\n const user = this.supabase.auth.user();\n if (user) {\n return user;\n } else {\n throw new Error(\"login required\");\n }\n }\n\n /// Join the room as current user.\n async joinRoomById(id: string): Promise {\n const room = await this.findRoomById(id);\n if (room) {\n const user = this.userOrError();\n const q = await this.supabase.from(\"room_joint\").insert({\n room_id: room.id,\n user_id: user.id,\n });\n if (q.error) {\n if (q.error.code === \"23505\") {\n return room; // Duplicated primary key\n } else {\n throw q.error;\n }\n }\n return null;\n } else {\n return null;\n }\n }\n\n /// Check if current user joint to the room.\n /// Return false if the user joint the room or the room not exists.\n async isJoinedRoomById(id: string): Promise {\n const user = this.userOrError();\n const q = await this.supabase.from(\"room_joint\").select(\"created_at\").eq(\"room_id\", id).eq(\"user_id\", user.id);\n if (q.error) {\n throw q.error;\n } else {\n return q.data.length > 0;\n }\n }\n\n /// Send a message to room message queue with open a channel.\n /// It is recommended to use the channel to push message (see `openRoomMessageQueueChannel`).\n async sendMessageTo(room_id: string, message: object): Promise {\n const q = await this.supabase.from(\"room_message_queue\").insert({\n room: room_id,\n message: message,\n });\n if (q.error) {\n throw q.error;\n }\n }\n\n /// Open a room message queue channel using supabse realtime.\n /// Your server must correctly configured: https://github.com/supabase/realtime#server .\n /// And you must use `setAuth` to set token on the realtime client manually\n /// to ensure you have permission to the rows: https://github.com/supabase/realtime#realtime-rls .\n async openRoomMessageQueueChannel(room_id: string): Promise {\n const room = await this.findRoomById(room_id);\n if (!room) {\n throw Error(\"Room not found\");\n }\n return this.supabase.channel(`realtime:public:room_message_queue:room=eq.${room.id}`, {\n selfBroadcast: false,\n });\n }\n\n async createRoom(name: string): Promise {\n const user = this.userOrError();\n const {data, error} = await this.supabase.from(\"rooms\").insert({\n name: name,\n owner: user.id,\n });\n if (error){\n throw error;\n }\n return (data as Room[])[0];\n }\n\n getUserDeviceId(): string {\n return getUserDeviceId(this.userOrError().id);\n }\n\n async getParticipants(roomId: string): Promise {\n const {data, error} = await this.supabase.from(\"room_joint\").select(\"user_id\").eq(\"room_id\", roomId);\n if (error) {\n throw error;\n }\n return (data as Participant[]); // WARNING: this casting is based on the table structure.\n }\n\n async getRoomOpts(roomId: string): Promise {\n const {data, error} = await this.supabase.from(\"room_opts\").select(\"size_x, size_y\").eq(\"room_id\", roomId).limit(1);\n if (error) {\n throw error;\n }\n if (typeof data[0] === \"object\") {\n return data[0] as RoomOpts;\n } else {\n return {};\n }\n }\n\n async setRoomOpts(roomId: string, opts: Partial) {\n const {error} = await this.supabase.from(\"room_opts\").upsert(\n {...opts, room_id: roomId},\n ).eq(\"room_id\", roomId);\n if (error) {\n throw error;\n }\n }\n}\n\nexport default BroadClient;\n","import BroadClient from \"./index\";\nimport { createSupabase } from \"solid-supabase\";\n\nexport const useBroadClient = () => {\n const supabase = createSupabase();\n\n return new BroadClient(supabase);\n};\n"],"names":["BroadClient","constructor","supabase","getAllRooms","user","userOrError","response","from","select","eq","id","error","data","findRoomById","rooms","rpc","target_id","auth","Error","joinRoomById","room","q","insert","room_id","user_id","code","isJoinedRoomById","length","sendMessageTo","message","openRoomMessageQueueChannel","channel","selfBroadcast","createRoom","name","owner","getUserDeviceId","getParticipants","roomId","getRoomOpts","limit","setRoomOpts","opts","upsert","useBroadClient","createSupabase"],"mappings":"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"} \ No newline at end of file diff --git a/source/files/magicbroad/index.html b/source/files/magicbroad/index.html deleted file mode 100644 index f9a7d89..0000000 --- a/source/files/magicbroad/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Webpack App - - - - - -

      - - - -